Organizujesz poszukiwanie skarbów dla swoich przyjaciół. Aby łatwiej prowadzić rzeczy, musisz narysować mapę wszystkich miejsc, w których ukryłeś cenne przedmioty.
Wejście
Dowolna forma wprowadzania oznaczająca listę punktów składających się z (nieujemnej) współrzędnej xi y, 0 0
będąca lewym górnym rogiem, jest dozwolona (uwaga: w odpowiedzi można również zastosować indeksowanie 1-owe, jeśli tak, należy to skomentować ). Przykład:
1 2
3 0
0 1
Wyzwanie
Twoja funkcja lub program powinien być w stanie zbudować mapę oznaczającą każdą podaną lokalizację, w x
której znak znajduje się w wierszu y + 1 i kolumnie x + 1 na wyjściu. Nieoznaczone lokalizacje są oznaczone symbolem . Mapa składa się również z ramki, w której narożniki to
+
s, linie pionowe to |
s, a linie poziome to -
s. Twoje rozwiązanie powinno generować możliwie najmniejszą ramkę. Mapa podanego powyżej przykładu wprowadzania:
+----+
| x|
|x |
| x |
+----+
Możliwe przypadki testowe
"0 0"
=>
+-+
|x|
+-+
"0 10
5 5
10 0"
=>
+-----------+
| x|
| |
| |
| |
| |
| x |
| |
| |
| |
| |
|x |
+-----------+
""
=>
++
++
"0 0
0 2
2 0"
=>
+---+
|x x|
| |
|x |
+---+
Oczywiście jest to kod-golf , co oznacza, że wygrywa rozwiązanie o najniższej liczbie bajtów! Zachęcamy do objaśnienia twojego rozwiązania.
the input is a list of locations (e.g. nested list, list of tuples, space & newline separated, separate inputs, ect.)
Odpowiedzi:
J ,
3734 bajtówWypróbuj online!
źródło
::empty
tak pełny? Co to robi Dlaczego nie można go uprościć do 1 bajtu? (Nie mam pojęcia o J)JavaScript (ES6), 150 bytes
Pobiera dane wejściowe jako listę współrzędnych 1-indeksowanych w
[x,y]
formacie. Zwraca ciąg.Wypróbuj online!
źródło
Haskell ,
127123 bytesDefiniuje to operator,
(!)
który pobiera listę współrzędnych x i listę odpowiednich współrzędnych y :Wypróbuj online!
Niegolfowane / Wyjaśnienie
Funkcja pomocnicza
m
oczekuje listy i zwraca indeksy (na podstawie 1) maksymalnie, jeśli lista jest pusta, zwraca[]
:Rzeczywisty operator
(!)
to tylko zrozumienie listy, przemierzanie wszystkich współrzędnych i wybór znakulub
x
, który łączy się z nowymi liniami:źródło
Canvas, 22 bytes
Try it here!
Takes 1-indexed inputs.
Finally decided to fix a bug that's been annoying me for ages and golfed this down to 21 bytes.
Explanation (half-ASCII-fied for monospace):
źródło
Python 2,
151140138 bytes-2 bytes thanks to Jo King.
Input is 1-indexed.
Try it online!
źródło
Charcoal, 37 bytes
Try it online! Link is to verbose version of code. 1-indexed. Explanation:
Special-case empty input by drawing a 2x2 rectangle of
+
s.Transpose the input, take the maximum of each column (now row) and add 2 to get the box size in Charcoal co-ordinates.
Draw the box.
Loop over each co-ordinate.
Jump to its position.
Mark with a cross.
źródło
Stax,
323124 bytesRun and debug it
Takes 0-based indices as array of
[y, x]
pairs.Explanation:
źródło
|S
surround instruction, and a trailing shorthand map. (m
) Surround takesa
andb
from the stack and producesb+a+b
. And you can usem
instead of the final|J
to iterate over the rows and produce output. For examplez]n+H%
withcM%
. This is the piece that gets the map width, but has a special case for empty maps. If you transpose the map before measuring it, the special case goes away.R,
133 125122 bytesTry it online!
1-indexed. Takes a matrix as argument. Saved 8 bytes thanks to digEmAll, 3 thanks to Giuseppe! Explanation (earlier version of code):
źródło
[<-
directly to remove the braces.coords taken of the format [y,x]
JavaScript (Node.js),
191184 bytesTry it online!
źródło
a.map(([y,x])
)JavaScript, 180 bytes
źródło
Java 10,
238223 bytes1-indexed coordinates.
Try it online.
Explanation:
źródło
get
/for
for? :S XDC (gcc),
246234 bytesThanks to ceilingcat for the suggestion.
Zero-indexed. The function takes a list of co-ordinates and buffer, finds the maximum x and y values, fills the buffer with spaces, generates the frame, and then plots the 'x's.
Try it online!
źródło
05AB1E,
4442 bytesTry it online!
X and Y may be reversed, didn't know if that mattered at all.
I think I have this in less bytes, but we'll see...Nope.źródło
F
toLv
, removeNV
and changeY
toy
. 41 bytesεZ}
can beۈ
.Ýv
notLv
, but still a good edit :).Ýv
instead ofLv
. My bad.C (gcc),
229220216 bytes-9 bytes thanks to ceilingcat.
Zero-indexed. Takes coordinates as list of numbers, where even numbers are X and odd numbers are Y.
Try it online!
źródło
for(n&&X++-Y++;i<=Y;i+=puts(""))
instead ofn&&X++-Y++;for(--i;i++<Y;puts(""))