Memasukkan
Input Anda adalah string tunggal, dipisahkan oleh baris baru menjadi 2n+1
garis panjang 2n+1
, untuk beberapa bilangan bulat n ≥ 0
. Bilangan bulat n
bukan bagian dari input; Anda harus menghitungnya dari string. Garis-garis terdiri dari "karakter arah" >^<v
. Jika baris baru menimbulkan masalah, Anda dapat menggantinya dengan pipa vertikal |
.
Input membentuk ukuran kotak persegi (2n+1)x(2n+1)
, dan setiap sel dari grid ditafsirkan sebagai router rotor , yang menunjuk pada salah satu dari empat arah mata angin. Kami melanjutkan untuk menjatuhkan token pada router di pusat grid, dan kemudian router akan memindahkannya dengan cara berikut. Saat token mendarat di router, router memutar 90 derajat ke arah berlawanan arah jarum jam, dan memindahkan token satu langkah ke arah baru yang ditunjuknya. Jika mendarat di router lain, proses ini diulangi, tetapi akhirnya, token akan jatuh dari grid.
Keluaran
Output Anda adalah konfigurasi final dari router, dalam format yang sama dengan input.
Contoh
Sebagai contoh input, perhatikan 3x3
kisi
<^<
^><
>^v
di mana router pusat telah disorot untuk menunjukkan token (agak sulit untuk dilihat). Router pusat berputar untuk menghadap ke utara, dan memindahkan token ke sel pusat dari baris atas:
<^<
^^<
>^v
Router ini berputar untuk menghadap ke barat, dan mengirimkan token ke sudut kiri atas:
<<<
^^<
>^v
Perute di sudut mengirimkan token selatan, jadi sekarang di sel paling kiri dari baris tengah:
v<<
^^<
>^v
Router itu berputar untuk menghadap ke barat dan mengirimkan token dari grid.
v<<
<^<
>^v
Ini adalah konfigurasi kisi terakhir, jadi program Anda harus menampilkannya. Perhatikan bahwa dalam contoh yang lebih kompleks, token dapat melewati router yang sama beberapa kali sebelum jatuh dari grid.
Aturan
Anda dapat menulis fungsi atau program lengkap. Ini adalah kode-golf, sehingga jumlah byte terendah menang. Celah standar tidak diijinkan. Anda dapat memutuskan apakah ada baris tambahan di input dan / atau output.
Uji Kasus
Input:
v
Output:
>
Input:
<^<
^><
>^v
Output:
v<<
<^<
>^v
Input:
>>^>>
v<vv<
>^>^<
^<>>^
vvv>>
Output:
>>^>>
>v>>v
^>>vv
^^>>>
v^<<^
Input:
<^^^^^^^^
<<^^^^^^>
<<<^^^^>>
<<<<^^>>>
<<<<^>>>>
<<<vv>>>>
<<vvvv>>>
<vvvvvv>>
vvvvvvvv>
Output:
>>>>>>>>v
^>>>>>>vv
^^>>>>vvv
^^^>>vvvv
<<<<<vvvv
^^^^<<vvv
^^^<<<<vv
^^<<<<<<v
^<<<<<<<<
Jawaban:
CJam,
626163 byteCobalah online
Diperluas dan dikomentari:
Solusi saya beroperasi pada input sebagai string datar, jadi hanya ada satu nilai posisi untuk dilacak dan hampir tidak ada pra / pasca pemrosesan; hanya ada 2 byte preprocessing untuk menambahkan baris baru ke awal grid dan 2 byte postprocessing untuk menghapusnya dari output. Tetapi 4 byte ini sepadan dengan biayanya karena mereka membiarkan saya menjaga baris baru dan "mengeksekusi" mereka seperti router, tetapi mereka "memutar" ke baris baru lainnya dan mengatur posisi ke nol. Dan loop utama berakhir ketika posisi menjadi nol.
sumber
CJam,
9069 byteBesar untuk sekarang,masih bisa dikurangi banyak.Cobalah online di sini
sumber
JavaScript (ES6) 121
120 127 129Fungsi bernama yang mendapatkan string sebagai parameter input dan mengembalikan output.
Dengan asumsi string input diakhiri dengan baris baru.
Edit perbaikan bug, .search () tidak berfungsi dengan baik
undefined
Tidak diikat dan dijelaskan
Uji di Firefox / konsol FireBug
Keluaran
sumber