Vous êtes le cow-boy le plus rude, le plus coriace et le plus cool à l'ouest du Mississippi. Cependant, un gars étrange sur un site Web de nerd farfelu a décidé que ce serait cool de vous plonger dans des paysages inachevés aléatoires et de vous battre. Peu importe, vous gagnerez toujours. Cependant, pour vous aider à gagner ces combats exténuants dont vous parlerez à la maison, il est utile de savoir combien de balles le lâche qui se cache dans le paysage a.
Que diriez-vous d'aider ce pauvre gars. Étant donné un paysage ASCII, trouvez l'arme à l'intérieur et dites-lui combien de balles y sont chargées. Voici l'arme:
(X)
(X\ /X)
(XVX)
\X/
Chacun X
dans l'image ci-dessus est un emplacement potentiel pour une balle. L'emplacement contiendra soit un espace, soit un 0,O,o
(peut ne pas être cohérent - le cow-boy peut avoir chargé différents types de balles dans son arme).
Il y aura toujours exactement un pistolet, correspondant à la description ci-dessus, dans le paysage. Cependant, veuillez noter que les espaces autour et à l'intérieur du pistolet peuvent contenir n'importe quoi.
Contribution
Vous recevrez une chaîne contenant des caractères ASCII imprimables (donc pas des tabulations) et des retours à la ligne pour séparer les lignes. Vous pouvez également prendre une liste de chaînes, si vous le souhaitez. Les cordes seront toutes remplies d'espaces, elles auront donc toutes la même longueur. L'entrée aura au moins 4 lignes de haut et 7 colonnes de large.
Il y aura toujours exactement un pistolet dans le paysage.
Sortie
Vous afficherez combien de balles ( 0, O, o
) il y a dans le pistolet, donc votre sortie sera toujours entre 0
et 6
.
Cas de test
(0) ( )
(o\ /o( \ / )
(oVo) ( V )
\o/ \ /
0
----------------------------
////////////////////////////
////////////////////////////
/////////////(o)////////////
///////////(0\// )//////////
////////////( Vo)///////////
/////////////\ /////////////
////////////////////////////
----------------------------
3
()()()()()()()()()()()()()()()()\)/)()()()()()()()()()()()()
()()()()()()()()()()()()()()()()(V)()()()()()()()()()()()()(
()()()()()()()(\0/)()()()()()()()()()()()()()()()()()()()()(
()()()()()()()()()()()()()()()()()()()()()()()( )()()()()()(
()()()()()()(o)()()()()()()()(00)()()()()()(( \(/0)()()()()(
()()()()()()()()()()()()()()()()()()()()()()(( V )()()()()()
()()()()()()()()()()()()()()()()()()()()()()()\O/()()()()()(
2
------(0)---
||||(0\|/0)
-----(0V0)--
||||||\0/
-------_------
|||||||-|
------|-|
|||||||-|
------|-|
6
00ooOO(0)/\\/V
( )
( \\/ )
( V )
\\ /
00OOoo()()()())))
0
(\) (0)
(0\\/0) ( \0/ )
(0V0) ( V )
\\0/ \ /
1 (left gun is invalid because of the `\` in the bullet slot)
-00(0)00\0
-(O\0/o)\
- (OVo)o\0
-o \ /oo/
5
C'est le code-golf , donc la réponse la plus courte en octets l'emporte.
0
à l'intérieur de la boîte englobante du pistolet mais à l'extérieur du pistolet.Réponses:
Escargots , 71 octets
Essayez-le en ligne.
la source
Programming language for 2-dimensional pattern matching.
vous devez être content d'avoir fait ce défi alors: PMathematica, 170 octets
Prend un tableau de chaînes / caractères. Renvoie le nombre de balles.
la source
JavaScript,
215211209 octetsMerci à Shaggy pour -4 octets!
Essentiellement, essaie de faire correspondre les
n
caractères d' un pistolet après un saut de ligne,n
de0
à la longueur de la chaîne.la source
Z
intérieur du littéral, la première fois que vous l'utilisez et en vous débarrassant du{}
.Python 2,
219224227 octetsEDIT: Correction d'un bug qui me coûtait 5 octets: (... trouvé 3 octets de
r''
s supplémentaires qui n'étaient pas nécessaires. Et puis Grrr !! Ne comptait pas\
correctement les caractères dans mon code, donc ajouté 6 ...Prend une chaîne avec des sauts de ligne; réaccorde le nombre de balles trouvées.
Fondamentalement, applique une expression régulière qui recherche le motif du pistolet avec 0, 1, ... caractères LineLength de pad au début des lignes.
la source
C (gcc) ,
357351 octetsEssayez-le en ligne! (golfé) (agrandi)
(357 golfé) (357 élargi)Je me demandais à quel point une solution serait mauvaise dans une langue sans correspondance de modèle intégrée. Il est sorti beaucoup plus petit que je ne le craignais.
Fondamentalement, cette approche décompose le pistolet en une série de pièces individuelles qu'il s'attend à voir dans des emplacements spécifiques par rapport à un index spécifique. Si toutes les pièces se trouvent là où elles sont attendues, c'est un pistolet! Le test de balle incrémente un compteur global pour garder une trace du nombre de balles qu'il contient, que nous imprimons lorsque nous avons trouvé le seul et unique pistolet dans le paysage.
Remarque 1: J'ai rembourré les cas de test avec des espaces pour assurer des largeurs de ligne cohérentes.
Remarque 2: ajoutez 10 octets si vous n'aimez pas l' attribution au lieu de l' astuce de retour . Pour plus de clarté, j'ai utilisé des instructions de retour réelles dans le code développé.
la source