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.