... et vrai golf pour mes amis de code.
Il s’agit d’un défi basé sur une bande dessinée XKCD d’un an, qui consiste principalement en toasts (parodies du premier dans la bande dessinée) suivant un schéma distinct, mais avec quelques légères variations.
Votre tâche est d’écrire un programme (ou une fonction) qui prend la première moitié d’un toast de la bande dessinée (tout le reste friends
) en entrée (via stdin ou un argument de fonction) et affiche (ou renvoie) le texte précis de la seconde moitié. Vous n'êtes pas obligé de gérer une entrée non valide, des failles standard s'appliquent, le code le plus court en octets gagne.
Exemples
Pour aider ceux qui ne veulent pas copier les toasts de n’importe où ailleurs, voici tous ceux-ci, séparés en entrée et en sortie.
Input: Champagne for my real friends
Output: and real pain for my sham friends!
Input: Pseudopods for my real friends
Output: and real pods for my pseudo-friends!
Input: Petticoats for my real friends
Output: and real coats for my petty friends.
Input: Loosestrife for my real friends
Output: and real strife for my loose friends!
Input: Ladybugs for my real friends
Output: and real bugs for my lady friends!
Input: Single-payer for my real friends
Output: and RealPlayer for my single friends.
Input: Tumbleweeds for my real friends
Output: and real weed for my Tumblr friends!
Input: Fauxhawks for my real friends
Output: and real hawks for my faux friends!
Input: Platonic solids for my real friends
Output: and real solids for my platonic friends!
Single-payer
(au lieu deSingle-player
).Single-payer
.Réponses:
Retina , 119 octets
La version précédente ne gérait pas correctement l'espace dans "Solides platoniques", celle-ci fonctionne et est plus courte :)
Essayez-le en ligne!
Cela transforme l'entrée en sortie à travers une série de substitutions.
La partie la plus intéressante est cette substitution (une sorte de golf regex):
Ce qui fait presque tout le travail, en scindant le premier mot, en plaçant ses morceaux aux bons endroits, en supprimant les espaces supplémentaires et en construisant la structure de la sortie. Pour fonctionner correctement sur le scénario de test "Tumbleweeds", cela dépend de la substitution précédente "eds" -> "ed".
Le reste est principalement composé de substitutions qui traitent de cas particuliers. Les autres parties intéressantes sont:
Cela rend tout sauf "T" (pour Tumblr) en minuscule.
Cela place un "." à la fin de chaque phrase contenant un mot avec un "y" quelques lettres après un "p" ("petit" et "payeur" dans la pratique). Puis place un "!" à la fin de toutes les phrases se terminant par un "s" (tous les autres).
la source
platonic
. Solution proposée: TIO (+5 bytes)Python 2,
291269293255247 octetsMerci d'
Erik the Outgolfer
avoir économisé 22 octets!+24 octets à compte pour certaines sorties se terminant au
.
lieu de!
Solution simple pour commencer les choses. Vérifie la huitième lettre de l'entrée, comme suggéré dans les commentaires, et recherche la sortie correspondante dans
un dictionnaire sousforme de tableau.Essayez-le en ligne!
la source
Single-payer for my real friends
...RealPlayer
est un cas spécialSOGL , 143 octets
Ceci utilise cette chaîne comme partie principale. "|" Les séparateurs et "_" sont des espaces réservés afin que la scission fonctionne correctement.
Exemple de saisie: "Solides platoniques pour mes vrais amis" Explication:
la source
Python 3 ,
788,403,359396 octetsDernière version
C'est maintenant ma cinquième tentative. J'ai réussi à réduire de moitié la taille de mon programme d'origine. Il inclut maintenant le "-" manquant et je pense que c'est une solution complète. Je soupçonne encore du côté volumineux; mais beaucoup plus proche du but. J'ai eu beaucoup d'aide . Merci pour tous les conseils utiles.
Essayez-le en ligne!
Affichage original
C’est mon premier article sur le code golf, alors excuses à l’avance pour mon programme maladroit. Vous ne pouvez pas voir comment un programme pourrait être créé pour convertir "Champagne" en "douleur", "simulacre" en analysant les mots. Cependant, j'aimerais voir quelqu'un d'autre résoudre ce problème. Donc, comme mon niveau de compétence indique que mon programme doit savoir à l’avance que "Champagne" est "douloureux", "simulacre", il ne semblait guère utile de coder une demande d’entrée. En conséquence, je l'ai laissé de côté et j'ai été un peu littéral avec mes impressions. J'espère que ça va:)
la source
Röda ,
299292288259 octets4 octets enregistrés grâce à @fergusq pour une utilisation
,
au lieu de..
dans lespush
instructionsOctets sauvés grâce à @fergusq me montrant le chemin de
indexOf
Essayez-le en ligne!
Si proche de Python ... si proche ....
Votre geste, Python.Explication
la source
..
par,
.r=indexOf(a[7:8],"noarspekc")
.JavaScript (ES6),
230228221216 octetsTester
Afficher l'extrait de code
la source
PHP,
202220204203 octetsla source
Perl,
173168 octetsEn supprimant les retours à la ligne et les indentations, cela devient 173 octets de code Perl5. Volé sans vergogne la première expression rationnelle de la réponse de Leo à la rétine. (Le mien était quelques caractères plus long)
Pour perl5 version> = 5.14, 5 octets supplémentaires peuvent être supprimés avec eval et le nouveau modificateur de substitution / r regexp. Pour finir avec 168 octets:
Essayez-le en ligne!
la source
C, 367 octets
Ne s'est pas retrouvé aussi court qu'il y paraissait.
la source
Java 7,
585553 octets-32 octets grâce à @Zircon .
Peut certainement être joué au golf en utilisant quelque chose de différent d'une carte.
Explication:
Code de test:
Essayez ici. (ideone.com est buggé récemment, donc j'utilise TIO maintenant ..)
la source
put
au lieu dem.put
.C (gcc) , 311 octets
Des modèles clairs, mais de nombreuses exceptions. Pourtant, il doit y avoir un meilleur moyen que cela!
Essayez-le en ligne!
la source