Ich mag ASCII-Kunst und langweile mich sehr, deshalb habe ich einige ASCII-Charaktere gefunden und angefangen, zufällige Dinge, 8-Bit-Mario-Schlösser, Irrgärten und Bögen zu machen. Ich stellte fest, dass die Bögen leicht ordentlich gestapelt werden konnten.
╔═══════╗
║╔═════╗║
║║╔═══╗║║
║║║╔═╗║║║
╨╨╨╨─╨╨╨╨
Herausforderung
Erstellen Sie ein Programm, eine Funktion oder ein anderes Standardformat, das eine Ganzzahl größer oder gleich 0 akzeptiert (es sei denn, Sie machen den Bonus) und ASCII-Kunst mit der angegebenen Anzahl von Bögen ausgibt.
Testfälle
Eingang:
7
Ausgabe:
╔═════════════╗
║╔═══════════╗║
║║╔═════════╗║║
║║║╔═══════╗║║║
║║║║╔═════╗║║║║
║║║║║╔═══╗║║║║║
║║║║║║╔═╗║║║║║║
╨╨╨╨╨╨╨─╨╨╨╨╨╨╨
Alt:
+-------------+
|+-----------+|
||+---------+||
|||+-------+|||
||||+-----+||||
|||||+---+|||||
||||||+-+||||||
||||||| |||||||
---------------
Eingang:
1
Ausgabe:
╔═╗
╨─╨
Alt:
+-+
| |
---
- Wenn die Ganzzahl 0 ist, wird nichts ausgegeben
- Diese Frage steht in utf-8, jedes Zeichen zählt als "Byte"
- Das ist Codegolf, also gewinnt die kürzeste Antwort.
- Sie haben die Möglichkeit,
+-+
anstelle von╔═╗
,---
anstelle von╨─╨
und|
anstelle von zu verwenden║
Bonus (nicht entschieden, ob dies in der alternativen Version zulässig ist, da es nicht so schwer wäre)
-10%, wenn das Programm negative Zahlen unterstützt und die Bögen so spiegelt
╥╥╥╥─╥╥╥╥
║║║╚═╝║║║
║║╚═══╝║║
║╚═════╝║
╚═══════╝
+---+
oben, an den Seiten|
und unten,-----
die für mich gut aussehen. Juanpotato, wenn Sie Nicht-ASCII-Zeichen verwenden möchten, geben Sie die Codierung in der Frage an. So wie es aussieht, stimme ich als unklar zu schließen.Antworten:
CJam, 59 Bytes
Probieren Sie es hier aus!
quelle
Python 2, 106 Bytes (94 Zeichen)
Ziemlich einfach. Druckt Zeile für Zeile mit einer sich ändernden Anzahl horizontaler und vertikaler Balken. Die letzte Zeile wird separat gedruckt.
Ich habe das Gefühl, dass mir einige Optimierungen fehlen. Die Tatsache, dass die Zeichen aus mehreren Bytes bestehen, bedeutet, dass Sie so etwas nicht tun können. Daher
'║╨'[n>0]
habe ich keinen guten Weg gefunden, um die letzte Zeile in der Schleife zu drucken. Es ist hässlich, dass so viel an der Theke manipuliert wird. Ich würde gerne Strings direkt aktualisierens+='║'
, aber der Index wird auch für horizontale Balken verwendet.quelle
+-|
die Bögen bauen, siehe op für Beispiele.Perl,
7882 ZeichenLeider konnte ich keinen Weg finden, den Bonus zu nutzen, ohne die Größe um mehr als 10% zu erhöhen. Ich kann mich noch durchsetzen.
Ungolfed
Wirklich ziemlich unkompliziert. Baut die untere Zeile (
╨$n╨
) schrittweise auf, während die obere Zeile (══
) um zwei Zeichen gekürzt wird. Sie endet, wenn sie nicht mehr gekürzt werden kann, sodass ich mich nicht mit Zählern herumschlagen muss.quelle
─
für n = 0 aus, aber es sollte nichts ausgeben.-n
: Probieren Sie es online aus!Bash, 124 Bytes (112 Zeichen)
Probelauf:
quelle
Japt
-R
, 29 BytesVerwendet
+
&-
. 4 Bytes für die blutige Eingabeüberprüfung geopfert!Versuch es
Erläuterung
quelle
0
If the integer is 0 then don't output anything
von der Herausforderung: /0
,false
aber ich weiß nicht, ob eine davon akzeptabel wäre, außer vielleicht die leere Zeichenkette, die mich 5 Bytes kosten würde (0
würde mich nur 1 kosten).JavaScript (ES6), 101 Zeichen
Erläuterung
Rekursive Funktion, die jede Zeile druckt
Prüfung
Test verwendet keine Standardparameter für die Browserkompatibilität.
Code-Snippet anzeigen
quelle
PHP (109 Zeichen)
Ich muss diesen str_repeat noch loswerden, aber die meisten Alternativen unterstützen keine mulyibyte-Zeichen.
quelle
Retina , 79 Zeichen
Probieren Sie es online aus.
Hierbei wird eine neue Funktion in Retina verwendet, die eine Dezimalzahl
\d+
durch eine Liste mit so vielen Zeichen ersetzt$0$*═
.quelle
Schnell (209 Bytes)
Wahrscheinlich ist Swift nicht die beste Sprache dafür. Ich versuche zum ersten Mal, eine Code-Golf-Challenge durchzuführen:
quelle
Ruby, 90 Bytes (74 Zeichen)
Probelauf:
quelle
Haskell,
151-162BytesEdit: Ich habe vergessen, mich
0
als Input zu beschäftigenquelle
54 Zeichen / 95 Bytes
Try it here (Firefox only).
Erläuterung
ANMERKUNG: Hierfür werden gute alte Kopierblöcke verwendet, um an die Stellen zu gelangen, an denen die Deklaration von normalen Variablen nicht möglich war.
quelle
Sed, 97 Bytes (81 Zeichen)
(96 Byte (80 Zeichen) Code + 1 Zeichen Befehlszeilenoption)
Eingabe als unäre Ganzzahl erwartet .
Probelauf:
Sed, 105 Bytes (75 Zeichen)
(104 Byte (74 Zeichen) Code + 1 Zeichen Befehlszeilenoption)
Eingabe als unäre Ganzzahl erwartet .
Probelauf:
quelle
Canvas , 15 Bytes
Probieren Sie es hier aus!
Erläuterung:
quelle