Temukan Santa dan rusa di adegan yang ramai.
Memasukkan
Input akan di STDIN dan akan menjadi jumlah variabel baris karakter yang sama, tetapi variabel, panjang. Jika Santa (diwakili oleh karakter S
) ada dalam adegan, karung hadiahnya (diwakili oleh karakter P
) akan berada di salah satu posisi yang berdekatan dengannya (horizontal, vertikal atau diagonal). Rusa-nya (masing-masing diwakili oleh karakter R
) semua akan berada dalam kotak 5x5 di sekitarnya. Jika seorang S
muncul dalam adegan yang tidak memiliki sekarung hadiah, atau tidak disertai oleh setidaknya 4 rusa, maka itu bukan Santa.
Keluaran
Adegan dibersihkan dari semua kebingungan (semua karakter non-Santa, non-hadiah, non-rusa diganti dengan spasi), menunjukkan Santa, karung hadiahnya, dan rusa-nya - semua karakter lain harus diganti dengan spasi. Jika Santa dan rusa kutubnya tidak ada di tempat kejadian, hasilnya tidak berubah. Dijamin hanya akan ada satu solusi, jadi tidak akan pernah ada lebih dari satu Santa yang valid dan dia tidak akan pernah membawa lebih dari satu karung hadiah.
Contohnya
Dalam contoh ini saya hanya menggunakan *
karakter untuk membuatnya mudah untuk melihat S
, P
dan R
karakter, tetapi program Anda harus dapat menangani setiap karakter ascii dari !
ke `
(33-96). Saya telah meninggalkan karakter huruf kecil ke atas untuk menghindari kebingungan.
Memasukkan:
***********
***********
***********
*****R*****
******P****
*****S*****
*****R*****
****R**R***
***********
***********
***********
***********
Output: (abaikan titik, mereka harus memaksa halaman untuk menampilkan garis kosong)
.
.
.
R
P
S
R
R R
.
.
.
.
Input: (tidak cukup rusa)
***********
***********
***********
***********
******P****
*****S*****
*****R*****
****R**R***
***********
***********
***********
***********
Keluaran:
***********
***********
***********
***********
******P****
*****S*****
*****R*****
****R**R***
***********
***********
***********
***********
Input: (tidak ada karung hadiah)
***********
***********
***********
*****R*****
***********
*****S*****
*****R*****
****R**R***
***********
***********
***********
***********
Keluaran:
***********
***********
***********
*****R*****
***********
*****S*****
*****R*****
****R**R***
***********
***********
***********
***********
Input: (hadiah tidak cukup dekat)
***********
***********
***********
*****R*****
***********
*****S*P***
*****R*****
****R**R***
***********
***********
***********
***********
Keluaran:
***********
***********
***********
*****R*****
***********
*****S*P***
*****R*****
****R**R***
***********
***********
***********
***********
Input: (salah satu rusa tidak dalam kotak 5x5 di sekitar Santa)
***********
***********
***********
*****R*****
******P****
*****S*****
*****R*****
****R******
*******R***
***********
***********
***********
Keluaran:
***********
***********
***********
*****R*****
******P****
*****S*****
*****R*****
****R******
*******R***
***********
***********
***********
Tes Script
Seperti pada beberapa pertanyaan saya di masa lalu, saya sekali lagi membantai beberapa skrip uji yang awalnya dibuat oleh Joey dan Ventero untuk memberikan beberapa kasus uji untuk pertanyaan ini:
Pemakaian: ./test [your program and its arguments]
Versi teks tes untuk referensi: Teks polos
Hadiah
Setiap entri yang saya dapat verifikasi yang memenuhi spesifikasi, lulus tes dan jelas telah mencoba golf akan menerima upvote dari saya (jadi tolong berikan instruksi penggunaan dengan jawaban Anda). Solusi terpendek pada akhir 31/12/2013 akan diterima sebagai pemenang.
Jawaban:
MATLAB: 110
, 95karakterTidak yakin tentang cara input seharusnya diproses, tetapi sisanya cukup mudah.
Versi biasanya diformat:
Input contoh:
sumber
*
karakter sebagai kerumunan untuk membuatnya lebih mudah untuk melihatS
,P
danR
karakter - sedangkan tes dalam skrip tes menggunakan semua karakter ascii dari 33 (!
) ke atas ke (dan termasuk) 96 (`` `). Saya akan menjelaskan hal ini dalam pertanyaan. Saya telah melakukan tes teks versi sederhana yang harus Anda lewati yang juga akan saya tambahkan ke pertanyaan.Q
uilt, akan menyelamatkan saya setidaknya 2 karakter.SQL_2
input sampel ... bagus :)Python 2 (
353381)Upaya pertama untuk menulis kode sekompak mungkin. Python sebenarnya bukan bahasa untuk itu, karena lekukan dan baris baru hanya diperlukan oleh desain. Saya terutama memilih untuk menggunakan bahasa ini, karena cara Anda bisa bermain dengan daftar, dan string sebagai daftar. Bahasa dengan manipulasi matriks yang mudah akan ideal untuk tugas ini, tetapi sayangnya saya tidak tahu satu pun dari mereka.
Untuk menguji sesuatu, sesuatu perlu ditugaskan ke, misalnyaHal menarik utama dalam kode ini mungkin:
yang merupakan cara penulisan yang mewah: "b menjadi daftar representasi (string 25 karakter) dari setiap 5x5 persegi dalam representasi asli".
sumber
Seharusnya hanya ada satu Santa di file (jika lebih dari 2 "S", saya perlu memperbarui kode).
Menggunakan awk
Jalankan perintah awk seperti di bawah ini
Hasil
sumber
S
diizinkan selama hanya satu yang merupakan Santa 'valid'. Tes (disediakan dalam pertanyaan) memiliki beberapa kasus yang akan gagal karena alasan ini.