Napisz program lub funkcję, która przyjmuje trzy dodatnie liczby całkowite, W, H i N. Wydrukuj lub zwróć siatkę W × H, w .
której co N-ta .
w normalnej angielskiej kolejności czytania jest zastąpiona przez X
.
Na przykład, biorąc pod uwagę W = 7, H = 3, N = 3, siatka ma 7 znaków szerokości i 3 wysokości, a co trzeci znak odczytywany z lewego górnego rogu to X
:
..X..X.
.X..X..
X..X..X
Podobnie, jeśli dane wejściowe to W = 10, H = 4, N = 5, wynik będzie:
....X....X
....X....X
....X....X
....X....X
Notatki
- „Normalna kolejność czytania w języku angielskim” oznacza przejście od lewej do prawej w każdym wierszu, od górnego do dolnego.
- Gdy N wynosi 1, wówczas wszystkie
.
stają sięX
. - Możesz użyć dowolnych dwóch różnych drukowalnych znaków ASCII zamiast
.
iX
.- Jeśli użyjesz spacji (
- Możesz nie używać czegoś innego zamiast nowych linii, które kształtują siatkę.
- Jeśli użyjesz spacji (
- Dokładny format wejściowy i kolejność W, H i N nie jest bardzo ważny. Rzeczy takie jak
[H,W,N]
lubN\nW,H
są w porządku. - Końcowy znak nowej linii w wyjściu jest w porządku.
- Najkrótszy kod w bajtach wygrywa!
Przykłady
W = 5, H = 3, N = 1
XXXXX
XXXXX
XXXXX
W = 5, H = 3, N = 2
.X.X.
X.X.X
.X.X.
W = 5, H = 3, N = 3
..X..
X..X.
.X..X
W = 5, H = 3, N = 4
...X.
..X..
.X...
W = 5, H = 3, N = 5
....X
....X
....X
W = 5, H = 3, N = 6
.....
X....
.X...
W = 5, H = 3, N = 7
.....
.X...
...X.
W = 5, H = 3, N = 15
.....
.....
....X
W = 5, H = 3, N = 16 (or more)
.....
.....
.....
W = 1, H = 1, N = 1
X
W = 1, H = 1, N = 2 (or more)
.
W = 8, H = 6, N = 2
.X.X.X.X
.X.X.X.X
.X.X.X.X
.X.X.X.X
.X.X.X.X
.X.X.X.X
W = 8, H = 6, N = 3
..X..X..
X..X..X.
.X..X..X
..X..X..
X..X..X.
.X..X..X
W = 8, H = 6, N = 4
...X...X
...X...X
...X...X
...X...X
...X...X
...X...X
W = 8, H = 6, N = 7
......X.
.....X..
....X...
...X....
..X.....
.X......
W = 8, H = 6, N = 16
........
.......X
........
.......X
........
.......X
W = 37, H = 1, N = 4
...X...X...X...X...X...X...X...X...X.
W = 1, H = 10, N = 8
.
.
.
.
.
.
.
X
.
.
code-golf
arithmetic
grid
Hobby Calvina
źródło
źródło
["..X..X.", ".X..X..", "X..X..X"]
jako siatki ”?Odpowiedzi:
J,
95 bajtówWykorzystuje spacje i
1
oczekuje danych wejściowych w formularzuH W f N
Wyjaśnienie:
Stosowanie:
Wypróbuj online tutaj.
źródło
($":&1)
, czy nie liczy się to jako 7 bajtów?()
nie są częścią funkcji; można napisaćf =. $":&1
i potem3 7 f 3
.Python 2, 60 bajtów
To drukuje przestrzeń, a
0
zamiast.
iX
. Dane wejściowe są traktowane jako krotka w postaciw,h,n
.źródło
J, 12 bajtów
Jest to funkcja dynamiczna, która przyjmuje tablicę
H W
jako lewy argument iN
prawy argument. Stosowanie:Wyjaśnienie
źródło
X.
naprawdę najkrótsze?_1
nawiasami i sformatować spacje między kolumnami, a ostatecznie było dłuższe.BBC Basic, 67 znaków ASCII, tokenizowane rozmiary plików 43 bajty
Pobierz tłumacza na http://www.bbcbasic.co.uk/bbcwin/download.html
BBC basic posiada przydatne polecenie ograniczające szerokość pola. Używamy
STRING$
do tworzeniaw*h
kopii ciągówn-1
kropek, po których następuje X. Następnie używamy LEWEGO $, aby skrócić to dow*h
znaków.źródło
Minkolang 0,14 ,
34302822 bajtówSprawdź jeden przypadek tutaj i sprawdź wszystkie przypadki testowe tutaj. Oczekuje danych wejściowych takich jak
N W H
.Wyjaśnienie
Ponieważ codbox Minkolanga jest toroidalny, nastąpi to od samego początku. Jak wszyscy
n
się teraz zaakceptują-1
, to ostatecznie zawiesza się z błędem i bez dalszych wyników, co jest dozwolone.źródło
CJam (16 bajtów)
Pobiera dane wejściowe na stosie w kolejności
N W H
, zwraca ciąg znaków za pomocą znaków0
i1
. Demo onlineSekcja
źródło
APL, 13 bajtów
Jest to
H W
lewy argument iN
prawy argument.Wyjaśnienie:
Wypróbuj online: pierwsze przypadki testowe , ostatnie przypadki testowe . Zauważ, że chociaż pokazuje to wyjście w pudełku, moja kopia Dyaloga nie.
źródło
CJam, 20 bajtów
Pobiera dane jako HW N.
źródło
q~_@*,@(S*'X+f=/N*
z wejściem w celu NH W.'X
ją0
, a będzie 17MATLAB,
61 5554 bajtówWow, myślałem, że MATLAB będzie konkurencyjny w tym, ale jak bardzo się myliłem!
Funkcja tworzy tablicę jedności o właściwych wymiarach, a następnie ustawia co n-ty element na 0 (MATLAB domyślnie obsługuje zawijanie indeksów do 2D). Następnie dodajemy 45 („-”) do tej liczby i przekształcamy w tablicę znaków, która ma zostać zwrócona.
Pytania pozwalają na użycie dowolnych dwóch odrębnych znaków ASCII dla siatki, używam „-” zamiast „x”, aby zapisać niektóre bajty. Format wejściowy również nie jest stały, dlatego należy go podać jako
[w h],n
- tj. Tablicę szerokości i wysokości, a następnie n jako drugi parametr.Działa to również z Octave i można go wypróbować online tutaj . Funkcja jest już skonfigurowana w połączonym obszarze roboczym, więc możesz po prostu wywołać na przykład:
Które wyjścia:
źródło
c=[b'+45,''];
Przetwarzanie, 93 bajty (Java, 104 bajty)
Powodem, dla którego użyłem Przetwarzanie zamiast Javy jest to, że nie musisz uzyskiwać dostępu do wskaźnika przez przechylenie,
System.out
ponieważ zmienna lokalna jest bezpośrednio dostępna. Zarobiłem na tym 11 bajtów. Funkcja nie zwraca wyniku, ale go drukuje.źródło
i++%a...
), i wygląda na to, że zostawiłeś zapas}
na końcu, którego również nie potrzebujesz.Japt ,
33322725 bajtówPobiera dane wejściowe w formacie
oraz
W H N
. Zastosowania"
w miejsce.
iX
odpowiednio. Wypróbuj online!Bez golfa i wyjaśnienia
Sugestie mile widziane!
źródło
Vitsy ,
2523222119 bajtówDzięki @ Sp3000 za zwrócenie uwagi, że nie potrzebuję duplikatu i zapisanie mi 2 bajtów!
Pobiera dane wejściowe jako
N W H
. Wypróbuj online!źródło
K,
21191814 bajtówPrzyjmuje argumenty jako
(H W;N)
:W akcji:
źródło
Pyth -
191817 bajtówMam nadzieję, że golf bardziej. Pobiera dane wejściowe jako
N\n[W, H]
.Pakiet testowy .
źródło
R, 66 bajtów
Jest to funkcja, która akceptuje trzy liczby całkowite i zwraca macierz wartości znaków. Aby go wywołać, przypisz go do zmiennej.
Nie golfowany:
źródło
JavaScript (ES6),
6560 bajtówWyjaśnienie
Test
Pokaż fragment kodu
źródło
Mathematica, 85 bajtów
Podobnie jak w przypadku wielu innych rozwiązań, tworzy to jeden wiersz, a następnie dzieli go na partycje.
źródło
JavaScript (ES6), 55 bajtów
Używa pętli IIFE
f
do zapisania instrukcji return.Wyjście dla w = 5, h = 3, n = 7:
źródło
C #, 185 bajtów
Dla bardziej czytelnego czytania:
Stosowanie:
źródło
Julia, 50 bajtów
To tworzy funkcję
f
która akceptuje trzy liczby całkowite i zwraca dwuwymiarową tablicę ciągów.Nie golfowany:
źródło
Rubin,
6756 bajtówDrukowanie tablicy, ponieważ jest ona akceptowana.
67 bajtów
Nie golfowany:
Stosowanie:
źródło
MATLAB, 44 bajty
Uwaga: Zupełnie inne podejście niż to stosowane przez Toma Carpentera.
Definiuje anonimową funkcję, która przyjmuje dane wejściowe jako
[W,H],N
. Podszedłem do tego problemu, używając non-the-modulo-of- N dla tablicy 1: W * H, a następnie po prostu przekształcając rozwiązanie w tablicę dwuwymiarową, która jest następnie konwertowana na tablicę znaków.Przykładowe dane wyjściowe dla
[5,3],7
:źródło
Common Lisp, SBCL, 94 bajty
Wyjaśnienie
(=(mod(1+ i)c)0)(=(mod(1+ i)a)0)
wygląda dość głupio (ponieważ jest tak podobnie, ale nie wiem, czy można to rozwiązać, oszczędzając bajtyUżywam
(1+ i)
zamiast,i
ponieważdotimes
zaczyna się odi=0
i chcę zacząć od1
. Jest to również pomocne, ponieważ mogę użyć(* a b)
zamiast(1+(* a b))
źródło
Java,
185183 bajtówDzięki Thomas Kwa, za uratowanie mnie 2 bajty!
Ungolfed (ish):
Stosowanie:
Może pewnego dnia java wygra: P
źródło
>0
zamiast!=0
i<1
zamiast==0
.