Dans ce défi simple mais amusant , on vous a demandé de déterminer si Jimmy tomberait de sa plateforme. 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 ou plusieurs parties du corps 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.
Votre tâche consiste à écrire un programme qui prend une plate-forme comme un conteneur long contenant uniquement -
s et s (par exemple une chaîne) et génère le nombre de Jimmys qui peuvent être placés sur la plate-forme de sorte qu'aucun d'entre eux ne tombe et aucun ne le fasse chevauchement. Un Jimmy peut avoir une de ses parties du corps à gauche du début de la chaîne ou à droite de la fin de la chaîne.
Il s'agit de code-golf donc les réponses sont notées en octets avec moins d'octets comme objectif.
Cas de test
Contributions
- - -
- -
--
-- --
----
- -- --
------- -
Sorties respectives
0
0
1
1
2
2
2
3
---
n'était pas bien assis avec moi non plus, jusqu'à ce que je travaille sur mon port et que je réalise qu'ils n'étaient pas nécessaires. Je pense que je l'appellerai un jour ici, attrape un sac de canettes et jette SMG moi-même - je ne l'ai pas joué depuis longtemps.Python 2 , 53 octets
Essayez-le en ligne!
Basé sur l'expression régulière d'Arnauld . Recherche avidement toutes les sous-chaînes de longueur 3 qui ne se chevauchent pas avec deux ou plus
-
. Une astuce consiste à`s`
placer la chaîne d'entrée entre guillemets comme rembourrage pour laisser de la place à Jimmys pour qu'il se bloque à chaque extrémité commePython 2 , 57 octets
Essayez-le en ligne!
Nécessite un format d'E / S ringard de l'entrée déjà entre guillemets. Sorties
False
pour 0.Une fonction récursive qui place chaque Jimmy à la position la plus à gauche autorisée, soit en plaçant Jimmy sur les trois premiers caractères s'ils peuvent contenir Jimmy, soit en supprimant le premier caractère. Une astuce mignonne consiste à vérifier s'il en
s[:3]
contient deux ou plus-
en faisant'--'in s[:3]*2
, ce qui concatène deux copies des[:3]
et vérifie deux adjacentes-
.la source
Perl 5
-p
, 28 octetsUtilise la même méthode que le JavaScript de @ Arnauld.
Essayez-le en ligne!
la source
Japt , 16 octets
Basé sur la solution JS originale d'Arnauld. J'ai essayé quelques méthodes différentes pour obtenir le rembourrage nécessaire de chaque côté de l'entrée, mais tous sont arrivés à la même longueur - toujours à la recherche d'un moyen plus court ...
Essaye-le
la source
Excel, 96 octets
A1
= plate-forme. Entré comme tableau FormuleCtrl
+Shift
+Enter
la source
05AB1E , 16 octets
Peut certainement être joué au golf. Parfois, il est ennuyeux de voir toutes ces réponses d'expression rationnelle dans un défi lors de l'utilisation de 05AB1E, qui manque de toute expression régulière. ;)
Essayez-le en ligne ou vérifiez tous les cas de test .
Explication:
la source
Rubis , 39 octets
Essayez-le en ligne!
la source
Stax , 13 octets
Exécuter et déboguer
la source
Java 8, 41 octets
Essayez-le en ligne.
Port de la réponse JavaScript de @Arnauld , sauf qu'il
+0
s'agit+10
de corriger des cas de test comme----
. Ceci est nécessaire car leString#split
Java intégré supprimera les chaînes vides de fin par défaut. Ceci peut être changé en ajoutant un paramètre supplémentaire ausplit
builtin (qui est0
par défaut dans lesplit
-builtin avec un seul argument String). Pour citer l'utilisation de ce paramètre supplémentaire à partir des documents:Pour cette raison,
.split("...",-1)
est généralement utilisé pour conserver TOUTES les chaînes vides à la fin, et j'aurais pu également l'utiliser pour cette réponse ( Essayez-le en ligne ). Dans ce cas , changer le+0
pour+10
économiser deux octets sur le,-1
, cependant. :)la source
Gelée , 12 octets
Essayez-le en ligne!
Basé sur la réponse 05AB1E de @ KevinCrujissen, alors assurez-vous de lui aussi voter.
la source
Fusain , 25 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Explication:
Imprimez la plate-forme sans déplacer le curseur, puis déplacez le curseur vers le haut et vers la gauche car c'est la première position potentielle de Jimmy.
Recherchez autant de Jimmies qu'il y a de positions sur la plateforme.
Vérifiez s'il y a plus d'une pièce de plate-forme à cette position.
Si c'est le cas, notez une position Jimmy valide ...
... et déplacez trois personnages vers la droite pour que les Jimmies ne se chevauchent pas.
Sinon, la prochaine position potentielle de Jimmy est un caractère à droite.
Effacez la plate-forme et affichez le nombre de positions découvertes.
la source
PowerShell , 38 octets
Réponse JavaScript du port d' Arnauld .
Essayez-le en ligne!
la source
Orme 0,19, 108 octets
Basé sur l'expression régulière dans la réponse JavaScript d' Arnauld . Vérifiez tous les cas de test ici .
Solution alternative sans regex, significativement plus longue à 171 octets :
Vérifiez tous les cas de test ici .
la source