Napisz program, który wprowadza wymiary obrazu, szerokość maty i szerokość ramki dla portretu w ramce. Program powinien wypisać schemat za pomocą symbolu X
malowania, +
maty i #
kadrowania. Symbole muszą być oddzielone spacjami. Końcowe białe znaki są w porządku, o ile dane wyjściowe wizualnie spełniają kryteria. Dane wejściowe mogą być 0
.
WEJŚCIE: 3 2 1 2 (szerokość, wysokość, szerokość matowa, szerokość ramki)
WYDAJNOŚĆ:
W formie tekstowej:
# # # # # # # # #
# # # # # # # # #
# # + + + + + # #
# # + X X X + # #
# # + X X X + # #
# # + + + + + # #
# # # # # # # # #
# # # # # # # # #
Zwycięski kod spełnia warunki w możliwie najmniejszej liczbie bajtów.
Odpowiedzi:
Python 2 , 98 bajtów
Wypróbuj online!
Drukuje siatkę oddzieloną spacjami, ściśle według specyfikacji. Jestem rozbawiony, który
*=
służy do konwersjia
ib
od liczb do ciągów.Python 3 może zaoszczędzić niektóre bajty, unikając
' '.join
, a może więcej, używając ciągów F i wyrażeń przypisania. Dzięki Jo King za -2 bajty.Python 3 , 93 bajty
Wypróbuj online!
źródło
JavaScript (ES6),
118 113107 bajtówWypróbuj online!
Skomentował
źródło
MATL , 24 bajty
Dane wejściowe to: wysokość, szerokość, szerokość matowa, szerokość ramki.
Wypróbuj online!
Wyjaśnienie
źródło
Wolfram Language (Mathematica) , 142 bajty
Wypróbuj online!
źródło
Węgiel drzewny ,
484744 bajtówWypróbuj online! Link jest do pełnej wersji kodu. Uwaga: końcowe miejsce. Edycja: Teraz używa algorytmu @ xnor. Wyjaśnienie:
Wprowadź szerokość i wysokość i przekonwertuj je na ciągi znaków
X
s.Zapętlaj znaki
+
i#
konwertując je na ciągi długości podane przez pozostałe dwa dane wejściowe. Następnie zapętlić te dwa ciągi.Przedrostek i przyrostek obrazu za pomocą sznurków do matowania i kadrowania.
Pętlę nad łańcuchami, biorąc minimum znaków poziomych i pionowych, a następnie podwójnie rozmieszczając rzędy, domyślnie drukując każdy wiersz na osobnej linii.
źródło
05AB1E (starsze) / 05AB1E
--no-lazy
,3231 bajtówPobiera dane wejściowe w kolejności
height, width, matte, frame
. Jeśli kolejność wprowadzania określona w wyzwaniu jest ścisła (nadal czeka na OP na weryfikację), można dodać wiodącąs
(zamianę) dla bajtu +1.Wymagało
--no-lazy
kompilatora flagę Elixir w nowej wersji 05AB1E, ponieważ Elixir ma jakieś dziwne zachowanie ze względu na leniwe oceny dla zagnieżdżonych mapy / pętli ( tutaj wynik bez tej flagi ).Wypróbuj online w starszej wersji 05AB1E.
Wypróbuj online w nowej wersji 05AB1E z dodaną
--no-lazy
flagą.Wyjaśnienie:
źródło
Galaretka , 17 bajtów
Wypróbuj online!
Argument 1:
[Frame width, Matte width]
Argument 2:
[Width, Height]
źródło
Płótno , 24 bajty
Wypróbuj tutaj!
Powinien być o 5 bajtów krótszy, ale nie dlatego, że płótno jest wadliwe.
źródło
R 119 bajtów
Wypróbuj online!
źródło
Python 3.8 (wersja wstępna) ,
116115113 bajtówWypróbuj online!
Pierwsza próba gry w golfa zostanie wkrótce ulepszona.
a
oznacza szerokość,b
wysokość,c
matową szerokość id
szerokość ramki.-1 bajtów przy użyciu
:=
operatora do zdefiniowaniah
jakoe * d
-2 bajty dzięki Jo Kingowi sugerującemu usunięcie parametrów e i f
WYJAŚNIENIE:
źródło
e
zadania pozwala zaoszczędzić dwa bajty,f
zadanie nie oszczędza niczegoe
if
zadania po odkryciug
skrótuJavaScript, 158 bajtów
Prawdopodobnie można go nieco przyciąć
źródło
Perl 6 , 98 bajtów
Wypróbuj online!
To jest port odpowiedzi Xnora na Python .
Perl 6 , 115 bajtów
Wypróbuj online!
Z grubsza golfowy anonimowy blok kodu wykorzystujący wielowymiarowe przypisanie listy w Perl 6. Na przykład
@a[1;2] = 'X';
przypisze'X'
elementowi o indeksie 2 z listy o indeksie 1 i@a[1,2,3;3,4,5]='X'xx 9;
zastąpi wszystkie elementy indeksami3,4,5
list o indeksach1,2,3
o'X'
.Wyjaśnienie:
Po pierwsze, możemy zainicjować listę postaci
a+2*(c+d)
przezb+2*(c+d)
prostokąta#
s.Następnie przypisujemy wewnętrzny prostokąt
+
sWreszcie najbardziej wewnętrzny prostokąt
X
s.źródło
Galaretka ,
35312824 bajtówWypróbuj online!
Pobiera dane wejściowe w ramce zamówienia, matowy, szerokość, wysokość; oddzielone przecinkami. Wysyła obraz ASCII-art z ramką i matową. Jeśli kolejność wprowadzania jest ścisła, muszę dodać więcej bajtów (zgodnie z moim oryginalnym postem).
Kilka golfów w oparciu o odpowiedź @ EriktheOutgolfer; Zrozumiałem, że postacie są w porządku ASCII, ale nie zastanawiałem się, jak najlepiej to wykorzystać, i zapomniałem o tym
G
. Jego odpowiedź jest jednak lepsza!źródło
43134
będzie potrzebował 3 znaków kodujących, w tym znak wiodący / końcowy wskazujący, że jest zakodowany, będzie miał również 5 bajtów. A może Jelly ma jakiś duplikat, ponieważ druga liczba jest o 100 większa od pierwszej? Nie masz pewności, czy akcje push 43134, duplikaty, push 100, plus, para jest możliwa i krótsza w galaretce?Perl 5, 115 bajtów
TIO
źródło
PowerShell , 132 bajty
Wypróbuj online!
źródło