Los franceses deletrean los números de una manera peculiar.
- 1-16 son "normales"
- 17-19 se detallan 10 + 7. 10 + 8, 10 + 9 .
- 20-69 son "normales" (OK, OK! No realmente, pero están en este desafío)
- 70-79 son 60 + 10, 60 + 11 ... 60 + 10 + 7, 60 + 10 + 8, 60 + 10 + 9 .
- 80-99 son 4 * 20, 4 * 20 + 1, 4 * 20 + 2 ... 4 * 20 + 16, 4 * 20 + 10 + 7, 4 * 20 + 10 + 8, 4 * 20 + 10 + 9 9
Desafío:
Tome un número entero positivo en el rango [1,100] y transmítalo a la "manera francesa". Debe generarlo exactamente como se muestra a continuación, con *
y +
, por 97
lo tanto 4*20+10+7
, no [4 20 10 7]
o algo más.
Casos de prueba:
1 - 1
.. - ..
16 - 16
17 - 10+7
18 - 10+8
19 - 10+9
20 - 20
21 - 21
.. - ..
69 - 69
70 - 60+10
71 - 60+11
72 - 60+12
77 - 60+10+7
78 - 60+10+8
79 - 60+10+9
80 - 4*20
81 - 4*20+1
82 - 4*20+2
.. - ..
90 - 4*20+10
91 - 4*20+11
96 - 4*20+16
97 - 4*20+10+7
98 - 4*20+10+8
99 - 4*20+10+9
100 - 100
code-golf
number
kolmogorov-complexity
Stewie Griffin
fuente
fuente
16
a10+7
arriba. (En inglés ocurre entre12
y10+3
, con un poco más de disfraz morfológico). Siempre he estado un poco obsesionado con el hecho de que diferentes idiomas hacen esa transición en diferentes números.22
cuando es "dix-huit"10+8
?Respuestas:
Excel,
153149 BytesEstoy seguro de que esto podría ser mejor, luché para encontrar una manera eficiente de dar cuenta del # 80.
editar: Consolidado los casos 'Normal' mejor para guardar 4 bytes. # 80 todavía apesta.
No puedo encontrar una respuesta específica aquí, no estoy seguro de las reglas de code-golf tbh. ¿Puedo usar varias celdas en Excel y agregar el recuento de bytes de cada una?
es decir. Para una entrada en la celda A1
A2: 11 bytes
A3 (resultado): 125 bytes
Para un total de 136?
fuente
IF(A1=80,,IF(MOD(A1,20)>16,"+10+"&MOD(A1,20)-10,"+"&MOD(A1,20)))
aIFS(A1=80,,MOD(A1,20)>16,"+10+"&MOD(A1,20)-10,1,"+"&MOD(A1,20))
)
al final, ¿puede hacer lo mismo en Excel? Por lo tanto, puede guardar 5 "bytes" (realmente hay caracteres UCS2, por lo que si dice Byte == octeto, debe contarlo dos veces). Y debe cambiar el,
en;
Retina ,
5248 bytes4 bytes guardados gracias a Neil
Pruébalo en línea! o verificar todas las entradas (proporcionadas por Neil)
Explicación
Primero manejamos la traducción de 70, 80 y 90. En estas primeras 3 etapas, un 7 al comienzo con otro carácter que lo sigue se reemplaza por
60+1
. Del mismo modo,9
se reemplaza por81
y8
por4*20+1
. El reemplazo de9
esencialmente lo está cambiando a "ochenta y diez" y tal, de modo que8
el siguiente reemplazo lo maneja, lo que ahorra bytes sobre la escritura4*20+1
dos veces.Este se encarga de los casos de
17
,18
y19
, mediante la sustitución de la1
de cada uno con10+
.Finalmente, nunca debería haber un
+0
al final, así que elimínelo si está allí.fuente
7-9
, pero no creo que necesites esa mirada atrás: ¡ Pruébalo en línea!$1
es tan largo como?=
.Python 2 , 98 bytes
Pruébalo en línea!
fuente
JavaScript (ES6),
7371 bytesVersión de bonificación que imprime los números tal como se escriben en realidad para 2 bytes adicionales:
fuente
23
, por ejemplo, se supone que sale23
, no20+3
.(m=n%20)
m
se restablece0
en laf(n-n%20)
llamada. (Es una variable global)n<70|n>99
an%100<70
. Además, ¿podría agregar un compilador de prueba?R, 110 bytes
fuente
(i-r)/10
lugar defloor(i/10)
. Yi>15
debería seri>16
.PHP, 99 bytes (quiero ser una versión feliz)
un puerto directo de ETHproductions 'JS , 4 bytes de golf. Imprime los números solicitados por el OP.
Descompostura
Quiero tener la versión correcta,
11498 bytesEl nuevo enfoque inspirado en ETHproductions imprime los números tal como están enunciados.
Pruébalo en línea .
Descompostura
fuente
Python 2,
130108 bytes22 bytes guardados gracias a @mathjunkie
Pruébalo en línea!
fuente
f=
porque lo usó dentro de la lambda.Lote,
220217 bytesToma entrada en STDIN. La generación y eliminación de los primeros
+
guardados guarda 1 byte sobre la carcasa especial 80. Editar: Guardado 3 bytes gracias a @ ConorO'Brien.fuente
@echo off
y agregando el prefijo de todas las declaraciones, excepto la declaración de ciclo hte con@
Jalea , 55 bytes
Pruébalo en línea! o ver un conjunto de pruebas
¡Sin duda hay un camino más corto!
¿Cómo?
fuente
Pyth,
6156 bytes¡Pruébelo en línea!
¡Gracias a Leaky Nun por una mejora de 5 bytes!
Explicación:
fuente
*-Q100>Q69
→}/QTr6T
@]b}17 19
→}b}17 19
+"10+"eb
→j\+,Teb
Python3, 127 bytes
Cada elemento de la matriz contiene su representación:
El código en realidad no crea una función, solo una matriz; no sé si eso está permitido. De lo contrario, tendría que hacer estos 139 bytes agregando
f=[...].__getitem__
.fuente
f=
, porque las funciones sin nombre (es decir, las expresiones que evalúan la función enviada) están bien a menos que el nombre sea necesario para algo como la recursividad.Java 7,
9796109 bytes+13 bytes para el caso de corrección de errores
80
.. :(Explicación:
Código de prueba:
Pruébalo aquí
fuente