Twoim zadaniem jest, biorąc pod uwagę kwadratową siatkę cyfr ( 0-9), wygenerować jeden ze sposobów, w jaki cyfry można pogrupować, aby:
- Każda cyfra jest częścią dokładnie jednej grupy
- Wszystkie grupy mają tę samą liczbę cyfr
- Wszystkie grupy są ograniczone jednym kształtem wielokąta (oznacza to, że każda cyfra w grupie znajduje się obok [lewej, prawej, góry, dołu] co najmniej jednej innej cyfry tej samej grupy, chyba że każda grupa ma 1 element).
- Wszystkie grupy mają tę samą sumę
Siatka wejściowa zawsze będzie kwadratem: możesz wybrać dowolną metodę wprowadzania (w tym dostarczanie argumentów do funkcji lub metody). Ponadto dane wejściowe podadzą liczbę grup, w których program powinien pogrupować cyfry.
Przykładowe dane wejściowe:
Załóżmy, że masz format wejściowy stringOfDigits numberOfGroups.
Przykładowym wejściem byłoby:
156790809 3
co tłumaczyłoby (siatka sqrt(9) * sqrt(9))
1 5 6
7 9 0
8 0 9
które musielibyście podzielić na 3 grupy, z których każda powinna zawierać 9 / 3 = 3elementy o tej samej sumie.
Dane wyjściowe: dane wyjściowe powinny być ciągiem cyfr, z opcjonalnymi spacjami i znakami nowej linii do formatowania, a każda cyfra po niej musi zawierać literę a-zwskazującą jej grupę. W numberOfTotalDigits / numberOfGroupskażdej grupie powinny znajdować się dokładnie elementy. Nigdy nie będziesz musiał dzielić czegoś na więcej niż 26 grup.
Przykładowe dane wyjściowe:
1a 5a 6b
7c 9a 0b
8c 0c 9b
Należy zauważyć, że zastąpienie wszystkich as z bs i bs z as jest równie ważny. Tak długo, jak każda grupa jest oznaczona odrębną literą, dane wyjściowe są ważne.
Ponadto oczekuję, że większość programów wypisze coś w tym kierunku, ponieważ znaki nowej linii / spacje są opcjonalne:
1a5a6b7c9a0b8c0c9b
W takim przypadku dodanie wszystkich cyfr grupy a, blub csprawia , że 15. 15. Ponadto wszystkie grupy są powiązane jakimś wielokątem.
Nieprawidłowe dane wyjściowe:
1a 5a 6b
7c 9a 0c
8c 0b 9b
ponieważ grupy nie tworzą wielokątów (konkretnie 6bjest izolowane i 0csamotne).
1a 5a 6b
7c 9a 0b
8c 0b 9b
ponieważ grupa bma 4 elementy, a ctylko 2.
Itp.
Jeśli nie ma prawidłowego rozwiązania, twój program może zrobić cokolwiek (tj. Zatrzymać, zawiesić się, działać wiecznie), ale jeśli twój program drukuje, Nonegdy nie ma prawidłowego rozwiązania, -15twój wynik.
Jeśli istnieje więcej niż jedno rozwiązanie, musisz wydrukować tylko jedno, ale -20jeśli twój program wydrukuje je wszystkie oddzielone separatorem.
To jest golf golfowy, więc wygrywa najkrótszy kod (z bonusami)!
156790889 3wydaje się, że powinno być156790809 3
6bjest izolowany, a nie0b.