Tout le monde sait que les chats vont miaou, mais ce que beaucoup ne réalisent pas, c'est que les caaaats vont meeeeoooow. En fait, la longueur de la voyelle émise par le chat dépend de la longueur de la voyelle avec laquelle vous l'adressez.
De la même manière, les vaches vont à meuh, mais les coooows vont à meuh
Défi
Vous devez écrire un programme qui prend en entrée un mot signifiant chat et un mot signifiant vache, détermine le nombre de voyelles principales et affiche l'une des chaînes suivantes, selon le cas:
C[]ts go M[]w
C[]ws go M[]
Où []
signifie les voyelles, selon les règles suivantes:
- Le nombre d'e et d'u dans "Meow" doit correspondre au nombre de voyelles trouvées dans le mot d'entrée.
- Le nombre de o dans "Moo" doit être le double du nombre de voyelles trouvées dans le mot saisi.
Le programme doit reconnaître les mots d'entrée cat
et cow
. Les entrées peuvent utiliser n'importe quelle capitalisation qui convient le mieux, mais la sortie doit être mise en majuscule exactement comme indiqué ci-dessus.
Meooeoew
sortie valide est-elle pourCaaat
, par exemple?Réponses:
Retina ,
5749444341 octetsSi proche ...:)Pyth ...Essayez-le en ligne.
Les entrées devraient être capitalisées comme
Caaat
ouCoooow
.Explication
La regex correspond à la totalité de l'entrée et capture les voyelles dans un groupe
1
(nous n'avons pas besoin d'ancres, car la correspondance ne peut pas échouer et correspondra avec enthousiasme à la totalité de l'entrée). La substitution réécrit cette entrée et l'ajoutes go M
, suivie de deux fois les voyelles. Pour les entréesCaaat
etCoooow
, on obtient:La sortie pour les vaches est déjà correcte. Nous devons juste faire quelque chose à propos de ces chats.
Le
+
dit à la rétine de répéter cette étape aussi souvent que possible. La regex correspond à deuxa
secondes dans la dernière partie de la chaîne (nous l’assurons avec l’$
ancre pour ne pas remplacer des éléments à l’intérieurCaaats
). Cela correspondra essentiellement à tout aprèsM
, tant que cette partie a encorea
s. Les deuxa
s sont supprimés et le suffixe entier après qu'il soit enveloppé danse...ow
:Enfin, il y a deux nombreux
w
s dans le résultat, donc nous retirons ceux qui précèdent uno
(pour nous assurer que nous ne sommes pas déconner lew
dansCoooows
):Et nous nous retrouvons avec:
la source
LabVIEW, 58 primitives LabVIEW
créer des cordes comme celle-là est une douleur ...
Les vis les plus à gauche correspondent à un motif, a + et o + recherchent respectivement la dernière quantité de as et os dans une rangée.
En prenant la longueur de ceux-ci, je crée 3 tableaux 1 avec la longueur os 1 avec la longueur es et un avec 2 fois la longueur os.
Ensuite, toutes les pièces sont assemblées. Tout d’abord, l’entrée initiale, puis tous les tableaux, les inutilisés sont vides, ils seront donc ignorés, et enfin aw si l’entrée était des chats. (Si comme trouvé, il y aura à la fin du match, sinon après le match est vide)
Pour le lolz j’ai aussi implémenté le renard avec 6 sorties différentes ^^
la source
Pyth,
504434Prend l'entrée dans le format
["caat", "coow"]
.Essayez-le en ligne.
A expliqué:
Merci à Jakube pour les réductions de longueur importantes.
la source
jk
pars
, supprimer le secondjk
(il ne fait rien du tout) et le remplacer"w\n"
par\wb
.r.Q3
et d’autres choses. Vous pouvez utiliser un fichier binary_map et enregistrer 10 caractères supplémentaires.Pj.bs[rN3"s go M"S*-lN2+Y\o\w)Q"eo
. Pas sûr, si vous avez déjà une expérience avec les cartes, si vous avez des questions, je peux vous l'expliquer sur le chat Pyth .Perl,
66615554 octetscomprend +1 pour
-p
L'entrée est censée se conformer à
/^C[ao]+[tw]$/
(pas de nouvelle ligne!).
/bin/echo -n Caaat | perl -p 55.pl
Panne
La version précédente:
Commenté :
Exemple:
Caaat
$&
fura
et à@l
mesure(a,a,a)
.$x
trois foisa
suivi par 3 foiso
:aaaooo
.a
en$x
àe
:eeeooo
. Le nombre de remplacements (0 ou positif) sert de détecteur de chat: défini$y
surw
si.s go M
,eeeooo
etw
.$\
plutôt ques/$/
, et ne nécessitant aucune nouvelle ligne en fin de saisie.la source
Python 2, 74 octets
Prend des entrées
Caaat
ouCooow
la source
CJam (
60 57 5553 octets)Démo en ligne . L'entrée est supposée être en minuscule.
Pour la même longueur:
la source
PowerShell,
135132 octets(les sauts de ligne comptent comme des points-virgules, donc les sauts de ligne sont plus clairs)
Défi étonnamment délicat. Et je suis raisonnablement sûr que cela peut être joué plus loin.
Prend des chaînes d’entrée au fur
$a
et à mesure$b
. Les concatène et les jette comme un tableau de caractères, puis les dirige à travers une boucle%{}
. Chaque lettre est ensuite vérifié si elle est-eq
uel à'a'
et la variable de compteur associé est incrémenté de manière appropriée. Nous soustrayons ensuite4+$c
de$d
pour rendre comptecatcw
dans l’entrée, puis procédons à la formulation des phrases en sortie, en modifiant les voyelles à la sortie multipliées par les compteurs correspondants. (Dans PowerShell, vous'e'*3
obtiendrez'eee'
, par exemple.)la source
Presque similaire à la réponse de @ omulusnr mais ceci produit la sortie correcte et l'entrée est également sensible à la casse.
PHP, 172
la source
$p=$argv[1];preg_match("/c([ao]+)/i",$p,$e);$l=strlen($e[1]);$s=$k=strcmp($e[0][1],'o')?'eo':'oo';$r='str_repeat';echo $p,' go M',$r($s[0],$l),$r($s[1],$l),$k?'w':'';
un peu plus court à 166 octetsSwift 2, 3̶8̶1̶ 333 octets
Ungolfed:
Prend chat ou vache n'importe quelle capitalisation. Vous pouvez l'essayer ici:
http://swiftlang.ng.bluemix.net/#/repl/3f79a5335cb745bf0ba7698804ae5da166dcee6663f1de4b045e3b8fa7e48415
la source
MATLAB:
190152118 octetsUngolfed:
Tests:
PS: Merci à @Kenney pour la suggestion intéressante (voir les commentaires)!
la source
disp( (b>0)*[...] + (c>0)*[...] )
travailler ici?PHP, 138 octets
lisible:
essayé plus court mais ne fonctionnera pas en PHP:
=)
la source
OCTAVE,
126, 108Première version avec variables et explication, 126:
Explication: L sait quel animal contient quelle lettre. S sait ce qu'ils répètent. e connaît la fin. La "diffusion automatique" doit être activée pour que cela fonctionne, mais cela devrait être par défaut dans toutes les Octaves que j'ai utilisées. Bien sûr, il existe des méthodes plus courtes avec, par exemple, la commande regexprep (expressions rationnelles avec remplacement), mais il existe déjà plusieurs approches de ce type dans les réponses, ce qui serait donc ennuyeux.
Éditer: Ignorer les variables qui ne se produisent qu’une seule fois, en utilisant l’indexation octave à la volée (je ne sais pas ce qu’on appelle réellement) et en ajoutant "i", variable de chaîne de saisie:
la source
JavaScript (ES2015),
7877Essayez-le ici: https://jsbin.com/guqaxejiha/1/edit?js,console
la source
Lua,
12190 octets121 octets
90 octets
Prend des entrées telles que 'Caats' ou 'Coooows' en respectant la casse. Etant donné qu'il n'y a pas d'exigences pour des entrées non valides, la sortie peut être bizarre pour, par exemple, 'Foxes' ou 'Oxen'. : P
Ungolfed
Mise à jour à 90 octets: structure if-control remplacée par des opérateurs logiques, optimisation de la concaténation de chaînes en ajoutant davantage de données dans la déclaration de
i
. Suppression de parenthèses suri:find("w")
. Il est intéressant de noter que le stockage"o"
dans une variable économisait quelques octets lors de l’utilisationrep
, mais serait contre-productif avec"w"
ou"e"
. Plus vous en savez.la source
Lua:
1159289 octetsprend
C[]t
ouC[]w
en entrée; [] = a ou o. Une entrée de casse basse se traduira par le résultat.version longue:
Exemple de sorties:
Modifier: remplacé
if
then
else
parand
or
. supprimé TOUS les espaces non-chaînes.Vous aussi, essayez-le ici: Exécutez Lua Online mais je ne savais pas comment utiliser le terminal, je l'ai donc mis dans une fonction.
Edit: modification de l'utilisation de "o" et enlevé () de
:find
. le crédit revient à Cyv pour avoir trouvé ces optimisations. Ajouté "s" et remplacél=#i-3
parl=#i-2
Avec une entrée comprenant "s" seulement 88 octets:
la source
cat
et les entréescow
. Les entrées peuvent utiliser n'importe quelle capitalisation et chat ou chat devrait être valide.Dart ,
114 112 110 104 102100 octetsEssayez-le en ligne!
la source
PHP,
170164161157 octetsPrend n'importe quelle capitalisation que ce soit.
CaAaT
, peucoOOOw
importe.v2: n'a pas vraiment besoin de [wt] $. corrigé également car ct
v3: car ct était tout à fait faux, condensé $ a et $ e affectation
v4: économisez 3 octets sur $ af -> $ a
v5: économisez 4 octets en le sélectionnant (non affiché)
la source
$argv[0]."s go "
. Essayez cecipreg_match("/(?i)c([ao]+)/",$x=$argv[1],$e);$a=$e[1][0]=="a"?"ew":"o";echo$x."s go M".str_repeat($a[0],$n=strlen($e[1])).str_repeat("o",$n).$a[1]."\n";
(sortie correcte et 151 octets).