Blackbeard adalah bajak laut Inggris pada awal abad ke - 18 . Meskipun ia dikenal karena menjarah dan mengambil kapal, ia memerintahkan kapalnya dengan izin kru mereka. Tidak ada catatan tentang dia pernah menyakiti atau membunuh tawanannya.
Tantangan ini untuk menghormati Blackbeard yang tersohor dan terinspirasi oleh International Talk Like a Pirate Day (19 September). Ini juga kebalikan dari tantangan ini oleh Pyrrha .
Tantangan
Buat program yang mengambil peta harta karun sebagai input (terdiri dari karakter yang tercantum di bawah), dan menampilkan arahannya.
Memasukkan
Semua masukan akan terdiri dari v
, >
, <
, ^
, spasi, dan satu X
.
Anda dapat mengasumsikan sebagai berikut:
peta tidak akan pernah berulang atau melintang dengan sendirinya
panah awal akan selalu menjadi karakter paling bawah di kolom paling kiri
akan selalu ada harta karun (
X
)
Input sampel ditunjukkan di bawah ini.
>>v >>>>>>v
^ v ^ v
^ v ^ v<<
^ v ^ v
^ >>>>^ >>X
^
>>^
Keluaran
Outputnya harus berupa ", "
string arah yang telah direvisi. Di bawah ini adalah output yang benar dari peta di atas.
E2, N6, E2, S4, E4, N4, E6, S2, W2, S2, E2
Satu baris atau spasi baris baru diizinkan.
Contohnya
In:
>>>>>>>>>>>>>>>v
v
v
>>>>X
Out:
E15, S3, E4
In:
>>>>>>v
^ v
^ >>>>X
Out:
N2, E6, S2, E4
In:
X
^
^
^
Out:
N3
In:
>>>>>>v
^ v
^ v
v
>>>>>>X
Out:
N2, E6, S4, E6
In:
X
^
^
>^
Out:
E1, N3
In:
>X
Out:
E1
In:
v<<<<<
vX<<<^
>>>>^^
>>>>>^
Out:
E5, N3, W5, S2, E4, N1, W3
Selamat Bicara Internasional Seperti Hari Bajak Laut!
Jawaban:
CJam, 78 byte
Cobalah online .
Penjelasan
Gagasan utama di sini adalah untuk menemukan garis terpanjang (kami akan memanggil panjang ini
T
), kemudian pad semua garis dengan panjang yang sama dan menyatukannya (string baru ini adalahU
). Dengan cara ini, hanya satu penghitung yang diperlukan untuk bergerak di peta. Menambah / mengurangi1
berarti bergerak ke kanan / kiri di baris yang sama, menambah / mengurangiT
berarti bergerak ke bawah / atas satu baris.Sekarang saatnya mengatur loop.
Badan loop menggunakan tabel pencarian dan eval untuk memilih apa yang harus dilakukan. Pada awal setiap iterasi, elemen tumpukan atas adalah posisi saat ini. Di bawahnya ada semua arah NSWE yang diproses. Pada akhir iterasi, arah baru ditempatkan di bawah posisi dan salinannya digunakan sebagai kondisi untuk loop. Karakter yang bukan nol adalah benar. Ketika X ditemui, 0 didorong sebagai arah, mengakhiri loop.
Sekarang tumpukan terlihat seperti ini:
[directions 0 position]
. Mari kita hasilkan.sumber
CJam, 86 byte
Cobalah online
Penjelasan:
sumber
Javascript (ES6), 239 byte
Penjelasan:
sumber
JavaScript (ES6), 189
Tes menjalankan cuplikan di bawah ini di peramban yang mendukung EcmaScript 6.
Kurang golf
sumber