Tantangan Diambil dari kontes tantangan kode universitas saya
Ini sebenarnya adalah Hari 0 tetapi tantangan kemarin terlalu mudah dan dapat ditipu pertanyaan lain di sini.
Tetris adalah permainan video yang menjadi populer di tahun 80-an. Ini terdiri dari menempatkan serangkaian potongan dengan bentuk berbeda yang jatuh di atas papan, sehingga mereka pas dengan cara yang paling kompak.
Dalam masalah ini kita akan mengasumsikan urutan potongan yang jatuh, masing-masing dalam posisi tertentu dan dengan orientasi tertentu yang tidak dapat diubah. Potongan-potongan ditumpuk saat jatuh dan baris lengkap tidak dihilangkan (seperti dalam game asli). Tujuannya adalah untuk menentukan ketinggian akhir dari setiap kolom papan setelah semua bagian jatuh.
Ada total 7 buah yang berbeda, yang ditunjukkan pada gambar:
Tantangan
Diberikan daftar potongan, hasilkan ketinggian semua kolom dari papan setelah semua potongan jatuh
Sepotong terdiri dari tiga angka: I, R dan P. Angka pertama, I, adalah pengidentifikasi keping (angka antara 1 dan 7, dalam urutan yang sama seperti pada gambar). Angka kedua, R, adalah rotasi potongan. Ini dapat mengambil nilai 0, 90, 180 atau 270 dan mewakili sudut rotasi potongan dalam arah anti-jarum jam. Angka ketiga, P, menunjukkan posisi potongan. Merupakan kolom di sebelah kiri ditempati oleh potongan (ini bisa 1 atau 0 Indeks. Silakan tentukan).
Contoh dan Uji kasus (1 Indeks)
- Diberikan
[[1, 0, 1], [4, 0, 1], [5, 90, 4]]
- Keluaran
[3, 3, 1, 3, 2]
- Diberikan
[[6, 270, 4], [1, 180, 5], [1, 90, 6], [7, 0, 4]]
- Keluaran
[0, 0, 0, 9, 9, 8, 3, 3]
[[3,0,1],[3,180,3]]
Output yang diberikan[1,1,4,4,4]
[[2,180,1],[2,0,3]]
Output yang diberikan[2,2,4,3,3]
Catatan
- Ini adalah kode-golf
- Baris / Kolom dapat berupa Indeks 1 atau 0. Silakan tentukan.
- Anda dapat mendefinisikan kembali nilai input (mungkin Anda ingin memanggil bagian 1 sebagai A, dll.). Dalam hal ini harap tentukan
Pertanyaan
Bisakah kita menggunakan 4 nilai berbeda daripada sudut dalam derajat ?: Ya
Apakah kita seharusnya menangani "lubang" jika sepotong tidak benar-benar cocok dengan yang sebelumnya ?: Ya
Apakah tinggi atau lebar papan dibatasi? Tidak. Baik lebar maupun tinggi tidak dibatasi
Terima kasih @Arnauld untuk gambar dan test case *. *
I
,R
danP
menjadi input dalam urutan yang berbeda?