Oto plansza końcowa Settlers of Catan:
Tło:
Drogi (długie kije) i osady (i miasta) są renderowane przez małe chaty. Umieszczamy te elementy za pomocą następującego schematu: od góry mamy rząd poziomych wierzchołków i krawędzi, w których można umieścić drogę. Mamy kolumnę samych dróg i tak dalej. Używając R dla koloru czerwonego, O dla koloru pomarańczowego i B dla koloru niebieskiego i _ dla niczego, obrazowana tablica byłaby kodowana jako:
________RR_R_
__R_
__RR_R_RRR_____R_
B___R
_B_________B__OO_OOR_
B__B_R
BB_BBB_____B____RR_R_
OBB_O
OO__BB_BB__OOO_OO
O_O_
_O_OOO_O_____
Tablica taka będzie twoim ciągiem wejściowym. Każda litera [A-Z]
może oznaczać kolor gracza, ale będą maksymalnie cztery kolory (w tym puste). W przeciwnym razie gwarantuje się, że tablice będą ważne zgodnie z zasadami Osadników, co oznacza:
- Każdy kolor będzie miał co najwyżej dwie ciągłe sieci dróg, które mogą, ale nie muszą być rozdzielone przez osady / miasta innych graczy (budynki wierzchołków). Zobacz pomarańczową osadę rozbijającą czerwoną drogę po prawej stronie przykładowego obrazu.
- Każda sieć dróg ma zagwarantowane co najmniej jedno osiedle.
- Wszystkie osady i miasta mają gwarancję, że znajdują się co najmniej dwie krawędzie od najbliższej innej osady / miasta (twojej lub innej)
- Jeden gracz może mieć tylko 15 dróg na planszy.
- Dla entuzjastów Catana: nie ma różnicy między osadami a miastami w celu rozwiązania tego problemu, więc nie rozróżniam ciągu wejściowego.
Wszystko to służy do specyfikacji ciągu „wejściowego”.
Najdłuższa droga:
W Osadnikach gracze otrzymują dwa punkty zwycięstwa za posiadanie „najdłuższej drogi”. Jest to zdefiniowane jako: Najdłuższa ciągła pojedyncza ścieżka (mierzona na drogach) od punktu początkowego do punktu końcowego, która nie jest dzielona przez osadę lub miasto przeciwnika . Cykle są w porządku, o ile można prześledzić ścieżkę od jednego określonego punktu początkowego do jednego określonego punktu końcowego. Tak więc pętla 6 dróg plus jedna rozgałęzienie drogi ma długość 7, ale jedna z dwoma rozgałęzieniami z pętli 6 po przeciwnych stronach jest nadal warta tylko 7.
Na przykładowej mapie Czerwona droga po prawej stronie jest warta tylko 4, ponieważ jest odcięta pomarańczową osadą po prawej stronie planszy (dlatego w ogóle uwzględniono osadę). Niebieski ma drogę o długości 13, a Pomarańczowy ma drogę o długości 12. Górna droga Czerwonego jest warta tylko 7, ponieważ nie łączy się z dwoma pojedynczymi drogami obok niego.
Wynik:
Wszyscy gracze, którzy mają najdłuższą drogę (może być więcej niż jedna, jeśli są remisy), po których następuje biała spacja i / lub znak podkreślenia liczą w podstawie 10 długości tej drogi.
Wyjście dla przykładowej płyty to:
B 13
Opis problemu:
Możesz napisać program lub funkcję , otrzymać tablicę wejściową przez STDIN lub jako argument ciągu do swojej funkcji, która zwraca wynik opisany powyżej jako ciąg lub wypisuje go do STDOUT (lub najbliższej alternatywy). Opcjonalnie możesz dołączyć jeden końcowy znak nowej linii do wyniku.
To jest golf golfowy , wygrywa najkrótszy program. Oczywiście standardowe luki są zabronione .
From the top, we have a row horizontal vertices and edges where a road can be placed. Then we have a column of only roads, and so forth.
Dopiero po kilku minutach zrozumiałem, co to znaczy. Należy wyjaśnić jaśniej, że rzędy poziome obejmują również osady i lokalizacje osad.