(Berdasarkan masalah Math.SE ini , yang juga menyediakan beberapa grafik)
Saya memiliki tongkat yang terlihat seperti ini:
Saya ingin terlihat seperti ini:
Saya bukan pelukis ahli, jadi sebelum saya memulai proyek DIY yang ambisius, saya ingin memastikan bahwa saya tidak berada di atas kepala saya.
Program Anda harus memberi tahu saya berapa banyak langkah yang terlibat dalam mengecat tongkat ini. Setiap langkah melibatkan lukisan area yang kontinyu dengan warna solid, yang menutupi lapisan cat sebelumnya. Untuk contoh di atas, saya bisa melukis setengah kiri biru, setengah kanan merah, dan kemudian dua area hijau yang terpisah untuk total 4 langkah (hijau tidak terus-menerus dicat).
Ini dia di ASCII:
------
bbb---
bbbrrr
bgbrrr
bgbrgr
Ada beberapa cara berbeda untuk mengecat tongkat ini dan berakhir dengan hasil yang sama. Namun, saya hanya tertarik pada perkiraan waktu, yaitu empat langkah.
Tujuan
Program Anda harus menampilkan jumlah langkah minimum yang diperlukan untuk mengecat stik dengan skema warna tertentu. Skema cat akan berupa string karakter, sedangkan outputnya berupa angka. Ini golf kode. Kemenangan program terpendek.
Memasukkan
Program Anda akan menerima skema pewarnaan untuk tongkat dalam bentuk untaian huruf. Setiap huruf unik (peka huruf besar kecil) mewakili warna unik.
YRYGR
grG
GyRyGyG
pbgbrgrp
hyghgy
Keluaran
Angka-angka ini adalah jumlah langkah terkecil yang diperlukan untuk mengecat tongkat.
4
3
4
5
4
Penjelasan
Beginilah cara saya mencapai angka-angka di atas. Program Anda tidak perlu menampilkan ini:
-----
YYY--
YRY--
YRYG-
YRYGR
---
g--
gr-
grG
-------
GGGGGGG
GyyyGGG
GyRyGGG
GyRyGyG
--------
pppppppp
pbbbpppp
pbbbrrrp
pbgbrrrp
pbgbrgrp
------
-yyyyy
-ygggy
hygggy
hyghgy
Sunting: Saya akan menambahkan lebih banyak kasus uji jika terbukti lebih sulit.