No revisé el sandbox antes de publicar este desafío, parece que este desafío fue propuesto por Cᴏɴᴏʀ O'Bʀɪᴇɴ .
Dada una entrada entera, escriba un programa que imprima el acertijo "cuatro es un número mágico"
- Cuatro es el número mágico
- Cinco es cuatro y cuatro es el número mágico
- Seis es tres y tres es cinco y cinco es cuatro y cuatro es el número mágico
- Once es seis y seis es tres y tres es cinco y cinco es cuatro y cuatro es el número mágico
- Quinientos es once y once es seis y seis es tres y tres es cinco y cinco es cuatro y cuatro es el número mágico
Si ya conoce el enigma, o es demasiado vago para resolverlo, ansioso por descubrir cuál es el enigma, aquí hay una explicación
El siguiente número es el número de letras en el número anterior. Entonces, por ejemplo, cinco tiene cuatro letras, entonces el siguiente número es cuatro .
seis tiene tres letras, entonces el siguiente número es 3 , y tres tiene cinco letras, entonces el siguiente número es 5 y cinco tiene cuatro letras, entonces el siguiente número es 4
La razón por la que el acertijo termina en cuatro es porque cuatro tiene cuatro letras , y cuatro es cuatro y cuatro es cuatro y cuatro es cuatro ... (cuatro es el número mágico)
Casos de prueba
0 =>
Zero is four and four is the magic number
1 =>
One is three and three is five and five is four and four is the magic number
2 =>
Two is three and three is five and five is four and four is the magic number
3 =>
Three is five and five is four and four is the magic number
4 =>
Four is the magic number
5 =>
Five is four and four is the magic number
6 =>
Six is three and three is five and five is four and four is the magic number
7 =>
Seven is five and five is four and four is the magic number
8 =>
Eight is five and five is four and four is the magic number
9 =>
Nine is four and four is the magic number
10 =>
Ten is three and three is five and five is four and four is the magic number
17 =>
Seventeen is nine and nine is four and four is the magic number
100 =>
One Hundred is ten and ten is three and three is five and five is four and four is the magic number
142 =>
One Hundred Forty Two is eighteen and eighteen is eight and eight is five and five is four and four is the magic number
1,000 =>
One Thousand is eleven and eleven is six and six is three and three is five and five is four and four is the magic number
1,642 =>
One Thousand Six Hundred Forty Two is twenty nine and twenty nine is ten and ten is three and three is five and five is four and four is the magic number
70,000 =>
Seventy Thousand is fifteen and fifteen is seven and seven is five and five is four and four is the magic number
131,072 =>
One Hundred Thirty One Thousand Seventy Two is thirty seven and thirty seven is eleven and eleven is six and six is three and three is five and five is four and four is the magic number
999,999 =>
Nine Hundred Ninety Nine Thousand Nine Hundred Ninety Nine is fifty and fifty is five and five is four and four is the magic number
Reglas
- La entrada puede tomarse de
STDIN
o como argumento para una función - La entrada será un número positivo entre 0 y 999,999
- La entrada solo contendrá números (seguirá la expresión regular
^[0-9]+$
) - La entrada puede tomarse como un entero o una cadena
- Cuando se convierte en una cadena de palabras, los espacios y guiones no deben incluirse en el recuento (100 [Cien] son 10 caracteres, no 11. 1,742 [Mil setecientos cuarenta y dos] son 31 caracteres, no 36)
- Cuando se convierte en una cadena, 100 debe ser Cien, no Cien o Cien, 1000 debe ser Mil, no Mil o Mil.
- Cuando se convierte en una cadena 142 debe ser Ciento cuarenta y dos, no Ciento cuarenta y dos
- La salida no distingue entre mayúsculas y minúsculas , y debe seguir el formato " N es K y K es M y M es ... y cuatro es el número mágico" (a menos que la entrada sea 4, en cuyo caso la salida debería ser simplemente "cuatro es el número mágico ")
- La salida puede usar números en lugar de letras ("5 es 4 y 4 es el número mágico" en lugar de "cinco es cuatro y cuatro es el número mágico") siempre que su programa sea siempre consistente
- La salida puede ser el valor de retorno de una función o imprimirse en
STDOUT
- Se aplican lagunas estándar
- Este es el código de golf , por lo que gana el programa más corto en bytes. ¡Buena suerte!
Prima
-30 bytes si el programa funciona cuando la entrada está entre -999,999 y 999,999.
Los números negativos, cuando se convierten en palabras, solo tienen "negativo" delante de ellos. Por ejemplo -4
es "Negativo cuatro", Negativo cuatro es doce y doce es seis y seis es tres y tres es cinco y cinco es cuatro y cuatro es el número mágico
-150 bytes si el programa no utiliza ninguna función incorporada para generar la representación de cadena del número
Tabla de clasificación
Este es un fragmento de pila que genera una tabla de clasificación y una descripción general de los ganadores por idioma.
Para asegurarse de que su respuesta aparezca, comience su respuesta con un título usando la siguiente plantilla de Markdown
## Language Name, N bytes
Donde N es el tamaño, en bytes, de su envío
Si desea incluir varios números en su encabezado (por ejemplo, tachar los puntajes antiguos o incluir marcas en el recuento de bytes), solo asegúrese de que el puntaje real sea el último número en su encabezado
## Language Name, <s>K</s> X + 2 = N bytes
Respuestas:
Bash + utilidades comunes (incluidos los juegos bsd), 123-30 = 93 bytes
Afortunadamente, el resultado de la utilidad bsd-games
number
es casi exactamente lo que necesitamos. Todos los números de salida están escritos numéricamente y no en palabras según el octavo punto:fuente
C,
263261 bytes - 180 = 81Inspirado por la respuesta de Cole Cameron . Pensé que podría hacerlo mejor sin la definición de macro. Aunque finalmente lo logré, ¡tomó un poco de presión lograrlo!
Requiere un conjunto de caracteres de host con letras consecutivas (por lo que ASCII está bien, pero EBCDIC no funcionará). Eso es para el par de tablas de búsqueda. Elegí
j
el carácter cero y aproveché la necesidad de dos búsquedas, para poder restar una de la otra en lugar de tener que restar mi cero de ambas.Versión comentada:
Hay una extensión obvia para soportar millones, al reemplazar
f(n/1000,8)
conf(n/1000000,7)+f(n/1000%1000,8)
.Prueba de salida
fuente
Mathematica, 156-30 = 126 bytes
Simplemente me sorprende que esto use cadenas y no sea ridículamente largo.
fuente
Swift 2 ,
408419 - 30 = 389 BytesSería capaz de deshacerme de 176 bytes si Swift no fuera tan detallado con expresiones regulares (eliminando guiones y espacios) * mira a Apple *
Esto se puede probar en swiftstub.com, aquí
Ejecuté un poco para el bucle, y resulta que
100003
el número entre 0 y 999999 tiene el resultado de cadena más largo, que tiene 6 iteraciones, y esSin golf
fuente
NSStringCompareOptions.RegularExpressionSearch
Y pensé que JSString.fromCharCode
era detallado. : Pstring.replace
. Swift:String.stringByReplacingOccurrencesOfString
Haskell, 285-180 = 105 bytes
De hecho, no hay ningún incorporado para mostrar el número. Todavía no estoy satisfecho con el puntaje. Siéntase libre de comentar. Sin embargo, experimentaré más. Aún así, el puntaje es mejor que el puntaje de Swift
uso
Explicación.
m
es lo suficientemente trivial, sin embargo,c
no lo es.c
es la función para contar el número de caracteres del nombre en inglés del número.fuente
C, 268-180 = 88 bytes
Pruébalo aquí .
Sin golf
fuente
Java, 800-150 = 650 bytes
De golf
fuente
==0
a<1
. Entonces:return P<1?_>0?d:e:P<R?f[P]+Q:P<Y?(f[R+(P/X)]+" "+a(P%X,0,e)).trim()+Q:P<Z?a(P/Y,0,O)+a(P%Y,0,e)+Q:a(P/Z,0," thousand ")+a((P/Y)%X,0,O)+a(P%Y,0,e)+Q;
( - 10 bytes )QC, 265 - 30 - 150 = 85 bytes
Banco de pruebas
Sin golf:
fuente
JavaScript, 382 - 150 - 30 = 202 bytes
La entrada se proporciona como parámetro para la expresión de función invocada inmediatamente.
Prueba de entrada:
De-golf:
fuente
Python 641-150 = 501 bytes
¡Al menos no es más largo que Java! Se basa en esto, excepto el uso de cadenas.
EDITAR : Olvidé el 0 y necesito decir "5 es 4", no saltar al "4 es el número mágico", lo que agregó un poco a la puntuación.
Pruébalo aquí!
fuente
i(5)
impresiones4 is the magic number
, en lugar de5 is 4 and 4 is the magic number
.Moo,
182176/192188 bytes - 30 = 146/158Versión de 188 bytes:
Versión de 176 bytes dependiente de la implementación :
Ambas son funciones.
fuente
PHP, 168-30 = 138 bytes
fuente