Encore un autre défi Jimmy de son père d'origine. Voir ces autres beaux défis .
Comme vous le savez tous, récemment, nous avons vu des défis liés à Jimmy sur les plateformes. Maintenant, Jimmy est un acrobate comme je l'ai mentionné auparavant, et il a d'autres trucs dans sa manche.
L'une de ces astuces est suspendue par des cordes. Voici un exemple d'une corde à laquelle Jimmy pourrait accrocher:
||
||
||
||
||
||
Lorsque Jimmy est suspendu à une corde, cela ressemble à ceci:
||
||
/o\
||
||
||
Il peut accrocher à gauche ou à droite de la corde, donc ceci:
||
||
||
/o\
||
||
est également valide. Mais il ne peut pas accrocher par une seule partie du corps, donc quelque chose comme ça:
||
||
||
/o\|
||
||
est invalide. Notez que lorsqu'il est suspendu par une partie du corps, l'autre moitié de la corde est visible car Jimmy ne la recouvre pas.
De plus, Jimmy n'aime pas être accroché au bas de la corde - cela lui fait peur - alors ceci:
||
||
||
||
||
/o\
est invalide.
Le défi
Prenez en compte une situation Jimmy comme celles ci-dessus et indiquez si Jimmy va s'accrocher à la corde ou non grâce à une valeur véridique ou fausse.
Les spécificités
Écrivez un programme qui accepte des données. Cela peut se faire via une fonction ou toute autre méthode d'entrée appropriée.
- L'entrée doit être une scène d'un Jimmy et d'une corde comme illustré ci-dessus.
Le programme devrait sortir une valeur véridique ou fausse sur la console selon que Jimmy peut s'accrocher à la corde ou s'il tomberait de la corde, respectivement.
Les critères pour que Jimmy puisse s'accrocher à la corde:
Deux de ses parties du corps sont sur la corde.
Il n'est pas au bas de la corde.
Il ne flotte pas dans les airs.
Vous pouvez supposer que la corde sera droite, composée de
||
segments et aura plus d'un caractère en hauteur.Vous pouvez supposer qu'une corde entière et un Jimmy singulier seront présents dans votre scène, ni plus ni moins.
Vous pouvez supposer qu'il n'y aura pas de retour à la ligne au bas de la corde.
Vous devez couvrir n'importe quelle quantité d'espaces avant ou arrière avant et après la corde.
Cas de test
||
||
|| TRUTHY
/o\
||
||
||
||
/o\| FALSY
||
||
||
/o\ TRUTHY
||
||
/o\ FALSY
/o\
|| TRUTHY
||
||
/o\ || FALSY
||
||
Notation
C'est le code-golf , donc le score le plus bas en octets gagne après environ une semaine.
Classement
Vous pouvez afficher le classement de cet article en développant le widget / extrait ci-dessous. Pour que votre message soit inclus dans le classement, vous avez besoin d'un en-tête ( # header text
) avec les informations suivantes:
Le nom de la langue (terminez-le par une virgule
,
ou un tiret-
), suivi de ...Le nombre d'octets, comme le dernier nombre à apparaître dans votre en-tête.
Par exemple, JavaScript (ES6), 72 bytes
est valide, mais Fortran, 143 bytes (8-bit)
n'est pas valide car le nombre d'octets n'est pas le dernier nombre dans l'en-tête (votre réponse sera reconnue comme 8 octets - n'en profitez pas).
<!-- Run the snippet to see the leaderboard. Report any bugs to @ozewski on Github. --> <iframe src="https://ozewski.github.io/ppcg-leaderboard/?id=187759" width="100%" height="100%" style="border:none;">Oops, your browser is too old to view this content! Please upgrade to a newer version of your browser that supports HTML5.</iframe><style>html,body{margin:0;padding:0;height:100%;overflow:hidden}</style>
Réponses:
Japt , 5 octets
Je pense que c'est juste; Je travaille depuis 16 heures d'affilée et je connais à peine mon propre nom donc je ne serais pas surpris si ce n'était pas le cas!
Essayez-le
la source
Python 2 ou 3 ,
3330 octets-3 grâce à Maxwell
Une fonction sans nom acceptant une liste de lignes
Essayez-le en ligne!
Comment?
Il doit y avoir une section de corde obscurcie par Jimmy qui n'est pas celle du bas.
la source
lambda l:'o'in map(max,l[:-1])
Python 2, 28 octets
Essayez-le en ligne!
Comment ça marche? Il prend l'entrée comme une liste de chaînes et zip joint la chaîne. Jimmy reste sur la corde s'il y a un "|" sous un "o", donc ce code joint toutes les lignes et vérifie s'il y a un "o" suivi d'un "|".
Code annoté:
(Ancienne réponse) Python 2 ou 3, 39 octets
Une fonction qui prend l'entrée comme une liste de chaînes, chaque chaîne étant une ligne différente.
-11 octets grâce à xnor! -2 octets merci à Jonathan Allan!
Essayez-le en ligne! (Si vous voulez essayer plus de cas de test, mettez simplement un "." Après chaque ensemble de lignes dans la zone de saisie.)
Comment cela marche-t-il? Eh bien, si Jimmy est complètement sur la corde, alors cette ligne n'aura pas de "|" personnages. Par conséquent, nous pouvons vérifier chaque ligne, et si nous en trouvons sans "|" personnages, alors nous savons que Jimmy peut rester sur la corde. Cependant, Jimmy ne peut pas s'accrocher au bas de la corde; par conséquent, nous n'incluons pas la dernière ligne dans notre chèque. Si la ligne finale n'est qu'une autre partie de la corde, cela n'aura pas d'importance, car nous trouverons toujours une ligne valide plus haut, mais si la ligne finale est celle avec Jimmy, elle ne trouvera pas de ligne sans "|" n'importe où, et retournera Faux.
la source
lambda x:1-all("|"in i for i in x[:-1])
Gelée ,
9 76 octetsUn lien monadique acceptant une liste de lignes
Essayez-le en ligne!
Comment?
Il doit y avoir une section de corde obscurcie par Jimmy qui n'est pas celle du bas.
la source
Note that all other characters are [less than '|']
"?Grime , 5 octets
Essayez-le en ligne!
Le bon outil pour le travail.
la source
brainfuck,
7964 octetsEssayez-le en ligne!
Génère l'octet 0x01 pour la vérité et rien pour la fausse.
la source
Stax , 6 octets
Exécuter et déboguer
Transpose l'entrée, puis recherche "o |".
la source
05AB1E , 5 octets
Essayez-le en ligne!
Les seuls caractères qui peuvent apparaître dans l'entrée sont
\o/ |
, avec les points de code respectifs 92, 111, 47, 32, 124 (il n'y a pas de nouvelle ligne, puisque nous avons choisi de prendre l'entrée comme un tableau de lignes). Les résultats possibles en modulant deux de ces nombres sont 0, 13, 15, 17, 19, 28, 30, 32, 45, 47, 92, 111. 111 est le plus grand de ceux-ci, et aussi le seul qui se termine par 1 , donc le code affichera la vérité si et seulement si 111 est présent dans la liste (seulement 1 est vrai dans 05AB1E). 111 est 111 (o
)% 124 (|
), et ne se produit donc que s'il y a uno
au-dessus de a|
dans l'entrée.la source
APL (Dyalog Unicode) , 8 octets SBCS
Fonction de préfixe tacite anonyme, prenant comme argument une matrice de caractères.
Essayez-le en ligne!
⍉
transposer'o|'⍷
masque pour partouto
est immédiat suivi de|
1∊
en est-on membre?la source
Dyalog APL Extended,
1413119 octetsEssayez-le en ligne!
la source
3∊¯1+/⍤↓<
JavaScript,
3933 octetsMerci @Daniil Tutubalin d'avoir joué au golf sur 2 octets
Cela correspond à n'importe quelle ligne qui n'est pas la ligne où son bras gauche apparaît et aucune corde ne montre.
Essayez-le en ligne!
la source
/^ *.o. *\n/
?/// ,
5350 octetsEssayez-le en ligne!
Parce qu'il n'y a pas d'autre moyen de prendre des entrées dans ///, il est codé en dur:
Explication:
L'approche générale consiste à remplacer Jimmy par un 1 unaire, puis à le retirer de toutes les situations où il est en danger. S'il survit, il est sorti. S'il ne le fait pas, alors rien ne l'est. Les
~
dans le code sont un remplacement pour//
, ce qui permet au code d'être raccourci de 3 octets ici. Ils sont omis de l'explication.Essayez-le en ligne!
la source
Ruby 2.5.5, 22 octets
Attend un tableau de lignes. Nécessite un minimum de la version 2.5.5 car c'est à ce moment qu'a
Array#all?(pattern)
été ajouté.En raison des contraintes selon lesquelles l'entrée sera toujours une scène valide de Jimmy et d'une corde, il se résume à savoir si l'une des lignes avant la dernière ligne a la corde obscurcie.
la source
Kotlin ,
9384 octetsEssayez-le en ligne!
la source
JavaScript,
3837 octetsEssayez-le en ligne!
la source
Rétine , 9 octets
Essayez-le en ligne!
Maintenant, je n'ai jamais programmé de rétine auparavant, mais pour autant que je sache, cela fonctionne. C'est une expression régulière qui trouve une chaîne contenant (1) le début de l'entrée, (2) pas de "|" et (3) une nouvelle ligne.
Les personnes plus familières avec les expressions régulières ou la rétine sont encouragées à faire des suggestions. -2 octets grâce à Neil!
la source
\n
car une nouvelle ligne n'est pas un|
et donc cela correspondra de toute façon, et la finale^
suffit pour vous assurer que vous avez effectivement correspondu à une nouvelle ligne. 2) Utilisez un pilcrow¶
au lieu de\n
et supprimez la fin^
(car cela est toujours vrai après une nouvelle ligne en mode multiligne).Perl 5
-p
, 26 octetsEssayez-le en ligne!
la source
Befunge-98 (PyFunge) ,
2624 octetsEssayez-le en ligne!
Quitte avec le code retour 3 si
\n
est rencontré et la dernière ligne contenait 3 caractères non-espace, sinon se termine avec le code retour 0 sur EOF. Ainsi, cela repose sur la dernière ligne ne contenant pas de nouvelle ligne de fin.Disséqué
la source
05AB1E (hérité) , 6 octets
Port de @Shaggy réponse Japt de .
Saisie sous forme de liste de lignes.
Essayez-le en ligne.
Explication:
la source
Orme 0,19, 68 octets
Prend l'entrée comme une liste de lignes. Sans tenir compte de la dernière ligne, il vérifie s'il y en a sans
'|'
en a sans - ce qui implique que la corde est entièrement couverte par Jimmy.Vérifiez tous les cas de test ici .
la source
PowerShell , 26 octets
Réponse de Port of Maxwell pour Retina .
Essayez-le en ligne!
Explication:
true
si:|
false
autrement.la source
Pyth , 9 octets
Suite de tests!
la source
Pyret, 79 octets
Attend un tableau de lignes sous forme de chaînes. Effectue une copie dans
link(0,l)
laquelle toutes les lignes sont décalées d'une unité vers le bas. Parcourt chaque ligner
etn
où n est la ligne sous r. Vérifie que si le corps de Jimmy"o"
est dans une certaine position, alors la rangée en dessous a un tuyau là-bas (c'est-à-dire que Jimmy est accroché à la corde et n'est pas en bas).la source