Uwaga: w tym poście terminy „znak” i „kolor” oznaczają w zasadzie to samo
Ten obraz:
może być reprezentowany jako
....'''333
.eeee'''3e
..dddd33ee
%%%dd####e
(mapowanie kolorów na znaki ascii)
Twierdzenie o czterech kolorach stwierdza, że „biorąc pod uwagę jakikolwiek podział płaszczyzny na sąsiadujące regiony, tworząc figurę zwaną mapą, do pokolorowania regionów mapy nie są wymagane więcej niż cztery kolory, tak że żadne dwa sąsiednie regiony nie będą miały tego samego koloru. regiony są nazywane przylegającymi, jeśli mają wspólną granicę, która nie jest rogiem, a narożniki to punkty wspólne dla trzech lub więcej regionów. ” - Wikipedia ( link )
Oznacza to, że powinna istnieć możliwość pokolorowania mapy za pomocą czterech kolorów, tak aby żadna z dwóch części o wspólnej krawędzi nie miała tego samego koloru.
Algorytm pokolorowania mapy przy użyciu tylko czterech kolorów jest skomplikowany, więc w tym wyzwaniu Twój program musi pokolorować mapę za pomocą pięciu lub mniej kolorów.
Poprzednia zmieniona mapa może wyglądać następująco:
który może być reprezentowany jako
....'''333
.eeee'''3e
..dddd33ee
333dd....e
lub równoważnie
@@@@$$$!!!
@^^^^$$$!^
@@<<<<!!^^
!!!<<@@@@^
Wyzwanie:
Biorąc pod uwagę „mapę” wykonaną ze znaków ascii (gdzie każdy znak reprezentuje inny kolor), „ponownie pokoloruj” mapę (reprezentuje mapę za pomocą różnych znaków ascii), tak aby używała tylko pięciu lub mniej kolorów.
Przykład:
Wejście:
%%%%%%%%%%%%##########$$$$$$$$%%
*****%%%####!!!!!!!%%%%%%%%%#^^^
(((((((***>>>>??????????%%%%%%%%
&&&&&&&&$$$$$$$^^^^^^^))@@@%%%%%
^^^^^^%%%%%%%%%%%%##############
Możliwe wyjście:
11111111111122222222223333333311
44444111222255555551111111112444
22222224441111444444444411111111
55555555222222255555553355511111
22222211111111111122222222222222
Wyjaśnienia:
- Mapa wejściowa zawsze będzie zawierała sześć lub więcej znaków
- W danych wyjściowych możesz użyć dowolnych pięciu różnych znaków
- W danych wyjściowych można użyć mniej niż różnych pięciu znaków
- Możesz wziąć dane wejściowe w dowolnym rozsądnym formacie (w tym tablicę tablic lub tablicę ciągów)
- To jest golf golfowy, więc wygrywa najkrótsza odpowiedź.
121
jako 3 oddzielne regiony, aby uniknąć tego problemu, chociaż przykład sugeruje inaczej, czy też powinniśmy traktować ją jako 2 i zakładać, że nie zostanie podana mapa, która wymaga więcej niż 5 kolorów?Odpowiedzi:
Python 2 ,
375361359357355353350347 bajtówWypróbuj online!
Pobiera dane wejściowe jako listę ciągów znaków i zwraca listę list
f
pobiera dane wejściowe z mapy ig
pokolorowuje je, zwraca wszystkie połączone postacie i zestaw sąsiadów, aby obszar mógł być pokolorowany innym kolorem.źródło
if~-(n!={c}or(i,j)in m):
za -2 bajty