var QUESTION_ID=84050,OVERRIDE_USER=31343;function answersUrl(e){return"http://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"http://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table> </div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>
Odpowiedzi:
Befunge , 165
227bajtówNie tak wiele białych znaków jak wcześniej, ale wciąż są luki. Zasada jest taka sama jak w poprzednim rozwiązaniu, ale układ jest inny. Tym razem, aby sprawdzić, czy obie liczby są równe 1, po prostu biorę ich produkt i sprawdzam, czy wynik jest większy niż 1.
Stare rozwiązanie (227 bajtów)
Być może uda się bardziej zagrać w golfa. Spójrz tylko na wszystkie te białe znaki!
Oto moja kiepska próba wyjaśnienia w formie obrazu MSPaint: Kod płynie w kierunku strzałki.
źródło
V ,
43, 40, 3836 bajtówJedna z najdłuższych odpowiedzi V, jakie kiedykolwiek napisałem ...
Wypróbuj online!
Ponieważ zawiera znaki Unicode i niedrukowalne, oto odwracalny zrzut heksowy:
To wyzwanie polega na manipulowaniu tekstem, tak idealnym dla V! Z drugiej strony, V jest okropny w przypadku warunkowej i matematycznej, więc różna moc wyjściowa dla (1, 1) naprawdę spieprzyła go ... :(
Wyjaśnienie:
Teraz mamy linie „wysokości” znaków z odstępami między nimi.
Wersja niekonkurencyjna (31 bajtów):
Wypróbuj online!
Ta wersja wykorzystuje kilka funkcji, które są nowsze niż to wyzwanie, aby być o 5 bajtów krótszym!
Drugie wyjaśnienie:
który jest „Usuń linię i wklej go n razy” zostaje zastąpiony przez
ÀÄ
„Powtórz tę linię n razy”. (-2 bajty)który brzmiał „Zamień pierwsze dopasowanie tego wyrażenia regularnego; Cofnij” został zastąpiony przez
Który jest po prostu „Wyszukaj dopasowanie tego wyrażenia regularnego” (-1 bajt)
I na koniec,
Ò
jest tylko prostym synonimemVr
, który zarówno „Zamień każdy znak w tej linii na„ x ””. (-2 bajty)źródło
3216-bitowy kod maszynowy little-endian x86,575451 bajtów3 bajty mniej dzięki @ninjalj.
Mocno przepisałem kod i udało mi się zgolić kolejne 3 bajty
W hex
Dane wejściowe: BX = szerokość, SI = wysokość, DI wskazuje bufor, który otrzymuje wynik jako ciąg zakończony znakiem NULL z liniami oddzielonymi przez „\ n”
Demontaż:
źródło
Python 2,
757372 bajtyZwraca ciąg z warunkiem do obsługi bloku 1,1.
Dzięki Lynn i Chepner za dwa bajty
źródło
lambda x,y:('_'*x*2+'___\n'+
itp. zapisuje bajt.x*'__'
zamiast2*x*'_'
.<function <lambda> at 0x......>
. Jak mogę to przetestować?f=lambda x:x+1; print(f(9))
CJam, 34
Wypróbuj online
Wyjaśnienie:
źródło
Rubin,
5956 bajtówFunkcja anonimowa zwraca ciąg wielowierszowy. Wypróbuj online!
-3 bajty dzięki pożyczeniu sztuczki od @ El'endiaStarman
źródło
Java,
318312297294260258 bajtówZaoszczędzono 15 bajtów dzięki Cliffroot !
Działa z argumentami wiersza poleceń.
UngolfedW formie czytelnej dla człowieka:Tak, nadal trudno jest zrozumieć, co się dzieje, nawet jeśli program nie jest golfisty. Oto wyjaśnienie krok po kroku:
Pierwsze dwa argumenty wiersza poleceń - których użyjemy do uzyskania wymiarów - mogą być użyte w programie jako odpowiednio (
A[0]
iA[1]
).b
to liczba kolumn,B
liczba wierszy iC
zmienna przeznaczona do użycia wfor
pętlach.c
jest klockiem Lego. Dodamy do niego wiersze, a następnie wydrukujemy na końcu.Jeśli kawałek do wydrukowania ma wartość 1x1, to zarówno
b
(liczba kolumn), jak iB
(liczba wierszy) powinna być mniejsza niż 2. Więc po prostu ustawiamyc
na jeden,o
a następnie przejdźmy do stwierdzenia, żeSystem.out.print
jest to kawałek, jeśli tak jest.Tutaj dołączamy
(integerValueOfA[0] * 2) + 3
podkreślenia doc
. To najwyższy rząd ponad wszystkimi dziurami.Jest to pętla, w której konstruujemy element po jednym rzędzie. To, co dzieje się w środku, nie da się wyjaśnić bez przykładów. Powiedzmy, że ten kawałek to 4x4:
.
Tutaj dołączamy
(integerValueOfA[0] * 2) + 3
łączniki do utworu. To rząd na samym dole, pod wszystkimi otworami.Kawałek 4x4, którego użyłem do wyjaśnienia
for
pętli, w której jest on faktycznie zbudowany, wygląda teraz tak:I w końcu drukujemy kawałek!
źródło
C
zmienne zfor
pętliint b=Byte.valueOf(A[0]),B=Byte.valueOf(A[1]),C
. We wszystkich twoich pętlach for wydaje się również, że możesz używaćC-->0;
czeków, czyni to 298, pastebin.com/uj42JueLfor
pętli do zapisania kilku bajtów - pastebin.com/dhNCpi6nif(b==1&B==1)
która pozwala na zapisanie ponad 20 bajtówSystem.out.print('o');return;
, możesz ustawićc='o'
i umieścić logikę dla różnych cegieł w bloku else. a następnie posiadanie pojedynczej instrukcji drukowania i brak zwrotu pozwala zaoszczędzić dodatkowe bajtyMinkolang 0,15 ,
585756 bajtówTak to prawda. Grałem w
jedendwa śmierdzące bajki ...Wypróbuj tutaj!
Wyjaśnienie
Okej, to dwa znaczące przepisania objaśnienia dla dwóch zapisanych bajtów. Nie sądzę, żebym mógł lub zagram w coś więcej z tego. : P
źródło
pieprzenie mózgu, 391 bajtów
Wiem, że można to jeszcze bardziej pograć w golfa, ale w tym momencie cieszę się, że to działa. Będę nadal pracował nad golfem.
Dane wejściowe należy podać jako dwie cyfry. W tym celu
(8, 2)
wystarczy wejść82
.Wypróbuj online!
Awaria:
Najpierw umieść na taśmie niezbędne znaki:
(newline)| o_-
Następnie zbierz dane wejściowe do dwóch komórek i odejmij 48 od każdej z nich (aby uzyskać wartość liczbową, a nie znak liczbowy)
Następnie sprawdź szczególny przypadek
(1, 1)
(Uwaga: tylko ten czek odpowiada za 109 bajtów kodu). Jakbyif
ów nie były na tyle trudne do zrobienia w brainfuck mamy zagnieżdżoneif
:Poniżej przedstawiono strukturę sprawdzania, czy komórka x jest zerowa czy niezerowa:
Jednak w zagnieżdżonym
if
musimy mieć 4 komórki tymczasowe.Teraz dochodzimy do faktycznego drukowania znaków:
Wydrukuj górny pasek i nowy wiersz:
Wydrukuj
|
, rządo
, drugi|
i nowy wiersz wiele razy równy wysokości:I wydrukuj dolny pasek (tutaj nie jest potrzebny nowy wiersz):
źródło
Siatkówka , 52 bajty
Liczba bajtów zakłada kodowanie ISO 8859-1. Zauważ, że szósta linia powinna zawierać pojedynczą spację.
Wypróbuj online!
Dane wejściowe są jednoargumentowe, przy użyciu
1
jako cyfra jedności, spacja jako separator i wysokość, po której następuje szerokość.Wyjaśnienie
Wszystkie etapy tego programu są podstawionymi podstawami, czasami z regularnym modyfikatorem wyrażenia regularnego (bez powtórzeń i pętli, bez innych typów etapów). Nie korzysta nawet z funkcji substytucji specyficznych dla siatkówki, oprócz zwykłego
¶
aliasu dla linii.Ma to na celu „pomnożenie” dwóch wejść. Naszym celem jest tworzenie
h+2
wierszy pow
1
każdym z nich (h+2
abyśmy mogli zamienić górę i dół na_
i-
później).\G
Kotwica wymaga meczu rozpocząć gdzie ostatni skończył. Oznacza to, że jeśli kiedykolwiek nie uda nam się dopasować znaku w ciągu, kolejne znaki również nie będą pasować. Używamy tego, aby dopasować tylko1
sh
, ale nie,w
ponieważ regex nie pozwala na dopasowanie przestrzeni, która je dzieli. Jednak robimy również1
opcjonalne, aby uzyskać dodatkowe puste dopasowanie na końcuh
. Toh+1
pasuje. Każdy z nich jest zastępowany przez całą input ($_
), po której następuje kreska.w
sam pozostaje nietknięty, co daje namh+2
drugą kopię. Powiedzmy, że dane wejściowe były11 1111
, a teraz mamy:To całkiem nieźle. Mamy dodatkowe rzeczy, ale
h+2
kopiew
są.Zauważ, że na końcu pierwszego wiersza jest spacja. To usuwa te prefiksy z linii, dzięki czemu mamy tylko
w
s później.No cóż, to tak naprawdę nie działa z formatowaniem SE ... pierwszy wiersz jest pusty, a drugi wiersz powinien zawierać pojedynczą spację. To wstawia spacje do każdej możliwej pozycji, tj. Na początku i na końcu każdej linii oraz między każdą parą
1
s:Zamienimy je
o
późniejTo po prostu otacza każdą linię w parę
|
:Teraz dbamy o górę i dół:
Czas
\G
znów zabłysnąć. Dopasowuje każdy znak w pierwszym wierszu i zamienia go w znak_
.To samo, ale ze względu na
r
modyfikator (tryb od prawej do lewej) dopasowuje znaki w ostatnim wierszu i zamienia je w-
. Teraz mamy:Pozostały tylko dwie rzeczy do zrobienia: zamień je
1
wo
s, a jeśli dane wejściowe były1 1
wtedy, zamień całą rzecz wo
. Możemy obsłużyć oba z jednym etapem:s
jest zwykłym trybem pojedynczej linii (tzn. powoduje.
dopasowanie linii). Jeśli dane wejściowe były1 1
wynikiem, to będzie miał minimalny rozmiar 17 znaków, więc możemy je dopasować^.{17}$
i zastąpićo
. W przeciwnym razie, jeśli to się nie powiedzie, po prostu dopasujemy wszystkie1
s i zastąpimy jeo
zamiast.źródło
Jolf, 36 bajtów
Jolf, 24 bajty, niekonkurujący
Cóż, zrobiłem lepsze wbudowane pudełko.
Jolf,
3837 bajtówProste rzeczy, naprawdę. Zaoszczędzono bajt, zauważając, że
!Ζ
(matematyka zeta lub odchylenie stand) wynosi tylko 0, gdy oba argumenty mają wartość 1, a w przeciwnym razie jest falsey (w naszym przypadku).źródło
05AB1E , 33 bajty
Kod:
Wyjaśnienie:
Wykorzystuje kodowanie CP-1252 . Wypróbuj online! .
źródło
JavaScript (ES6),
8986 bajtówEdycja: Zapisano 3 bajty dzięki @Shaggy.
źródło
repeat
.Python 2, 71 bajtów
źródło
Befunge, 144 bajtów
Wolałbym skomentować ten post, ale nie mam jeszcze reputacji, więc zamieszczam własną odpowiedź, która działa w podobny sposób, ale jest nieco bardziej zwarta
możesz przetestować kod tutaj
źródło
Reng v.4, 82 bajty, niekonkurujące
Włączyłem poprawkę błędu, która naprawia same funkcje nadpisywania (proszę nie pytać; moje rzeczy są nawiedzone)
Pobiera dane wejściowe jako liczby połączone spacjami, np
4 2
. Wypróbuj tutaj!źródło
I pushed a bug fix that fixes functions being overwritten by themselves
... Cóż, to interesujący błądPowerShell v2 +, 76 bajtów
Pobiera dane wejściowe, a następnie sprawdza
if
instrukcję. Ponieważ niezerowe wartości są prawdziwe w PowerShell, tak długo, jak przynajmniej jedna z nich$x
i$y
nie będą równe1
,if
będzie to prawdą.Wewnątrz
if
znajduje się seria mnożenia ciągów znaków. Najpierw konstruujemy ciąg znaków podkreślenia, oszczędzając$z
na później. Zostanie to umieszczone w rurociągu. Następnie konstruujemy nasz ciąg boków i kołków (z pomnożonymi kołkami$x
), wykonanych$y
czasów i łączymy to z naszymi$z
czasami kresek . Ten ciąg jest następnie umieszczany na rurociągu i myexit
. Rurociąg jest opróżniany i drukowanie jest niejawne. Zauważ, że otrzymujemy nowy wiersz między znakami podkreślenia i pierwszym wierszem kołków za darmo, ponieważ domyślnym.ToString()
separatorem dla danych wyjściowych tablicy jest`n
(i wyprowadzamy tablicę ciągów znaków).Jeśli
if
jest to fałsz, znajdujemy się w specjalnym1 1
przypadku, więc po prostu umieszczamy"o"
go w potoku i kończymy , drukując ponownie niejawnie.Przykłady
źródło
Bash,
186,163,156,148,131, 130 bajtówUwaga: Jeśli naprawdę potrzebujesz lego, aby mieć łączniki dla ostatniej linii, zmień ostatni printf na
i dodaj dwa bajty.
źródło
(($x+$y==2))&&echo o||{ printf _%.0s $(seq -1 $x);echo;for((i=0;i<$y;i++));do printf \|;for((j=0;j<$x;j++));do printf o;done;echo \|;done;printf =%.0s $(seq -1 $x);echo;}
()
, nie potrzebujesz słowa kluczowego,function
aby zadeklarować funkcję. Istnieje alternatywnafor
składnia przy użyciu nawiasów klamrowych, npfor((j=$1;j--;));{ printf o;}
. : Jak pokazano w poprzednim przykładzie, możesz zapisać niektóre znaki, zmniejszając i testującfor
drugie wyrażenie. Zamiast tego możesz użyć backicksa$(cmd)
.(($x+$y==2))&&echo o||{ printf _%.0s `seq -1 $x`;echo;for((i=$y;i--;)){ printf \|;for((j=$x;j--;)){ printf o;};echo \|;};printf =%.0s `seq -1 $x`;echo;}
(($something))
na w((something))
całym. ($1
wciąż potrzebuje znaku dolara, aby odróżnić go od literału1
.)Perl 5 -
8477 bajtów84 bajtów
77 bajtów. Z pewną pomocą Dom Hastings
źródło
warn
programu golfowego, ale potem zdałem sobie sprawę, że używasz go, ponieważ jest on krótszy niżprint
. Miły!-E
zamiast zamiast-e
, włączając wszystkie rozszerzenia. Jestem nowy w tym miejscu, więc nie wiem dokładnie, gdzie jest określone, jak liczyć wyniki.warn
), nie potrzebujesz cudzysłowów wokół"o"
(możesz użyj słowa bez słowa dla kolejnego -2), jeśli wstawisz obliczenia$w
, powinieneś zapisać kolejny bajt ('_'x($w=3+2*$x)
vs.$w=3+2*$x;
...'_'x$w
) i na koniec możesz zmienić\n
na dosłowny nowy wiersz. Mam nadzieję, że to pomaga!C,
202191 bajtówDzięki @Lince Assassino za uratowanie 11 bajtów!
Nie golfowany:
źródło
p(char*A){printf(A);}
#define p printf
Guma cynamonowa, 32 bajty
Nie konkuruje. Wypróbuj online. Dane wejściowe muszą być dokładnie w formie,
[width,height]
bez odstępu między przecinkiem a wysokością.Wyjaśnienie
Ciąg dekompresuje się do tego:
Pierwszy
l
etap jest mapowany[1,1]
nao
(przypadek specjalny), a wszystko inne na ciągStrzałka w tył sygnalizuje następnie rozpoczęcie drugiego etapu; zamiast wyprowadzać ten ciąg, CG odcina backstick i wykonuje ciąg.
p
Tryb następnie powtarza wszystkie znaki wewnątrz tyldy pierwszego parametru (szerokość) razy, a następnie potem powtarza znaki wewnątrz drugiego parametru znakami procentu (wysokość) razy. A więc[4,2]
zamienia się w to:a następnie w:
źródło
Partia,
172170 bajtówEdycja: Zapisano 2 bajty dzięki
@ CᴏɴᴏʀO'Bʀɪᴇɴ@ EʀɪᴋᴛʜᴇGᴏʟғᴇʀ.Mogę zapisać 7 bajtów, jeśli założę, że opóźnione rozszerzenie jest włączone.
źródło
%%o%%
zamiast%o%
?%o%
będzie zastępowane oryginalną wartością zao
każdym razem, więco
będzie to zawsze tylko równe" o"
.%%o%%
przechodzi jako argumentcall
o%o%
, które następnie wykorzystuje bieżącą wartośćo
.do set o=%o% o
?%o%
rozszerza się przedfor
przeanalizowaniem pętli, więc pętla czyta,for /l %i in (1,1,8) do call set o= o
co jest oczywiście bezcelowe.do set o=%%o%% o
(-5)?Vim, 56 klawiszy
To wydaje się być zadaniem do edycji tekstu, więc Vim jest oczywistym wyborem! Pobieram dane wejściowe jako plik tekstowy z dwiema liczbami całkowitymi oddzielonymi spacjami i wysyłam odpowiedź do tego samego pliku. Poza tym nienawidzę cię za posiadanie specjalnej skrzynki 1x1 ... W każdym razie:
a gdyby nie było przypadku specjalnego, 35 naciśnięć klawiszy
Podział dla zdrowych ludzi:
Usuń liczby z bufora do @a i @b (zachowano znak spacji)
Zamień spację na „o”, a jeśli jest to specjalny przypadek, zapisz i wyjdź
Wyczyść linię i napisz krawędzie klocków lego
Wstaw @ wiele „o”, aby uzyskać gotową środkową część
Yank line i wykonaj dodatkowe kopie @b (jeden za dużo)
Jesteśmy na szczycie bufora, zamień dodatkową linię na podkreślenia
Skocz na dół bufora, pociągnij linię, którą wcześniej szarpnęliśmy
Zamień wiersz na myślniki, zapisz i wyjdź
źródło
Pyth, 38 bajtów
Zestaw testowy.
źródło
Haskell, 76 bajtów
Przykład użycia:
3 # 2
daje ciąg wielowierszowy dla klocka 3 na 2.Nie golfowany:
źródło
unlines
, ale tak nie jest.Groovy,
107,98,70, 64Testowanie:
źródło
Befunge,
114113108101 bajtówWiem, że istnieje już wiele rozwiązań Befunge, ale byłem całkiem pewien, że można je ulepszyć, przyjmując inne podejście do układu kodu. Podejrzewam, że tę odpowiedź można jeszcze pograć w golfa, ale jest ona już nieco mniejsza niż którykolwiek z poprzednich wpisów.
Wypróbuj online!
źródło
:<|
jest potrzebny?APL, 46 bajtów
Strażnik:
⍵≡1 1:'o'
do specjalnego przypadku. W przeciwnym razie'o '⍴⍨1 2×⌽⍵
zawartość zostanie zbudowana. A reszta to tylko boks.źródło
C #, 198 bajtów
szybko i brudno
Musiałem napisać funkcję, która zwielokrotnia ciągi
bez golfa (sugestie)
źródło
string s(string m,int u){return string.Join("",new int[u].Select(n => m));}
- .ToArray () jest redundantne, a string [] może również być int []. Ale zamiast string.Join możesz użyć agregacji:string s(string m, int u){return new int[u].Aggregate("",(t,i)=>t+m);}
void f(int x,int y){Func<char,int,string>s=(c,i)=>new string(c,i);int l=x*2+3;Console.Write((y&x)==1?"o":s('_',l)+"\n"+s('y',y).Replace("y","| "+s('x', x)+"|\n").Replace("x","o ")+s('-',l));}
Oktawa,
979586 bajtówUżyłem metody @atlasologist w Pythonie do przetestowania
(1, 1)
:(...,'o')[x<2>y]
Dzięki @Luis Mendo za zapisanie 7 bajtów:
a=ones(1,w*2+3)*'_'
doa=~(1:w*2+3)+95
ia./a*'-'
do~a+45
Dzięki @pajonk za zapisanie 2 bajtów:
f=
źródło
a./a*'-'
możesz użyć~~a*'-'
? A może nawet~a+45
?f=
)