Contexte
Bonjour les golfeurs! Je voudrais apprendre tous les langages de programmation! Mais j'ai un peu d'attention ... et copier tous les exemples de Hello World devient ennuyeux ... mais j'aime le feu! ^ w ^
Défi
Alors voici le plan! Je veux que vous écriviez tous le plus petit code qui compilera, imprimera Goodbye Cruel World!
et plantera. Ou, en bonus, tordre, imprimer Hello World!
et planter avecGoodbye Cruel World!
Règles
- Votre score sera le nombre total de caractères utilisé. La réponse doit être tout un programme exécutable.
- Votre programme doit imprimer
Goodbye Cruel World!
en sortie, puis se bloquer (erreur inattendue).- Pour un bonus de score, vous devez imprimer
Hello World!
à la place, mais le message d'erreur doit également contenirGoodbye Cruel World!
. Si vous remplissez le défi de bonus, vous pouvez diviser votre score par 2. (Inclure un! À la fin de votre score si vous réclamez le bonus!)
- Pour un bonus de score, vous devez imprimer
- Tant que la sortie standard est toujours imprimée et que l'erreur standard est toujours imprimée, l'ordre n'a pas d'importance. Tant que ni l'un ni l'autre ne peut empêcher l'autre de se produire.
- La sortie doit contenir le contenu de ce qui précède;
"
ne devrait pas apparaître dans la sortie. - La sortie doit contenir la chaîne spécifiée et rien d’autre.
- Le rapport d'incident peut contenir n'importe quoi, mais pour réclamer le bonus, les expressions rationnelles suivantes doivent correspondre
/Goodbye Cruel World!/mi
(c'est-à-dire, contient, ignore la casse / le texte environnant)) - Les chaînes
Hello World!
etGoodbye Cruel World!
sont insensibles à la casse, mais devraient sinon apparaître exactement comme ci-dessus. - Si le langage est capable de se bloquer (il ne peut pas changer son code de sortie), il doit se bloquer. Sinon, utilisez le "rapport d'erreur" standard (c'est-à-dire
STDERR
) pour la langue.
Je peux planter Python 3, alors j’ai inclus un exemple de réponse Python 3! Maintenant, mettons tous le feu au monde! ^ W ^
as a bonus twist challenge, print "Hello World!" and crash with "Goodbye Cruel World!"
?Réponses:
Gelée , 12 octets
Essayez-le en ligne!
Explication:
Comme la division entière est une dyade, elle prendra implicitement la valeur actuelle de la chaîne comme deux arguments - qui est une chaîne. Se bloque parce qu'il attend des entiers.
la source
A base-250 encoded string
C'est à la fois cool et effrayant que vous puissiez le faire. X3C, 43 octets
Imprime la chaîne, puis tente d’utiliser la valeur renvoyée comme pointeur sur une autre chaîne à imprimer, ce qui provoque une erreur de segmentation.
Essayez-le en ligne!
C, 42 octets
Merci à @Ruslan!
Essayez-le en ligne!
Juste pour le plaisir: C (sous Linux 64 bits), 149 octets
Modifié à partir de ce programme Hello World ici .
Essayez-le en ligne!
la source
The answer must be a whole executable program.
main(i){i=puts("Goodbye Cruel World!")/0;}
supprime un octet.i
.puts("")/0;
est une déclaration syntaxiquement correcte.SOGL ,
152517 octets / 2 = 8,5!Explication:
(Ab) utilise le fait que SOGL utilise STDERR en tant que sortie de débogage. Il contient donc beaucoup de texte, ainsi que la ligne.
Si vous avez transféré le STDOUT du croquis de traitement dans un fichier, le "Au revoir Cruel World!" serait là.
la source
Hello World!
et neGoodbye Cruel World!
sont pas sensibles à la casse, mais vous devez les█
afficher exactement comme ci-dessus. "> <> , 25 octets
Fondamentalement, il ajoute la chaîne à la pile (Backwards, dernier entré, premier sorti), puis effectue l'équivalent de:
Lorsqu'il ne reste plus de caractères sur la pile (toute la chaîne a été imprimée), le vidage de la pile génère une erreur
la source
#o<"Goodbye Cruel World!"
, qui est fondamentalement la même.sed, 32 octets
i
insère une ligne etw
écrit dans un fichier./dev/full
dans ce cas, car toutes les écritures sont renvoyéesENOSPC
("Il ne reste plus d’espace sur le périphérique").Cependant, il n'a toujours besoin que d'une seule ligne d'entrée pour fonctionner.
la source
Lua,
31, 30 octetspremiers tirages 'Goodbye Cruel World!' puis se bloque lorsque vous essayez d'ajouter une valeur nulle et 0.
Sortie:
Crédit à GalladeGuy pour 1 octet de moins
la source
a=-print"Goodbye Cruel World!"
Python 3 | Score:
24,5!2322!Imprimez "Hello World", puis utilisez un opérateur non valide '+' sur "Goodbye Cruel World!" à l'élément de retour NoneType. (découpe de la version précédente)
Essayez-le en ligne!
Python 3 | Score:
3430Print Au revoir, qu'une opération unaire + non valide sur le résultat de l'impression (NoneType)
Essayez-le en ligne!
la source
+"Goodbye Cruel World!"
est plus court de 3 octets et génère une erreur TypeError.print("Goodbye Cruel World!")/0
est plus court pour le second (3 octets?)R,
2220! octets(44/2)(40/2)Essayez-le en ligne!
Sortie:
Sauvegardé deux points grâce à digEmAll
la source
40/2
essayer en ligne!AWK , 72 octets, score 36!
Essayez-le en ligne!
AWK
n'aime pas essayer de diviser par 0.la source
CJam , 34 octets, marquons 17!
Essayez-le en ligne!(Voir le panneau de débogage pour STDERR)
Explication
Sur TIO, il génère ce message d'erreur:
la source
Préprocesseur C, 27 octets
Sortie:
la source
#Goodbye Cruel World!
APL (Dyalog) , 17,5 octets
Sans bonus, 20 octets
Essayez-le en ligne!
Notez que le code n'est pas entre guillemets. APL essaie de l'exécuter mais
World
n'est pas défini, ce qui provoque un blocage de VALUE ERROR avec la ligne de code incriminée incluse dans le message d'erreur.Avec bonus, 35 2 = 17,5 octets
Essayez-le en ligne!
Affiche d'abord la chaîne requise, puis se bloque comme dans le programme ci-dessus.
Version bonus plus sophistiquée, 35 2 = 17,5 octets
Essayez-le en ligne!
Imprime la première chaîne, puis supprime les cinq premiers caractères de this (
5↓
), puis concatène that (,
) en un nouveau préfixe, puis tente de l'exécuter (⍎
), en provoquant la même erreur que ci-dessus.la source
Bash
20.5!18,5!Je ne vais pas faire de la gelée, mais je suis un peu timide pour critiquer un script rapide. 18.5 n'est pas si mal pour une langue qui ne joue pas au golf. (Notez que cela doit être un script, bash interactive essaiera de l'interpréter
!
comme une recherche dans l'historique)Renvoie avec le code d'erreur 127 et:
Comme demandé, aucun
"
... n'importe où:)
. Comme suggéré par,apricot boy
je recherche maintenant le dernier argument de la commande précédente pour économiser 4 octets.la source
W=\ World\!;echo Hello$W;"Goodbye Cruel$W"
Goodbye\ Cruel\ !$
, pas à 100% mais à peu près sûr que!$
c'est "le dernier mot de la dernière commande"TeX, 19 ans!
Pour forcer TeX à produire réellement un fichier dvi / pdf sans intervention manuelle, compilez avec
-interaction=nonstopmode
.Il imprime
Hello World!
, génère une erreur d'utilisation#
lorsque vous n'êtes pas censé le faire, puis arrête la compilation avec\bye
. Cependant, tout ce qui\bye
est après est toujours affiché dans le message d'erreur, il est donc valable pour le bonus.la source
WinDBG (débogage du noyau local sous Windows XP / Vista), 33 octets
Avertissement: Ceci plantera la machine entière, pas seulement le programme.
Le débogage du noyau local n'est autorisé que sous Windows XP et Vista (mais n'est pas activé par défaut sous Vista). La boîte de dialogue WinDBG sur le débogage du noyau local ne mentionne aucun autre système d’exploitation Windows. Je suppose donc qu’il ne peut même pas être activé pour ceux-ci. Vraisemblablement pour d'autres systèmes d'exploitation Windows, vous pouvez vous connecter à une machine distante pour le débogage du noyau, mais c'est la machine distante qui va tomber en panne, donc je ne pense pas que cette solution compte ici.
la source
JS (ES5), 46/2 = 23 octets!
Alertes
Hello, World!
, puis erreurs avecUncaught TypeError: Cannot read property 'Goodbye Cruel World!' of undefined
la source
PowerShell, 26 octets
Je pense que diviser par 0 est le moyen le plus simple de générer une erreur.
PowerShell, 35/2 = 17,5 octets
par TessellatingHeckler , jette l'erreur comme suit:
la source
$w='World!'
(avec un!
)?"Hello World!";Goodbye Cruel World!
est de 17,5 octets; une exception est générée, car Goodbye n'est pas reconnu en tant que commande et le message d'exception inclut la ligne dans son intégralité, ce qui correspond à la regex.'Goodbye Cruel World!';x
économiserait deux octets pour 24Langage de script Operation Flashpoint , 45/2 = 22,5 octets
Appeler avec:
Sortie:
la source
Fortran (GFortran) , 58/2 = 29 octets!
Essayez-le en ligne!
la source
Node.js, Score:
25.524.5!Économisé 1 point grâce à ETHproductions
Un programme complet correct du point de vue syntaxique qui se bloque au moment de l’exécution parce qu’il
console.log()
ne renvoie pas de fonction.Essayez-le en ligne!
la source
25.5
...: ((Gamma(26.5)
comme dans la définition de Mathematica.X
(et peut-être même la nouvelle ligne)?Aceto , score: 21,5!
Imprime
Hello World!
, puis plante avecla source
Pyth,
28 à24 octetsImprime une chaîne, puis essaie d’obtenir le premier élément de la liste vide.
Essaye ça!
la source
AHK, 50/2 = 25! (non-concurrent)
Non en concurrence parce qu'une exigence supplémentaire rendait la réponse invalide. Je ne trouve pas le moyen de le faire compiler, de sortir le texte et de planter. Quoi que j'essaye, au moins une de ces exigences échoue.
C’est la solution la plus ennuyeuse à laquelle je puisse penser. Cela ne plante pas réellement mais ce n'est pas techniquement une exigence. Tout ce qu'il a à faire est d'envoyer un message à la fenêtre de débogage. Il le fait parce que je lui dis de le faire.
la source
Japt , 22 octets
Essayez-le en ligne!
3 octets sauvés grâce à obarakon et ETHproductions
la source
Oc"<string>"
puis remplacer la chaîne en cours par la version compressée et entourée de backticks.C #, 116/2 = 58 octets!
Version normale pour
9487 octets:Sauvegardé 7 octets grâce à @KevinCruijssen.
la source
int n=0;n/=n;
est plus court pour votre première réponse.int n=1/0;
, mais apparemment, cela n’est pas possible en C # (ce qui est en fait une bonne chose pour le langage, mais pas pour le codegolfing). Au fait, pourquoi le bonus n'est-il pas au sommet? Celui-ci est plus court.Gelée , 10.5! octets
Essayez-le en ligne!
Cela exploite un comportement indéfini, en utilisant des chaînes Python (chaînes) au lieu de chaînes Jelly (liste de chaînes à 1 caractère). La conversion est effectuée en réduisant la chaîne Jelly par addition, et Python
+
concatène deux chaînes, de sorte que deux chaînes additionnées sont concaténées en Python. Ensuite, il utilise la monade appropriée (plage) de sorte que celle de Pythonint
soit appelée sur la chaîne, générant une erreur qu’elle contiendrait toujoursGoodbye Cruel World!
.Explication:
la source
Ruby,
4342 octets / 2 = 21!Économisé un demi-octet avec l'aide d'Alexis Andersen, en le remplaçant
"String"/0
par-"String"
. Cela fonctionne uniquement avec les versions Ruby inférieures à 2.3, dans lesquelles le moins unaire méthode été ajoutée à la classe String!Avec Ruby <2.3:
Avec Ruby> = 2.3:
la source
-
sur la chaîne au lieu de par/
exemple-"Goodbye crueld World!"
Code binaire x86-64 (avec appels système Linux), 43 octets
Démontage:
Ce programme regroupe les données dont il a besoin (la chaîne
"Goodbye Cruel World!\n"
) dans son propre code. Il charge un pointeur sur cette chaîne en utilisantrip
un adressage relatif et appelle lewrite
syscall directement plutôt que via un wrapper glibc. Il est donc totalement indépendant de la position. Nous pouvons facilement le tester en incorporant le code dans uneconst
chaîne et en la convertissant en fonction. aiguille. Pour bloquer le programme, je le termine par unehlt
instruction qui, avec les privilèges sonnerie 0, ferait taire le processeur pour toujours (ou du moins jusqu'à la prochaine interruption), mais avec les privilèges sonnerie 3 (typiques des programmes utilisateur), nous obtenons un résultat beaucoup moins dramatiqueSegmentation Fault
.Programme de test:
Sortie:
Notez que le code de 43 octets est un programme complet tel que spécifié par le défi, pas seulement une fonction. Cela ne dépend pas de la
main
fonction du programme de test pour fonctionner correctement; il continuerait à imprimer la chaîne et à planter s’il était chargé directement par le chargeur.la source
push
/pop
pour charger les registres. Par exemple, les deux premières instructions peuvent êtrepush 1
+pop rax
, ce qui correspond à un octet plus court. Ensuite, les deux instructions suivantes peuvent être remplacées parmov edi, eax
, soit 2 octets de moins. Le mêmepush
/pop
tour peut être appliqué aux instructions 6 et 7:push 0x15
+pop rdx
.LOLCODE , I CAN HAZ 21 BYTES
Il suffit de placer un opérateur non valide devant la chaîne. Vous pouvez essayer en ligne ici.
la source
Pyth ,
= 19 octets!36/2 = 18 octets!Testez-le en ligne!
Des explications
Il imprime
Hello World!
, puis essaie d'évaluerGoodbye Cruel World!
. Cela échoue, car cette chaîne n'est pas un code valide.Le résultat est:
la source