Diese Herausforderung ist eine einfache ASCII-Kunst-Herausforderung, die von der Sonnenfinsternis am 21. August 2017 inspiriert wurde. Bei einer Eingabe 0 <= n <= 4
geben Sie die entsprechende Stufe der unten beschriebenen Sonnenfinsternis aus:
n=0:
*****
** **
* *
* *
** **
*******
n=1:
*****
** *****
* *******
* *******
** ******
*******
n=2:
*****
*********
***********
***********
***********
*******
n=3:
*****
***** **
******* *
******* *
****** **
*******
n=4:
*****
** **
* *
* *
** **
*******
Regeln
- Sie können 0 oder 1 Index angeben, was Sie gewählt haben.
- Die verwendeten Zeichen sind Leerzeichen und
*
Sie können jedes druckbare Zeichen für*
(außer Leerzeichen) verwenden. - Nachgestellte Leerzeichen sind optional (Sie können sie haben oder nicht haben).
- Dies ist Code-Golf , die niedrigste Byteanzahl ist der Gewinner.
*
" ... einschließlich Leerzeichen? ;)Antworten:
Python 2 ,
161149142135 BytesProbieren Sie es online!
-7 danke an Mr. Xcoder .
quelle
Charcoal ,
82815543 Bytes-38 Bytes dank Neil!
Probieren Sie es online! Link ist zur ausführlichen Version.
Ich habe es zum Teufel gemacht. : P
Ich werde wahrscheinlich um 40 Bytes herausgolfen.2638 Bytes ... Nah genug?quelle
PolygonHollow
. : P 2) Oh, schön. Vielen Dank!Zimtgummi , 70 Bytes
Hexdump:
Probieren Sie es online!
Ich habe so lange gewartet , um herauszufinden, wie man diese Sprache benutzt. : P
Also, Zimtgummi ist Bubblegum, aber es ist eher eine "echte" Sprache als Bubblegum.
Das erste Byte (
l
) setzt den Modus in den Wörterbuchmodus. Der Rest der Bytes ist die folgende komprimierte Zeichenfolge.Dies macht im Wesentlichen eine Nachschlagetabelle mit jedem einer Nummer zugewiesenen Text. Das Programm übernimmt dann die Eingabe und gibt den jeweiligen Text aus.
quelle
argument%4
oderargument&3
Bytes speichern?JavaScript (ES6),
103 bis102 ByteBearbeiten: 1 Byte dank @darrylyeo gespeichert.
quelle
*666777333*\n
in einer Variablen.SOGL V0.12 ,
4039 BytesProbieren Sie es hier aus!
quelle
VI, 108 Bytes
<CR>
ist derEnter
Hub,<C-?>
entsprichtControl + ?
, und<Esc>
zuEscape
offensichtlich. Diese zählen jeweils 1 Byte (siehe Meta ). Die Zeilenumbrüche in der Lösung dienen der Lesbarkeit. Nur<CR>
stellt echteEnter
Schlaganfällen.Eingang
Die Eingabedatei sollte nur 1 Zeichen enthalten
n
.Starten
VI sollte gestartet werden wie:
Erklärungen
Die Lösung besteht aus 3 Teilen. Ich werde zuerst den 2. Teil (2. Zeile) beschreiben, da dies am einfachsten zu erklären ist.
Die Sonne zeichnen
Der Befehl zum Zeichnen der Sonne lautet:
Die Sonne muss mit gezogen werden
,
*
,0
,1
und3
, wie folgt aus :Eine Symmetrie hätte dazu beigetragen, die Bytegröße dieses Teils zu reduzieren, aber das ist nicht so wichtig. Ich werde die ganze Zeile nicht erklären, aber das Muster
*****
wird verwendet, um die letzte Zeile auf einfache Weise zu generieren, und das Muster**1110333**
wurde als Referenz genommen, um die 3 anderen Zeilen zu generieren0
, die1
und enthalten3
.Es ist wichtig
0
,1
und3
für Sonne Teile zu verwenden, die gefüllt werden können (siehe nächste Erläuterungen). Das Zeichnen dieser Sonne dauert 55 Bytes und kann wahrscheinlich mit ein paar Tricks gespielt werden.Füllen Sie die Sonne nach
n
Um die Sonne richtig auszufüllen, müssen folgende Anweisungen befolgt werden:
n = 0
, dann0
,1
und3
(alle Ziffern) sollte ersetzt werden durchn = 1
, dann1
solltendie anderen Ziffern durch ersetzt werden
*
n = 2
, dann0
,1
und3
(alle Ziffern) sollte ersetzt werden durch*
n = 3
, dann3
solltendie anderen Ziffern durch ersetzt werden
*
n = 4
, dann0
,1
und3
(alle Ziffern) sollte ersetzt werden(wie
n = 0
)Daraus können wir schließen, dass folgende Substitutionen erforderlich sind:
( erste Ersetzung )
*
( zweite Ersetzung )Beachten Sie, dass "einige Ziffern" beispielsweise "keine Ziffern" bedeuten können
n = 2
. Und "alle anderen Ziffern" können auch "keine Ziffern" darstellen, wenn (n = 0
zum Beispiel) bereits alle Ziffern durch die erste Ersetzung ersetzt wurden .Die zweite Ersetzung kann leicht in 11 Bytes geschrieben werden :
Die erste Ersetzung hängt davon ab
n
, also müssen wir zuerst berechnen, welche Ziffern ersetzt werden sollen. Wenn ersetzte Zeichen im Register gespeichert sinda
, wird der Ersetzungsbefehl auch in 11 Bytes geschrieben :<C-r>a
wird durch den Inhalt des Registers ersetzt,a
wenn der Befehl eingegeben wird.Zur Berechnung des Werts von
a
lautet der Algorithmus gemäß den vorherigen Anweisungen (in Pseudocode):"X"
string wird verwendet, weil wennn = 2
keine Ziffern durch Leerzeichen ersetzt werden. Jede Zeichenfolge, die nicht die Sonne ist, kann hier verwendet werden, solange die erste Ersetzung nichts bewirkt.Dies könnte in 31 Bytes geschrieben werden :
Lösung
Ordnen Sie all diese Teile in der richtigen Reihenfolge an und Sie haben die Lösung:
quelle
PHP, 114 + 1 Bytes
+1 Byte für
-R
. Danke @Neil für den Hinweis.Verwendet einen Unterstrich für
*
, 0-indiziert. Laufen Sie als Pipe mit-nR
oder versuchen Sie es online .Benötigt PHP 5.5 oder neuer:
älteres PHP versteht die Indexierung von Literalstrings nicht (Analysefehler);
PHP 7.1 beschwert sich über nicht-numerische Werte (ersetzen
+$c
durch$c>0
, um sie zu beheben).quelle
" _"[$c*2>>$argn&1]
negative Verschiebungsparameter vermieden werden, wenn Sie es brauchen.Python 2 ,
170169 BytesProbieren Sie es online!
quelle
Python 2 , 181 Bytes
Probieren Sie es online!
Sehr naive Herangehensweise,
Golfspielen.quelle
Java 8,
225213211 BytesProbieren Sie es hier aus.
quelle
05AB1E , 46 Bytes
Probieren Sie es online!
quelle