(Basado en este problema de Math.SE , que también proporciona algunos gráficos)
Tengo un palo que se parece a esto:
Quiero que se vea así:
Sin embargo, no soy una pintora experta, así que antes de comenzar un proyecto de bricolaje tan ambicioso, quiero asegurarme de que no me sobrepase.
Su programa debería decirme cuántos pasos implican pintar este palo. Cada paso implica pintar un área continua con un color sólido, que cubre capas anteriores de pintura. Para el ejemplo anterior, podría pintar la mitad izquierda azul, la mitad derecha roja y luego las dos áreas verdes separadas para un total de 4 pasos (el verde no se pinta continuamente).
Aquí está en ASCII:
------
bbb---
bbbrrr
bgbrrr
bgbrgr
Hay un par de formas diferentes de pintar este palo y terminar con el mismo resultado. Sin embargo, solo me interesa el tiempo estimado, que son cuatro pasos.
Objetivo
Su programa debe generar el número mínimo de pasos necesarios para pintar un palo con un esquema de color dado. El esquema de pintura tendrá la forma de una cadena de caracteres, mientras que la salida será un número. Este es el código de golf. El programa más corto gana.
Entrada
Su programa recibirá el esquema de color para un palo en forma de una cadena de letras. Cada letra única (mayúsculas y minúsculas) representa un color único.
YRYGR
grG
GyRyGyG
pbgbrgrp
hyghgy
Salida
Estos números son el menor número de pasos necesarios para pintar los palos.
4
3
4
5
4
Explicaciones
Así es como llegué a los números anteriores. Su programa no necesita generar esto:
-----
YYY--
YRY--
YRYG-
YRYGR
---
g--
gr-
grG
-------
GGGGGGG
GyyyGGG
GyRyGGG
GyRyGyG
--------
pppppppp
pbbbpppp
pbbbrrrp
pbgbrrrp
pbgbrgrp
------
-yyyyy
-ygggy
hygggy
hyghgy
Editar: agregaré más casos de prueba si resultan ser casos de prueba más difíciles.