La tarea:
Salida de un valor para x
, donde a mod x = b
para dos valores dadosa,b
.
Suposición
a
yb
siempre serán enteros positivos- No siempre habrá una solución para
x
- Si existen varias soluciones, envíe al menos una de ellas.
- Si no hay soluciones, no envíe nada o alguna indicación de que no existen soluciones.
- Se permiten los elementos integrados (no tan divertidos como otros enfoques matemáticos)
- Las salidas son siempre enteras
Ejemplos
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
Este es el código de golf , por lo que gana los bytes más bajos.
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
fuente
fuente
Respuestas:
JavaScript ,
2827262423 bytesPruébalo en línea!
false
indica que no hay solución-1 gracias @Arnauld
fuente
f=...
,f(8)(3)
¿ llamar ? ¿Eso parece un poco descarado? La forma normal de llamar a una función seríaf(8,3)
, ¿qué alargaría la definición de su función?(8)(3)
, pero existe un consenso sobre PPCG que está permitido . Sin embargo, no tienes que darle un nombre.MATL , 6 bytes
Pruébalo en línea! O verificar todos los casos de prueba .
Explicación
Considere las entradas
8
,2
como un ejemplo.fuente
Python 2 ,
4034 bytes-6 bytes gracias a Bubbler
Pruébalo en línea!
fuente
lambda a,b:[(a==b)*-~a,a-b][a>b*2]
Jalea , 5 bytes
Devuelve el mínimo válido x o 0 si no hay ninguno.
Pruébalo en línea!
fuente
Groovy, 48 bytes (usando incorporado):
Eval.me(...+"g")
- Fija "g" en la entrada, convirtiéndola en un BigInteger.modInverse(...)
- Realiza la operación de módulo inverso.Java 8, 70 bytes
fuente
R ,
3328 bytesPruébalo en línea!
-4 bytes gracias a Jarko Dubbeldam.
-1 byte gracias a Giuseppe.
Devuelve
NA
si no hay solución. TIO no tiene instalada la biblioteca pryr, por lo que se utiliza el código en ese enlacefunction(a,b)
.fuente
pryr::f(which(a%%1:(a+1)==b))
es 4 bytes más corto.match(b,a%%1:(a+1))
, que devuelveNA
un valor faltante.Jalea ,
1110 bytesUn programa completo de tomar los dos números enteros positivos,
a
yb
, y la impresión de una lista de las soluciones enteras entremin(a,b)+1
ymax(a,b)+1
inclusivas.Pruébalo en línea!
fuente
Mathematica 36 Bytes
Entrada:
Salida:
fuente
a_ ±b_
. Pero de todos modos es más corto de usar enCases
lugar deSelect
una función sin nombre:Cases[Range[9#],x_/;#~Mod~x==#2]&
Haskell , 33 bytes
Se bloquea con
code.hs: out of memory (requested ??? bytes)
si no hay solución (se agota el tiempo de espera en TIO antes de eso):Pruébalo en línea!
¡Gracias a Ørjan Johansen por detectar un error!
fuente
b
dividea
.C # (compilador Mono C #) ,
57 5626 bytesLa respuesta de Python al puerto de Rod . Gracias a WW por -1 byte.
ENORMES gracias a Kevin Cruijssen por -30 bytes.
Pruébalo en línea!
fuente
return
.i=>{/*code here*/}
). Sin embargo, en este caso, dado que tiene 2 entradas, puede ser una función lambda curry para guardar un byte adicional (ena=>b=>{/*code here*/}
lugar de(a,b)=>{/*code here*/}
). Además, puede eliminar el paréntesis alrededor de sus verificaciones if. En total, sin cambiar ninguna de sus funciones, se convierte ena=>b=>a-b>b?a-b:a==b?a+1:0
26 bytesPyth, 16 bytes
Pruébalo en línea!
Todos los casos de prueba
Toma datos como
[a, b]
errores si no se encuentra una solución. Se revisará si no se permiten errores.fuente
APL (Dyalog Unicode) , 19 bytes
Pruébalo en línea!
Golf en progreso ...
fuente
Mathematica, 28 bytes
fuente
PHP> = 7.1, 51 bytes
Versión en línea
fuente
Axioma,
147128bytesdeshazte de él y prueba
Esto encontraría toda la solución, incluso la solución de conjunto infinito ...
fuente
Pip , 9 bytes
Toma los dos números como argumentos de línea de comandos. Emite la solución más pequeña, o nula si no existe una solución. Pruébalo en línea!
Explicación
Por ejemplo, con entrada de
8
y2
:El índice basado en 0 de la primera aparición de
2
en esta lista es3
, que es nuestra solución.fuente
J , 14 bytes
Pruébalo en línea!
Traducción de la solución Python 2 de Rod .
Cómo funciona
Los raros casos en los que un código J se puede traducir directamente a Python.
fuente
Japt , 13 bytes
Pruébalo en línea!
Traducción de la solución JS de eush77 .
El código es justo
(U-=V)?U>V&&U:-~V
cuando se transpila a JS, dondeU
yV
son los dos valores de entrada.fuente
Ruby , 31 bytes
Pruébalo en línea!
fuente
Japt , 7 bytes
(Eventualmente) Salidas
undefined
si no hay solución.Pruébalo aquí
fuente
Perl 6 , 23 bytes
Pruébalo en línea!
Bloque de código anónimo que devuelve una lista de posibles valores de
2
hastaa+1
fuente
ORK , 566 bytes
Pruébalo en línea!
O objetos R K ool. Afortunadamente, sin embargo, no necesité usar ninguno (además de los integrados) para esta tarea.
fuente
F #, 40 bytes
Pruébalo en línea!
Muy claro. Lanza un
System.Collections.Generic.KeyNotFoundException
si no se puede encontrar una solución.También puede modificarlo
Seq.tryFind
, lo que devolverá unint option
, conNone
si no se puede encontrar una solución.fuente
05AB1E , 7 bytes
Pruébelo en línea o verifique todos los casos de prueba .
Explicación:
fuente
Java 8, 26 bytes
Puerto de @Epicness 'C # respuesta , después de jugar un poco más.
Pruébalo en línea.
fuente
> <> , 21 bytes
El mismo truco que la mayoría de las soluciones publicadas. Primero, preparamos todos los valores necesarios en la pila y luego verificamos las comparaciones.
Pruébalo en línea!
fuente
Whispers v2 , 128 bytes
Pruébalo en línea!
Devuelve un conjunto de todas las soluciones posibles y el conjunto vacío (es decir,∅ ) cuando no existe una solución.
Cómo funciona
Como era de esperar, funciona casi de manera idéntica a la mayoría de las otras respuestas: genera una lista de números y verifica cada módulo inverso con el argumento.
Si está familiarizado con el funcionamiento de la estructura del programa Whispers, siéntase libre de saltar a la línea horizontal. Si no: esencialmente, Whispers funciona en un sistema de referencia línea por línea, comenzando en la línea final. Cada línea se clasifica como una de dos opciones. O es una línea nilad , o es una línea de operador .
Las líneas Nilad comienzan con{ 0 } .
>
, como> Input
o> {0}
y devuelven el valor exacto representado en esa línea, es decir,> {0}
devuelve el conjunto> Input
devuelve la siguiente línea de STDIN, evaluada si es posible.Las líneas de operador comienzan conn → n2 ), por lo 12 , en su lugar, devuelve el cuadrado de la línea 1 , que, en este caso, es la primera entrada.
>>
, como>> 1²
o>> (3]
y denotan ejecutar un operador en uno o más valores. Aquí, los números utilizados no hacen referencia a esos números explícitos, sino que hacen referencia al valor en esa línea. Por ejemplo,²
es el comando cuadrado (>> 1²
que no devuelve el valorPor lo general, las líneas de operador solo funcionan usando números como referencias, aunque puede haber notado las líneas
>> L=2
y>> L⋅R
. Estos dos valores,L
yR
, se usan junto conEach
declaraciones.Each
las declaraciones funcionan tomando dos o tres argumentos, nuevamente como referencias numéricas. El primer argumento (p5
. Ej. ) Es una referencia a una línea de operador que utiliza una función, y el resto de los argumentos son matrices. Luego iteramos la función sobre la matriz, donde elL
yR
en la función representan los elementos actuales en las matrices que se repiten. Como ejemplo:DejarA = [ 1 , 2 , 3 , 4 ] , B = [ 4 , 3 , 2 , 1 ] y F( x , y) = x + y . Suponiendo que estamos ejecutando el siguiente código:
Luego obtenemos una demostración de cómoC= [ ( 1 , 4 ) , ( 2 , 3 ) , ( 3 , 2 ) , ( 4 , 1 ) ] luego mapa F( x , y) sobre cada par, formando nuestra matriz final D = [ f( 1 , 4 ) , f( 2 , 3 ) , f( 3 , 2 ) , f( 4 , 1 ) ] = [ 5 , 5 , 5 , 5 ]
Each
funcionan las declaraciones. Primero, cuando trabajamos con dos matrices, las comprimimos para formarPruébalo en línea!
Cómo funciona este código
Trabajando de forma contraria a la forma en que funciona Whispers, partimos de las dos primeras líneas:
Esto recopila nuestras dos entradas, digamosX y y , y los almacena en las líneas 1 y 2 respectivamente. Luego almacenamosX2 en la línea 3 y crea un rangoA : = [ 1 . . . X2] en la línea 4 . A continuación, saltamos a la sección.
Lo primero que se ejecuta aquí es la línea 7 ,B : = [ i%XEl |i ∈ A ] , dónde un%si se define como el módulo deun y si .
>> Each 5 4
que itera línea 5 al borde 4 . Esto produce la matrizA continuación, ejecutamos la línea 8 ,si , produciendo una matriz C: = [ ( i%x ) = yEl |i ∈ A ] .
>> Each 6 7
que itera línea 6 sobrePara las entradasx = 5 , y= 2 , tenemos A = [ 1 , 2 , 3 , . . . , 23 , 24 , 25 ] , B = [ 0 , 1 , 2 , 1 , 0 , 5 , 5 , . . . , 5 , 5 ] y C= [ 0 , 0 , 1 , 0 , 0 , . . . , 0 , 0 ]
Luego saltamos a
que es nuestro ejemplo de unaUN y C . Multiplicamos cada elemento enUN con su elemento correspondiente en C , que produce una matriz, mi , donde cada elemento funciona a partir de la siguiente relación:
Each
declaración diádica . Aquí, nuestra función es la línea 9, es decir,>> L⋅R
y nuestras dos matrices sonLuego terminamos con una matriz que consiste en0 0 sy los módulos inversos de X y y . Para eliminar el0 0 s, convertimos esta matriz en un conjunto ( { 0 } , produciendo, luego produciendo, nuestro resultado final.
>> {10}
), luego tomamos la diferencia de conjunto entre este conjunto yfuente
C #, 53 bytes (83 con encabezado de función)
Pruébalo en línea
Primero prueba en codegolf. Probablemente no sea el mejor lenguaje para usar, ni la codificación más eficiente.
fuente