Olá Mundo!!! Distribuição de Fibonacci

21
  1. Seu programa deve produzir exatamente: Hello world!!!com ou sem avanço de linha depois.
  2. Seu programa não deve receber entrada.
  3. A distribuição de caracteres do código fonte deve estar correta de acordo com:
    • O número de caracteres numéricos (0 a 9) deve ser exatamente um número de sequência de fibonacci.
    • O número de outros caracteres não numéricos ! (0-9) no código-fonte deve ser exatamente o número de sequência de fibonacci antes do número de sequência de fibonacci acima.

Quatro exemplos de distribuição de caracteres válidos no código fonte:

  • 13 caracteres numéricos e 8 não numéricos.
  • 34 caracteres numéricos, 21 não numéricos.
  • 55 caracteres numéricos e 34 não numéricos.
  • 89 caracteres numéricos, 55 não numéricos.

Este é o código-golfe, o código mais curto em bytes vence! Boa sorte!

Edit: Como esta pergunta tem restrições no tamanho do código-fonte em combinação com o código-golf, a resposta aceita (se mais de um compartilhamento com o mesmo comprimento de caracteres vencedores) será a resposta com mais votos (e menos caracteres): 2014- 03-01.

Plarsen
fonte
6
Assim, todas as soluções têm uma contagem de caracteres que é um número de fibonacci.
Howard
11
Aqui está um programa para respostas Validar (cole o código na caixa de entrada.)
Justin
11
É possível fazer isso com menos de 55 caracteres? A saída necessária possui 14 caracteres, e não consigo pensar em um idioma que possa usar números para gerar caracteres sem usar pelo menos um caractere por caractere.
Justin
2
@Plarsen definitivamente não OK
John Dvorak
11
Ok, eu não vou mudar as regras então :)
Plarsen

Respostas:

27

Prompt de Comando do Windows - 34, 8 , 5 caracteres, (2 abaixo)

* Esses podem ou não estar violando a regra 2, mas aqui está mesmo assim

%~099

Nomeie o arquivo:

&start call echo Hello world!!!&exit -b .cmd


Agora vamos corromper um pouco o sistema de arquivos - 2 caracteres (ou menos, se você quiser)

A1

Nomeie o arquivo (usando seu método não ortodoxo preferido):

"&start call echo Hello world!!!&exit&.cmd

Como é que isso funciona:

Como os scripts cmd são chamados com 'cmd.exe / C "% 1"% *', o comando executado será:

cmd.exe /C "c:\PATH_TO_THE_SCRIPT\"&start call echo Hello world!!!&exit&.cmd"

que será na seguinte ordem:

  • Falha ao executar "c: \ PATH_TO_THE_SCRIPT \"
  • Abra uma nova impressão de shell Olá, mundo! \ N
  • Sair do shell original
Robert Sørlie
fonte
2
Uau! Acho que tínhamos vencido se as regras não estivessem dizendo nenhuma contribuição. +1 de qualquer maneira para o pensamento fora da caixa.
Plarsen
2
Código de golfe com o Windows CMD ... +1. Além disso, é discutível que "nenhuma entrada" poderia ter significado "não ler STDIN": P
Camilo Martin
11
Isso é um truque interessante para outros campos de golfe de código também ... escrever o código real no nome do arquivo e usar algo como eval $0executá-lo <rolleyes>
Tobia
11
Isso é impossível!! 5 caracteres? Abordagem realmente interessante
Plarsen
11
Na verdade, acabei de publicar uma solução de 2 caracteres abaixo.
precisa saber é
20

MySQL, 34

x'48656C6C6F20776F726C642121'||'!'

Esta é uma expressão do MySQL avaliada Hello world!!!, assumindo que a sql_modeconfiguração inclui PIPES_AS_CONCAT. Ele contém exatamente 21 dígitos e 13 não dígitos.

Se isso se qualifica como uma entrada válida, deixo para o júri.

Exemplo

mysql> select x'48656C6C6F20776F726C642121'||'!';
+------------------------------------+
| x'48656C6C6F20776F726C642121'||'!' |
+------------------------------------+
| Hello world!!!                     |
+------------------------------------+
1 row in set (0.00 sec)
Tobia
fonte
5
O que o ... CMD e SQL código vencedor golfe?
Camilo Martin
O selecte ;são parte indiscutível da declaração, mas ainda uma solução inteligente.
Primo
@primo eles são, é por isso que não tenho certeza se isso se qualifica. Mas eu pensei que eu ia postar-lo para hilaridade ;-)
Tobia
16

C64 BASIC, 55

insira a descrição da imagem aqui

Por diversão e nostalgia!

Gabriele D'Antona
fonte
11

GolfScript, 55 caracteres

[72 101 108 108 111 32 119 111 114 108 100 33 {.}2*]''+

Não encontrei uma maneira de ter uma solução de 34 caracteres, por isso criei esta.

Howard
fonte
10

Befunge 98 - 55

a"!!!dlrow olleH"ek,@1235813213455891442333776109871597

Decidiu fazer isso com uma nova linha, pois não custa nada. Os números são os valores concatenados da sequência de Fibonacci.

Justin
fonte
8

Python 34-55

print "Hello world%s"%("!"*int(3.141592653589793238462643383279502884197169399375105820))

Sim. Eu os desperdiço dígitos. O que você vai fazer sobre isso?

Reut Sharabani
fonte
Quem sabia que pi ~ 3 seria tão útil!
Kyle Kanos
11
A pergunta diz 21 não numéricos mais 34 numéricos, sua resposta é 34 não numéricos mais 21 numéricos.
precisa saber é o seguinte
11
o "olá mundo" deve ser "olá mundo"; que é capitalizar o h.
Justin
7

C (89 caracteres)

main() {
int i[0000000000000004]={1819043144,1870078063,560229490,2566922529};
puts(i);
}

Embora o acima exposto seja válido, infelizmente, meus esforços para compactá-lo com o programa a seguir não atendem às especificações. Eu sinto que vale a pena olhar e talvez alguém possa reduzi-lo um pouco (64 caracteres, 37 numerais, 27 não-numerais). Para compilá-lo, você terá que usar clang e with -fms-extensions.

main(){puts((__int128[]){671944380693508453879479574226248i8});}
vmrob
fonte
Literais compostos , é o nome do que você está procurando. Estou tentando usá-los para reduzir para 21 caracteres agora!
usar o seguinte código
A menor contagem não numérica que posso alcançar é 26, tornando-a iglobal (omitindo int). Usar longpode economizar vírgulas, mas custa mais. 21 está muito longe.
ugoren
Sim, é muito espaço desperdiçado. Usando esse truque, eu consigo, main(){puts((int[]){1819043144,1870078063,560229490,8481});}mas ainda são 60 caracteres. Se eu pudesse eliminar apenas mais alguns ... Edit: uau, então os globais não precisam ter uma declaração? Quem sabia?
vmrob
@ vmrob, os globais têm que ter uma declaração. Mas o tipo padrão é int, então a;é equivalente a int a;.
ugoren
@ugoren Eu sabia que eles tinham que ter uma declaração, eu simplesmente não sabia que ela tinha o padrão int!
vmrob
6

Windows PowerShell (provavelmente também Bash), 55

curl -L bit.ly/1b9q8ve?1=123581321345589144233377610987

Você não disse nada sobre o acesso à rede, então aqui está uma solução suja. Eu tenho um URL bit.ly com poucas letras suficientes na segunda tentativa. Infelizmente, ainda são 21 dígitos, necessitando de 34 dígitos para serem usados ​​ou desperdiçados.

John Dvorak
fonte
Você sabe que pode editar os links bit.ly, certo?
Timtech
Como assim, editar? Além disso, eu não receberia isso com menos de 13 letras em nenhum caso.
John Dvorak
Você pode clicar no lápis ao lado de "Copiar" e editar o link. Se você fizer isso, todas as versões antigas ainda funcionarão.
Timtech
11
Encurtado para 34! curl 37.187.42.18/?hw=112358132134
Dom Hastings
6

sh, 55

echo Hello world!!! #1234567890123456789012345678901234
user12205
fonte
6

Korn Shell, 21

echo $0
#123456789012

O script deve ser chamado "Olá, mundo !!!" :)

Gabriele D'Antona
fonte
5

Bash, 2 caracteres

Muito bem, no caso improvável de a resposta de Robert não ser desqualificada, aqui está a minha:

$0

Nomeie o arquivo echo Hello world!!!e execute com sh.

Tobia
fonte
5

Python

print'092020090920200948656c6c6f20776f726c642121212009200909200920'.decode('hex').strip()

dígitos: 55 dígitos não: 34

Eliseu
fonte
Observe que não há comentários na solução. apenas código.
Elisha
4

PHP (55 bytes)

Este programa usa binário (uau, é a terceira vez que reuso o mesmo truque). 21 caracteres não numéricos, 34 caracteres numéricos. Sem letras, porque as letras são chatas.

xxd

0000000: 3c3f 3d7e b79a 9393 90df 8890 8d93 9bde  <?=~............
0000010: dede f53b 2331 3233 3435 3637 3839 3031  ...;#12345678901
0000020: 3233 3435 3637 3839 3031 3233 3435 3637  2345678901234567
0000030: 3839 3031 3233 34                        8901234
Konrad Borowski
fonte
@ JanDvorak: Tenho quase certeza de que li "antes ou depois". Oh bem, deixe-me consertar isso então.
precisa saber é o seguinte
4

Mathematica 55

"Hello World!!!"(34+21!)/000000000051090942171709440034

Saída

Hello World!!!
ybeltukov
fonte
4

Sclipting (34 caracteres)

丟0000000000긒괡뉆롲닷댠닶롬뉔밈0000000000併0反

Infelizmente, o Sclipting não usa nenhum caractere ASCII, então eu tenho que preencher o programa com 21 caracteres numéricos inúteis :(

Timwi
fonte
2

Quarto ou Ruby, 55

(34 numérico + 21 não numérico)

Adiante

." Hello world!!!" \ 3141592653589793238462643383279502

Rubi

puts"Hello world!!!"#3141592653589793238462643383279502

Usar comentários para preencher parece sujo, mas essas são respostas válidas.

Darren Stone
fonte
2

J (55 caracteres)

(34 numérico + 21 não numérico)

(72 101 108 108 111 32 119 111 114 108 100{a.), 3#33{a.
Mort Yao
fonte
0

C #, 233 bytes

233 caracteres
144 numéricos
89 caracteres não numéricos

/*I suck at CodeGolf!!!*/new List<int>{0072,00101,000108,000108,000111,0000032,00000119,00000111,0000000000114,0000000000108,00000000000000100,00000000000000033,00000000000000033,00000000000000033}.ForEach(c=>Console.Write((char)c));

Saídas:

Hello world!!!
Pete Arden
fonte
0

Japonês , 55 bytes

"aaaaaaa1234567890123456789012345678901234"`HÁM WŽld!!!

Experimente online!

É basicamente um mundo simples de olá, com algum lixo no começo que é ignorado, mas faz com que o código atenda às condições.

Hawkings
fonte
-1

Lote do Windows

echo Hello World!!!::0123456789012345678901234567890123
Timtech
fonte
12
Uau. Isso é muito diferente da minha solução sh.
precisa saber é o seguinte
-3

http://esolangs.org/wiki/Hello%2B%2B

h000000000051090942171709440034

o h imprime olá e o resto são apenas números

qwerty
fonte
Esta não é distribuído de acordo com Fibonacci, também, a saída não é exatamenteHello world!!!
Timtech