Escriba un programa que defina una función que pueda verificar si una variable de cadena llamada "cualquier cosa que desee o ingrese el usuario" es o no un piem. (piem = una historia o un poema en el que la longitud de las palabras representa los dígitos de π ( de Wikipedia ))
Algunos ejemplos:
myfunction("I am clearly wrong") # False
myfunction("How I want a drink, alcoholic of course, after the heavy lectures involving quantum mechanics") #True (Taken from Wikipedia)
myfunction("Law ' s fine") # True
Debe eliminar cualquier tipo de puntuación o nueva línea antes de procesar. Golf de código puro, las victorias más cortas
Fecha final: noche del 10/01/2014
Varias respuestas
- ¿Cuántos dígitos necesitamos manejar? Mas de 10
- Como cuestión de interés, ¿cómo deben interpretarse los 0 en PI? ¿Saltado o palabras de 10 letras? Como palabras de 10 letras
- "una variable llamada piem", ¿entonces el nombre del parámetro debe ser piem? No, no lo ha hecho, texto de pregunta corregido
- Un bono divertido podría ser una solución que es en sí misma un piem. Si su solución es un piem, obtiene * 0.5 bonus
- En aras de la discusión, ¿es _ siempre puntuación? Puedes decidir si es puntuación o si no lo es
- No está claro qué se entiende por "cualquier tipo de puntuación" quiero decir, ''?! ;; ()
- Entonces, ¿los dígitos deben contarse? ¿Y la multa de Law sería falsa? Los dígitos deben tratarse como letras, Law's fine = False; La ley está bien = Verdadero
Comentarios
- La solución APL debe contarse en bytes
- Si su solución funciona para más de 100 dígitos de pi, obtendrá * 0.8 de bonificación
- Debido al gran interés, la fecha de finalización es un día más en el futuro.
piem
? Eso hace que todas las respuestas actuales sean incorrectas.Respuestas:
APL (39)
Utiliza todos los dígitos que proporciona la constante pi del intérprete APL, hasta un límite de 99. En mi caso (Dyalog APL 14 de 32 bits), eso era 16 dígitos. La versión de 64 bits probablemente tenga más dígitos. Sin embargo, 16 dígitos son suficientes para que funcionen los ejemplos dados.
Las cadenas que tengan más de esa cantidad de palabras fallarán , incluso si todos los dígitos que pudiera verificar fueran verdaderos. (Lo mismo es cierto para otras publicaciones, a partir de este escrito.) Por ejemplo, si solo hubiera 10 dígitos, el 'Cómo quiero un trago' fallaría. Esto se puede arreglar, pero a costa de 14 caracteres:
Esa versión aceptará cualquier cadena donde los primeros N dígitos sean correctos.
fuente
JavaScript
(169) (140) (137) (135)(63) para 17 dígitos de piEn mi versión
Law's fine
yLaw ' s fine
regreso ambos verdaderos.La versión más nueva (63) por Ingo Bürk y hsl
Nueva versión (135) para 17 dígitos de pi (Gracias a Ingo Bürk):
Versión anterior (169) para 32 dígitos de pi:
fuente
1e15*Math.PI+"2384626433832795"
for
bucle no se puede agregar de esta manera.r=0
y luego hacer un ciclor+=s[a].length!=p[a]
(puede omitirlo;
al final) Entonces, vuelve!r
.Ruby,
11310179 (98 * 0,8)Explicación
String
.999
decimales y se convierte en una cadena con el.
eliminado."Let's"
se cuenta como dos palabras:"Let"
y"s"
.Array#map
para convertir cada palabra al tamaño de la palabra, concatenarlas en aString
.String
s creados comienzan con los mismos caracteres.He aplicado la bonificación por manejar más de 100 dígitos.
_
no se maneja como puntuación en esta solución.fuente
_
como puntuación._
siempre la puntuación? ¿Qué pasa con oraciones comoMy nickname on Stack Overflow is britishtea_500
.Mathematica, 123 bytes * 0.8 = 98.4
Casi la presentación más larga hasta ahora, pero:
fuente
Python -
130 127116 - 17 dígitos de piComo en la respuesta de @flawr ,
Law ' s fine
yLaw's fine
ambos devuelven True.Gracias a @Emil por eliminar 12 caracteres del programa.
fuente
l
en una variable y definiendo la función usando lambda.Java, 185
fuente
pitón 3, 17 dígitos de pi, 104
fuente
;
con una nueva línea para facilitar la lectura. Además, se pueden eliminar varios espacios.Python 3 - 129
No tiene en cuenta la puntuación:
fuente
T-SQL
488383Y ahora para una gran solución T-SQL :)
Esto crea una función con valores de tabla en línea que utiliza un CTE recursivo para detectar límites de palabras.Crea una función escalar que mastica a través de las palabras y PI hasta 31 decimales (primer 0). Se llama de la siguiente manera
fuente
CJam, 40
No está claro qué se entiende por "cualquier tipo de puntuación"; Esta solución elimina los
,.'"?!;;
caracteres.fuente
Herramientas Bash y Unix, 111
fuente
NodoJS 32 dígitos 230 Bytes
No puedo acortarlo con JS: D
fuente