Sie sind der raueste, härteste und coolste Cowboy westlich des Mississippi. Ein seltsamer Typ auf einer verrückten Nerd-Website entschied jedoch, dass es cool wäre, dich in zufällige unfertige Landschaften zu stürzen und zu kämpfen. Egal, du wirst immer noch gewinnen. Um diese anstrengenden Schießereien zu gewinnen, über die Sie nach Hause schreiben, ist es jedoch hilfreich zu wissen, wie viele Kugeln der Feigling in der Landschaft lauert.
Wie wäre es, wenn du diesem armen Kerl hilfst? Suchen Sie in einer ASCII-Landschaft nach der Waffe und teilen Sie ihm mit, wie viele Kugeln in die Waffe geladen sind. Das ist die Waffe:
(X)
(X\ /X)
(XVX)
\X/
Jedes X
im obigen Bild ist ein möglicher Einschuss für eine Kugel. Der Schlitz enthält entweder ein Leerzeichen oder eines von 0,O,o
(möglicherweise nicht konsistent - der Cowboy hat möglicherweise verschiedene Arten von Kugeln in seine Waffe geladen).
Es wird immer genau eine Waffe in der Landschaft geben, die der obigen Beschreibung entspricht. Bitte beachten Sie jedoch, dass die Zwischenräume um und innerhalb der Waffe alles enthalten können.
Eingang
Sie erhalten eine Zeichenfolge, die druckbares ASCII (also keine Tabulatoren) und Zeilenumbrüche enthält, um die Zeilen zu trennen. Auf Wunsch können Sie auch eine Liste mit Zeichenfolgen erstellen. Zeichenfolgen werden alle mit Leerzeichen aufgefüllt, sodass sie alle die gleiche Länge haben. Die Eingabe ist mindestens 4 Zeilen hoch und 7 Spalten breit.
Es wird immer genau eine Waffe in der Landschaft geben.
Ausgabe
Sie geben aus, wie viele Kugeln ( 0, O, o
) sich in der Waffe befinden, sodass Ihre Ausgabe immer zwischen 0
und erfolgt 6
.
Testfälle
(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
Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes.
0
innerhalb des Begrenzungsrahmens der Waffe, aber außerhalb der Waffe befindet.Antworten:
Schnecken , 71 Bytes
Probieren Sie es online aus.
quelle
Programming language for 2-dimensional pattern matching.
Sie müssen froh sein, dass ich diese Herausforderung dann gemacht habe: PMathematica, 170 Bytes
Nimmt eine Reihe von Zeichenfolgen / Zeichen. Gibt die Anzahl der Aufzählungszeichen zurück.
quelle
JavaScript,
215211209 BytesDanke an Shaggy für -4 Bytes!
Im Grunde versucht , eine Waffe zu passen
n
Zeichen nach einem Zeilenumbruch, fürn
von0
der Länge der Saite.quelle
Z
dem Literal bei der ersten Verwendung eine Zuweisung zuweisen und das Symbol entfernen{}
.Python 2,
219224227 BytesBEARBEITEN: Es wurde ein Fehler behoben, der mich 5 Bytes kostete: (... fand 3 Bytes an zusätzlichen
r''
S, die nicht benötigt wurden. Und dann Grrr !! Zählte die\
Zeichen in meinem Code nicht richtig, also fügte ich 6 hinzu ...Nimmt einen String mit Zeilenumbrüchen; wiederholt die Anzahl der gefundenen Kugeln.
Wendet grundsätzlich einen regulären Ausdruck an, der nach dem Pistolenmuster mit den Zeichen 0, 1, ... lineLength des Pads am Zeilenanfang sucht.
quelle
C (GCC) ,
357351 BytesProbieren Sie es online! (Golf) (erweitert)
(357 Golf) (357 erweitert)Ich fragte mich, wie schlecht eine Lösung in einer Sprache ohne eingebauten Mustervergleich wäre. Es kam viel kleiner heraus, als ich befürchtet hatte.
Im Grunde zerlegt dieser Ansatz die Waffe in eine Reihe von Einzelteilen, die an bestimmten Stellen in Bezug auf einen bestimmten Index zu sehen sind. Wenn alle Teile dort sind, wo sie erwartet werden, ist es eine Waffe! Der Kugeltest erhöht einen globalen Zähler, um zu verfolgen, wie viele Kugeln sich darin befanden, die wir drucken, wenn wir die einzige Waffe in der Landschaft gefunden haben.
Anmerkung 1: Ich habe die Testfälle mit Leerzeichen aufgefüllt, um eine einheitliche Zeilenbreite sicherzustellen.
Hinweis 2: Fügen Sie 10 Bytes hinzu, wenn Sie den Zuweisungs- Trick nicht mögen , anstatt ihn zurückzugeben . Aus Gründen der Übersichtlichkeit habe ich im erweiterten Code tatsächliche return-Anweisungen verwendet.
quelle