Le but de ce défi est d'écrire un programme où la longueur des trois suivantes est exactement la même:
- la longueur du code source
- la longueur de la sortie imprimée sur la sortie standard
- la longueur des avertissements du compilateur qu'il génère avec le compilateur (non modifié) de votre choix
Le gagnant est le code le plus court pour répondre aux trois critères et doit comporter au moins 1 caractère.
Pour pimenter les choses, si la sortie a moins de trois caractères différents, elle obtient une pénalité de 5 points ajoutée à la longueur de chacun (donc +10 si un seul type, +5 pour deux).
(Les sauts de ligne comptent pour 1 ou 2 caractères, selon votre choix, mais ils doivent être cohérents dans les trois critères. Les espaces blancs de début et de fin sont ignorés dans toutes les lignes des trois critères)
En cas de score égal, celui qui imprime le résultat le plus intéressant (au lieu de la poubelle) est le gagnant.
Réponses:
Bash, 23 caractères
Erreur:
La source:
Production:
Brainf * ck, 32 caractères
Ce code s'exécute pendant environ 3 secondes et s'arrête et affiche l'erreur et la sortie suivantes.
Erreur:
La source:
Sortie: (Hexdump)
C, 35 caractères
Avertissement:
Source et sortie:
PHP, 50 caractères
Avertissement:
Source et sortie:
la source
C - 48 caractères
Remarque: inclut une nouvelle ligne finale (style Unix).
Sortie des
gcc a.c
lectures:La sortie de
a.out
est principalement des caractères non imprimables, alors voici à quoi cela ressemble après avoir passé par hexdump:la source
main(i){i='\z';while(i-->74)putchar(i);}
- mais réduire la taille du programme est en fait contre-productif.JavaScript, 63
66La sortie est:
Dans Chrome, l'erreur est:
la source
Visual Basic .NET, 185
Gee,
vbc
est assez verbeux avec ses avertissements de compilation. Quoi qu'il en soit, le code est le suivant:(Notez qu'ils sont censés être des tabulations, pas des espaces.)
La sortie est la suivante:
Et l'avertissement du compilateur est le suivant:
(Cette fois, c'est en fait quatre espaces, pas des tabulations.)
la source
Zsh , 20 octets
Le problème auquel nous sommes confrontés ici est évoqué dans un commentaire ci-dessus: Zsh imprime le nom du programme en plus du numéro de ligne avant chaque erreur. La solution ici utilise un nom de fichier à un caractère pour en abuser. Je l'ai enveloppé dans un script d'aide pour montrer exactement ce qu'il imprime et utilisé
wc -c
sur stderr, stdout et le fichier source.Sortie:
569Xcatcatcatcatcat
suivie d'une nouvelle ligneErreurs:
s:[:2: ']' expected
suivie d'une nouvelle ligneEDIT: solution alternative de 20 octets sans restriction de fichier:
Essayez-le en ligne!
Zsh ,
zsh -x
, 10 octets-x
flag active xtrace. Cela nécessite à nouveau un nom de fichier à un seul caractère. Essayez-le en ligne!Zsh
zsh -JNTwEDY
, 12 octets-flag
Réponse la plus courte sans exigence de nom de fichier. Définit plus de drapeaux et les$-
imprime tous. Essayez-le en ligne!la source
JavaScript (Firefox 54), 34 octets
Les sorties:
Et il envoie cet avertissement à la console du navigateur:
Il ressemble à ceci dans ma copie de Firefox Developer Edition (54.0a2). Il peut également fonctionner dans d'autres versions de Firefox.
la source
Ruby, 48 caractères
Les sorties
Avertit
(le fichier est r.rb, j'ai supprimé le chemin, si vous l'exécutez depuis irb, vous obtiendrez (irb): 1: avertissement ...)
Il y a la méthode warn dans Ruby, mais elle renvoie juste ses arguments à $ stderr, ce qui la fait ressembler moins à un avertissement.
la source
Python, 57 octets
D'autres interprètes peuvent afficher l'avertissement différemment. Cela n'a été testé que pour fonctionner sur TIO.
Essayez-le en ligne
Production
avertissement
Notez que les espaces de tête ne sont pas comptés dans le nombre d'octets. Si les espaces de tête n'étaient pas ignorés, cela pourrait être fait en 51 octets.
la source
Javascript (ES6),
3230 octetsimpressions
dans Chrome, puis jette
Ma solution originale de 32 octets:
d'abord, imprime
Et jette l'erreur
la source
VBA, 39 octets
Je ne sais pas si cela se qualifie, compte tenu de la contrainte du compilateur, mais:
Entrée: (dans la fenêtre immédiate)
* La sortie comprend des caractères non imprimables qui ne jouent pas bien dans cette fenêtre.
la source
Perl 6 , 10 octets
Essayez-le en ligne!
Imprime
1000000000
vers STDOUT etBool::True
vers STDERR. Les deux produisent une nouvelle ligne de fin, mais les espaces de fin sont ignorés dans ce défi.dd
est une fonction de débogage spécifique à Rakudola source