In dieser Herausforderung müssen Sie die ASCII-Grafik eines Wasserballons anzeigen, wenn die Wassermenge, mit der der Ballon gefüllt ist, gegeben ist:
| __||__ |
| / # #\ |
| |######| |
| |######| |
| |######| |
| |######| |
| |######| |
| \######/ |
| |
| |
+----------+
Wie zeichnet man den Ballon
n
Führen Sie die folgenden Schritte aus, um eine Sprechblase mit einer bestimmten Größe anzuzeigen (Hinweis: Wenn das Teilungssymbol ( /
) verwendet wird, steht es für eine ganzzahlige Division, die abgerundet wird):
Zeichnen Sie einen Container, der aus zehn vertikalen Balken (
|
) links und rechts, zehn Strichen (-
) unten und einem Pluszeichen (+
) unten links und unten rechts besteht. Dies macht das Ganze 12x11 und das "Innere" 10x10.| | | | | | | | | | | | | | | | | | | | +----------+
Zeichnen Sie zwei vertikale Balken (die Öffnung des Ballons) in der Mitte der oberen Reihe, mit
n/2
Unterstrichen (_
) auf beiden Seiten (in diesem Beispieln
5):| __||__ | | | | | | | | | | | | | | | | | | | +----------+
Zeichnen Sie einen Schrägstrich (
/
) und einen umgekehrten Schrägstrich (\
) um diese obere Reihe, eine Reihe darunter:| __||__ | | / \ | | | | | | | | | | | | | | | | | +----------+
Zeichnen Sie
n
Reihen von vertikalen Balken mit gleichem Abstand und dann eine Reihe eines Paares von (immer noch gleichem Abstand) Backslash und Slash:| __||__ | | / \ | | | | | | | | | | | | | | | | | | | | | | \ / | | | | | +----------+
Füllen Sie den Ballon mit Wasser, dargestellt durch ein Rautezeichen (
#
). Beginnen Sie in der untersten Reihe und arbeiten Sie nach oben. Wenn eine Zeile nicht vollständig gefüllt ist, können Sie die Hash-Markierungen beliebig platzieren (im folgenden Beispiel werden sie zufällig platziert, Sie können sie jedoch beispielsweise alle auf der linken Seite platzieren, wenn Sie möchten).| __||__ | | / # #\ | | |######| | | |######| | | |######| | | |######| | | |######| | | \######/ | | | | | +----------+
Das Maximum n
ist 7 und das Minimum ist 0.
Eingang
Die Eingabe ist eine Ganzzahl i
, dh die Anzahl der zu zeichnenden Hashmarken (Wasser).
Es wird niemals weniger als 2 oder mehr als 100 sein.
Ausgabe
Die Ausgabe sollte eine Sprechblase n
mit i
Rautezeichen (Wassereinheiten) sein. Dabei n
handelt es sich um die kleinstmögliche Größe, die i
Wassereinheiten aufnehmen kann. Da i
wird immer 2 oder größer sein, n
wird immer 0 oder größer sein.
Die maximal mögliche Größe, mit der ein Ballon gezeichnet werden kann, ist n
= 7. Wenn ein Ballon der Größe 7 nicht in die angegebene Wassermenge passt, springt der Ballon:
| |
| |
|## # ###|
|##########|
|##########|
|##########|
|##########|
|##########|
|##########|
|##########|
+----------+
(Das obige sollte die Ausgabe für die Eingabe sein i
= 76. Genau wie der nicht platzende Ballon können die sechs zusätzlichen Wassereinheiten in der oberen Reihe nach Belieben angeordnet werden.)
Testfälle
Warum einen Testfall haben, wenn Sie alle haben können?
Hier ist ein animiertes GIF aller Eingaben i
von 2 bis 100:
Wertung
Das ist Code-Golf , also gewinnt der kürzeste Code in Bytes.
Antworten:
Oktave, 523 Bytes
23 dieser Bytes gelten nur für den Fall n = 100. Vielleicht kann jemand einen effizienteren Weg vorschlagen ...
Prüfung
Eingabe: 21
Ausgabe:
quelle
Python 2, 591 Bytes
Hat einige Zeit gedauert und es könnte wahrscheinlich viel mehr Golf gespielt werden.
Hoffe, es gibt keine größeren Fehler.
Beispiellauf:
gibt:
quelle