Anda adalah koboi yang paling kasar, paling tangguh, dan paling keren di sebelah barat Mississippi. Namun, beberapa pria aneh di situs web aneh aneh memutuskan bahwa itu akan keren untuk menjatuhkan Anda ke lanskap acak yang belum selesai dan berkelahi. Tidak masalah, Anda masih akan menang. Namun, untuk membantu Anda memenangkan baku tembak melelahkan yang akan Anda tulis di rumah, akan sangat membantu untuk mengetahui berapa banyak peluru yang dimiliki pengecut yang bersembunyi di lanskap.
Bagaimana kalau kamu membantu pria malang ini. Diberikan lanskap ASCII, temukan pistol di dalamnya dan katakan padanya berapa banyak peluru yang dimuat ke dalamnya. Ini pistolnya:
(X)
(X\ /X)
(XVX)
\X/
Masing-masing X
dalam gambar di atas adalah slot potensial untuk peluru. Slot tersebut akan berisi ruang atau salah satu dari 0,O,o
(mungkin tidak konsisten - koboi mungkin telah memuat berbagai jenis peluru di senjatanya).
Akan selalu ada tepat satu senjata, cocok dengan deskripsi di atas, di lanskap. Namun, harap diperhatikan bahwa ruang di sekitar dan di dalam pistol dapat berisi apa saja.
Memasukkan
Anda akan diberi string berisi ASCII yang dapat dicetak (jadi bukan tab) dan baris baru untuk memisahkan baris. Anda juga dapat mengambil daftar string, jika mau. Semua string akan diisi dengan spasi, sehingga semuanya memiliki panjang yang sama. Input akan minimal 4 baris dan lebar 7 kolom.
Akan selalu ada tepat satu senjata di lanskap.
Keluaran
Anda akan menampilkan berapa banyak peluru ( 0, O, o
) yang ada di pistol, sehingga output Anda akan selalu berada di antara 0
dan 6
.
Uji Kasus
(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
Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang.
0
dalam kotak senapan tapi di luar pistol.Jawaban:
Siput , 71 byte
Cobalah online.
sumber
Programming language for 2-dimensional pattern matching.
Anda pasti senang saya membuat tantangan ini: PMathematica, 170 byte
Mengambil array string / karakter. Mengembalikan jumlah peluru.
sumber
JavaScript,
215211209 byteBerkat Shaggy untuk -4 byte!
Pada dasarnya, cobalah untuk mencocokkan
n
karakter pistol setelah jeda baris, untukn
dari0
panjang tali.sumber
Z
dalam literal, pertama kali Anda menggunakannya dan menyingkirkan{}
.Python 2,
219224227 byteEDIT: Memperbaiki bug yang menghabiskan biaya 5 byte: (... menemukan 3 byte tambahan
r''
yang tidak diperlukan. Dan kemudian Grrr !! Tidak menghitung\
karakter dalam kode saya dengan benar, jadi menambahkan 6 ...Mengambil string dengan baris baru; Kembalikan jumlah peluru yang ditemukan.
Pada dasarnya, terapkan regex yang mencari pola pistol dengan karakter 0, 1, ... lineLength pad pada awal baris.
sumber
C (gcc) ,
357351 byteCobalah online! (golf) (diperluas)
(357 golf) (357 diperluas)Saya bertanya-tanya seberapa buruk solusinya dalam bahasa tanpa pencocokan pola bawaan. Itu keluar jauh lebih kecil daripada yang saya takutkan.
Pada dasarnya, pendekatan ini memecah pistol menjadi serangkaian bagian individu yang diharapkan untuk dilihat di lokasi tertentu relatif terhadap indeks tertentu. Jika semua bagian ditemukan di tempat yang diharapkan, itu adalah pistol! Tes peluru menambah counter global untuk melacak berapa banyak peluru yang ada di dalamnya, yang kami cetak ketika kami telah menemukan satu-satunya senjata di lanskap.
Catatan 1: Saya mengisi ruang uji dengan spasi untuk memastikan lebar baris yang konsisten.
Catatan 2: Tambahkan 10 byte jika Anda tidak menyukai penetapan alih-alih trik pengembalian . Untuk kejelasan, saya menggunakan pernyataan pengembalian aktual dalam kode yang diperluas.
sumber