(Basato su questo problema Math.SE , che fornisce anche alcuni elementi grafici)
Ho un bastone che sembra un po 'così:

Voglio che sembri un po 'così:

Non sono un pittore esperto, tuttavia, quindi prima di iniziare un progetto fai-da-te così ambizioso, voglio assicurarmi di non essere sopra la testa.
Il tuo programma dovrebbe dirmi quanti passaggi sono necessari per dipingere questo bastone. Ogni passaggio prevede la verniciatura di un'area continua con un colore a tinta unita, che copre i precedenti strati di vernice. Per l'esempio sopra, ho potuto dipingere la metà blu a sinistra, la metà rossa a destra e quindi le due aree verdi separate per un totale di 4 passaggi (il verde non è continuamente dipinto).

Eccolo in ASCII:
------
bbb---
bbbrrr
bgbrrr
bgbrgr
Ci sono un paio di modi diversi per dipingere questo bastone e finire con lo stesso risultato. Sono interessato solo alla stima del tempo, tuttavia, che è di quattro passaggi.
Obbiettivo
Il programma dovrebbe generare il numero minimo di passaggi necessari per dipingere un bastone con una determinata combinazione di colori. Lo schema di disegno avrà la forma di una stringa di caratteri, mentre l'output sarà un numero. Questo è il codice golf. Vince il programma più breve.
Ingresso
Il tuo programma riceverà lo schema di colorazione per un bastone sotto forma di una stringa di lettere. Ogni lettera univoca (maiuscole e minuscole) rappresenta un colore unico.
YRYGR
grG
GyRyGyG
pbgbrgrp
hyghgy
Produzione
Questi numeri sono il numero minimo di passaggi necessari per dipingere i bastoncini.
4
3
4
5
4
spiegazioni
Ecco come sono arrivato ai numeri sopra. Il tuo programma non ha bisogno di produrre questo:
-----
YYY--
YRY--
YRYG-
YRYGR
---
g--
gr-
grG
-------
GGGGGGG
GyyyGGG
GyRyGGG
GyRyGyG
--------
pppppppp
pbbbpppp
pbbbrrrp
pbgbrrrp
pbgbrgrp
------
-yyyyy
-ygggy
hygggy
hyghgy
Modifica: aggiungerò altri casi di test se si rivelano casi di test più difficili.