Dado un número n
y una l
lista de límite superior, los números que se pueden crear multiplicando dos o más números que consisten en solo sietes de longitud n
o menos que son menores que l
. A161145 está cerca de este desafío, sin embargo, NO incluirá los 7, 77, 777, 7777, 77777, etc.
Ejemplos
n=anything, l<49
daría como resultado:
[]
n=1, l=49
daría como resultado:
7*7=49
f(1,49)=[49]
n=1, l=343
daría como resultado:
7*7 =49
7*7*7 =343
f(1,343)=[49,343]
n=2,l=6000
daría como resultado:
7*7 =49
7*7*7 =343
7*7*7*7=2401
7*77 =539
7*7*77 =3773
77*77 =5929
f(2,6000)=[49,343,539,2401,3773,5929]
n=3, l=604000
daría como resultado:
[49, 343, 539, 2401, 3773, 5439, 5929, 16807, 26411, 38073, 41503, 59829, 117649, 184877, 266511, 290521, 418803, 456533, 603729]
Etc ...
Reglas
- Usted no tiene que salida de pasos intermedios, esto se hizo para mayor claridad.
- La salida puede ser como una matriz o separada por cualquier carácter (incluso nuevas líneas).
- La salida debe estar en orden numérico, de menor a mayor.
- Para que el título sea relevante, lo más alto
n
que debe manejarse esn=77
(si no puede manejar ese alto, tenga en cuenta por qué: las restricciones de idioma son aceptables, la pereza no lo es). Esta limitación es para obstaculizar a aquellos que buscan construir todo el superconjunto en la memoria. - Si TIO no puede ejecutarse
n=77
para su código, explique qué especificaciones se requieren para lograrlon=77
. - Para que un producto sea válido, debe constar de al menos 2 números.
- Este es el recuento de bytes más bajo del código de golf se considerará victorioso.
- Puede elegir que la lista contenga elementos menores
l
o menores que / iguales al
. - BONIFICACIÓN : Si su código es exactamente 77 bytes, felicitaciones de mi parte; sin valor, lo sé.
n
o menos que son menores quel
"n=77
yl=7**7**7
, por ejemplo?Respuestas:
05AB1E , 19 bytes
Pruébalo en línea!
Explicación
Muy ineficiente El enlace TIO realiza
ceil(l^(1/7))
iteraciones en lugar de lasl
iteraciones utilizadas en la versión de golf para probar más fácilmente los grandes casos de prueba.fuente
$L7ׂ˜
- Intenté obtener 5 bytes, no pude..p
o.s
también, pero incluso esos parecen más largos. Accidentalmente presioné 'actualizar' en la página TIO con mi implementación de ejemplo en lugar de ejecutar, la eliminé de la existencia. Aunque creo que fueron 26.Jalea ,
21201918 bytesTenga en cuenta que la salida no coincide con los OP. He dejado un comentario
Pruébalo en línea!
Cómo funciona
fuente
Python 2 ,
116113109 bytesTenga en cuenta que TIO no tiene suficiente memoria para el último caso de prueba.
Pruébalo en línea!
fuente
JavaScript (ES6),
103101bytesToma entrada en la sintaxis de curry
(n)(l)
.Casos de prueba
El último caso de prueba puede tardar unos segundos en completarse.
Mostrar fragmento de código
fuente
PHP, 142 bytes
-5 Bytes eliminando
$r=[];
y reemplazandosort($r);
con@sort($r);
Versión en línea
Expandido
Una función recursiva realiza todas las permutaciones, incluido el límite
PHP, 145 bytes
Expandido
un bucle hasta incluir el límite de verificación de cada valor que es divisible por 49
Versión en línea
unos pocos bytes más y se puede crear una matriz asociativa clave el número y como valor una matriz de los sietes utilizados
Versión en línea
fuente
while($c=$t*$v[+$i++])$l<$c?f($c)&$r[$c]=$c;
ahorra 3 bytes; Pero debería ser$l<=$c
.$r?sort($r)&print_r($r):0;
en lugar de$r=[];
guardar uno.$z.=7;
es 5 bytes más corto que$z=$z*10+7;
.@
es otros 4 bytes más cortos que$r?...:0;
. (Gracias @ Christoph)$l<=$c
? Parece que ayer no fue mi día para los$z.=7
2 bytes adicionales que he encontrado. Estoy pensando primero en tus otras dos sugerencias. Te pierdes el:
bucle whilethat are less than l
, en sus ejemplos ellosare less than or equal
. Dependiendo de la aclaración,$c>$l||...
/$c>$l?:...
o$c<$l&&...
son los más cortos.Ruby,
8986 bytesUna solución recursiva.
-3 bytes al recordar que cualquier cosa multiplicada por 0 es 0.
Pruébalo en línea!
fuente
Pyth , 22 bytes
Pruébalo en línea!
Especificaciones
l[newline]n
array containing the sorted result
fuente
PHP,
128 125 130 129 127123 bytesfuncionará hasta 22
7
s pero redondeará valores más grandes (7 ** 23 es punto flotante en una máquina de 64 bits).3 bytes guardados por Jörg, 3 por mí,
5 41 añadidos para evitar avisos de resultados vacíos.toma datos de los argumentos de la línea de comandos; ejecutar
-nr
o probarlo en línea .Descompostura
fuente
for([,$c,$z]=$argv,$n=1+$c;$c<$z;
en lugar defor($n=1+$c=$argv[1];$c<$z=$argv[2];
@
lugar de$r&&
suprimir la advertencia?$p<$z&&$r[$p]=$p
$p>$z?:$r[$p]=$p
por ejemplon=1, l=343
, está claro quel
debería incluirse. Por lo tanto, no hay ahorros al usar$p>$z||$r[$p]=$p
o$p>$z?:$r[$p]=$p
.@
; se editará cuando el OP responda.$p>$z||
o no$p<$z&&
. Seguiré con la descripción.Brachylog , 28 bytes
Aquí hay muchas posibilidades de mejora en el lenguaje mismo; Parece que hay bastantes cosas que escribí que obviamente podrían mejorarse con algunos cambios en el diseño del lenguaje. Esta es la forma más corta que he encontrado con la versión actual. Bien puedo hacer algunas sugerencias para Brachylog que harían este programa más eficiente, más corto y más legible.
Muy, muy lento; TIO agota el tiempo de espera incluso en la respuesta no trivial más simple posible, por lo que no tiene mucho sentido proporcionar un enlace TIO. He verificado este programa ejecutándolo localmente.
Esta es una función (no un programa completo), cuya salida es un generador (a diferencia de una lista). Agregue
.w⊥
al final de la función si desea ver todas las salidas, en lugar de solo la primera. (Tenga en cuenta que esto realmente no importa en la práctica, porque como el programa es demasiado lento para TIO de todos modos, debe ejecutarlo localmente, y el intérprete local Brachylog se ejecuta en un REPL que puede describir un generador muy bien).Explicación
fuente
Bash + GNU utilidades, 108
Pruébalo en línea . TIO tarda aproximadamente un minuto en el último caso de prueba. Mis resultados coinciden con los de Dennis.
fuente
Pyth -
57514942 bytesIntentalo
fuente
7
y77
para su entrada actual.m
lugar deF
oV
etc. (programación funcional vs. control de ejecución); usando enhQ
lugar de@Q0
; usando eneQ
lugar de@Q1
; usando eni*hQ]7T
lugar del largo for-loop para generar777...7
.