On vous donne la carte d'un cinéma comme une matrice booléenne: 0 représente un siège libre, 1 - occupé. Chaque Finlandais qui entre choisit le siège le plus éloigné ( distance euclidienne ) du siège occupé le plus proche ou, s’il en existe plusieurs, le premier par ordre de rangée . Produisez une matrice indiquant l'ordre dans lequel les sièges seront éventuellement occupés; c'est-à-dire remplacer les 0 par 2, 3, 4, etc.
// 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
Le format I / O est flexible dans les normes de golf établies par code pour votre langue. Vous pouvez supposer que l'entrée est correcte, qu'elle a une taille d'au moins 3x3 et qu'elle n'est pas entièrement composée de la même valeur booléenne. Ecrivez une fonction ou un programme complet. La solution la plus courte par langue est considérée comme la gagnante. aucune réponse ne sera acceptée. Les échappatoires standard sont interdites.
Réponses:
MATL , 37 octets
Essayez-le en ligne! Ou vérifiez tous les cas de test . Vous voudrez peut-être aussi voir le cinéma se remplir d' art ASCII.
Explication
la source
JavaScript (ES6),
156137 octetsEnregistrement de 18 octets grâce à @ l4m2
C'est beaucoup de
map()
...Essayez-le en ligne!
Commenté
la source
b=b<(d=X*X--+Y*Y)|!v?b:d
v|b<=B
v|
est inutile parce quev
alorsb=0
Haskell ,
216213185184 octetsPrend l'entrée sous forme de tableau. L'entrée et la sortie sont dans l'ordre inverse. Crédit pour magie de points fixes à Laikoni .
Essayez-le en ligne!
la source
until((==)=<<f)f
Python 2 ,
200187 octetsEssayez-le en ligne!
-13 octets thx à un conseil de Not that Charles en supprimant la vérification inutile pour les cellules étant 0.
la source
,v,u
à la fin du générateur à l’intérieurmax
, et vous n’aurez pas à le faire,if a[v][u]<1
car elles seront0
et ne seront donc pas maximales. Donc, ma ligne est fondamentalement*_,y,x=max((min(...),-v,-u,v,u)for v,u in P)
*,v,u
personnages ne soit pas une sauvegarde contre ce que--
vous avez. :)if a[v][u]<1
est redondant (puisque les cellules non nulles auront unmin()
de0
).J ,
747060 octetsEssayez-le en ligne!
la source
APL (Dyalog) , 39 octets
Merci Cocks quack pour la sauvegarde d'un octet, et ngn pour la sauvegarde d'un autre
Essayez-le en ligne!
la source
Gelée , 43 octets
Essayez-le en ligne!
la source
APL (Dyalog Unicode) , 44 octets
Essayez-le en ligne!
Solution alternative à 44 octets
la source
Wolfram Language (Mathematica) , 121 octets
Essayez-le en ligne!
la source
Clojure, 247 octets
L'entrée est une vec-of-vecs
M
, qui est modifiée dans unloop
parassoc-in
. Lorsqu'aucune place disponible n'est trouvée (if-let
), le résultat est renvoyé.la source
Jelly ,
35333029 octetsEssayez-le en ligne!
Remplacé le
×ı+
avecæị
(complexe combiner), une nouvelle dyade sur la basej.
de J, l' enregistrement d' un octet.Voici une version plus efficace pour TIO. Essayez-le en ligne!
Explication
la source
K (ngn / k) ,
8175737270 octetsEssayez-le en ligne!
la source