Il semble que récemment, il y a eu beaucoup de Jimmys qui sont morts, comme on peut le voir ici , et ici où on vous a demandé de déterminer si Jimmy tomberait. Il est temps de mettre un terme à cette folie et d'essayer de sauver Jimmy.
Jimmy a trois parties du corps /
, o
et \
disposées comme ceci
/o\
Les plateformes sont représentées par -
. Jimmy tombera de sa plate-forme s'il a deux parties du corps ou plus qui ne sont pas directement au-dessus d'une plate-forme.
Quelques exemples:
/o\
- -------
Jimmy s'équilibrera puisque toutes leurs parties du corps sont au-dessus de a -
.
/o\
------ ---
Jimmy sera équilibré puisque deux parties du corps sont au-dessus de l' -
art.
/o\
-- ---- --
Jimmy s'équilibrera même s'ils sont répartis entre deux plates-formes
/o\
-
Jimmy ne sera pas équilibré car deux parties du corps ne sont pas au-dessus d'une plate-forme.
Étant donné que mon offre de plates-formes est faible, je n'ai que des plates-formes d'une longueur de 5, et il est important que nous en utilisions le moins possible.
Votre tâche consiste à prendre une entrée de Jimmys et à sortir une chaîne de plates-formes qui enregistrera tous les Jimmys dans l'entrée. Votre sortie doit utiliser le moins de plates-formes possible, mais chaque plate-forme doit avoir -
une largeur de 5 pouces.
Notez que la règle de la plate-forme étant de 5 de -
large, cela signifie que chaque plate-forme doit avoir un espace entre elles. ----------
n'est pas valide en sortie car il sera considéré comme une plateforme de longueur 10 et non deux plateformes de longueur 5.
Cas de test
/o\ /o\/o\ // input
----- ----- // output
/o\ /o\
----- -----
/o\ /o\ // same input as above
----- ----- // this is also valid output
/o\ /o\
-----
Des règles standard s'appliquent.
C'est le code-golf, que la réponse la plus courte gagne!
Réponses:
Fusain ,
1715 octetsEssayez-le en ligne! Le lien est vers la version détaillée du code. Explication:
Répétez l'opération lorsque la position du curseur est inférieure à la longueur de l'entrée.
Si le caractère à cette position dans l'entrée est un
o
ou un\
alors imprimez 5-
s.Passez au personnage suivant, garantissant ainsi au moins un espace entre les plates-formes.
La solution précédente de 17 octets est à mon humble avis plus "Charcoal-y".
Essayez-le en ligne! Le lien est vers la version détaillée du code. La sortie comprend une entrée, démontrant ainsi l'exactitude de la solution. Explication:
Imprimez l'entrée et passez au début de la ligne suivante.
Parcourez chaque caractère de l'entrée pour vous assurer qu'aucun Jimmy ne soit raté.
Regardez le caractère au-dessus du curseur. S'il n'y en a pas, ou s'il s'agit d'espace ou
/
alors, ne faites rien, sinon imprimez 5-
s.Passez au personnage suivant, garantissant ainsi au moins un espace entre les plates-formes.
la source
Python 2 ,
7067 octetsEssayez-le en ligne!
-3 octets grâce à Kevin Cruijssen & Neil
Pas le plus joli, je ne sais pas comment mieux gérer ces restes ...
Malheureusement, nous ne pouvons pas remplacer les deux extrémités de chaque plate-forme par des espaces utilisant un seul
re.sub
appel, car dans le cas où 2 plates-formes sont séparées par un espace, l'écart entre elles ne peut pas être égalé plus d'une fois. Une assertion lookahead / lookbehind n'aidera pas, car tout ce qui correspond à ces assertions n'est pas remplacé.En utilisant une seule
re.sub
référence:Python 3.8 (pré-version) , 78 octets
Essayez-le en ligne!
la source
/
puis le[^ ]
.JavaScript (ES6),
56 5554 octetsEssayez-le en ligne!
Ou 47 octets si le retour d'un tableau de caractères est acceptable.
la source
Python 3 ,
158164160 160 octetsEssayez-le en ligne!
Ceci est ma première réponse de golf de code, et je suis heureux que ce soit sur une question Jimmy!
Explication:
a=input();r=""
: Prendre en entrée et initialiser une nouvelle chaîner
.for i,c in enumerate(a):
: Énumérer sur l'entrée.try:r[i] ... except:
: Voir s'ilr[i]
existe - sinon, traiter leexcept
bloc.if c in"/o":
: Vérifiez si le personnage actuel se trouve dans les deux premières parties du corps de Jimmy.r+=(a[i+5<len(a)and i+5or len(a)-1]=="o"and" "or"")+"----- "
: Si oui, ajoutez un nouveau segment. Ajoutez un espace avant notre nouveau segment si une autre tête Jimmy est présente en cinq caractères.else:r+=" "
: Sinon, ajoutez simplement un espace.print(r)
: Imprimez notre résultat final.la source
Rétine ,
2321 octets-2 octets grâce à @Neil .
Contient un seul espace de fin sur les deuxième, quatrième et sixième lignes.
Port de la réponse Python 2 de @negativeSeven , alors assurez-vous de lui donner un vote positif!
Essayez-le en ligne.
Explication:
Remplacez tout
"/"
par un" "
:Ajoutez 5 espaces de fin:
Remplacez toutes les sous-chaînes de taille six qui ne commencent pas par un espace par
"----- "
:la source
\S
place de[^ ]
?Gelée , 35 octets
Essayez-le en ligne!
Un lien monadique qui prend l'entrée sous forme de chaîne et renvoie une chaîne Jelly avec les plates-formes.
S'inspire de la réponse de @ negativeseven .
la source
05AB1E ,
2524 octetsPort de la réponse Python 2 de @negativeSeven , alors assurez-vous de lui donner un vote positif!
Essayez-le en ligne ou vérifiez tous les cas de test .
Explication:
la source
Japt ,
2322 octetsUn portage de la solution JS d'Arnauld que je suis juste trop épuisé pour tester complètement. S'il n'est pas valide, un diamant peut-il être supprimé?
Essayez-le
la source