Heute steht für Sie eine spezielle Herausforderung zum Thema Unabhängigkeitstag (USA) an . Sie müssen ein Programm schreiben, das diese ASCII-Darstellung der amerikanischen Flagge druckt.
0
|---------------------------------------------------------
| * * * * * * #################################|
| * * * * * |
| * * * * * * |
| * * * * * #################################|
| * * * * * * |
| * * * * * |
| * * * * * * #################################|
| * * * * * |
| * * * * * * |
|########################################################|
| |
| |
|########################################################|
| |
| |
|########################################################|
| |
| |
|########################################################|
|---------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Nachgestellte Leerzeichen in jeder Zeile sowie ein nachstehender Zeilenumbruch sind zulässig.
Beachten Sie, dass das Flag nicht ganz so aussehen sollte, aber mit ASCII am ehesten zu erreichen ist.
Wie üblich, ist dieser Code-Golf so Standard Lücken gelten und kürzeste Antwort in Bytes gewinnt!
code-golf
ascii-art
kolmogorov-complexity
DJMcMayhem
quelle
quelle
Antworten:
CJam,
18412010910176746967646258 BytesProbieren Sie es online im CJam-Interpreter aus .
Idee
Der interessanteste Teil der Flagge ist das Sternenbanner-Muster.
Wenn wir zwei Leerzeichen und ein Nummernzeichen 56 Mal wiederholen und jeweils einen vertikalen Strich anhängen, erhalten wir
Wenn Sie dieses Muster siebenmal wiederholen und die ersten beiden Zeilen verwerfen, erhalten Sie die Streifen:
Wenn wir nun die Zeichenfolge
" * "
50 Mal wiederholen und das Ergebnis in Stücke mit der Länge 22 aufteilen, erhalten wir die Sterne:Das Leerzeichen ist ein wenig veraltet, aber wir können das beheben, indem wir den letzten Block entfernen und an die verbleibenden Leerzeichen ein Leerzeichen anhängen.
Wenn wir nun Streifen und Sterne überlagern, erhalten wir
Jetzt müssen Sie nur noch zwei Zeilen mit 57 Strichen hinzufügen, eine Spalte mit 37 vertikalen Balken hinzufügen und die Kirsche darauf setzen.
Code
quelle
Python 2, 113 Bytes
String Slicing und Modulo Checks in Hülle und Fülle.
quelle
i=0
selbst gedruckt wird.Brainf ** k,
3355311315981178782 BytesWelche Sprache ist das?
Hier ist die handoptimierte Version mit 28 Loops. Ich glaube, ich bin so weit gegangen, wie es gehen wird.
Hier ist der Lauf bei ideone.com :
Wie funktioniert das?
Dieses Programm verwendet 10 Speicherplätze:
Linie 1
+++[>++++<-]
. Das Endergebnis ist, dass Register 0 0 ist und Register 1 12 ist."0"
am oberen Rand der Flagge steht!Zeile 2
"|"
(ASCII 124) und ausgegeben wird."0"
(ASCII 48) in"-"
(ASCII 45) und gibt es aus.Zeile 3
" * "
5 mal." * "
wird geschrieben"#"
für insgesamt 32."#"
,"|"
und"\n"
sind geschrieben.Zeilen 4 - 11
Zeile 12
Zeile 13
"#"
siebenmal ausgeführt wird und jedes Mal achtmal durch die Schleife schreibt .Zeile 14
Zeile 15
" "
siebenmal ausgeführt wird und jedes Mal achtmal durch die Schleife schreibt .Zeile 16
Linie 17
Linie 18
Zeile 19
Zeile 20
"|"
und Zeilenumbruch zweimal durch die Schleife.quelle
/// : 225 Zeichen
quelle
JavaScript ( ES6 ), 153
156Unter Verwendung der Vorlagenzeichenfolge gibt es 1 Zeilenumbruch, der signifikant ist und gezählt wird
Teste das folgende Snippet (nur in EcmaScript 6, Firefox)
Um noch patriotischer zu sein, gibt es hier die EcmaScript 5-Version
quelle
Ruby,
104102 BytesMit Genehmigung Ideen aus der Ruby-Antwort von ManAtWork verwenden.
Ruby,
127 121112 BytesDie Anführungszeichen wurden in ein
?
verwendetes Array geändert, anstatt eine Bedingung für die Streifenfarbe zu setzen. wird als Bedingung anstelle der Formel für die Streifenlänge verwendet.Der Trick dabei ist, die Streifen (rot /
#
und weiß /space
) auf die richtige Länge zu zeichnen und sie dann richtig auszurichten und mit Sternen zu füllen. Ruby'srjust
können wir die Füllzeichenfolge angeben, die zwischen" * "
und wechselt" *"
.Originalversion, 127 Bytes
quelle
map
in der Mitte derputs
aber ich kann es nicht selbst verwenden, auch wenn ich es mit Klammern umgeben:puts((0.18).map{})
. Wenn Sie weitere Verbesserungen bemerken, lassen Sie es mich wissen oder machen Sie Ihre eigene Antwort rückgängig und posten Sie sie dort.rjust
eine Saite nehmen kann und nicht nur einen Buchstaben. Schade, dass Python das nicht kann ...SWI-Prolog, 275 Bytes
In einer Sprache französischer Herkunft, die irgendwie passt
Sehen Sie das Ergebnis hier
quelle
C
235,211,208205203198197186 Bytesedit: hat einige Vorschläge von Cool Guy hinzugefügt und?: verwendet, um einige if-Anweisungen zu ersetzen.
edit: Verhinderung von Überlauf \ 0 entfernt und stattdessen Zeichenkettenlängenbegrenzer in printf verwendet.
Bearbeiten: Beide Memset-Bedingungen wurden überarbeitet.
edit: verschobene Puts ("0") in der for-Kopfzeile, um das Semikolon zu entfernen.
edit: leichtes refactoring um 11 weitere bytes zu bekommen.
quelle
|
am Anfang jeder Zeile stehende zu drucken ...i;c(){puts("0");for(;i<37;i++){char b[58]="|";if(i<21){memset(b,!((i-1)%3)?35:32,56);if(i<10)memcpy(b," * * * * * * "+((i%2)?0:2),23);b[56]='|';}if(!i||i==20){memset(b,45,57);}puts(b);}}
45
anstelle von'-'
und35
anstelle von'#'
und32
anstelle von' '