Wprowadzenie
Istnieje plantacja zdefiniowana przez jedną wielką kwadratową planszę, taką jak ta:
Liczby wewnątrz każdego małego kwadratu oznaczają wartość jego obszaru / gotówkę / ...
Rolnik potrzebuje pomocy w znalezieniu połączonych N kwadratów (oznacza to, że wszystkie N kwadratów powinno mieć co najmniej jedną wspólną granicę) co ma największą wartość.
Na przykład:
Jeśli N=1
, to wyjście musi być140
.
Jeśli N=6
…
... wyjście musi być 315
.
Wyzwanie
Twój program / funkcja musi przyjmować wartości macierzy i liczbę N jako dane wejściowe / argumenty i musi generować silne połączenie .
Ponieważ jest to kod-golf , wygrywa najkrótsza odpowiedź w bajtach!
Przykłady
Wejście:
10 -7 11 7 3 31
33 31 2 5 121 15
22 -8 12 10 -19 43
12 -4 54 77 -7 -21
2 8 6 -70 109 1
140 3 -98 6 13 20
6
Wynik: 315
Wejście:
35 -7
-8 36
2
Wynik: 29
Odpowiedzi:
JavaScript (ES6), 190 bajtów
Wyjaśnienie
Bierze macierz jako tablicę tablic.
Rozpoczyna się od każdego kwadratu, a następnie używa funkcji rekurencyjnej do testowania każdej możliwej kombinacji. To podejście oparte na brutalnej sile, ale kończy się niemal natychmiast w pierwszym przypadku testowym na mojej maszynie.
Test
źródło