La tâche:
Affiche une valeur pour x
, où a mod x = b
pour deux valeurs données a,b
.
supposition
a
etb
sera toujours des entiers positifs- Il n'y aura pas toujours de solution pour
x
- Si plusieurs solutions existent, sortez au moins l'une d'entre elles.
- S'il n'y a pas de solutions, ne rien produire ou indiquer qu'aucune solution n'existe.
- Les fonctions intégrées sont autorisées (pas aussi amusantes que d'autres approches mathématiques)
- Les sorties sont toujours des entiers
Exemples
A, B >> POSSIBLE OUTPUTS
5, 2 >> 3
9, 4 >> 5
8, 2 >> 3, 6
6, 6 >> 7, (ANY NUMBER > 6)
8, 7 >> NO SOLUTION
2, 4 >> NO SOLUTION
8, 5 >> NO SOLUTION
10,1 >> 3, 9
C'est le code-golf , donc les octets les plus bas gagnent.
code-golf
math
number-theory
code-golf
number
integer
code-golf
string
code-golf
music
code-golf
arithmetic
array-manipulation
decision-problem
code-golf
math
rational-numbers
code-golf
code-golf
graphical-output
hardware
code-golf
math
number
code-golf
string
parsing
natural-language
code-golf
tips
brain-flak
code-golf
graph-theory
code-golf
number
polynomials
king-of-the-hill
code-golf
ascii-art
kolmogorov-complexity
animation
king-of-the-hill
code-golf
tips
code-golf
ascii-art
code-golf
string
array-manipulation
data-structures
code-golf
math
number
code-golf
string
base-conversion
binary
code-golf
decision-problem
graph-theory
code-golf
math
polynomials
code-golf
kolmogorov-complexity
physics
code-golf
sequence
number-theory
code-golf
math
integer-partitions
code-golf
array-manipulation
random
permutations
code-golf
string
decision-problem
Graviton
la source
la source
Réponses:
JavaScript ,
2827262423 octetsEssayez-le en ligne!
false
indique aucune solution.-1 merci @Arnauld
la source
f=...
, puis appelerf(8)(3)
? Cela semble un peu tricheur? La façon normale d'appeler une fonction seraitf(8,3)
, ce qui allongerait la définition de votre fonction?(8)(3)
, mais il y a un consensus sur PPCG qui est autorisé . Vous n'êtes pas obligé de lui donner un nom cependant.MATL , 6 octets
Essayez-le en ligne! Ou vérifiez tous les cas de test .
Explication
Tenez compte des entrées
8
, à2
titre d'exemple.la source
Python 2 ,
4034 octets-6 octets grâce à Bubbler
Essayez-le en ligne!
la source
lambda a,b:[(a==b)*-~a,a-b][a>b*2]
Gelée , 5 octets
Renvoie le minimum valide x ou 0 s'il n'y en a pas.
Essayez-le en ligne!
la source
Groovy, 48 octets (en utilisant intégré):
Eval.me(...+"g")
- Appose "g" à l'entrée, ce qui en fait un BigInteger.modInverse(...)
- Effectue l'opération modulo inverse.Java 8, 70 octets
la source
R ,
3328 octetsEssayez-le en ligne!
-4 octets grâce à Jarko Dubbeldam.
-1 octet grâce à Giuseppe.
Renvoie
NA
s'il n'y a pas de solution. TIO n'a pas la bibliothèque pryr installée, donc le code de ce lien utilise à lafunction(a,b)
place.la source
pryr::f(which(a%%1:(a+1)==b))
est de 4 octets plus court.match(b,a%%1:(a+1))
, qui renvoieNA
une valeur manquante.Gelée ,
1110 octetsUn programme complet prenant les deux entiers positifs,
a
etb
, et imprimant une liste des solutions entières entremin(a,b)+1
etmax(a,b)+1
inclus.Essayez-le en ligne!
la source
Mathematica 36 octets
Contribution:
Production:
la source
a_ ±b_
. Mais il est plus court à utiliserCases
au lieu d'Select
une fonction sans nom de toute façon:Cases[Range[9#],x_/;#~Mod~x==#2]&
Haskell , 33 octets
Se bloque avec
code.hs: out of memory (requested ??? bytes)
s'il n'y a pas de solution (expire sur TIO avant cela):Essayez-le en ligne!
Merci à Ørjan Johansen d' avoir repéré une erreur!
la source
b
divisea
.C # (compilateur Mono C #) ,
57 5626 octetsRéponse de Port of Rod en Python. Merci à WW pour -1 octet.
ENORME merci à Kevin Cruijssen pour -30 octets.
Essayez-le en ligne!
la source
return
.i=>{/*code here*/}
). Dans ce cas cependant, puisque vous avez 2 entrées, il peut s'agir d'une fonction lambda currying pour enregistrer un octet supplémentaire (a=>b=>{/*code here*/}
au lieu de(a,b)=>{/*code here*/}
). En outre, vous pouvez supprimer les parenthèses autour de vos vérifications if. Au total, sans changer aucune de vos fonctionnalités, cela devienta=>b=>a-b>b?a-b:a==b?a+1:0
26 octetsPyth, 16 octets
Essayez-le en ligne!
Tous les cas de test
Prend l'entrée comme
[a, b]
, erreurs si aucune solution trouvée. Révisera si l'erreur n'est pas autorisée.la source
APL (Dyalog Unicode) , 19 octets
Essayez-le en ligne!
Golf en cours ...
la source
Mathematica, 28 octets
la source
PHP> = 7.1, 51 octets
Version en ligne
la source
Axiome,
147128 octetsdé-golfer et tester
Cela trouverait toute la solution même la solution d'ensemble infini ...
la source
Pip , 9 octets
Prend les deux nombres comme arguments de ligne de commande. Génère la solution la plus petite, ou nulle si aucune solution n'existe. Essayez-le en ligne!
Explication
Par exemple, avec l'entrée de
8
et2
:L'index basé sur 0 de la première occurrence de
2
dans cette liste est3
, ce qui est notre solution.la source
J , 14 octets
Essayez-le en ligne!
Traduction de la solution Python 2 Rod .
Comment ça fonctionne
Les rares cas où un code J peut être directement traduit en Python.
la source
Japt , 13 octets
Essayez-le en ligne!
Traduction de la solution JS d' eush77 .
Le code est juste
(U-=V)?U>V&&U:-~V
lorsqu'il est transpilé en JS, oùU
etV
sont les deux valeurs d'entrée.la source
Rubis , 31 octets
Essayez-le en ligne!
la source
Japt , 7 octets
(Finalement) Sort
undefined
s'il n'y a pas de solution.Essayez-le ici
la source
Perl 6 , 23 octets
Essayez-le en ligne!
Bloc de code anonyme qui renvoie une liste de valeurs possibles de
2
jusqu'àa+1
la source
ORK , 566 octets
Essayez-le en ligne!
O bjects R K ool. Heureusement, cependant, je n'avais pas besoin d'en utiliser (à part ceux intégrés) pour cette tâche.
la source
F #, 40 octets
Essayez-le en ligne!
Assez simple. Lance un
System.Collections.Generic.KeyNotFoundException
si aucune solution ne peut être trouvée.Vous pouvez également le modifier en
Seq.tryFind
, qui renverra unint option
, avecNone
si aucune solution n'a été trouvée.la source
05AB1E , 7 octets
Essayez-le en ligne ou vérifiez tous les cas de test .
Explication:
la source
Java 8, 26 octets
Port de réponse @Epicness 'C # , après l'avoir joué un peu plus.
Essayez-le en ligne.
la source
> <> , 21 octets
Même astuce que la plupart des solutions publiées. Tout d'abord, nous préparons toutes les valeurs nécessaires sur la pile, puis vérifions les comparaisons.
Essayez-le en ligne!
la source
Whispers v2 , 128 octets
Essayez-le en ligne!
Renvoie un ensemble de toutes les solutions possibles et l'ensemble vide (c'est-à-dire∅ ) lorsqu'aucune solution n'existe.
Comment ça fonctionne
Sans surprise, il fonctionne presque de manière identique à la plupart des autres réponses: il génère une liste de nombres et vérifie chacun pour module inverse avec l'argument.
Si vous connaissez le fonctionnement de la structure du programme Whispers, n'hésitez pas à passer à la ligne horizontale. Sinon: essentiellement, Whispers fonctionne sur un système de référence ligne par ligne, en commençant par la ligne finale. Chaque ligne est classée comme l'une des deux options. Soit c'est une ligne nilade , soit c'est une ligne opérateur .
Les lignes Nilad commencent par{ 0 } .
>
, comme> Input
ou> {0}
et retournent la valeur exacte représentée sur cette ligne, c'est-à-dire> {0}
renvoie l'ensemble> Input
renvoie la ligne suivante de STDIN, évaluée si possible.Les lignes d'opérateur commencent parn → n2 ), 12 , au lieu de cela, il renvoie le carré de la ligne 1 , qui, dans ce cas, est la première entrée.
>>
, comme>> 1²
ou>> (3]
et indiquent l'exécution d'un opérateur sur une ou plusieurs valeurs. Ici, les nombres utilisés ne font pas référence à ces nombres explicites, ils font plutôt référence à la valeur sur cette ligne. Par exemple,²
la commande carré (>> 1²
ne renvoie donc pas la valeurHabituellement, les lignes d'opérateur fonctionnent uniquement en utilisant des nombres comme références, mais vous avez peut-être remarqué les lignes
>> L=2
et>> L⋅R
. Ces deux valeurs,L
etR
, sont utilisées conjointement avec desEach
instructions.Each
Les instructions fonctionnent en prenant deux ou trois arguments, à nouveau comme références numériques. Le premier argument (par exemple5
) est une référence à une ligne d'opérateur utilisée une fonction, et le reste des arguments sont des tableaux. Nous itérons ensuite la fonction sur le tableau, où leL
etR
dans la fonction représentent le ou les éléments actuels dans les tableaux en cours d'itération. Par exemple:LaisserA = [ 1 , 2 , 3 , 4 ] , B = [ 4 , 3 , 2 , 1 ] et F( x , y) = x + y . En supposant que nous exécutons le code suivant:
Nous obtenons ensuite une démonstration du fonctionnement desC= [ ( 1 , 4 ) , ( 2 , 3 ) , ( 3 , 2 ) , ( 4 , 1 ) ] puis cartographier F( x ,y) sur chaque paire, formant notre matrice finale D = [ f( 1 , 4 ) , f( 2 , 3 ) , f( 3 , 2 ) , f( 4 , 1 ) ] = [ 5 , 5 , 5 , 5 ]
Each
instructions. Tout d'abord, lorsque vous travaillez avec deux tableaux, nous les compressons pour formerEssayez-le en ligne!
Comment ce code fonctionne
En travaillant de manière contre-intuitive au fonctionnement de Whispers, nous partons des deux premières lignes:
Cela recueille nos deux entrées, disonsX et y et les stocke dans les lignes 1 et 2 respectivement. Nous stockons ensuiteX2 sur la ligne 3 et créer une gammeA : = [ 1 . . . X2] sur la ligne 4 . Ensuite, nous sautons à la section
La première chose exécutée ici est la ligne 7 ,B : = [ i%X|i ∈ A ] , où une%b est défini comme le module deune et b .
>> Each 5 4
qui itère ligne 5 sur la ligne 4 . Cela donne le tableauNous exécutons ensuite la ligne 8 ,B , donnant un tableau C: = [ ( i%x ) = y|i ∈ A ] .
>> Each 6 7
qui itère ligne 6 surPour les entréesx = 5 , y= 2 , on a A=[1,2,3,...,23,24,25] , B=[0,1,2,1,0,5,5,...,5,5] and C=[0,0,1,0,0,...,0,0]
We then jump down to
which is our example of a dyadicA and C . We multiply each element in A with it's corresponding element in C , which yields an array, E , where each element works from the following relationship:
Each
statement. Here, our function is line 9 i.e>> L⋅R
and our two arrays areWe then end up with an array consisting of0 s and the inverse moduli of x and y . In order to remove the 0 s, we convert this array to a set ({0} , yielding, then outputting, our final result.
>> {10}
), then take the set difference between this set andla source
C#, 53 bytes (83 with function heading)
Try It Online
First try at codegolf. Probably not the best language to use, nor the most efficient coding.
la source