introduction
Nous - en particulier les geeks parmi nous, qui ont tendance à être des fans - nous souvenons tous de ce vieux dessin animé de Far Side :
De toute évidence, le professeur Schwartzman aurait pu peaufiner ses compétences en programmation juste un peu plus avant de mettre son invention à profit. Mais pouvez-vous le reproduire vous-même ... en utilisant le moins d'octets possible?
Spécifications d'entrée
Vous devez créer un script qui traduit les sons de chien en "Hey" correctement intonés. C'est du golf à code pur; le plus petit nombre d'octets gagne.
Votre entrée consistera en une combinaison des jetons suivants:
Bark
,Baark
,Baaark
,Baaaark
, ... (qui est,B*rk
avec au moins unea
substitution , l'astérisque)Woof
,Wooof
,Woooof
, ... (W*f
d'au moins 2o
s remplaçant l'astérisque)Grr
,Grrr
,Grrrr
, ..., (G
suivie d'au moins 2r
s)- N'importe quel nombre de caractères
.
(point),!
(point d'exclamation) et / ou?
(point d'interrogation) pouvant apparaître n'importe où dans l'entrée
Notez, encore une fois, que les jetons Woof
basés et Grr
basés nécessitent toujours au moins deux o
s et r
s respectivement; Wof
et neGr
sont pas des jetons valides.
Il n'y a pas de limite sur la durée d'un jeton (par exemple, combien de a
s répétés il peut y avoir dans un Bark
jeton); cependant, votre décodeur n'a besoin de fonctionner correctement que pour les jetons d'entrée avec jusqu'à 10a
s, o
s ou r
s au total pour réussir ce défi.
Spécifications de sortie
Fidèle à la conception de Schwartzman, votre programme de décodeur canin doit le traiter en texte de sortie comme suit:
Bark
,Woof
EtGrr
devenirHey
;Baark
,Wooof
EtGrrr
devenirHeyy
;Baaark
,Woooof
EtGrrrr
devenirHeyyy
; etc.- Pour tous les
Bark
jetons basés sur, le nombre dey
s dans leHey
jeton basé sur la sortie doit être égal au nombre dea
s; - Pour tous les
Woof
jetons basés sur, le nombre dey
s dans leHey
jeton basé sur la sortie doit être inférieur de un au nombre deo
s; - Pour tous les
Grr
jetons basés sur, le nombre dey
s dans leHey
jeton basé sur la sortie doit être inférieur de un au nombre der
s; - Tous les signes de ponctuation (
.
,!
et?
) reste inchangé.
N'oubliez pas d'en supprimer un y
de la sortie pour Woof
s et Grr
s uniquement! L'entrée Baaaaaaaark?
, avec 8 a
s, deviendra Heyyyyyyyy?
, avec un ensemble correspondant de 8 y
s. Cependant, Woooooooof?
devient seulement Heyyyyyyy?
, avec 7 y
s.
Encore une fois, si vous pouvez faire fonctionner votre programme pour des jetons d'entrée de taille illimitée, c'est parfait, mais aux fins de ce défi, votre programme ne sera vérifié que pour s'assurer qu'il fonctionne correctement pour les jetons d'entrée qui n'ont pas plus de 10 lettres répétées. .
Tous les jetons Bark
-, Woof
- et Grr
basés dans votre entrée sont supposés commencer par des majuscules. Par conséquent, il n'est pas nécessaire de gérer la transformation Bark grrr
en Hey heyy
ou quelque chose de similaire.
Exemples d'entrées et de sorties
- Contribution:
Bark. Bark! Bark!!
- Sortie:
Hey. Hey! Hey!!
- Contribution:
- Entrée:
Baaaaaark?
(sixa
s) - Sortie:
Heyyyyyy?
(sixy
s)
- Entrée:
- Entrée:
Grrrrrrrr...
(huitr
s) - Sortie:
Heyyyyyyy...
( septy
s)
- Entrée:
- Contribution:
?...!
- Sortie:
?...!
- Contribution:
- Contribution:
Wooof Woof? Grrrr. Baaaark Grr!
- Sortie:
Heyy Hey? Heyyy. Heyyyy Hey!
- Contribution:
Réponses:
Rétine ,
24181716 octets1 octet enregistré sur la base d'une idée dans la réponse de MT0.
Essayez-le en ligne!
Explication
Cela transforme simplement toutes les lettres en
y
, mais si elles sont suivies d'unf
ouk
nous remplaçons immédiatement cela aussi. En supprimantf
et enk
«normalisant» la longueur des mots, ils ont maintenant tous deuxy
s de plus que nécessaire.Cela transforme les deux premiers
y
de chaque mot enHe
, terminant la transformation.la source
Perl,
514139 octetsUsage
Contribution
Sortie
Comment ça marche
Substitution de regexp simple utilisant l'impression automatique en
-p
ajoutant 1 octet au nombre./ge
exécute la substitution pour chaque modèle et exécute le remplacement en tant que code.Une ancienne version utilisait une détection à trois voies, mais Martin Ender a remarqué que je n'étais pas assez agressif, ce qui m'a fait économiser 10 octets.
msh210 m'a informé que vous n'avez pas besoin de guillemets autour de la chaîne
He
, économisant deux octets.la source
He
.Python, 106 octets
Démo
https://repl.it/C6Rr
la source
JavaScript (ES6) -
57555251 octetsTester:
Merci à @MartinEnder pour les octets 56 et 51 et l'inspiration pour certains des autres copeaux.
la source
Vimscript,
51393733322928 octets,Crédits d'expression régulière pour le rasage de 9 octets supplémentaires: MT0, Martin Ender, msh210
Démo
Explication:
la source
\<yy
place de\<\hy
?Perl 5, 25 octets
Une copie Perl de la réponse Retina de Martin Ender . 24 octets, plus 1 pour
-pe
au lieu de-e
.la source
Javascript,
726664 octetsEdit: séparé
f=
et fonction + nombre d'octets réduitla source
f=
(par défaut de PPCG), donc 64 octets fonctionnent.Pyke, 35 octets
Essayez-le ici!
Génère Heys, génère de la ponctuation, zippe ensemble, joint
la source
Python 3,
140135134 octetsUtilisation de regex pour rechercher les occurrences de caractères remplaçables.
Edit: Golfed 1 octet d'espaces blancs et 4 octets pour obtenir les valeurs du résultat findall.
Edit2: Golfé 1 octet (le "a" de Bark n'a pas été compté correctement)
la source