Beaucoup de gens ici sont probablement des lecteurs avides de XKCD. Donc, je pense que je vous mets au défi de faire quelque chose que Megan peut faire facilement: créer un script qui génère des milliers de paraboles rassurantes sur ce que les ordinateurs ne peuvent jamais faire.
Votre script
- Peut être écrit dans n'importe quelle langue
- Doit être codé au golf
- Doit prendre une entrée (sur
stdin
ou l'équivalent de votre langue) sur le nombre de paraboles qu'il crachera (vous pouvez supposer que cela ne dépassera pasMAX_INT
ou l'équivalent). - Sortira un certain nombre de paraboles générées aléatoirement .
Les paraboles sont les suivantes
- Commence avec
'Computers will never '
- Ensuite, l'un des 16 verbes anglais uniques que vous pouvez choisir librement pour optimiser votre programme, mais qui doivent inclure
code-golf
etunderstand
. - Ensuite, l'un des 16 noms anglais uniques qui, encore une fois, vous pouvez choisir librement pour optimiser votre programme, mais doivent inclure
a salad
etan octopus
. - Ensuite, l'une des 16 clauses anglaises uniques que vous pouvez choisir librement pour optimiser votre programme, mais doit inclure
for fun
etafter lunch
. - Se termine par un caractère de nouvelle ligne (
\n
ou équivalent)
Ainsi, par exemple, si l'entrée est 2
, une sortie valide serait
Computers will never code-golf a salad for lunch
Computers will never hug a tree in vain
La taille du programme est comptée en octets, pas en caractères (donc pas de charabia unicode). Les échappatoires standard ne sont pas autorisées.
C'est mon premier défi, donc si je devais apporter des changements évidents, veuillez commenter.
Edit: J'envisage de soustraire la taille du dictionnaire du nombre d'octets, pour encourager la «compression» du dictionnaire. Je verrai des réponses futures si cela est réalisable à distance; si c'est le cas, vous pouvez compter sur un bonus.
Réponses:
CJam,
238232 (ou 209) octetsCela utilise de nombreux verbes / noms / clauses de réponses déjà publiées, mais certains sont nouveaux également. J'ai converti les caractères en base pour raser certains octets supplémentaires.
La chaîne convertie de base peut être jouée 24 octets de plus (pour obtenir une solution de 209 octets ; notez que vous devez considérer le nombre de caractères au lieu du nombre d'octets car tous les caractères ont un code ASCII inférieur à 255 mais le site considère toujours que certains ont unicode ) mais je voulais que la chaîne ne soit composée que de caractères ASCII imprimables.
Juste pour référence, voici la version à 209 octets:
Prend le nombre de lignes à imprimer depuis STDIN comme:
Sortie:
Essayez-le en ligne ici
la source
Voici une approche légèrement différente:
Python,
368 308297 octetsEDIT, je l'ai joué au golf cette fois. Rasé 60 caractères.
Voici le tour de golf dont je suis le plus fier:
Je ne savais même pas que python pouvait faire ça! Voici une explication plus simple:
affecte a et b à 0 et 1, puis à 1 et 2, puis à 2 et 3.
Cela utilise la bibliothèque linguistique de NodeBox pour générer une liste de verbes / noms / clauses, puis les sélectionne de manière aléatoire.
Cette bibliothèque n'est pas géniale pour générer des mots aléatoires (d'où les 368 octets), mais la bonne chose à propos de cette approche est que vous obtenez des paraboles assez rassurantes au hasard. Voici ce que je veux dire.
Mais bon, je ne pense pas que le programme de quelqu'un d'autre produira le dicton: "Les ordinateurs n'endommageront jamais un animal amateur de gâteau aux cendres."
Voici une version non golfée (574 octets):
Et enfin, mais certainement pas le moindre, voici quelques-unes de mes paraboles rassurantes préférées, qui, je pense, deviendront des slogans vraiment populaires dans les 10 à 15 prochaines années.
et mon préféré:
la source
from random import choice as C
peut-êtrefrom random import*;C=choice
for i in ' '*(something)
pour que vous puissiez économiser trivialement deux octets en supprimant l'espace entrein
et' '
JavaScript ES6, 331
336octetsAfficher l'extrait de code
J'ai choisi des mots qui fonctionnent à la fois comme verbes et noms pour raccourcir la liste, mais faites-moi savoir si cela n'est pas autorisé. Essayez-le ci-dessus en utilisant des extraits de pile (le code a été formaté pour utiliser ES5) ou sur http://jsfiddle.net/5eq4knp3/2/ . Voici un exemple de sortie:
la source
s
pour passer les autres parties du discours de la liste. Les deux tildes sont des opérateurs NOT au niveau du bit, et ils fonctionnent simplement comme un moyen plus court de le faireMath.floor()
.r=s=>12
est le même quefunction r(s){return 12}
, mais plus court. Voir également la documentation sur MDN .~~
est un peu comme unMath.floor
(mais se comporte différemment pour les nombres négatifs), et=>
est une définition de fonction de style ES6 avec une limitethis
.Python -
390 385383Exemple de sortie aléatoire:
la source
Perl - 366
Voici un test:
la source
CJam,
353317301 octetsJ'utilise la liste de mots de Falko, par souci d'équité, de sorte que la seule différence dans le golf est due aux langues et non au contenu (je pourrais changer la liste de mots si les gens commencent à jouer au golf également).
la source
NetLogo, 396
J'ai également utilisé la liste de mots de Falko, à deux exceptions près (qui ne modifient pas la durée du programme).
Selon la façon dont vous définissez "programme", vous pouvez supprimer les cinq premiers et les trois derniers caractères, soit un score de 388.
la source