Anda harus menulis sebuah program atau fungsi yang memberikan daftar blok tetris sebagai input output atau mengembalikan celah terbesar antara dua titik di level ketinggian yang sama yang dapat dihubungkan oleh kepingan tersebut.
7 jenis potongan tetris adalah sebagai berikut:
Kami akan merujuk potongan-potongan ini dengan huruf I, J, L, O, S, T dan Z masing-masing, mengacu pada bentuknya. Anda dapat memutar potongan tetapi tidak dapat mencerminkannya seperti dalam game Tetris.
Tugas kita adalah menciptakan area yang terhubung secara orthogonal (sisi yang terhubung ke sisi) dari potongan yang diberikan. Area ini harus menghubungkan (juga secara orthogonal) dua unit kuadrat yang tingginya sama. Kita harus menemukan celah terbesar yang mungkin ada di antara dua kotak yang bisa kita jembatani.
Contoh terperinci
Dengan potongan L kita dapat menghubungkan celah 3
L
XLLLX
Dengan potongan S kita dapat menghubungkan celah 2
SS
XSSX
Dengan potongan S, S, O kita dapat menghubungkan celah 7 (Perhatikan bahwa kita tidak dapat menghubungkan celah 8)
S
XSSOO SSX
SOOSS
Memasukkan
- String yang mewakili potongan-potongan yang tersedia hanya berisi huruf besar I, J, L, O, S, T dan Z. Setiap huruf mewakili potongan tetris lengkap.
- Huruf-hurufnya akan berurutan sesuai abjad.
- String akan memiliki setidaknya satu karakter.
Keluaran
- Integer positif tunggal, celah terbesar yang dapat dihubungkan dengan bagian yang diberikan.
Contohnya
Input => Output
OSS => 7
LS => 5
LZ => 6
ZZZZ => 10
LLSSS => 14
IIJSSSTTZ => 28
IISSSSSS => 24
OOOSSSSSSSSSSSSTT => 45
IJLOSTZ => 21
IJLOSTZZZZZZZ => 37
IIJLLLOSTT => 31
IJJJOOSSSTTZ => 35
Ini adalah kode-golf sehingga entri terpendek menang.
Jawaban:
CJam, 53
Cobalah online
Idenya adalah: menetapkan masing-masing variabel I, J, ..., Z menjadi jumlah kemunculan huruf itu, dan menghitung
string length * 3 + I - O
. Kemudian hitung jumlah S atau Z yang tidak dikompensasi: S dapat dikompensasi oleh Z, J atau O, dan Z dapat dikompensasi oleh S, L atau O, dan kurangiceil(that number/3)
, karena kita kehilangan 1 unit untuk setiap 3 S atau Z's.sumber