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.


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

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)

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


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.


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.


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?


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});}

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.


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


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.


5

Python

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

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


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

@ 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!!!

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 :(


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.


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.

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!!!

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.



Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.