(Dựa trên bài toán Math.SE này , cũng cung cấp một số đồ họa)
Tôi có một cây gậy trông giống như thế này:
Tôi muốn nó trông giống như thế này:
Tuy nhiên, tôi không phải là một họa sĩ chuyên gia, vì vậy trước khi tôi bắt đầu một dự án DIY đầy tham vọng như vậy, tôi muốn chắc chắn rằng tôi không nằm trong đầu mình.
Chương trình của bạn sẽ cho tôi biết có bao nhiêu bước liên quan đến việc vẽ cây gậy này. Mỗi bước liên quan đến việc sơn một khu vực liên tục với một màu đặc, bao phủ các lớp sơn trước đó. Ví dụ ở trên, tôi có thể sơn nửa màu xanh bên trái, nửa bên phải màu đỏ và sau đó hai khu vực màu xanh lá cây riêng biệt cho tổng cộng 4 bước (màu xanh lá cây không được sơn liên tục).
Đây là ASCII:
------
bbb---
bbbrrr
bgbrrr
bgbrgr
Có một vài cách khác nhau để vẽ thanh này và kết quả tương tự. Tôi chỉ quan tâm đến ước tính thời gian, tuy nhiên, đó là bốn bước.
Mục tiêu
Chương trình của bạn sẽ xuất ra số bước tối thiểu cần thiết để vẽ một cây gậy với bảng màu nhất định. Sơ đồ sơn sẽ ở dạng một chuỗi các ký tự, trong khi đầu ra sẽ là một số. Đây là mã golf. Chương trình ngắn nhất sẽ thắng.
Đầu vào
Chương trình của bạn sẽ nhận được sơ đồ tô màu cho một cây gậy dưới dạng một chuỗi các chữ cái. Mỗi chữ cái duy nhất (trường hợp nhạy cảm) đại diện cho một màu sắc duy nhất.
YRYGR
grG
GyRyGyG
pbgbrgrp
hyghgy
Đầu ra
Những con số này là số bước ít nhất cần thiết để vẽ các que.
4
3
4
5
4
Giải thích
Đây là cách tôi đến với những con số trên. Chương trình của bạn không cần xuất kết quả này:
-----
YYY--
YRY--
YRYG-
YRYGR
---
g--
gr-
grG
-------
GGGGGGG
GyyyGGG
GyRyGGG
GyRyGyG
--------
pppppppp
pbbbpppp
pbbbrrrp
pbgbrrrp
pbgbrgrp
------
-yyyyy
-ygggy
hygggy
hyghgy
Chỉnh sửa: Tôi sẽ thêm nhiều trường hợp kiểm tra nếu chúng chứng minh là các trường hợp kiểm tra khó khăn hơn.