Otrzymałeś mapę kina jako matrycę logiczną: 0 oznacza wolne miejsce, 1 - zajęte. Każdy Fin, który wchodzi, wybiera miejsce najdalej oddalone ( odległość euklidesowa ) od najbliższego zajętego lub, jeśli jest ich kilka - pierwszy z nich w kolejności rzędów większych . Wyprowadza macierz pokazującą miejsca, w których zamówienia zostaną ostatecznie zajęte; to znaczy zamień cyfry 0 na 2, 3, 4 itd
// in
0 0 0 0 1
0 0 0 0 0
0 0 0 0 0
0 0 1 1 0
// out
2 8 3 9 1
10 5 11 6 12
4 13 14 15 7
16 17 1 1 18
// in
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
// out
5 43 17 44 45 46 18 47 8 48 49 6 50 19 51 2
52 24 53 54 1 55 56 25 57 26 58 59 27 60 28 61
20 62 63 29 64 65 1 66 30 67 68 21 69 9 70 71
72 73 1 74 31 75 76 77 78 1 79 80 32 81 82 11
12 83 84 1 85 86 87 13 88 89 90 14 91 92 33 93
94 34 95 96 97 15 98 99 35 100 36 101 102 1 103 22
104 105 37 106 38 107 39 108 109 16 110 40 111 112 41 113
4 114 115 7 116 23 117 3 118 119 42 120 1 121 122 10
// in
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
// out
2 38 39 26 40 6 41 42 12 43 44 7 45 46 27 47 3
48 49 15 50 28 51 52 29 53 30 54 55 56 16 57 31 58
32 59 60 33 61 62 17 63 64 65 18 66 67 68 34 69 35
70 10 71 72 13 73 74 75 1 76 77 78 11 79 80 14 81
82 83 36 84 85 86 21 87 88 89 22 90 91 37 92 93 94
19 95 96 97 23 98 99 100 24 101 102 103 25 104 105 106 20
107 108 4 109 110 111 8 112 113 114 9 115 116 117 5 118 119
Format I / O jest elastyczny w ramach ustalonych norm golfowych dla twojego języka. Możesz założyć, że dane wejściowe są prawidłowe, o rozmiarze co najmniej 3x3 i nie składają się całkowicie z tej samej wartości logicznej. Napisz funkcję lub pełny program. Najkrótsze rozwiązanie na język jest uważane za zwycięzcę; żadna odpowiedź nie zostanie zaakceptowana. Standardowe luki są zabronione.
Odpowiedzi:
MATL , 37 bajtów
Wypróbuj online! Lub sprawdź wszystkie przypadki testowe . Możesz także zobaczyć, jak kino wypełnia się sztuką ASCII.
Wyjaśnienie
źródło
JavaScript (ES6),
156137 bajtówZaoszczędzono 18 bajtów dzięki @ l4m2
To całkiem sporo
map()
...Wypróbuj online!
Skomentował
źródło
b=b<(d=X*X--+Y*Y)|!v?b:d
v|b<=B
v|
jest niepotrzebne, bo jeśliv
tob=0
Haskell ,
216213185184 bajtówPobiera dane wejściowe jako tablicę. Wejścia i wyjścia są w odwrotnej kolejności. Uznanie za magię stałego punktu dla Laikoni .
Wypróbuj online!
źródło
until((==)=<<f)f
Python 2 ,
200187 bajtówWypróbuj online!
-13 bajtów dzięki końcówce od Not that Charles poprzez usunięcie niepotrzebnego sprawdzania, czy komórki mają wartość 0.
źródło
,v,u
do końca generatora w środkumax
i nie musisz tego robić,if a[v][u]<1
ponieważ będą to,0
a zatem nie max. Więc moja linia jest w zasadzie*_,y,x=max((min(...),-v,-u,v,u)for v,u in P)
*,v,u
znaków NIE JEST oszczędnością w porównaniu z tym,--
co masz. :)if a[v][u]<1
jest zbędny (ponieważ komórki niezerowe będzie miałmin()
z0
).J ,
747060 bajtówWypróbuj online!
źródło
APL (Dyalog) , 39 bajtów
Dzięki Krowy szarlatan za uratowanie jednego bajtu i ngn za uratowanie innego
Wypróbuj online!
źródło
Galaretka , 43 bajty
Wypróbuj online!
źródło
APL (Dyalog Unicode) , 44 bajty
Wypróbuj online!
Alternatywne rozwiązanie o 44 bajtach
źródło
Wolfram Language (Mathematica) , 121 bajtów
Wypróbuj online!
źródło
Clojure, 247 bajtów
Dane wejściowe to vec-of-vecs
M
, który jest modyfikowanyloop
przez aassoc-in
. Gdy nie zostanie znalezione wolne miejsce (if-let
), wynik jest zwracany.źródło
Galaretka ,
35333029 bajtówWypróbuj online!
Otrzymuje
×ı+
się zæị
(kompleks połączyć), nowy diada podstawiej.
od J, oszczędzając bajty.Oto bardziej wydajna wersja dla TIO. Wypróbuj online!
Wyjaśnienie
źródło
K (ngn / k) ,
8175737270 bajtówWypróbuj online!
źródło