Bonjour le monde!!! Distribution de Fibonacci


21
  1. Votre programme devrait sortir exactement: Hello world!!!avec ou sans saut de ligne après.
  2. Votre programme ne devrait prendre aucune entrée.
  3. La distribution des caractères du code source doit être correcte selon:
    • Le nombre de caractères numériques (0-9) doit être exactement un numéro de séquence fibonacci.
    • Le nombre d' autres caractères non numériques ! (0-9) dans le code source doit être exactement le numéro de séquence fibonacci avant le numéro de séquence fibonacci ci-dessus.

Quatre exemples de distribution de caractères valides dans le code source:

  • 13 caractères numériques, 8 caractères non numériques.
  • 34 caractères numériques, 21 caractères non numériques.
  • 55 caractères numériques, 34 caractères non numériques.
  • 89 caractères numériques, 55 caractères non numériques.

C'est le code-golf, le code le plus court en octets gagne! Bonne chance!

Modifier: Comme cette question a des contraintes sur la taille du code source en combinaison avec le code-golf, la réponse acceptée (si plus d'un partage la même longueur de caractère gagnante) sera la réponse avec le plus de votes (et le moins de caractères): 2014- 03-01.


6
Ainsi, toutes les solutions ont un nombre de caractères qui est un nombre de fibonacci.
Howard

1
Voici un programme pour valider les réponses (collez le code dans la zone de saisie.)
Justin

1
Est-il même possible de le faire en moins de 55 caractères? La sortie requise a 14 caractères, et je ne peux pas penser à une langue qui puisse utiliser des nombres pour produire des caractères sans utiliser au moins un caractère par caractère.
Justin

2
@Plarsen n'est certainement pas OK
John Dvorak

1
D'accord, je ne changerai pas les règles alors :)
Plarsen

Réponses:


27

Invite de commandes Windows - 34, 8 , 5 caractères, (2 ci-dessous)

* Ceux-ci peuvent ou non enfreindre la règle 2, mais ici c'est quand même

%~099

Nommez le fichier:

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


Permet maintenant de corrompre un peu le système de fichiers - 2 caractères (ou moins si vous le souhaitez)

A1

Nommez le fichier (en utilisant votre méthode peu orthodoxe préférée):

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

Comment cela marche-t-il:

Puisque les scripts cmd sont invoqués avec 'cmd.exe / C "% 1"% *', la commande exécutée sera:

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

qui sera dans l'ordre suivant:

  • Impossible d'exécuter "c: \ PATH_TO_THE_SCRIPT \"
  • Ouvrez une nouvelle impression shell Bonjour tout le monde! \ N
  • Quittez la coque d'origine

2
Hou la la! Je pense que nous avions eu un gagnant si les règles ne disaient pas d'entrée. +1 de toute façon pour la réflexion hors des sentiers battus.
Plarsen

2
Code golf avec Windows CMD ... +1. En outre, on peut soutenir que «aucune entrée» aurait pu signifier «aucune lecture STDIN»: P
Camilo Martin

1
C'est aussi une astuce intéressante pour les autres golfeurs de code… écrivez le vrai code dans le nom du fichier et utilisez quelque chose comme eval $0pour l'exécuter <rolleyes>
Tobia

1
C'est impossible!! 5 caractères? Approche vraiment intéressante
Plarsen

1
En fait, je viens de publier une solution à 2 caractères ci-dessous.
Tobia

20

MySQL, 34

x'48656C6C6F20776F726C642121'||'!'

Il s'agit d'une expression MySQL qui est évaluée en Hello world!!!supposant que le sql_modeparamètre inclut PIPES_AS_CONCAT. Il contient exactement 21 chiffres et 13 non-chiffres.

Que cela soit considéré comme une inscription valide, je laisse cela au jury.

Exemple

mysql> select x'48656C6C6F20776F726C642121'||'!';
+------------------------------------+
| x'48656C6C6F20776F726C642121'||'!' |
+------------------------------------+
| Hello world!!!                     |
+------------------------------------+
1 row in set (0.00 sec)

5
Qu'est-ce que le ... Golf CMD et SQL gagnant du code ??
Camilo Martin

Le selectet ;font sans doute partie de la déclaration, mais c'est toujours une solution intelligente.
primo

@primo, ils sont, c'est pourquoi je ne sais pas si cela est admissible. Mais je pensais que je le posterais par hilarité ;-)
Tobia


11

GolfScript, 55 caractères

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

N'ayant pas trouvé de moyen d'avoir une solution à 34 caractères, j'ai donc créé celle-ci.


10

Befunge 98 - 55

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

Décidé de le faire avec une nouvelle ligne, car cela ne coûte rien. Les nombres sont les valeurs concaténées de la séquence de Fibonacci.


8

Python 34-55

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

Oui. Je leur fais perdre des chiffres. Que vas-tu faire à propos de ça?


Qui aurait cru que pi ~ 3 serait si utile!
Kyle Kanos

1
La question dit 21 non numérique plus 34 numérique, votre réponse est 34 non numérique plus 21 numérique.
user12205

1
le «monde bonjour» devrait être «monde bonjour»; c'est-à-dire capitaliser le h.
Justin

7

C (89 caractères)

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

Bien que ce qui précède soit valide, malheureusement, mes efforts pour le compacter avec le programme suivant ne répondent pas aux spécifications. Je pense que cela vaut la peine de regarder et peut-être que quelqu'un d'autre peut le raccourcir un peu (64 caractères, 37 chiffres, 27 non-chiffres). Pour le compiler, vous devrez utiliser clang and with -fms-extensions.

main(){puts((__int128[]){671944380693508453879479574226248i8});}

Littéraux composés , c'est le nom de ce que vous recherchez. J'essaie de les utiliser pour ramener cela à 21 caractères maintenant!
charmlessCoin

Le nombre non numérique le plus bas que je puisse atteindre est 26, en faisant iglobal (en omettant int). L'utilisation longpeut économiser des virgules, mais coûte plus cher. 21 est très loin.
ugoren

Oui, c'est beaucoup d'espace perdu. En utilisant ce petit truc, je peux y arriver main(){puts((int[]){1819043144,1870078063,560229490,8481});}mais ça fait quand même 60 caractères. Si je pouvais en éliminer quelques-uns de plus ... Edit: wow, donc les globaux n'auront pas besoin de déclaration Qui savait?
vmrob

@vmrob, les mondiaux doivent avoir une déclaration. Mais le type par défaut est intdonc a;équivalent à int a;.
ugoren

@ugoren Je savais qu'ils devaient avoir une déclaration, je ne savais tout simplement pas qu'elle était par défaut int!
vmrob

6

Windows PowerShell (probablement aussi Bash), 55

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

Vous n'avez rien dit sur l'accès au réseau, alors voici une sale solution. J'ai une URL bit.ly avec assez de lettres au deuxième essai. Malheureusement, il reste 21 non-chiffres, nécessitant 34 chiffres pour être utilisés ou gaspillés.


Vous savez que vous pouvez modifier les liens bit.ly non?
Timtech

Que voulez-vous dire, éditer? De plus, je n'obtiendrais pas cela sous 13 lettres de toute façon.
John Dvorak

Vous pouvez frapper le crayon à côté de "Copier" et modifier le lien. Si vous le faites, toutes les anciennes versions fonctionneront toujours.
Timtech

1
Raccourci à 34! curl 37.187.42.18/?hw=112358132134
Dom Hastings

6

sh, 55

echo Hello world!!! #1234567890123456789012345678901234


5

Bash, 2 caractères

Très bien, dans le cas peu probable où la réponse de Robert n'est pas disqualifiée, voici la mienne:

$0

Nommez le fichier echo Hello world!!!et exécutez avec sh.


5

Python

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

chiffres: 55 non chiffres: 34


Notez qu'il n'y a aucun commentaire dans la solution. seul code.
Elisha

4

PHP (55 octets)

Ce programme utilise le binaire (wow, c'est la troisième fois que je réutilise la même astuce). 21 caractères non numériques, 34 caractères numériques. Pas de lettres, car les lettres sont ennuyeuses.

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: Je suis presque sûr d'avoir lu "avant ou après". Eh bien, laissez-moi le réparer alors.
Konrad Borowski

4

Mathematica 55

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

Production

Hello World!!!

4

Sclipting (34 caractères)

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

Malheureusement, Sclipting n'utilise aucun caractère ASCII, je dois donc remplir le programme avec 21 caractères numériques inutiles :(


2

Forth or Ruby, 55 ans

(34 numériques + 21 non numériques)

Forth

." Hello world!!!" \ 3141592653589793238462643383279502

Rubis

puts"Hello world!!!"#3141592653589793238462643383279502

Utiliser des commentaires pour remplir est sale, mais ce sont des réponses valides.


2

J (55 caractères)

(34 numériques + 21 non numériques)

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

0

C #, 233 octets

233 caractères
144 numériques
89 caractères non numériques

/*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));

Les sorties:

Hello world!!!

0

Japt , 55 octets

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

Essayez-le en ligne!

C'est fondamentalement un monde bonjour simple avec quelques ordures au début qui est ignoré mais fait que le code remplit les conditions.


-1

Lot Windows

echo Hello World!!!::0123456789012345678901234567890123

12
Sensationnel. C'est tellement différent de ma solution sh.
user12205

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.