Relacionados: Olá, mundo !!! Distribuição de Fibonacci
Crie um programa que retorne True se uma determinada entrada atender às seguintes especificações e False caso contrário:
- A contagem de caracteres numéricos (0 a 9) na entrada corresponde a um número de Fibonacci.
- A contagem de caracteres não numéricos! (0-9) na entrada corresponde ao número de Fibonacci imediatamente anterior à contagem de caracteres numéricos.
Regras adicionais:
- Seu programa deve usar a sequência de Fibonacci adequada, por OEIS - ou seja, a sequência de Fibonacci deve começar com
0, 1, 1, 2, ...
- Se a contagem numérica ou não numérica for 1, o seguinte deverá ocorrer:
- Numéricos 1: A contagem não numérica de 0 ou 1 deve ser tratada como Verdadeira - todas as outras Falso.
- Não Numéricos 1: a contagem numérica de 1 ou 2 deve ser tratada como Verdadeira - todas as outras Falso.
- A entrada pode ser obtida como você quiser, mas o programa deve ser capaz de lidar com qualquer texto arbitrário.
- Verdadeiro / Falso não diferencia maiúsculas de minúsculas e pode ser substituído por 1/0 ou T / F.
- Você pode codificar apenas até dois números de Fibonacci.
- A saída pode ser apenas Verdadeiro / Falso ou 1/0 ou T / F. Qualquer texto adicional ou erros visíveis gerados são inaceitáveis.
Respostas:
Golfscript, 36
Explicação:
:?
armazena a entrada em?
.1 2{.@+.?,<}do
calcula os dois últimos números de fibonacci até atingir o comprimento de entrada. O bloco diz: "duplique o topo, gire o terceiro valor para o topo, adicione-os, duplique o topo, obtenha a entrada, obtenha seu comprimento, compare".?,=
compara o último número de fibonacci calculado com o comprimento da entrada.@
traz a entrada para o topo{.48<\58<^},
filtra apenas dígitos. O bloco lê "é o valor ASCII abaixo de 48 XOR abaixo de 58?",@=
compara o comprimento da string filtrada com o número mais baixo de fibonacci (contagem de dígitos)*
mescla as duas comparações para fornecer um único valor booleano.Demonstração ao vivo: http://golfscript.apphb.com/?c=OyIvMDU5OiIKOj8xIDJ7LkArLj8sPH1kbz8sPUB7LjQ4PFw1ODxefSwsQD0q
fonte
Javascript,
92 8886 caracteresEspero que você não se importe de ter codificado os três primeiros números de Fibonacci.
fonte
a
não precisava de inicialização. Quanto a por que começo com 1,2,3 - o pôster do desafio inicial não foi aceito1
como imediatamente anterior1
.Python -
128125Realmente espero que não haja problema em codificar os primeiros números de fibonacci
fonte
Perl, 92
Uso:
fonte
Python 3
(105 caracteres)
O nome do arquivo de script é passado para o programa através da linha de comando
(87 caracteres)
O script deve ser gravado em arquivo com o nome 's'
fonte
Java -
147145Eu diria que isso não é ruim para Java.
Editar : Obrigado a Chris Hayes por sugerir
0>1
falso e0<1
verdadeiro.fonte
1==0
para economizar personagens, você pode usar0<1
no lugar detrue
e0>1
parafalse
.APL, 34 caracteres / bytes *
Espera a sequência de entrada na entrada padrão e imprime 0 ou 1, conforme necessário.
⎕IO
deve ser definido como 0 (o padrão depende da implementação).Ungolfed
Exemplos
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
*: APL pode ser escrito na sua própria (legado) de conjunto de caracteres de byte único que mapeia símbolos APL para os 128 valores de bytes superiores. Portanto, para fins de pontuação, um programa de N caracteres que usa apenas caracteres ASCII e símbolos APL pode ser considerado como N bytes.
fonte
Ruby, 85
Aceita entrada
STDIN
como argumento de nome de arquivo.A saída é
"true"
ou"false"
.fonte