Setiap segi enam biasa dapat diberi ubin berlian, misalnya seperti itu (dicuri dari pertanyaan ini ):
______
/_/_/\_\
/_/\_\/\_\
/\_\/_/\/_/\
\/_/\_\/_/\/
\_\/_/\_\/
\_\_\/_/
Kami akan mempertimbangkan ubin di atas ukuran 1 (karena sisi berlian terbuat dari satu / atau \ masing-masing). Ubin ukuran 2 yang sama akan terlihat seperti:
____________
/ / /\ \
/___/___/ \___\
/ /\ \ /\ \
/___/ \___\/ \___\
/\ \ / /\ / /\
/ \___\/___/ \/___/ \
\ / /\ \ / /\ /
\/___/ \___\/___/ \/
\ \ / /\ \ /
\___\/___/ \___\/
\ \ \ / /
\___\___\/___/
Tugas Anda adalah memutar berlian miring dengan kelipatan 60 derajat. Ubin intan dalam input dapat dalam ukuran apa saja (dan ukurannya tidak ditentukan secara eksplisit dalam input). Tapi itu akan selalu menjadi ubin yang valid, dan semua sisi segi enam akan memiliki panjang yang sama.
Ini adalah contoh di atas yang diputar 60 derajat searah jarum jam:
______
/_/\_\_\
/\_\/_/\_\
/\/_/\_\/_/\
\/\_\/_/_/\/
\/_/\_\_\/
\_\/_/_/
____________
/ /\ \ \
/___/ \___\___\
/\ \ / /\ \
/ \___\/___/ \___\
/\ / /\ \ / /\
/ \/___/ \___\/___/ \
\ /\ \ / / /\ /
\/ \___\/___/___/ \/
\ / /\ \ \ /
\/___/ \___\___\/
\ \ / / /
\___\/___/___/
Inputnya adalah bilangan bulat non-negatif dan ubin berlian. Program Anda (atau fungsi) harus memutarnya dengan bilangan bulat * 60 derajat. Anda memutuskan apakah akan memutar searah jarum jam atau berlawanan arah jarum jam, selama itu konsisten. Baik input maupun output seharusnya tidak memiliki spasi tambahan tambahan atau spasi tambahan.
Ini adalah kode-golf. Kode terpendek menang.
Pertanyaan-pertanyaan Terkait:
sumber
Jawaban:
Pyth, 81 byte
Cobalah online
Putar berlawanan arah jarum jam.
Setiap rotasi 60 ° dilakukan menggunakan algoritma berikut. Misalkan input adalah segi enam dari urutan k , sehingga memiliki 2⋅ k + 1 baris dan 4⋅ k kolom. Untuk menemukan karakter yang diputar pada baris i kolom j , biarkan
Maka karakter keluarannya adalah
\
, jika inputnya ada/
di baris ( u + 1) / 2 kolom ( v + 1) / 2; lain/
, jika input ada_
di baris u / 2 kolom v / 2 atau baris u / 2 kolom ( v + 2) / 2; lain_
, jika input ada\
di baris ( u + 2) / 2 kolom v / 2 atau baris ( u + 1) / 2 kolom ( v - 1) / 2; lain(Kami tidak menghitung karakter pada indeks setengah bilangan bulat.)
sumber
\
, hanya saja_
Anda harus memeriksa di kedua tempat.\
s, tetapi Anda mungkin harus menggambar dua_
s untuk masing-masing\
.JavaScript (ES6),
452356315 byteDimana
\n
mewakili karakter baris baru literal. Sunting: Disimpan 96 byte dengan menyadari bahwa algoritma saya tidak perlu mengetahui jumlah dan ukuran berlian secara terpisah, ditambah beberapa golf kecil yang saya lewatkan pertama kali. Disimpan 41 byte dengan mengatur ulang kode sehingga tujuan selalu pasangan karakter yang sama, ditambah golf kecil yang saya lewatkan ketika mengkonversi ke algoritma saya sebelumnya.Tampilkan cuplikan kode
Penjelasan: Mempertimbangkan setiap pasangan karakter output, yang bisa
__
,/_
,_\
,/
atau\
, memeriksa karakter yang sesuai pada input yang memetakan ke karakter-karakter output. Tidak Disatukan:sumber