Einführung:
(Quelle: Wikipedia )
Wenn wir einen Regenbogen betrachten, hat er immer die Farben von oben nach unten:
Rot; Orange; Gelb; Grün; Blau; Indigo; violett
Wenn wir uns diese einzelnen Ringe ansehen, ist der rote Ring natürlich größer als der violette Ring.
Darüber hinaus ist es auch möglich, zwei oder sogar drei Regenbogen gleichzeitig zu haben.
All dies oben kombiniert wird in dieser Herausforderung verwendet:
Herausforderung:
Bei einer gegebenen Ganzzahl n
geben Sie die Anzahl der Ringe des (möglicherweise mehr als einen) "Regenbogens" aus, wobei wir die Buchstaben vibgyor
für die Farben verwenden.
Sehen Sie sich die folgenden Testfälle an, um zu sehen, wie sie aufgebaut sind n=1
und wie mit dem Abstand umgegangen werden solln=8
) . Wie Sie sehen, wird ein Leerzeichen zwischen zwei Regenbogen eingefügt, einschließlich des Abstands oben, bevor der Ring des nächsten Regenbogens in der Zeile eingefügt wird.
Herausforderungsregeln:
- Sie dürfen Kapital
VIBGYOR
anstelle von Kleinbuchstaben verwenden - Zwischen den einzelnen Regenbögen sollte ein Abstand sein
- Jede Menge von führenden und / oder nachfolgenden Leerzeichen / Zeilenumbrüchen ist zulässig, solange der tatsächliche Regenbogen (wo immer er auf dem Bildschirm platziert ist) korrekt ist
- Die Eingabe ist immer eine positive Ganzzahl (
>= 1
). Das Verhaltenn=0
ist daher undefiniert, und das Programm / die Funktion kann tun, was immer es will (nichts ausgeben; den Regenbogen ausgebenn=1
; zufällige Ausgabe; mit einem Fehler scheitern usw.). - Wenn Sie möchten, können Sie eine Liste / ein Array von Zeichenfolgen oder ein 2D-Array / eine Liste von Zeichen ausgeben (Sie können den eigentlichen Pretty-Printing-Code in die TIO-Fußzeile einfügen).
- Ignorieren Sie die Tatsache, dass die Ausgänge eher Mayatempeln als Regenbogen ähneln. XD
Allgemeine Regeln:
- Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes.
Lassen Sie sich von Code-Golf-Sprachen nicht davon abhalten, Antworten mit Nicht-Codegolf-Sprachen zu veröffentlichen. Versuchen Sie, für jede Programmiersprache eine möglichst kurze Antwort zu finden. - Für Ihre Antwort gelten Standardregeln. Daher dürfen Sie STDIN / STDOUT, Funktionen / Methoden mit den richtigen Parametern und vollständige Programme vom Rückgabetyp verwenden. Ihr Anruf.
- Standardlücken sind verboten.
- Fügen Sie nach Möglichkeit einen Link mit einem Test für Ihren Code hinzu.
- Es wird außerdem dringend empfohlen, eine Erklärung für Ihre Antwort hinzuzufügen.
Testfälle (zuerst n=1
bis n=10
und n=25
):
1:
vvv
v v
2:
iii
ivvvi
iv vi
3:
bbb
biiib
bivvvib
biv vib
4:
ggg
gbbbg
gbiiibg
gbivvvibg
gbiv vibg
5:
yyy
ygggy
ygbbbgy
ygbiiibgy
ygbivvvibgy
ygbiv vibgy
6:
ooo
oyyyo
oygggyo
oygbbbgyo
oygbiiibgyo
oygbivvvibgyo
oygbiv vibgyo
7:
rrr
rooor
royyyor
roygggyor
roygbbbgyor
roygbiiibgyor
roygbivvvibgyor
roygbiv vibgyor
8:
vvv
v v
v rrr v
v rooor v
v royyyor v
v roygggyor v
v roygbbbgyor v
v roygbiiibgyor v
v roygbivvvibgyor v
v roygbiv vibgyor v
9:
iii
ivvvi
iv vi
iv rrr vi
iv rooor vi
iv royyyor vi
iv roygggyor vi
iv roygbbbgyor vi
iv roygbiiibgyor vi
iv roygbivvvibgyor vi
iv roygbiv vibgyor vi
10:
bbb
biiib
bivvvib
biv vib
biv rrr vib
biv rooor vib
biv royyyor vib
biv roygggyor vib
biv roygbbbgyor vib
biv roygbiiibgyor vib
biv roygbivvvibgyor vib
biv roygbiv vibgyor vib
25:
ggg
gbbbg
gbiiibg
gbivvvibg
gbiv vibg
gbiv rrr vibg
gbiv rooor vibg
gbiv royyyor vibg
gbiv roygggyor vibg
gbiv roygbbbgyor vibg
gbiv roygbiiibgyor vibg
gbiv roygbivvvibgyor vibg
gbiv roygbiv vibgyor vibg
gbiv roygbiv rrr vibgyor vibg
gbiv roygbiv rooor vibgyor vibg
gbiv roygbiv royyyor vibgyor vibg
gbiv roygbiv roygggyor vibgyor vibg
gbiv roygbiv roygbbbgyor vibgyor vibg
gbiv roygbiv roygbiiibgyor vibgyor vibg
gbiv roygbiv roygbivvvibgyor vibgyor vibg
gbiv roygbiv roygbiv vibgyor vibgyor vibg
gbiv roygbiv roygbiv rrr vibgyor vibgyor vibg
gbiv roygbiv roygbiv rooor vibgyor vibgyor vibg
gbiv roygbiv roygbiv royyyor vibgyor vibgyor vibg
gbiv roygbiv roygbiv roygggyor vibgyor vibgyor vibg
gbiv roygbiv roygbiv roygbbbgyor vibgyor vibgyor vibg
gbiv roygbiv roygbiv roygbiiibgyor vibgyor vibgyor vibg
gbiv roygbiv roygbiv roygbivvvibgyor vibgyor vibgyor vibg
gbiv roygbiv roygbiv roygbiv vibgyor vibgyor vibgyor vibg
Antworten:
Python 2 ,
848281 Bytes-2 Bytes dank ElPedro.
Probieren Sie es online!
quelle
JavaScript (ES6), 100 Byte
Gibt ein Array von Zeichenfolgen zurück.
Probieren Sie es online!
quelle
05AB1E ,
323123 BytesProbieren Sie es online!
-1 dank Kevin Cruijssen und -8 dank Adnan
Erläuterung (Stack-Beispiel mit Eingabe von 3):
quelle
"vibgyor"
kann von 1 Byte bis Golf gespielt werden.•2Bãθ(•
. ( Hier die Erklärung dazu im Abschnitt " Wie komprimiere„vr…v r:ð«
ich Saiten, die nicht Teil des Wörterbuchs sind? ")'v„v .:
. Also 28 Bytes . Gute Antwort, +1 von mir..••
kein Byte retten würde. Die Zahlen der einmal überprüfe ich eigentlich gar nicht die Zeit ist , Bytes xD retten würde. Guter Fang.•VvÈ©•¹∍¬„ v:Rηε¬ý}.c
¬ý
ist auch genial ... Herrgott ... Du denkst so anders und es ist großartig.Canvas ,
292826 BytesProbieren Sie es hier aus!
Erläuterung:
252422 Bytes nach dem Korrigieren sollte das mold zyklisch ablaufen, wenn die gewünschte Länge größer als die Länge der Eingaben ist, und das Korrigieren/
zum zehnten Malquelle
v
Seite aus Neugier (<
)? Befindet sichv
bereits ein reserviertes Schlüsselwort in Canvas, wenn ja, warum nicht<
stattdessen dieses umgekehrte Schlüsselwort verwenden?<
90 ° gedreht gegen den Uhrzeigersinn entsprichtv
: P Alle ASCII sind Teil - Strings in Canvas btwv
hättest und du es dann um 90 Grad gegen den Uhrzeigersinn drehst, wird es>
stattdessen. Aha. : DHaskell ,
114110101 BytesDanke an [nimi] [1] für -
413 Bytes!Probieren Sie es online!
quelle
Dyalog APL ,
413938 BytesProbieren Sie es online!
Ein ähnlicher Ansatz für andere:
A←⌈⎕×8÷7
Ermittelt die Höhe des Regenbogens (auch die Breite der längsten "halben Reihe" links / rechts von der Mitte) und weist sie zurA
späteren Verwendung zu, während¨-⍳
die Werte durchlaufen werden 1..A, Negieren Sie sie, um bei Verwendung mit die richtige Seite auszuwählen↑
.A⍴' vibgyor'
generiert eine 'halbe Zeile' und⍵↑
wählt die richtige Länge der Teilzeichenfolge aus.(⌽,⊃,A↑⊢)
Erzeugt die vollständige Zeile in umgekehrter Reihenfolge (was weniger Zeichen erfordert), beginnend mit einer umgekehrten halben Zeile (⌽
) und dann dem mittleren Zeichen, das am Anfang der halben Zeichenfolge steht (⊃
) und schließlich einer rechts gepolsterten Version der halben Zeile ().A↑⊢
). Das Finale⌽
kehrt die Zeile in die richtige Ausrichtung um und↑
verwandelt den Vektor der Zeilen in ein 2D-Array.Bearbeiten: -2 dank dzaima
Edit: -1 danke an ngn
quelle
⍕⍪
durch↑
- die Ausgabe eines 2D-Arrays von Zeichen ist zulässig1+÷7
->8÷7
Python 2 , 108 Bytes
Probieren Sie es online!
quelle
Kohle , 30 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung:
Ändern Sie die Zeichenrichtung nach oben.
Berechnen Sie die Höhe des Regenbogens und wiederholen Sie die Zeichenfolge auf diese Länge.
Drucken Sie die Mittellinie des Regenbogens.
Drucken Sie die rechte Hälfte des Regenbogens, indem Sie aufeinanderfolgende Scheiben nehmen und jede auf eine eigene "Linie" drucken.
Überlege, um den Regenbogen zu vervollständigen.
quelle
Gelee , 31 Bytes
Probieren Sie es online!
Testen Sie eine Testsuite!
ಠ_ಠ Das ist zu kompliziert, weil Jelly keine Zentralisierungsfunktion hat ...
quelle
Gelee , 28 Bytes
Ein monadischer Link, der eine Ganzzahl akzeptiert, die eine Liste von Zeichenlisten liefert.
Probieren Sie es online! (Fußzeile wird mit Zeilenumbruchzeichen verbunden)
Oder sehen Sie sich die Testsuite an .
Wie?
quelle
R , 130 Bytes
Probieren Sie es online!
quelle
Haskell , 106
113BytesIch kann noch keine anderen Beiträge kommentieren (nämlich diesen ), daher muss ich die Lösung als separate Antwort posten.
7 Bytes von Ovs weggolfen
Probieren Sie es online!
( Alte Version , 113 Bytes)
quelle
PowerShell ,
108988985 ByteProbieren Sie es online!
Diesem geht es jetzt ziemlich gut. Bankers Rundung ist immer noch der Teufel und ich fand heraus, wie man eine nicht dumme Verbindung macht. Ich habe versucht, Affen mit $ ofs nicht viel Erfolg. Apropos, die Ergebnisse ohne Joins sehen ziemlich gut aus, ein bisschen schmelzig:
quelle
Python 2 ,
132131 BytesProbieren Sie es online!
Gerettet:
quelle
//
in Python 2?Rot , 153 Bytes
Probieren Sie es online!
Etwas besser lesbar:
quelle
Java (JDK 10) , 184 Byte
Probieren Sie es online!
Gibt für jedes Vielfache von 7 ein zusätzliches vorangestelltes und nachfolgendes Leerzeichen aus.
Erläuterung
Credits
quelle
,w=-~h*2+1,i=h+1
zu ",i=h+1,w=i*2+1
i-~i
stattdessen vori*2+1
Stax , 23 Bytes
Führen Sie es aus, und debuggen Sie es
Ausgepackt, ungolfed und kommentiert sieht es so aus.
Führen Sie dieses aus
quelle