Su tarea es traducir un número liso 103 a una palabra en inglés, utilizando el método que se describe a continuación.
¿Cómo?
- Genere la lista de factores primos (con repetición) del número de entrada.
- Ordenar la lista:
- Si 2 no es uno de los factores primos, ordene la lista en orden ascendente.
- Si 2 es uno de los factores primos, elimínelo de la lista y ordene los factores restantes en orden descendente.
Traduzca cada factor a una letra, usando la siguiente tabla:
3 = S 13 = L 29 = X 43 = O 61 = Z 79 = H 101 = K 5 = P 17 = Q 31 = N 47 = R 67 = T 83 = V 103 = Y 7 = M 19 = U 37 = C 53 = A 71 = E 89 = D 11 = F 23 = I 41 = W 59 = G 73 = J 97 = B
Nota : Esta tabla fue construida empíricamente para maximizar el número de palabras posibles. Para los curiosos, aquí hay una lista de 2,187 palabras que pueden codificarse de esa manera (puede incluir lenguaje grosero). Definitivamente no se garantiza que sea óptimo, pero es lo suficientemente bueno para este desafío.
Ejemplos
Ejemplo 1: 579085261 (orden ascendente)
- Los factores primos son [37, 47, 53, 61, 103] .
- 2 no es un factor primo, por lo que mantenemos la lista ordenada en orden ascendente.
- 37 = C, 47 = R, etc. La salida es "CRAZY".
Ejemplo 2: 725582 (orden descendente)
- Los factores primos son [2, 11, 13, 43, 59] .
- 2 es un factor primo, por lo que lo eliminamos y ordenamos la lista en orden descendente, lo que da:
[59, 43, 13, 11] . - 59 = G, 43 = O, etc. La salida es "GOLF".
Ejemplo 3: 10757494 (con un factor repetido)
- Los factores primos son [2, 11, 71, 71, 97] .
- 2 es un factor primo, por lo que lo eliminamos y ordenamos la lista en orden descendente, lo que da:
[97, 71, 71, 11] . - 97 = B, 71 = E, 11 = F. La salida es "BEEF".
Aclaraciones y reglas.
- Se garantiza que el número de entrada será 103-suave y divisible por 2 como máximo una vez.
- Por definición, un número liso es un entero positivo .
- La entrada y salida se pueden manejar en cualquier formato razonable. La salida puede estar en minúsculas o mayúsculas. El espacio en blanco al final es aceptable. El espacio en blanco principal no lo es.
- Si su programa / función no puede admitir entradas grandes, especifíquelo en su respuesta.
- Este es el código de golf, por lo que gana la respuesta más corta en bytes.
Casos de prueba
34874 --> ARM
483254 --> BAR
353722 --> EAR
494302 --> EGG
39061 --> FAT
6479 --> FUN
60421 --> ICE
54166 --> JAM
48911474 --> BETA
2510942 --> BOOM
2303854 --> DOOM
844261 --> FIRE
1606801 --> MAZE
1110085 --> PAGE
5212974 --> BALLS
67892046 --> BEANS
885396199 --> CREEK
67401037 --> FUNKY
27762173 --> QUICK
1238440506 --> ARROWS
33045832681 --> CRAGGY
1362714005 --> PIRATE
137302698 --> TROLLS
358310128062 --> BEGGARS
40255151586 --> DETAILS
164633248153 --> FIXATED
621172442227 --> UNRATED
2467812606 --> VACUUMS
86385078330 --> GROWNUPS
26607531423091 --> UNWORTHY
Ò
en579085261
, siente como <s> Emigna </ s> Adnan ya ha comenzado.<=103
... tu resultado esPIRATE MAZE
, oDOOM VACUUMS
...Respuestas:
Jalea ,
2927 bytes¡Gracias a @JonathanAllan por jugar golf en 1 byte!
Pruébalo en línea!
Fondo
es un literal numérico Los caracteres entre las comillas se reemplazan con sus índices basados en 1 en la página de códigos Jelly , y la matriz resultante se interpreta como un número base-250. Esto produce el número entero c: = 288824892868083015619552399 .
Cómo funciona
fuente
Jalea , 36 bytes
Pruébalo en línea!
Explicación
Constante auxiliar
1£
(produce“SPMFLQUIXNCWORAGZTEJHVDBKY ”
con un 1 antepuesto)Programa principal
Tengo la sensación de que mi compresión de la lista supera fácilmente a la otra respuesta de Jelly, pero que mi algoritmo para usarla podría ser mucho más eficiente. Quizás intente combinarlos.
Jelly , 31 bytes, inspirada en la respuesta de @ Leakynun
Pruébalo en línea! (ligeramente modificado para correr mucho más rápido)
No es coherente si imprime una nueva línea final (pero PPCG normalmente permite respuestas con o sin una nueva línea final, así que supongo que esto también funciona). Es muy lento (O ( n ) donde n es la entrada, y esos números no son exactamente pequeños ...)
Explicación
Constante auxiliar
1£
(produce“¶SPMFLQUIXNCWORAGZTEJHVDBKY”
, donde¶
está la nueva línea)Programa principal
fuente
05AB1E ,
3938 bytesUtiliza la codificación CP-1252 . Pruébalo en línea!
fuente
Ø
fue la parte de esto que superó la mía por 20 bytes de todos modos: P.Python 2,
220217 bytesPruébelo en línea : solo ejecuta el caso de prueba más pequeño sin quedarse sin memoria
Sin golf:
Esta versión no se usa
exec
, por lo que puede probar todos los casos de prueba sin quedarse sin memoria.Pruébalo en línea
fuente
Rubí ,
139138134125120115 + 7 =146145141132127122 bytesUtiliza la
-rprime
bandera para +7 bytes.-1 byte de @daniero. -4 bytes recordando que solo puedo hacer una verificación de divisibilidad regular en lugar de verificar la existencia de la división principal
2
.-9 bytes de la solución Python de @ mbomb007 que me recuerda una forma más corta de recuperar la letra correspondiente.
-5 bytes porque ahora se permite el espacio en blanco final.
-5 bytes de descubrimiento
Enumerable#find_index
Pruébalo en línea! (todos los casos de prueba)
Explicación
fuente
zip
y"
Bash + GNU utilities + bsd-games package, 170
Parece bastante no óptimo, pero funciona:
Pruébalo en línea .
fuente
Jalea , 33 bytes
Pruébalo en línea!
fuente
Japt ,
5150 bytes49 bytes de código, +1 para la
-P
bandera.Pruébalo en línea!
Esto podría ser mucho más corto si solo Japt tuviera un par de características más ...
Explicación
`yspmflquixncÙgz’jhvdbk`
es la misma cadena que todos los demás usan comprimida tanto como Japt puede comprimirla (¡3 bytes más cortos que el original!). La única herramienta de compresión integrada de Japt en este momento reemplaza los pares comunes de letras minúsculas con un carácter de un solo byte.Así que examinemos el código real:
Luego
£
se utiliza para reemplazar cada elementoX
en el resultado de esta manera:El resultado es una matriz de caracteres en este punto, por lo que el
-P
indicador se une en una sola cadena y el resultado se envía implícitamente a la salida.fuente
Jalea , 40 bytes
Pruébalo en línea!
¡Verifique todas las cajas de prueba a la vez! (ligeramente modificado)
fuente
Pyth ,
5447 bytes7 bytes gracias a isaacg
(
❤
representa un carácter no imprimible)Pyth no tiene muchas características integradas principales ...
Hexdump:
Pruébalo en línea!
fuente
J , 59 bytes
Pruébalo en línea!
Bastante sencillo...
fuente
PHP, 173 bytes
Versión en línea
Expandido
PHP, 178 bytes
Versión en línea
Expandido
fuente
Python, 1420 bytes
Esto definitivamente podría acortar algunos, pero es mi intento de resolverlo sin números o literales de cadena. Me doy cuenta de que este es un problema de código de golf y esto no es exactamente corto, pero quería compartirlo de todos modos, no estoy seguro de si esto rompe alguna regla o no.
Fue muy divertido de hacer, utilicé el algoritmo en esta publicación de blog para reducir la representación numérica ASCII de "SPMFLQUIXNCWORAGZTEJHVDBKY" en la expresión de cambio de bits que uso. En general, también me inspiré mucho en este blog, quería probarlo yo mismo y parecía un buen desafío hacerlo.
Aquí hay una versión ligeramente más legible, con algunos nombres de variables más sensibles también
fuente