Dada una lista de expresiones matemáticas que son verdaderas y consisten en cálculos de módulo restante con dos números y un resultado, su tarea es producir los primeros nnúmeros que son verdaderos para todas las declaraciones en la lista.
Por ejemplo:
[m % 3 = 0, m % 4 = 1, m % 5 = 3], donde% es el operador del módulo.
Para n= 3, los primeros 3 números (contando desde 0) que se ajustan a la secuencia son 33, 93, 153, por lo tanto, su resultado sería ese (formatee hasta usted).
Reglas / IO
- Tomas un número positivo
ny una lista de verdades. Por supuesto, las cosas que necesita tomar son solo el RHS de la operación del módulo y el resultado. ny los números en la lista de verdades siempre estarán en el rango 1 -> 2 ^ 31-1 , y también lo son los resultados.- Usted toma la entrada en cualquier forma conveniente y la salida en cualquier forma conveniente. Por ejemplo, la entrada:
3 [3 0, 4 1, 5 3]y salida:33 93 153. - Se garantiza que la solución es matemáticamente posible.
- La fuente de entrada puede ser de un archivo, parámetros de función, stdin, etc. Lo mismo ocurre con la salida.
- No hay escapatorias.
- Este es el código de golf, por lo que gana el conteo de bytes más bajo.
Casos de prueba
# Input in the form <n>, <(d r), (d2 r2), ...>
# where <d> = RHS of the modulo expression and <r> the result of the expression. Output in the next line.
5, (3 2), (4 1), (5 3)
53 113 173 233 293
3, (8, 0), (13, 3), (14, 8)
120 848 1576
Implementación de referencia en pseudocódigo
n = (an integer from stdin)
truths = (value pairs from stdin)
counter = 0
while n != 0 {
if matches_criterias(counter, truths) {
print counter
n -= 1
}
counter += 1
}

0un resultado válido?Respuestas:
Jalea , 7 bytes
Este es un programa completo. Los argumentos son divisores, módulos de destino y número de soluciones, en ese orden.
Pruébalo en línea!
Cómo funciona
fuente
Perl 6 , 33 bytes
Intentalo
La entrada es
( number-of-values, list-of-divisors, list-of-remainders )Expandido:
fuente
JavaScript (ES6),
7168 bytesUna simple función recursiva. Utilice curry en la matriz primero y
nsegundo, así:fuente
JavaScript (ES6),
747069 bytesToma la entrada como un entero
ny una matrizade[modulo, remainder]matrices con sintaxis curry(n)(a).Casos de prueba
Mostrar fragmento de código
fuente
Haskell, 47 bytes
Ejemplo de uso:
3 # [(8,0),(13,3),(14,8)]->[120,848,1576].fuente
Python, 67 bytes
fuente
range(2**31). Además, muy agradable. Se me ocurrió esta respuesta de forma independiente.JavaScript (ES6),
7270 bytesCurry sobre el conjunto de condiciones primero y el número de resultados segundo. Editar: guardado 2 bytes al no manejar el caso cero.
fuente
Mathematica, 42 bytes
Función sin nombre, que devuelve una lista de enteros positivos y toma tres entradas: la lista de módulos, la lista de restos y el número
nde enteros a devolver. Por ejemplo, el segundo caso de prueba es invocado pory vuelve
{120, 848, 1576}.El builtin
#2~ChineseRemainder~#da la solución no negativa más pequeña; para obtener todas las soluciones deseadas, agregamos este número aRange[0,#3-1]LCM@@#, que es el primernmúltiplo no negativo del mínimo común múltiplo de todos los módulos.Hasta donde yo sé, Mathematica no tiene listas infinitas evaluadas perezosamente, por lo que esta implementación fue más corta que cualquier cosa que encontré que probara enteros no negativos uno por uno, incluso con la longitud del nombre de la función
ChineseRemainder, y aunque una prueba comoMod[k,{8,13,14}]=={0,3,8}funciona perfectamente bien.fuente
PHP, 97 bytes
La respuesta más larga hasta ahora. Pero me alegro de poder llegar a menos de 100.
toma datos de argumentos de línea de comando separados,
imprime coincidencias separadas y seguidas por guiones bajos.
El bucle nunca se rompe; apenas adecuado para probadores en línea.
Corre como
php -r 'code' <n> <modulo1> <result1> <modulo2> <result2> ....Descompostura
notas
$argc==count($argv). Para tres pares hay 8 argumentos: el nombre de archivo$argv[0],n=$argv[1]y losmodulo/resultpares por encima de eso.$v=2incrementado 3 veces da5>$argc/2.Agregue un byte para una salida limpia: reemplace
&&$a[1]-->0?print$k._con?$a[1]--?print$k._:die.fuente
Pyth -
1413 bytesPruébelo en línea aquí .
fuente
SmileBASIC, 102 bytes
Esta es la primera vez que uso
ONen SB. La razón por la que lo usé aquí en lugar deIF F GOTO@Lfue para poder ponerlo?Tdespués en la misma línea, ahorrando 1 byte.fuente
Python, 59 bytes
mes una lista de expresiones en forma de cadena como["i % 4 == 1", ...]Pruébelo en línea (con un rango más corto, para que realmente termine)
fuente
PHP, 91 bytes
Tome la lista como matriz asociativa
Pruébalo en línea!
fuente