Inspiré par github.com/JackToaster/Reassuring-Parable-Generator , à son tour inspiré par xkcd.com/1263 . Les mots possibles sont dérivés du fichier rassurant.cfg de ce référentiel.
Il est suggéré de jeter un œil au fichier rassurant.cfg (utilisez le 12ème commit) pour voir la grammaire à laquelle la sortie correspond (la sortie est une liste de toutes les chaînes correspondant à la grammaire).
Tâche: votre programme doit générer toutes les 7968 lignes sensibles à la casse du texte exact contenu dans le pastebin pastebin.com/2SNAJ1VH . Une copie du pastebin est enregistrée dans la Wayback Machine
Voici un échantillon de 33 lignes motivantes de la boîte à pâte:
Computers can't enjoy a salad.
Computers can't enjoy a cake.
Computers can't enjoy a ice cream cone.
Computers can't enjoy a meal.
Computers can't enjoy a drink.
Computers can't enjoy a steak.
Computers can't enjoy a chicken dinner.
Computers can't enjoy a piece of cake.
Computers can't enjoy a piece of pie.
Computers can't enjoy a cookie.
Computers can't enjoy a sandwich.
Computers can't taste a salad.
Computers can't taste a cake.
Computers can't taste a ice cream cone.
Computers can't taste a meal.
Computers can't taste a drink.
Computers can't taste a steak.
Computers can't taste a chicken dinner.
Computers can't taste a piece of cake.
Computers can't taste a piece of pie.
Computers can't taste a cookie.
Computers can't taste a sandwich.
Computers can't experience eating a salad.
Computers can't experience eating a cake.
Computers can't experience eating a ice cream cone.
Computers can't experience eating a meal.
Computers can't experience eating a drink.
Computers can't experience eating a steak.
Computers can't experience eating a chicken dinner.
Computers can't experience eating a piece of cake.
Computers can't experience eating a piece of pie.
Computers can't experience eating a cookie.
Computers can't experience eating a sandwich.
Règles du défi:
- La sortie des lignes peut être commandée comme vous le souhaitez, mais toutes les 7968 doivent être incluses.
- La sortie doit être une seule chaîne plate, pas une liste de chaînes.
- Votre programme ne doit accepter aucune entrée ou une entrée vide non utilisée.
- Votre programme peut ne pas récupérer les données d'une source en ligne.
- Une seule nouvelle ligne de fin est facultative.
C'est le code-golf , donc le code le plus court l'emporte.
code-golf
string
kolmogorov-complexity
grammars
fireflame241
la source
la source
No computer {can} {action}.
est répété deux fois etComputers {cannot_present}
produit des phrases comme "Les ordinateurs sont incapables de". Intentionnel?Réponses:
Zsh , 765 octets
C'est peut-être la première chose que j'ai jamais écrite en zsh, mais elle a la fonctionnalité incroyablement pratique de pouvoir convertir des tableaux en extensions d'accolade (bien que ce ne soit pas aussi pratique qu'il devrait l'être… ). Exécuter avec
zsh -P
(compté comme +1 octet), qui s'allumeRC_EXPAND_PARAM
.Essayez-le en ligne!
la source
JavaScript (ES6),
12341091 octetsC'est un bon nombre d'octets pour commencer! Il est temps de jouer au golf sur cette énorme chaîne.
Moins golfé:
Comment?
(C'est de loin l'un de mes golfs les plus préférés de tous les temps!)
La grammaire est stockée dans le tableau
G
, ce qui correspond à ceci:F
est une fonction qui divise une chaîne par le délimiteur|
et l'itère. Jusqu'ici tout va bien.Maintenant, que se passe-t-il avec cette fonction intérieure?
D'abord, nous initialisons un tableau
A
. Ensuite, nous trouvons tous les chiffres dans la chaîne passées
et construisons un sous-programme: En utilisant chaque chiffren
, nous générons une bouclefor
-of
qui itère à travers les entrées dansG[n]
(stockée en tant que propriétés deF
, car les fonctions en JavaScript sont également des objets). Les boucles sont ensuite ajoutées l'une après l'autre.Par exemple, le sous-programme généré pour
s="1 2 3"
démarre comme ceci:À chaque itération, le sous-programme remplace chaque chiffre entrant
s
par son remplacement correspondant, stocké dansF[n]
, et le résultat est poussé versA
. Le sous-programme esteval
édité etA
est implicitement renvoyé.En utilisant
F
, le reste du programme construit simplement le reste de la grammaire à partir des règles de production qui existent déjà; les remplacements sont simplement définis par un index à un chiffre dansG
.la source
f
. Donc,f=
devrait être ajouté au nombre d'octets.F
au lieu def
.)PHP, 877 octets
Ah c'était amusant!
N'hésitez pas à essayer de déterrer un octet de plus si vous le pouvez.
non golfé
explication
La sortie peut être divisée en 48 morceaux de 166 lignes chacun. Dans chaque bloc, chaque ligne commence par l'une des
Computers|A computer|No computer
suivies par l'une des 14 capacités négatives (pourComputers
etA computer
) ou 9 positives (pourNo computer
).J'ai codé ces morceaux en 6 bits chacun (3 sujets différents -> 2 bits inférieurs; les touches de partage des majuscules positives et négatives -> 4 bits supérieurs) et (probablement évident) ajouté 65 pour utiliser les valeurs comme codes ASCII.
Au sein de ces morceaux, 8 combinaisons verbe / adjectif pour 11 aliments différents et 13 combinaisons différentes pour 6 arts différents, toujours dans le même ordre; afin qu'ils puissent simplement être bouclés, en utilisant la clé verbe / adjectif pour déterminer si je dois lister les aliments ou les boissons dans la boucle suivante.
Il restait une partie délicate: certaines des majuscules nécessitent la forme gérondive du verbe; et certains des verbes perdent un
e
dans la transformation. L'index de cap indique si cela est nécessaire ou non.(et grâce à l'ordre des bits dans l'encodage je peux simplement utiliser le caractère ASCII pour la comparaison).
Mais comment? Après avoir jonglé avec des regex pendant un certain temps, j'ai simplement mis un
1
où lee
doit être remplacéing
et un0
oùing
doit être ajouté et laisserstrtr
faire le travail.C'est l'histoire de la version non golfée ci-dessus. (1199 octets compressés)
Le golf consistait principalement en 3 étapes:
strtr
a été étendu à tout sauf au sujet afin de déplacer les variables versstrtr
.strtr
.Le 19ème mot, a
tast
été remplacé par une majuscule pour se débarrasser de quelques guillemets.Je me demande ce qui se passerait si j'encodais également les combinaisons verbe / adjectif.
Peut-être que je pourrais battre Zsh; mais je ne sais pas si je me demande assez pour essayer.
la source
Rétine,
12491192 octetsLa sortie dépasse les limitations TIO. Je voulais utiliser des
%`
étapes pour éviter tout cela,$%'¶$%`
mais pour une raison quelconque, cela ne fait pas ce que je veux. Edit: 57 octets enregistrés grâce à @ fireflame241.la source
ing
et «Ito» sont chacun utilisés plusieurs fois. Chaque appel à1
,2
et5
est précédé et suivi d'un espace, de sorte que ceux-ci peuvent être mis dans la substitution. De même,6
et7
sont toujours suivis d'un point.3
ne semble être utilisé qu'une seule fois.Bubblegum , 23353 octets
Ouaip. La plupart d'entre eux ne rentrent pas dans une réponse, alors ... Le code et le lien TIO sont tous deux dans des pâtes.
Code (un hexdump du code)
Lien TIO (la sortie dépasse les limites de TIO)
la source