Relacionado: Hola mundo !!! Distribución de Fibonacci
Cree un programa que devuelva True si una entrada determinada cumple con las siguientes especificaciones, y False en caso contrario:
- El recuento de caracteres numéricos (0-9) en la entrada coincide con un número de Fibonacci.
- El recuento de caracteres no numéricos (0-9) en la entrada coincide con el número de Fibonacci que precede inmediatamente al recuento de caracteres numéricos.
Reglas Adicionales:
- Su programa debe usar la secuencia de Fibonacci adecuada, según OEIS, es decir, la secuencia de Fibonacci debe comenzar con
0, 1, 1, 2, ...
- Si el recuento numérico o no numérico es 1, debe ocurrir lo siguiente:
- Numérico 1: el recuento no numérico de 0 o 1 debe manejarse como verdadero, todos los demás son falsos.
- No numéricos 1: el recuento numérico de 1 o 2 debe manejarse como verdadero, todos los demás son falsos.
- La entrada se puede tomar como desee, pero el programa debe ser capaz de manejar cualquier texto arbitrario.
- Verdadero / Falso no distingue entre mayúsculas y minúsculas, y puede sustituirse con 1/0 o T / F.
- Solo puede codificar hasta dos números de Fibonacci.
- La salida solo puede ser Verdadero / Falso o 1/0 o T / F. Cualquier texto adicional o errores visibles generados es inaceptable.
Respuestas:
Golfscript, 36
Explicación:
:?
almacena la entrada en?
.1 2{.@+.?,<}do
calcula los dos últimos números de Fibonacci hasta que alcanza la longitud de entrada. El bloque dice: "duplique la parte superior, gire el tercer valor hacia la parte superior, agréguelos, duplique la parte superior, obtenga la entrada, obtenga su longitud, compare".?,=
compara el último número de Fibonacci calculado con la longitud de entrada.@
trae la entrada a la cima{.48<\58<^},
filtra solo dígitos. El bloque dice "¿es el valor ASCII por debajo de 48 XOR por debajo de 58?",@=
compara la longitud de la cuerda filtrada con el número de fibonacci inferior (recuento de dígitos)*
combina las dos comparaciones para proporcionar un único valor booleano.Demostración en vivo: http://golfscript.apphb.com/?c=OyIvMDU5OiIKOj8xIDJ7LkArLj8sPH1kbz8sPUB7LjQ4PFw1ODxefSwsQD0q
fuente
Javascript,
92 8886 caracteresEspero que no te importe, he codificado los primeros tres números de Fibonacci.
fuente
a
no necesitaba inicialización. En cuanto a por qué empiezo en 1,2,3, el póster del desafío inicial no aceptó1
como inmediatamente anterior1
.Python -
128125Realmente espero que no haya ningún problema con codificar los primeros números de Fibonacci
fuente
Perl, 92
Uso:
fuente
Python 3
(105 caracteres)
El nombre del archivo de script se pasa al programa a través de la línea de comando
(87 caracteres)
El script debe escribirse en un archivo con el nombre 's'
fuente
Java -
147145Yo diría que esto no es malo para Java.
Editar : Gracias a Chris Hayes por sugerir
0>1
falso y0<1
verdadero.fuente
1==0
lo usemos para ahorrar en caracteres, puede usarlo0<1
en lugar detrue
y0>1
parafalse
.APL, 34 caracteres / bytes *
Espera la cadena de entrada en la entrada estándar e imprime 0 o 1 según sea necesario.
⎕IO
debe establecerse en 0 (el valor predeterminado depende de la implementación).Sin golf
Ejemplos
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ *: APL puede escribirse en su propio juego de
caracteres de un solo byte (heredado) que asigna símbolos APL a los valores superiores de 128 bytes. Por lo tanto, para fines de puntuación, un programa de N caracteres que solo usa caracteres ASCII y símbolos APL puede considerarse que tiene N bytes de longitud.
fuente
Ruby, 85
Toma la entrada en
STDIN
o como argumento de nombre de archivo.La salida es
"true"
o"false"
.fuente