Para cada uno de estos nueve confusamente similares palabras , asigne un número 1-9 de la forma que desee:
though
through
thorough
Thoreau
throw
threw
trough
tough
troll
Escribe un programa que tome una cadena. Si la entrada es una de estas nueve palabras, envíe el número que le asignó. Si la entrada no es una de las palabras anteriores, el programa puede hacer cualquier cosa (incluso error o bucle para siempre).
Las palabras distinguen entre mayúsculas y minúsculas, por ejemplo Thoreau
, deben producir un número del 1 al 9 perothoreau
no necesariamente harán lo mismo.
Ejemplo
Suponga que asigna los números de la siguiente manera:
though 9
through 2
thorough 7
Thoreau 6
throw 3
threw 5
trough 4
tough 1
troll 8
Entonces cuando tough
es entrada, 1
debe salir.
Cuando through
es entrada, 2
debe salir.
Cuando throw
es entrada, 3
debe salir.
. . .
Cuando though
es entrada, 9
debe salir.
Todas las demás entradas pueden hacer cualquier cosa.
Detalles
- Tome la cadena de entrada a través de stdin o la línea de comando y salida a stdout.
- La salida puede contener una nueva línea final.
- En lugar de un programa, puede escribir una función que tome una cadena e imprima el resultado normalmente o lo devuelva.
- La presentación más corta en bytes gana .
fuente
find
método de cadena Python . Entonces las reglas cambiaron. Idea inteligente, no tan inteligente ahora.Respuestas:
CJam,
11 97 bytesCómo funciona :
Estamos haciendo uso del hecho de que la suma de los códigos ASCII + 2 modelados con 11 da un orden muy agradable de 1 a 9 y luego 10 para las nueve palabras en cuestión. Aquí está el pedido:
Explicación del código :
4 bytes guardados gracias a user23013
Pruébalo en línea aquí
fuente
q1b2+B%
.Pyth, 8 caracteres
Pruébelo en línea: Demostración o conjunto de pruebas
Estoy usando la tarea:
Explicación:
Por cierto, he encontrado el número mágico 8109 mediante el uso de este script:
fqr1 10Sme%CdT.z1
.fuente
Python 2,
9254 bytesLa cadena de índice se crea con
for word in words: print chr(hash(word)%95+32),
. Como se señaló en la respuesta de Jakube, la función hash dará diferentes resultados dependiendo de la versión de Python. Esta cadena de índice se calcula en Python 2.7.6 de 64 bits.Respuesta más larga (92 bytes) pero menos críptica:
Los programas devuelven 1-9, aunque a través de Thoreau a través de un troll duro en ese orden. Cuando no se encuentra la entrada, find devolverá un -1 que convenientemente se convierte en cero después de
+1
.fuente
0
cosas ya no son necesarias. Perdón por haberte cambiado.Python 2.7.9 versión de 32 bits, 22 bytes
Tenga en cuenta que la versión es realmente importante aquí. Obtendrá resultados diferentes si está utilizando una versión de Python de 64 bits. Dado que el
hash
método calculará valores hash de 64 bits en lugar de 32 bits.La tarea es:
Pruébelo en línea: http://ideone.com/Rqp9J8
fuente
sorted(...)==range(1,10)
me detuve.Pyth, 7 bytes
Estoy usando la siguiente tarea:
Cz
interpreta la entrada como un número base 256. Luego, tomamos este mod 31, restamos 1 y tomamos el resultado mod 10. Pseudocódigo equivalente:Demostración , prueba de arnés .
fuente
Python 2, 27 bytes
Con esta tarea:
Son posibles varias variaciones, p. Ej.
fuente
Japt , 6 bytes
Pruébalo | Revisa todas las palabras
Explicación
Aprovecha el hecho de que, al analizar una
n
cadena base a un entero, JavaScript dejará de analizar si encuentra un dígito mayor quen
y devolverá el resultado a ese punto. Al usar base-32 aquí (dígitos0-v
), lasw
s en "arrojar" y "arrojar" son, esencialmente, ignoradas.JavaScript, 22 bytes
Una traducción directa: no parece que valga la pena publicarla por separado.
fuente
C (gcc) , 66 bytes
Pruébalo en línea!
fuente
-O
bandera del compilador.h;f(char*s){for(h=33;*s;)h^=*s++;h=index("(Z5qW]2@H",h)-"H"+9;}
Java 8,
5325 byteso
Puerto de @Optimizer Cjam respuesta 's, ya que (probablemente) no se puede hacer más corto en Java ..
Pruébalo en línea.
fuente
parseInt
, ¿no? ¿Un puerto de mi solución no sería más corto?parseInt
una base dada, pero desafortunadamente es demasiado byte debido al requisito de clase estática:Long.parseLong(...,32)
como la variante más corta. Además, parece fallar"throw"
(y"threw"
también) en Java por alguna razón .w
parece estar fuera del rango de base 32 (y usar 33 da resultados incorrectos).Jalea , 7 bytes
Pruébalo en línea!
Aburrido puerto Jelly de la fantástica respuesta CJam.
fuente