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>
Antworten:
Befunge , 165
227BytesNicht mehr so viel Leerzeichen wie zuvor, aber es gibt immer noch Lücken. Das Prinzip ist das gleiche wie in der vorherigen Lösung, aber das Layout ist anders. Um diesmal zu überprüfen, ob beide Zahlen 1 sind, nehme ich nur ihr Produkt und sehe, ob das Ergebnis größer als 1 ist.
Alte Lösung (227 Bytes)
Es könnte möglich sein, mehr Golf zu spielen. Sieh dir nur das ganze Leerzeichen an!
Hier ist mein schlechter Versuch, eine Erklärung in MSPaint-Bildform zu finden: Code fließt in Pfeilrichtung.
quelle
V ,
43, 40, 38,36 BytesEine der längsten V-Antworten, die ich je geschrieben habe ...
Probieren Sie es online!
Da dies Unicode- und nicht druckbare Zeichen enthält, ist hier ein umkehrbarer Hexdump:
Bei dieser Herausforderung geht es um die Bearbeitung von Text, also perfekt für V! Andererseits ist V schrecklich in Bezug auf Bedingungen und Mathematik, so dass die unterschiedliche Ausgabe für (1, 1) es wirklich vermasselt hat ... :(
Erläuterung:
Jetzt haben wir 'Höhen'-Linien mit Zwischenräumen dazwischen.
Nicht konkurrierende Version (31 Bytes):
Probieren Sie es online!
Diese Version verwendet mehrere Funktionen, die neuer sind als diese Herausforderung, um 5 Byte kürzer zu sein!
Zweite Erklärung:
Das Wort "Zeile löschen und n- mal einfügen " wird durch
ÀÄ
das Wort "Diese Zeile n- mal wiederholen " ersetzt. (-2 Bytes)Das war "Ersetze das erste Match dieses Regex; Rückgängig" wurde durch ersetzt
Welches ist nur "Suche nach einer Übereinstimmung dieser Regex" (-1 Byte)
Und schließlich
Ò
ist es nur ein einfaches Synonym fürVr
"Ersetze jedes Zeichen in dieser Zeile mit 'x'". (-2 Bytes)quelle
3216-Bit-Little-Endian-x86-Maschinencode,575451 Byte3 Bytes weniger dank @ninjalj.
Habe den Code heftig umgeschrieben und weitere 3 Bytes gespart
In hex
Eingabe: BX = Breite, SI = Höhe, DI zeigt auf den Puffer, der das Ergebnis als NULL-terminierte Zeichenfolge mit durch "\ n" getrennten Zeilen empfängt
Demontage:
quelle
Python 2,
757372 BytesGibt eine Zeichenfolge mit einer Bedingung zurück, die den 1,1-Block behandelt.
Vielen Dank an Lynn und Chepner für zwei Bytes
quelle
lambda x,y:('_'*x*2+'___\n'+
etc. speichert ein Byte.x*'__'
anstelle von2*x*'_'
.<function <lambda> at 0x......>
. Wie kann ich das testen?f=lambda x:x+1; print(f(9))
CJam, 34
Probieren Sie es online aus
Erläuterung:
quelle
Ruby,
5956 BytesAnonyme Funktion, gibt eine mehrzeilige Zeichenfolge zurück. Probieren Sie es online!
-3 Bytes dank eines Tricks von @ El'endiaStarman
quelle
Java,
318312297294260258 BytesDank Cliffroot 15 Bytes gespart !
Es funktioniert mit Kommandozeilenargumenten.
UngolfedIn einer für Menschen lesbaren Form:Ja, es ist immer noch schwer zu verstehen, was los ist, auch wenn das Programm nicht voll ist. Hier folgt eine schrittweise Erklärung:
Die ersten beiden Befehlszeilenargumente -die wir bekommen ABMESSUNGEN können verwenden werden , wie im Programm verwendet werden
A[0]
undA[1]
(jeweils).b
ist die Anzahl der Spalten,B
ist die Anzahl der Zeilen undC
ist eine Variable, die für die Verwendung infor
Schleifen vorgesehen ist.c
ist das Legostück. Wir fügen Zeilen hinzu und drucken sie am Ende.Wenn das zu druckende Stück 1x1 ist, sollten sowohl
b
(Anzahl der Spalten) als auchB
(Anzahl der Zeilen) kleiner als 2 sein. Deshalb setzen wir einfachc
auf ein einzelnes Stücko
und fahren dann mit der Aussage fort, dassSystem.out.print
das Stück ist, wenn dies der Fall ist.Hier fügen wir
(integerValueOfA[0] * 2) + 3
Unterstriche anc
. Dies ist die oberste Reihe vor allen Löchern.Dies ist die Schleife, in der wir das Stück zeilenweise konstruieren. Was im Inneren vor sich geht, ist ohne Beispiele nicht zu erklären. Nehmen wir an, das Stück ist 4x4:
.
Hier fügen wir
(integerValueOfA[0] * 2) + 3
dem Stück Bindestriche hinzu. Dies ist die Reihe ganz unten unter allen Löchern.Das 4x4-Teil, mit dem ich die
for
Schleife erklärt habe, in der das Teil tatsächlich aufgebaut ist, sieht jetzt so aus:Und zum Schluss drucken wir das Stück!
quelle
C
Variablen ausfor
Schleifen verschiebenint b=Byte.valueOf(A[0]),B=Byte.valueOf(A[1]),C
. In allen für Schleifen scheint es auch , wie Sie verwenden können ,C-->0;
Schecks, macht es 298, pastebin.com/uj42JueLfor
Schleifen für wenige Bytes gespeichert - pastebin.com/dhNCpi6nif(b==1&B==1)
System.out.print('o');return;
könnten Sie stattdessenc='o'
Logik für verschiedene Bausteine in else-Block setzen und platzieren.Minkolang 0,15 ,
585756 BytesJa, das ist richtig. Ich golfed aus
einemzwei mal ne kleinen Bytes ...Probieren Sie es hier aus!
Erläuterung
Okay, das sind zwei signifikante Änderungen der Erklärung für zwei gespeicherte Bytes. Ich glaube nicht, dass ich mehr aus diesem heraus Golf spielen kann oder werde. : P
quelle
Brainfuck, 391 Bytes
Ich weiß, dass man mehr Golf spielen kann, aber jetzt bin ich froh, dass es funktioniert. Ich werde weiter daran arbeiten, Golf zu spielen.
Die Eingabe muss nur zweistellig sein. Wie in, zu tun
(8, 2)
, würden Sie nur eingeben82
.Probieren Sie es online!
Nervenzusammenbruch:
Legen Sie zuerst die erforderlichen Zeichen auf das Band:
(newline)| o_-
Sammeln Sie dann die Eingabe in zwei Zellen und subtrahieren Sie jeweils 48 (um den numerischen Wert und nicht das numerische Zeichen zu erhalten).
Überprüfen Sie als Nächstes den Sonderfall von
(1, 1)
(Beachten Sie, dass nur diese Prüfung 109 Byte des Codes ausmacht). Als obif
es nicht schwer genug wäre, Brainfuck zu machen, haben wir ein verschachteltesif
:Die folgende Struktur überprüft, ob eine Zelle x null oder ungleich null ist:
In einem verschachtelten
if
Objekt müssen jedoch 4 temporäre Zellen vorhanden sein.Nun kommen wir zum eigentlichen Drucken von Zeichen:
Drucke die obere Leiste und eine neue Zeile:
Gib a
|
, eine Reihe vono
's, eine andere|
und eine neue Zeile so oft aus, wie es der Höhe entspricht:Und drucken Sie die untere Leiste (hier wird kein Zeilenumbruch benötigt):
quelle
Netzhaut , 52 Bytes
Die Anzahl der Bytes setzt die Kodierung nach ISO 8859-1 voraus. Beachten Sie, dass die sechste Zeile ein einzelnes Leerzeichen enthalten soll.
Probieren Sie es online!
Die Eingabe erfolgt unär, wobei
1
als unäres Zeichen das Leerzeichen als Trennzeichen und die Höhe gefolgt von der Breite verwendet werden.Erläuterung
Alle Stufen in diesem Programm sind reine Substitutionen, gelegentlich mit einem regulären Regex-Modifikator (keine Wiederholung oder Schleifen, keine anderen Arten von Stufen). Abgesehen vom üblichen
¶
Alias für Zeilenvorschübe werden nicht einmal Retina-spezifische Substitutionsfunktionen verwendet .Der Zweck davon ist, die zwei Eingänge "zu multiplizieren". Unser Ziel ist es,
h+2
Zeilen mit jeweilsw
1
s zu erstellen (h+2
damit wir die oberen und unteren Zeilen in_
und-
später umwandeln können ). Der\G
Anker erfordert, dass das Match dort beginnt, wo das letzte aufgehört hat. Das heißt, wenn wir jemals ein Zeichen in der Zeichenfolge nicht finden, werden auch keine weiteren Zeichen gefunden. Wir verwenden dies, um nur die1
s in abzugleichenh
, aber nicht,w
weil der reguläre Ausdruck nicht zulässt, dass der Raum, der sie trennt, übereinstimmt. Wir machen aber auch das1
optional, so dass wir am Ende ein zusätzliches leeres Match bekommenh
. Das isth+1
Streichhölzer. Jedes dieser Zeichen wird durch die gesamte Eingabe ($_
) gefolgt von einem Zeilenvorschub ersetzt.w
selbst bleibt unberührt, was uns dieh+2
nd Kopie gibt. Sagen11 1111
wir die Eingabe war , dann haben wir jetzt:Das ist sehr gut. Wir haben ein paar extra Sachen, aber die
h+2
Kopienw
sind da.Beachten Sie, dass am Ende der ersten Zeile ein Leerzeichen steht. Dadurch werden diese Präfixe aus den Zeilen entfernt, sodass wir nur noch das
w
s danach haben.Naja, das funktioniert nicht wirklich mit der Formatierung von SE ... die erste Zeile ist leer und die zweite Zeile soll ein einzelnes Leerzeichen enthalten. Dies fügt Leerzeichen in jede mögliche Position ein, dh am Anfang und Ende jeder Zeile und zwischen jedem Paar von
1
s:Wir werden diese
o
später in s umwandelnDies umschließt einfach jede Zeile mit einem Paar von
|
:Jetzt kümmern wir uns um oben und unten:
Zeit
\G
, wieder zu glänzen. Dies entspricht jedem Zeichen in der ersten Zeile und verwandelt es in ein_
.Das Gleiche, aber aufgrund des
r
Modifikators (Modus von rechts nach links) werden die Zeichen in der letzten Zeile abgeglichen und in umgewandelt-
. Jetzt haben wir also:Jetzt müssen Sie nur noch zwei Dinge erledigen: Verwandeln Sie diese
1
ino
s, und wenn die Eingabe erfolgte,1 1
verwandeln Sieo
stattdessen die gesamte Sache in . Wir können beide mit einer einzigen Stufe bewältigen:s
ist ein regulärer Einzelzeilenmodus (dh es werden.
Zeilenvorschübe erstellt). Wenn die Eingabe1 1
das Ergebnis war, hat sie die Mindestgröße von 17 Zeichen, damit wir sie abgleichen^.{17}$
und durch ersetzen könneno
. Andernfalls passen wir einfach alle1
s an und ersetzen diese durcho
.quelle
Jolf, 36 Bytes
Jolf, 24 Bytes, nicht konkurrierend
Nun, ich habe eine bessere Box gebaut.
Jolf,
3837 BytesEinfaches Zeug, wirklich. Ein Byte wurde gespeichert, indem festgestellt wurde, dass
!Ζ
(math zeta oder die Abweichung von der Norm) nur 0 ist, wenn beide Argumente 1 sind, und ansonsten (für unseren Fall) falsch.quelle
05AB1E , 33 Bytes
Code:
Erläuterung:
Verwendet die CP-1252- Codierung. Probieren Sie es online! .
quelle
JavaScript (ES6),
89.86ByteBearbeiten: 3 Bytes dank @Shaggy gespeichert.
quelle
repeat
.Python 2, 71 Bytes
quelle
Befunge, 144 Bytes
Am liebsten hätte ich einen Kommentar zu diesem Beitrag abgegeben, aber ich habe noch keinen guten Ruf. Deshalb gebe ich eine eigene Antwort, die ähnlich funktioniert, aber etwas kompakter ist
Sie können den Code testen hier
quelle
Reng v.4, 82 Bytes, nicht konkurrierend
Ich habe einen Bugfix gepusht, der das Überschreiben von Funktionen durch sich selbst behebt (bitte nicht fragen; meine Sachen werden verfolgt)
Nimmt Eingaben als durch Leerzeichen verbundene Zahlen wie
4 2
. Probieren Sie es hier aus!quelle
I pushed a bug fix that fixes functions being overwritten by themselves
... Nun, das ist ein interessanter BugPowerShell v2 +, 76 Byte
Übernimmt die Eingabe und überprüft dann eine
if
Anweisung. Da Nicht-Null - Werte sind truthy in Power, so lange mindestens eine von$x
und$y
gleich sind nicht auf1
dieif
wird wahr sein.Im Inneren
if
gibt es eine Reihe von String-Multiplikationen. Zuerst konstruieren wir eine Reihe von Unterstrichen, die wir$z
für später speichern . Das wird in die Pipeline gestellt. Als nächstes konstruieren wir unsere Reihe von Seiten und Stiften (mit den Stiften multipliziert mit$x
), fertigen$y
Zeiten und verketten dies mit unseren Gedankenstrichen$z
. Dieser String wird dann in der Pipeline platziert und wirexit
. Die Pipeline wird geleert und das Drucken ist implizit. Beachten Sie, dass wir den Zeilenumbruch zwischen den Unterstrichen und der ersten Zeile der Stifte kostenlos erhalten, da das Standardtrennzeichen.ToString()
für die Array-Ausgabe lautet`n
(und wir ein Array von Strings ausgeben).Wenn das
if
falsch ist, befinden wir uns im Sonderfall1 1
, also stellen wir es"o"
von selbst in die Pipeline und beenden es, wobei das Drucken erneut implizit erfolgt.Beispiele
quelle
Bash,
186,163,156,148,131, 130 BytesHinweis: Wenn das Lego wirklich Bindestriche für die letzte Zeile enthalten muss, ändern Sie den letzten Ausdruck in
und addiere zwei Bytes.
quelle
(($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;}
()
, benötigen Sie das Schlüsselwort nichtfunction
, um eine Funktion zu deklarieren. Es gibt eine alternativefor
Syntax mit geschweiften Klammern, zfor((j=$1;j--;));{ printf o;}
. Wie im vorherigen Beispiel gezeigt, können Sie einige Zeichen speichern, indem Sie denfor
zweiten Ausdruck in dekrementieren und testen . Sie können statt Backticks verwenden$(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))
auf((something))
durchgehend wechseln . ($1
1
Perl 5 -
8477 Bytes84 Bytes
77 Bytes. Mit etwas Hilfe von Dom Hastings
quelle
warn
ein Golfprogramm zu verwenden, aber dann wurde mir klar, dass Sie es verwenden, weil es kürzer ist alsprint
. Nett!-E
anstatt-e
alle Erweiterungen zu aktivieren. Ich bin neu in diesem Bereich, daher weiß ich nicht genau, wo genau angegeben ist, wie die Punkte zu zählen sind.warn
), brauchen Sie keine Anführungszeichen um die"o"
(Sie können) Verwenden Sie ein Bareword für ein anderes -2). Wenn Sie die Berechnung inline setzen$w
, sollten Sie ein weiteres Byte ('_'x($w=3+2*$x)
vs.$w=3+2*$x;
...'_'x$w
) speichern und zuletzt das\n
für eine wörtliche Newline ändern. Ich hoffe, das hilft!C,
202, 191 BytesVielen Dank an @Lince Assassino für die Einsparung von 11 Bytes!
Ungolfed:
quelle
p(char*A){printf(A);}
#define p printf
Zimtgummi, 32 Bytes
Nicht konkurrierend. Probieren Sie es online aus. Die Eingabe muss genau in der Form erfolgen und darf
[width,height]
keinen Abstand zwischen Komma und Höhe haben.Erläuterung
Die Zeichenfolge wird folgendermaßen dekomprimiert:
Die erste
l
Stufe ist[1,1]
demo
(Sonderfall) und alles andere der Zeichenfolge zugeordnetDer Backtick signalisiert dann den Beginn einer zweiten Stufe; Anstatt diesen String auszugeben, schneidet CG den Backtick ab und führt den String aus. Der
p
Modus wiederholt dann alle Zeichen im ersten Parameter (Breite) und anschließend die Zeichen im zweiten Parameter (Höhe) des Prozentzeichens. Also für[4,2]
ihn in dieser verwandelt:und dann in:
quelle
Batch,
172170 BytesBearbeiten: 2 Bytes dank
@ CᴏɴᴏʀO'Bʀɪᴇɴ@ EʀɪᴋᴛʜᴇGᴏʟғᴇʀ gespeichert.Ich kann 7 Bytes sparen, wenn ich davon ausgehen kann, dass die verzögerte Erweiterung aktiviert ist.
quelle
%%o%%
statt%o%
?%o%
würdeo
jedes Mal durch Originalwert ersetzt , damito
wäre das immer nur gleich" o"
.%%o%%
geht als Argument durchcall
von%o%
, welches dann den aktuellen Wert von verwendeto
.do set o=%o% o
?%o%
wird erweitert, bevor diefor
Schleife analysiert wird. Die Schleife liest also,for /l %i in (1,1,8) do call set o= o
was offensichtlich sinnlos ist.do set o=%%o%% o
dann nicht (-5)?Vim, 56 Tastenanschläge
Dies scheint eine Textbearbeitungsaufgabe zu sein, daher ist Vim die naheliegende Wahl! Ich nehme die Eingabe als Textdatei mit zwei durch Leerzeichen getrennten Ganzzahlen und gebe die Antwort in dieselbe Datei aus. Außerdem hasse ich dich dafür, dass du den 1x1-Spezialfall hast ... Wie auch immer:
und wenn es für den Sonderfall nicht gegeben hätte, 35 Tastenanschläge
Ein Zusammenbruch für gesunde Menschen:
Zahlen aus dem Puffer in @a und @b löschen (Leerzeichen bleibt erhalten)
Ersetzen Sie das Leerzeichen durch "o" und speichern und beenden Sie es in besonderen Fällen
Löschen Sie die Linie und schreiben Sie die Kanten des Legoblocks
Fügen Sie @ eine Menge "o" ein, um ein fertiges Mittelteil zu erhalten
Yank-Linie und mache @b zusätzliche Kopien (eine zu viele)
Wir sind oben im Puffer, ersetzen Sie die zusätzliche Zeile durch Unterstriche
Springe zum Ende des Puffers und ziehe die Linie, die wir vorher gezogen haben
Zeile durch Bindestriche ersetzen, speichern und beenden
quelle
Pyth, 38 Bytes
Testsuite.
quelle
Haskell, 76 Bytes
Verwendungsbeispiel:
3 # 2
Gibt eine mehrzeilige Zeichenfolge für einen 3-mal-2-Baustein an.Ungolfed:
quelle
unlines
, aber das ist es nicht.Groovy,
107,98,70, 64Testen:
quelle
Befunge,
114113108101 BytesIch weiß, dass es bereits eine Reihe von Befunge-Lösungen gibt, aber ich war mir ziemlich sicher, dass sie durch eine andere Herangehensweise an das Layout des Codes verbessert werden könnten. Ich vermute, dass diese Antwort auch noch weiter ausgearbeitet werden kann, aber sie ist bereits ein bisschen kleiner als die beiden vorherigen Einträge.
Probieren Sie es online!
quelle
:<|
benötigt wird?APL, 46 Bytes
Die Wache:
⍵≡1 1:'o'
für den besonderen Fall. Ansonsten'o '⍴⍨1 2×⌽⍵
baut der Inhalt. Und der Rest ist nur das Boxen.quelle
198 Bytes
schnell und dreckig
Ich musste eine Funktion schreiben, die Zeichenfolgen multipliziert
ungolfed (für Vorschläge)
quelle
string s(string m,int u){return string.Join("",new int[u].Select(n => m));}
- das .ToArray () ist redundant und der String [] kann auch ein int [] sein. Aber statt string.Join können Sie aggregate verwenden: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));}
Oktave,
979586 BytesIch habe die @ atlasologist -Methode in Python verwendet, um Folgendes zu testen
(1, 1)
:(...,'o')[x<2>y]
Vielen Dank an @Luis Mendo für das Speichern von 7 Bytes:
a=ones(1,w*2+3)*'_'
toa=~(1:w*2+3)+95
unda./a*'-'
to~a+45
Vielen Dank an @pajonk für das Speichern von 2 Bytes:
f=
quelle
a./a*'-'
du auch anstatt verwenden~~a*'-'
? Oder sogar~a+45
?f=
)