Tugas Anda adalah menemukan total tujuan objek yang jatuh ke sebuah planet, Anda akan mendapatkan input seperti ini:
7
...#...
.......
#..O..#
.......
...#...
.......
.......
di mana O adalah planet dan # adalah objek, perhatikan bahwa planet akan menarik objek dari untuk arah dasar (BERITA). Anda harus mengeluarkan:
#
#O#
#
yaitu objek setelah mencapai tujuannya.
Angka pertama yang diberikan sebagai input adalah panjang kisi (nxn), dalam contoh di atas adalah 7.
Objek harus selalu bergerak dalam arah terpendek (perhatikan bahwa arah yang diperbolehkan hanya horisontal dan vertikal; objek tidak dapat bergerak secara diagonal)
Jika suatu objek berjarak sama dari dua arah, arahnya harus sesuai dengan arah jam:
..#
...
O..
Akan mencapai sisi ini:
...
...
O#.
Jika suatu benda bertabrakan dengan planet ini, ia akan berhenti. Jika bertabrakan dengan objek lain mereka menjadi satu objek,
4
.#..
#...
....
.O..
akan menjadi:
....
....
.#..
.O..
Satu contoh terakhir:
6
..#...
.#....
......
.#O...
....#.
......
Keluaran:
......
......
..#...
.#O#..
......
......
Catatan: Anda harus menampilkan bentuk akhir, sehingga semua keluaran diterima selama menunjukkan bentuk akhir dari planet ini.
misalnya untuk input ini:
...#
....
.O..
....
Haruskah output:
O#
atau
....
....
.O#.
....
Keduanya diterima.
Ini kode-golf sehingga jawaban terpendek akan menang
Catatan 2:
Seperti yang mungkin Anda perhatikan, itu .
merupakan vaccum sehingga jalur terpendek adalah jumlah titik terpendek.
Sebagai contoh:
.#.
...
.O.
Tidak diterima
O#
karena jalur terpendek adalah vertikal. Catatan 3:
Objek harus selalu bergerak sejajar dengan planet di salah satu dari empat arah (memilih yang terpendek)
|<#
|
|
-----O------
|
Pembatasan:
2 <= n <= 100
Jawaban:
Perl,
156 153148Baris baru untuk keterbacaan. Jalankan dengan
-0777p
(5 ditambahkan ke hitungan), masukan melalui STDIN.Lebih mudah dibaca:
sumber
$=
variabel 'magick' (yang bisa hanya bilangan bulat - menyelamatkan kita 5 karakter 'int ()'), dan menggunakan\G
jangkar dalam pola pencarian. Di sini kita mengatur posisinya dengan menetapkan kepos
fungsi (yang argumen default-nya$_
)Mathematica, 206 byte
Agak lebih mudah dibaca:
Seperti yang Anda lihat, saya hanya mengambil satu input yang merupakan string yang berisi peta input. Ini karena saya tidak akan menggunakan integer ukuran. Jika Anda bersikeras pada format input, saya dapat mengubah string input ke argumen kedua untuk satu karakter lagi.
Adapun algoritma, saya hanya mengumpulkan semua
{Δx, Δy}
pasangan objek dan mencari satu pasangan di setiap kuadran dengan kondisi yang diteruskanh
. Saya kira ini juga bagian yang bisa diturunkan lebih jauh.sumber
perl, 270 karakter
3 langkah: 1) menemukan planet dan satelit di input, 2) menentukan kuadran untuk setiap satelit, 3) output
Kurang golf:
sumber