Quelqu'un se souvient de Boaty ?
Vous pouvez totalement faire un vieux mot, non?
- Ecrivez une fonction pour transformer une chaîne en Somethingy McSomethingface.
- Il devrait accepter une chaîne en entrée. Ignorer la casse de l'entrée.
- Si le mot se termine par "y", votre fonction ne doit pas ajouter de "y" supplémentaire à la première instance, mais doit la supprimer à la seconde instance.
- Si le mot se termine par 'ey', il ne devrait pas avoir un 'y' supplémentaire ajouté dans le premier cas, mais devrait supprimer les deux dans le second cas.
- La sortie ne doit comporter que des lettres majuscules dans le premier caractère, le «M» de «Mc» et le premier caractère après «Mc».
- il ne doit fonctionner qu'avec des chaînes de 3 caractères ou plus.
Exemples:
boat => Boaty McBoatface
Face => Facey McFaceface
DOG => Dogy McDogface
Family => Family McFamilface
Lady => Lady McLadface
Donkey => Donkey McDonkface
Player => Playery McPlayerface
yyy => Yyy McYyface
DJ Grand Master Flash => Dj grand master flashy McDj grand master flashface
' y'
et' '
Réponses:
Stax , 26 octets
Exécuter et déboguer
Exécuter celui-ci
la source
V , 27
2830octetsEssayez-le en ligne!
<Esc>
représente0x1b
Golfé deux octets après avoir appris que nous n’avions pas besoin de prendre en charge les entrées de moins de 3 caractères.
1 octet économisé grâce à @DJMcMayhem en travaillant sur la deuxième ligne avant la première, supprimant ainsi la
G
L'entrée est dans le tampon. Le programme commence par convertir tout en minuscule
V
sélectionne la ligne et la met enu
minuscule~
fait basculer la casse du premier caractère (en le convertissant en majuscule)et
Ù
duplique cette ligne ci-dessus, en laissant le curseur sur la dernière ligneó
et remplacee¿y$
, forme comprimée dee\?y$
(facultatife
et ay
à la fin de la ligne), avec rien (passe sur la deuxième ligne)H
va à la première ligneó
remplacey$
(y
en fin de ligne) sans rien sur la première ligneÁ
ajoute uny
à la fin de la première ligneJ
et joint la dernière ligne avec la première avec un espace au milieu, et le curseur est déplacé vers cet espacea
ajouteMc
(<Esc>
retourne en mode normal)A
enfin, ajouteface
au bout de la lignela source
Python, 144 octets
Essayez-le en ligne ici
la source
f("Face")
n'est pas conforme aux cas de test actuels ( TIO ).Excel,
204144137165 octetsDe l'intérieur vers l'extérieur:
Ancienne réponse, créant tous les bits séparément, puis concaténant (176 octets). Ne gère pas correctement les cas délimités par des espaces.
la source
PROPER(A1)
est invalide (voir leDJ Grand Master Flash
cas de saisie), le meilleur remplaçant que je pouvais trouver en travaillant sur ma solution VBA étaitLEFT(UPPER(A1))&MID(LOWER(A1),2,LEN(A1))
- faites-le-moi savoir si vous échouez à jouer au golf.Perl 6 ,
423735 octetsEssayez-le en ligne!
la source
C # (.NET Core) ,
122108139175180179154 octetsMerci beaucoup, Lee!
Essayez-le en ligne!
C # (.NET Core, avec LINQ), 152 octets
Essayez-le en ligne!
la source
SOGL V0.12 , 38 octets
Essayez-le ici!
la source
Ruby ,
6149 octetsEssayez-le en ligne!
12 doux octets sauvés grâce à @MartinEnder:
la source
=~
et construire la chaîne entière au lieu d'utilisersub
. L'interpolation de chaîne peut être utilisée sans crochets si la variable est une variable globale, d'instance ou de classe.-p
drapeau et en utilisantsub
: tio.run/…Python 3 , 80 octets
Longue lecteur avide, ma première soumission enfin!
Essayez-le en ligne
la source
Rétine , 29 octets
Essayez-le en ligne!
la source
Python 2 ,
8892 octetsEssayez-le en ligne!
la source
Java 8,
121112107106 octets-1 octet grâce à @ OliverGrégoire .
Explication:
Essayez-le en ligne.
la source
~32
->95
pour 1 octet enregistréJavaScript,
103 à9694 octetsPremière passe assez naïve à cela.
Essayez-le en ligne
la source
${s=s[0].toUpperCase()+s.slice(1).toLowerCase().replace(/y$/,``)}y Mc${s.replace(/e?y$/,``)}face
${s=s[0].toUpperCase()+s.slice(1).toLowerCase().replace(/y$/,'')}y Mc${s.replace(/e$/,``)}face
Donkey
et le second échoueFace
.vim,
3534 octets<ESC>
est0x1b
Ungolfed
Essayez-le en ligne!
Enregistré 1 octet grâce à DJMcMayhem
la source
Y
au lieu deyy
Perl 5
-p
,4739 octetsEnregistré 6 octets avec les suggestions de @ OlegV.Volkov, 1 avec les @ mwellnhof et 1 seul
Essayez-le en ligne!
la source
ucfirst
:$_=lc^$";
$_=s/y$//r."y Mc".s/e?y$//r.face
est un octet plus court./y$|$/
->/y?$/
C ++ 14 (g ++),
181171148147134 octetsNotez que clang ne compilera pas ceci.
Le crédit va à Kevin Cruijssen et Olivier Grégoire pour la
&95
affaire.Merci à Chris avoir joué au golf 11 octets.
Essayez-le en ligne ici .
Version non-golfée:
la source
s[0]=s[0]&~32;
tos[0]&=~32;
;s[i++]=s[i]|32;
às[i++]|=32
; etint i=1,n=s.length()-1,b;
vous n'avez donc besoin que de 1int
.#include<string>
n
et en utilisant simplement la valeur dei
after the while loop. Essayez-le en ligne!V ,
383632 octets-5 octets grâce à @Cows Quack
<esc>
est un caractère d'échappement littéral et[^
est codé comme\x84
Essayez-le en ligne!
la source
gu$
peut devenirVu
[^
s’agit d’un raccourci regex (voir ici ), vous pouvez utiliser 0x84 au lieu de[^
pour enregistrer un octet. De même,\?
peut être simplifié<M-?>
pour enregistrer un autre octet. Et$a
=>A
05AB1E , 30 octets
Essayez-le en ligne! ou en tant que suite de tests
la source
Python 3 ,
117114 octets-3 octets grâce à Dead Possum
Essayez-le en ligne!
la source
[s,s[:-1],'',s[:-2]
peut être changé0
pour sauvegarder 1 octet.'y'*1
*1
n'est pas nécessaire. 2 octets de plusreturn
parprint
un octet est plus court.JavaScript (Node.js) , 87 octets
Essayez-le en ligne!
la source
Buffer
, devra essayer de s'en souvenir pour les défis futurs. Je l'ai eu à 87 octets pour vous.K4 ,
746968 octetsSolution:
Exemples:
Explication:
Déterminez si les derniers caractères sont égaux
"ey"
, convertissez le résultat en base 2 afin d'ignorer les mots qui se terminent"e?"
. Index dans une liste de nombres de caractères à couper.J'ai réussi à supprimer 5 octets de mon code pour déterminer si les deux derniers caractères étaient à,
"ey"
mais peinaient à l'améliorer ...Prime:
Port de 67 octets à K (oK) :
Essayez-le en ligne!
la source
Ruby , 69 octets
Explication:
Essayez-le en ligne!
la source
s.capitalize
remplace-t-il le précédents
? Dans la négative,/e?y$/
gère un test se terminant parY
,EY
ouEy
bien?s.capitalize
vss.capitalize!
(fonctions différentes).s.capitalize!
clobbers l'ancienne version.s.capitalize!
. Jamais programmé en Ruby, mais ajouter un repère explicatif pour remplacer la valeur précédente est plutôt cool. +1 de moi.Jstx , 27 octets
Explication
Essayez-le en ligne!
la source
Rouge ,
143142 octetsEssayez-le en ligne!
Ungolfed:
la source
PHP: 132
Explication:
la source
Gelée ,
77757473 octetsEssayez-le en ligne!
Toutes les suggestions de golf sont les bienvenues (et recherchées)!
la source
Pyth,
3634 octetsEssayez-le en ligne!
Explication:
la source
rz3
surrz4
pour que cela fonctionne correctement pour le dernier cas de test.Elixir ,
112110107106 octetsmaintenant aussi court que java
Essayez-le en ligne!
Explication:
Obtient
x
avec le premier caractère en majuscule et tous les autres en minuscules.Évaluez le code et insérez-le dans la chaîne.
Concatène x avec
y
s'il ne se termine pas pary
(c.-à-d. Qu'il ne correspond pas à l'expression régulièrey$
).Supprime les traînées
ey
et les traînéesy
.la source
PHP , 45
46octetsEssayez-le en ligne!
la source
boAty
. (Mauvais majuscules, 'y' pas enlevé).Pyth,
6059 octets SBCSSuite de tests
Ils ne présentent pas ici, mais trois octets,
Traduction Python 3:\x9c
,\x82
et\x8c
sont dans la chaîne tassée entres
et÷
. Rassurez-vous, le lien les inclut.la source