Biorąc pod uwagę dwie liczby całkowite jako dane wejściowe w tablicy, narysuj prostokąt, używając pierwszej liczby całkowitej jako szerokości, a drugiej wysokości.
Lub, jeśli twój język to obsługuje, dwie liczby całkowite można podać jako osobne dane wejściowe.
Załóż, że szerokość i wysokość nigdy nie będą mniejsze niż 3 i zawsze będą podawane.
Przykładowe dane wyjściowe:
[3, 3]
|-|
| |
|-|
[5, 8]
|---|
| |
| |
| |
| |
| |
| |
|---|
[10, 3]
|--------|
| |
|--------|
To jest golf golfowy, więc wygrywa odpowiedź z najmniejszą ilością bajtów.
Ị
:)Matlab,
696556 bajtówDzięki @WeeingIfFirst i @LuisMendo za niektóre bajty =)
Jest to naprawdę proste w Matlabie: Najpierw utwórz macierz o pożądanym rozmiarze, a następnie zindeksuj pierwszy i ostatni wiersz, aby wstawić
-
, i zrób to samo z pierwszą i ostatnią kolumną, aby wstawić|
.Na przykład
f(4,3)
zwracaźródło
z([1,b],1:a)=45;z(1:b,[1,a])=124;z=[z,'']
z(b,a)=' ';z([1,b],:)=45;z(:,[1,a])=124
z(b,a)=' '
jako char. Następnie możesz wypełnić liczby i są one automatycznie rzucane na char.z
zachowuje swój oryginalny typJavaScript (ES6), 63 bajty
źródło
Haskell,
6255 bajtówPrzykład użycia:
Funkcja pomocnika
f
pobiera listę dwóch elementów[a,b]
i liczbęn
i zwraca listę jednego,a
po którymn-2
b
następuje s, po którym następuje jedena
. Możemy użyćf
trzy razy: aby zbudować górną / dolną linięf "|-" i
:, środkową linię:f "| " i
i z tych dwóch cały prostokąt:f [<top>,<middle>] j
(uwaga:j
nie pojawia się jako parametr zg i
powodu częściowej aplikacji).Edycja: @dianne zapisał niektóre bajty, łącząc dwa
Char
argumenty w jedenString
o długości 2. Wielkie dzięki!źródło
#
pomysł!(a:b)#n=a:([3..n]>>b)++[a]
i pisząc["|-"#i,"| "#i]#j
Python 2,
6158 bajtów-3 bajty dzięki @flornquake (usuń niepotrzebne nawiasy; użyj
h
jako licznika)Przypadki testowe są w ideone
źródło
('- '[1<i<h])
nie potrzebuje nawiasów.exec"print'|'+'- '[1<h<%d]*(w-2)+'|';h-=1;"%h*h
h
jako licznika jest inteligentne! Dzięki.PHP, 74 bajty
źródło
!$i|$n==++$i
zamiast!$i|$n-1==$i++
$i++&&$n-$i?" ":"-"
$i++&&$n-$i?" ":"-"
->"- "[$i++&&$n-$i]
(-2)Vimscript,
9383757473666463 bajtyKod
Przykład
Wyjaśnienie
Zauważ, że nie używa,
norm!
więc może zakłócać niestandardowe mapowania vima!źródło
MATL , 19 bajtów
Wypróbuj online!
Wyjaśnienie
Podejście jest podobne do tego zastosowanego w tej drugiej odpowiedzi . Kod buduje tablicę liczbową formularza
a następnie jego wartości są używane jako (oparte na 1, modułowe) indeksy w ciągu,
'|-| '
aby uzyskać pożądany wynik.źródło
05AB1E ,
232220 bajtówDane wejściowe przyjmuje się jako wysokość, a następnie szerokość.
Wyjaśnienie
Wypróbuj online!
Zaoszczędzono 2 bajty dzięki Adnan
źródło
F„ -N_N¹<Q~è²Í×'|.ø,
.C, 73 bajty
źródło
Python 2, 56 bajtów
trzęsienie ziemi uratowało jeden bajt.
źródło
%c
konwersji:'-%*c'%(h-1,45)
%*c
to nawet nie było nic! Dziękuję Ci. :)'-%%%dc'%~-h%45
działa również dla tej samej długości.Common Lisp, 104 bajty
Gra w golfa:
Nie golfowany:
źródło
Turtlèd , 40 bajtów
Interpreter jest
nieconie na podsłuchuWyjaśnienie
źródło
Mathematica,
6764 bajtówDzięki lastresort i TuukkaX za przypomnienie mi, że golfiści powinni być podstępni i oszczędzać 3 bajty!
Prosta implementacja. Zwraca tablicę ciągów.
źródło
0<1
zamiastTrue
j==1
można to zredukować doj<1
ii==1
doi<1
.Python 3,
10495 bajtów(informacje zwrotne od @ mbomb007: -9 bajtów)
(mój pierwszy golfowy kod, doceniam opinie)
źródło
range(y)
zamiastrange(0,y)
, a jeślin
nigdy nie jest to negatywne, możesz użyćif n<1or n==~-y else
Partia, 128 bajtów
Przyjmuje szerokość i wysokość jako parametry wiersza polecenia.
źródło
Haxe,
112106 bajtówPrzypadki testowe
źródło
Java 135 bajtów
Gra w golfa:
źródło
o+=x "|\n"
? Czy chciałeś+
tam umieścić ?PowerShell v3 +, 55 bajtów
Pobiera dane wejściowe
$a
i$b
. Pętle od1
do$b
. W każdej iteracji tworzymy pojedynczy ciąg. Środek jest wybierany z tablicy dwóch ciągów o pojedynczej długości, a następnie pomnożony przez$a-2
, podczas gdy jest otoczony rurami. Wynikowe ciągi znaków są pozostawione w potoku, a dane wyjściowe za pośrednictwem niejawnego mająWrite-Output
miejsce po zakończeniu programu, z domyślnym separatorem nowego wiersza.Alternatywnie również w 55 bajtach
Ten powstał, ponieważ próbowałem zagrać w golfa w tablicy wyboru pośrodku, używając zamiast tego sznurka. Ponieważ jednak
[char]
czasy[int]
nie są określone, tracimy na oszczędnościach , ponieważ musimy rzucić jako sznurek z parens i''+
.Obie wersje wymagają od
-in
operatora wersji v3 lub nowszej .Przykłady
źródło
PHP, 82 bajty
indeksowanie ciągu statycznego, w tym nowego wiersza
źródło
Ruby,
595452 bajtówOch, to o wiele prostsze :)
Uruchom test w ideone
źródło
\n
.i
ij
. Zamieńi
definicję nax-=2
. Zamiast tego poj
prostu użyj(y-2)
.Perl, 48 bajtów
Obejmuje +1 dla
-n
Podaj rozmiary jako 2 linie na STDIN
Tylko kod:
źródło
Lua,
12093 bajtówZaoszczędziłem sporo bajtów, usuwając głupie z powodu złożoności.
Nie golfowany:
Wypróbuj na Repl.it
źródło
Python 2, 67 bajtów
Przykłady
źródło
MATL ,
2117 bajtówJest to nieco inne podejście niż w przypadku MATL-Boga .
Dzięki @LuisMendo za wszelką pomoc!
Wypróbuj online!
źródło
PHP 4.1, 76 bajtów
Zakłada się, że masz domyślne
php.ini
ustawienia dla tej wersji, w tymshort_open_tag
iregister_globals
włączone.Wymaga to dostępu przez serwer WWW (np .: Apache), przekazując wartości przez zmienne session / cookie / POST / GET.
Klucz
W
kontroluje szerokość, a kluczH
kontroluje wysokość.Na przykład:
http://localhost/file.php?W=3&H=5
źródło
Python 3, 74 znaki
źródło
Swift (2.2) 190 bajtów
Myślę, że Swift 3 mógłby grać w golfa o wiele bardziej, ale nie mam ochoty pobierać Swift 3.
źródło
F #, 131 bajtów
źródło