Vous organisez une chasse au trésor pour vos amis. Pour mener les choses plus facilement, vous voulez dessiner une carte de tous les endroits où vous avez caché les objets précieux.
Contribution
Toute forme d'entrée indiquant une liste de points composée de coordonnées x et y (non négatives), 0 0
étant le coin supérieur gauche est autorisée (Remarque: vous pouvez également utiliser l'indexation basée sur 1 dans votre réponse, veuillez commenter si vous le faites ). Exemple:
1 2
3 0
0 1
Défi
Votre fonction ou programme devrait être en mesure de construire une carte indiquant chaque emplacement donné avec un x
où la marque se trouve dans la ligne y + 1 et la colonne x + 1 dans la sortie. Les emplacements non marqués sont représentés par un . La carte se compose également d'un cadre où les coins sont
+
s, les lignes verticales sont |
s et les lignes horizontales sont -
s. Votre solution doit produire le plus petit cadre possible. Carte pour l'exemple d'entrée donné ci-dessus:
+----+
| x|
|x |
| x |
+----+
Cas de test possibles
"0 0"
=>
+-+
|x|
+-+
"0 10
5 5
10 0"
=>
+-----------+
| x|
| |
| |
| |
| |
| x |
| |
| |
| |
| |
|x |
+-----------+
""
=>
++
++
"0 0
0 2
2 0"
=>
+---+
|x x|
| |
|x |
+---+
Bien sûr, c'est le code-golf , ce qui signifie que la solution avec le nombre d'octets le plus bas gagne! Des explications sur votre solution sont encouragées.
the input is a list of locations (e.g. nested list, list of tuples, space & newline separated, separate inputs, ect.)
Réponses:
J ,
3734 octetsEssayez-le en ligne!
la source
::empty
si verbeux? Qu'est-ce que ça fait? Pourquoi ne peut-il pas être simplifié à environ 1 octet? (Je n'ai aucune connaissance de J)JavaScript (ES6), 150 octets
Prend l'entrée sous la forme d'une liste de coordonnées indexées au
[x,y]
format 1. Renvoie une chaîne.Essayez-le en ligne!
la source
Haskell ,
127123 octetsCeci définit l'opérateur
(!)
qui prend une liste de coordonnées x et une liste de coordonnées y correspondantes :Essayez-le en ligne!
Non golfé / Explication
La fonction d'assistance
m
attend une liste et retourne les indices (basés sur 1) jusqu'au maximum, si la liste est vide, elle retourne[]
:L'opérateur réel
(!)
n'est qu'une compréhension de liste, parcourant toutes les coordonnées et choisissant un caractèreou
x
, qui est joint à des sauts de ligne:la source
Toile , 22 octets
Essayez-le ici!
Prend des entrées indexées 1.
J'ai finalement décidé de corriger un bogue qui m'ennuyait depuis des lustres et j'ai réglé ce problème à 21 octets .
Explication (semi-ASCII pour monospace):
la source
Python 2 ,
151140138 octets-2 octets grâce à Jo King.
L'entrée est indexée sur 1.
Essayez-le en ligne!
la source
Fusain , 37 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. 1 indexé. Explication:
Entrée vide dans un cas spécial en dessinant un rectangle 2x2 de
+
s.Transposez l'entrée, prenez le maximum de chaque colonne (maintenant la ligne) et ajoutez 2 pour obtenir la taille de la boîte en coordonnées charbon.
Dessinez la boîte.
Faites une boucle sur chaque coordonnée.
Sautez à sa position.
Marquez avec une croix.
la source
Stax ,
323124 octetsExécuter et déboguer
Prend des indices basés sur 0 comme tableau de
[y, x]
paires.Explication:
la source
|S
instructions surround et à une carte sténographique de fin. (m
) Surround prenda
etb
de la pile et produitb+a+b
. Et vous pouvez utiliser à lam
place de la finale|J
pour parcourir les lignes et produire une sortie. Par exemplez]n+H%
parcM%
. C'est la pièce qui obtient la largeur de la carte, mais a un cas particulier pour les cartes vides. Si vous transposez la carte avant de la mesurer, le cas particulier disparaît.R ,
133 125122 octetsEssayez-le en ligne!
1 indexé. Prend une matrice comme argument. 8 octets enregistrés grâce à digEmAll, 3 grâce à Giuseppe! Explication (version antérieure du code):
la source
[<-
directement pour supprimer les accolades.coordonnées prises au format [y, x]
JavaScript (Node.js) ,
191184 octetsEssayez-le en ligne!
la source
a.map(([y,x])
)JavaScript, 180 octets
la source
Java 10,
238223 octetsCoordonnées indexées 1.
Essayez-le en ligne.
Explication:
la source
get
/for
? : S XDC (gcc) ,
246234 octetsMerci à plafondcat pour la suggestion.
Zéro indexé. La fonction prend une liste de coordonnées et de tampon, trouve les valeurs maximales x et y, remplit le tampon d'espaces, génère le cadre, puis trace les «x».
Essayez-le en ligne!
la source
05AB1E ,
4442 octetsEssayez-le en ligne!
X et Y peuvent être inversés, je ne savais pas si cela importait du tout.
Je pense que je l'ai en moins d'octets, mais nous verrons ...Non.la source
F
enLv
, supprimezNV
et changezY
eny
. 41 octetsεZ}
peut être€à
.Ýv
nonLv
, mais toujours un bon montage :).Ýv
au lieu deLv
. Ma faute.C (gcc) ,
229220216 octets-9 octets grâce au plafond .
Zéro indexé. Prend les coordonnées comme liste de nombres, où les nombres pairs sont X et les nombres impairs sont Y.
Essayez-le en ligne!
la source
for(n&&X++-Y++;i<=Y;i+=puts(""))
place den&&X++-Y++;for(--i;i++<Y;puts(""))