Sie erhalten die Karte eines Kinos als boolesche Matrix: 0 steht für einen freien Platz, 1 - belegt. Jeder hereinkommende Finne wählt den Sitz, der am weitesten ( euklidische Entfernung ) vom nächsten besetzten Platz entfernt ist, oder, falls es mehrere solcher Plätze gibt, den ersten in der Reihe nach . Geben Sie eine Matrix aus, die zeigt, in welcher Reihenfolge die Plätze belegt sein werden. das heißt, ersetzen Sie die Nullen durch 2, 3, 4 usw
// 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
Das I / O-Format ist innerhalb der für Ihre Sprache geltenden Code-Golfnormen flexibel. Sie können davon ausgehen, dass die Eingabe korrekt ist, mindestens 3x3 groß ist und nicht vollständig aus demselben Booleschen Wert besteht. Schreiben Sie eine Funktion oder ein vollständiges Programm. Die kürzeste Lösung pro Sprache wird als Sieger gewertet. Es wird keine Antwort akzeptiert. Standardlücken sind verboten.
Antworten:
MATL , 37 Bytes
Probieren Sie es online! Oder überprüfen Sie alle Testfälle . Vielleicht möchten Sie auch sehen, wie das Kino mit ASCII-Kunst gefüllt wird .
Erläuterung
quelle
JavaScript (ES6),
156137 Bytes18 Bytes dank @ l4m2 eingespart
Das ist ziemlich viel
map()
...Probieren Sie es online!
Kommentiert
quelle
b=b<(d=X*X--+Y*Y)|!v?b:d
v|b<=B
v|
ist unnötig, denn wennv
dannb=0
Haskell ,
216213185184 BytesNimmt die Eingabe als Array. Eingang und Ausgang sind in umgekehrter Reihenfolge. Gutschrift für Fixpunktzauber nach Laikoni .
Probieren Sie es online!
quelle
until((==)=<<f)f
Python 2 ,
200187 BytesProbieren Sie es online!
-13 Bytes danke an einen Tipp von Not that Charles durch Entfernen der nicht benötigten Prüfung auf Zellen mit dem Wert 0.
quelle
,v,u
das Ende des Generators nach innen hinzufügemax
, und Sie müssen es nicht tun,if a[v][u]<1
da dies sein wird0
und daher nicht max. Also meine Linie ist im Grunde*_,y,x=max((min(...),-v,-u,v,u)for v,u in P)
*,v,u
Zeichen eine Ersparnis im Vergleich zu den Zeichen ist, die--
Sie haben. :)if a[v][u]<1
überflüssig ist (da von Null verschiedene Zellen einemin()
von haben0
).J ,
747060 BytesProbieren Sie es online!
quelle
APL (Dyalog) , 39 Bytes
Danke Cows quack für das Speichern eines Bytes und ngn für das Speichern eines anderen
Probieren Sie es online!
quelle
Jelly , 43 Bytes
Probieren Sie es online!
quelle
APL (Dyalog Unicode) , 44 Byte
Probieren Sie es online!
Alternative Lösung bei 44 Bytes
quelle
Wolfram Language (Mathematica) , 121 Byte
Probieren Sie es online!
quelle
Clojure, 247 Bytes
Input ist ein Vec-of-Vecs
M
, der in aloop
von geändert wirdassoc-in
. Wenn kein freier Platz gefunden wird (if-let
), wird das Ergebnis zurückgegeben.quelle
Jelly ,
35333029 BytesProbieren Sie es online!
Ersetzte die
×ı+
mitæị
(Komplexer Mähdrescher), eine neue Dyade, die aufj.
von J basiert und ein Byte spart.Hier ist eine effizientere Version für TIO. Probieren Sie es online!
Erläuterung
quelle
K (ngn / k) ,
8175737270 BytesProbieren Sie es online!
quelle