Wprowadzenie:
(Źródło: Wikipedia )
Kiedy spojrzymy na tęczę, zawsze będzie miała kolory od góry do dołu:
Czerwony; Pomarańczowy; żółty; Zielony; niebieski; indygo; fioletowy
Jeśli spojrzymy na te pojedyncze pierścienie, czerwony pierścień jest oczywiście większy niż pierścień fioletowy.
Ponadto możliwe jest jednoczesne posiadanie dwóch lub nawet trzech tęcz.
Wszystkie powyższe kombinacje zostaną wykorzystane w tym wyzwaniu:
Wyzwanie:
Biorąc pod uwagę liczbę całkowitą n
, wyprowadzaj tyle pierścieni (prawdopodobnie więcej niż jednej) „tęczy”, w której użyjemy liter vibgyor
dla kolorów.
Zobacz przypadki testowe poniżej, aby zobaczyć, jak są one zbudowane w górę n=1
i jak należy zachować odstępy (at n=8
). Jak widać, między dwiema tęczami dodaje się jedno miejsce, w tym odstępy u góry, zanim dodamy pierścień następnej tęczy w linii.
Zasady konkursu:
- Możesz używać kapitału
VIBGYOR
zamiast małych liter - Pomiędzy poszczególnymi tęczami powinna być przestrzeń
- Dozwolona jest dowolna liczba wiodących i / lub końcowych spacji / nowych linii, o ile rzeczywista tęcza (gdziekolwiek jest umieszczona na ekranie) jest poprawna
- Dane wejściowe zawsze będą dodatnimi liczbami całkowitymi (
>= 1
). Zachowanien=0
jest wtedy niezdefiniowane, a program / funkcja może robić, co chce (nic nien=1
generować; generować tęczę ; losowe wyjście; zawodzić z błędem itp.) - Jeśli chcesz, możesz wypisać listę / tablicę ciągów lub tablicę 2D / listę znaków (możesz dodać rzeczywisty ładny kod drukujący w stopce TIO).
- Zignoruj fakt, że wyniki bardziej przypominają świątynie Majów niż tęcze .. xD
Główne zasady:
- To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach.
Nie pozwól, aby języki kod-golfowe zniechęcały Cię do publikowania odpowiedzi w językach niekodujących golfa. Spróbuj znaleźć możliwie najkrótszą odpowiedź na „dowolny” język programowania. - Do odpowiedzi mają zastosowanie standardowe reguły , więc możesz używać STDIN / STDOUT, funkcji / metody z odpowiednimi parametrami i zwracanymi typami, pełnych programów. Twoja decyzja.
- Domyślne luki są zabronione.
- Jeśli to możliwe, dodaj link z testem swojego kodu.
- Zalecane jest również dodanie wyjaśnienia do odpowiedzi.
Przypadki testowe (od pierwszego n=1
do n=10
i 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
Odpowiedzi:
Python 2 ,
848281 bajtów-2 bajty dzięki ElPedro.
Wypróbuj online!
źródło
JavaScript (ES6), 100 bajtów
Zwraca tablicę ciągów.
Wypróbuj online!
źródło
05AB1E ,
323123 bajtówWypróbuj online!
-1 dzięki Kevin Cruijssen i -8 dzięki Adnan
Objaśnienie (Przykład stosu z wejściem 3):
źródło
"vibgyor"
można zagrać w golfa o 1 bajt do.•2Bãθ(•
. ( Tutaj wyjaśnienie znajduje się w części „ Jak kompresować ciągi znaków nie będące częścią słownika? ”). Ponadto„vr…v r:ð«
można grać w golfa'v„v .:
. Więc 28 bajtów . Dobra odpowiedź, +1 ode mnie..••
nie uratuje bajtu. Liczby, w których za jednym razem nie sprawdzam, to czas, który oszczędziłby bajty xD. Dobry połów.•VvÈ©•¹∍¬„ v:Rηε¬ý}.c
¬ý
jest genialny ... Jezu ... Myślisz inaczej i to jest niesamowite.Płótno ,
292826 bajtówWypróbuj tutaj!
Wyjaśnienie:
252422 bajtów po ustaleniu, że should stary powinien się cyklicznie, jeśli pożądana długość jest większa niż długość wejściowa i ustalenie/
po raz dziesiątyźródło
v
sideways (<
)? Czyv
słowo Canvas jest już zarezerwowanym słowem kluczowym, jeśli tak, dlaczego nie użyć go<
jako tego odwróconego słowa kluczowego?<
obrócony o 90 ° w lewo jest równyv
: P Wszystkie ASCII są częścią ciągów w Canvas btwv
tu użył , a następnie obrócisz go o 90 stopni przeciwnie do ruchu wskazówek zegara,>
zamiast tego będzie . Widzę. : DHaskell ,
114110101 bajtówDzięki [nimi] [1] za -
413 bajtów!Wypróbuj online!
źródło
Dyalog APL ,
413938 bajtówWypróbuj online!
Podobne podejście do innych:
A←⌈⎕×8÷7
wyszukuje wysokość tęczy (również szerokość najdłuższego „pół rzędu” po lewej / prawej stronie środka) i przypisuje ją doA
późniejszego użycia, podczas gdy¨-⍳
iteruje przez wartości 1..A, negując je, aby wybrać po właściwej stronie, jeśli są używane z↑
.A⍴' vibgyor'
generuje „pół wiersz” i⍵↑
wybiera podciąg o właściwej długości.(⌽,⊃,A↑⊢)
generuje pełny wiersz w odwrotnej kolejności (co wymaga mniejszej liczby znaków), zaczynając od odwróconego pół wiersza (⌽
), następnie znak środkowy pobrany z początku ciągu pół wiersza (⊃
), a na końcu odpowiednio wypełniona wersja pół wiersza (A↑⊢
). Końcowy⌽
odwraca wiersz do prawidłowej orientacji i↑
przekształca wektor wierszy w tablicę 2D.Edycja: -2 dzięki dzaima
Edycja: -1 dzięki ngn
źródło
⍕⍪
z↑
- wyprowadzanie tablicę 2D znaków jest dozwolone1+÷7
->8÷7
Python 2 , 108 bajtów
Wypróbuj online!
źródło
Węgiel drzewny , 30 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:
Zmień kierunek rysowania w górę.
Oblicz wysokość tęczy i powtórz literalny ciąg do tej długości.
Wydrukuj środkową linię tęczy.
Wydrukuj prawą połowę tęczy, biorąc kolejne plastry i drukując każdą na osobnej „linii”.
Zastanów się, aby ukończyć tęczę.
źródło
Galaretka , 31 bajtów
Wypróbuj online!
Sprawdź pakiet testowy!
ಠ_ಠ Jest to zbyt skomplikowane, ponieważ Jelly nie ma funkcji scentralizowanej ...
źródło
Galaretka , 28 bajtów
Łącze monadyczne akceptujące liczbę całkowitą, która daje listę list znaków.
Wypróbuj online! (stopka łączy się ze znakami nowej linii)
Lub zobacz pakiet testowy .
W jaki sposób?
źródło
R , 130 bajtów
Wypróbuj online!
źródło
Haskell , 106
113bajtówNie mogę jeszcze komentować innych postów (mianowicie tego ), więc muszę opublikować rozwiązanie jako osobną odpowiedź.
Grał w golfa 7 bajtów przez ovs
Wypróbuj online!
( Stara wersja , 113 bajtów)
źródło
PowerShell ,
108988985 bajtówWypróbuj online!
Ten wydaje się teraz całkiem w porządku. Zaokrąglanie przez bankiera wciąż jest diabłem i wymyśliłem, jak zrobić nieme połączenie. Próbowałem małpować za pomocą $ ofs, aby nie odnieść wielkiego sukcesu. Mówiąc o tym, wyniki bez złączeń wyglądają całkiem nieźle, trochę melanżowo:
źródło
Python 2 ,
132131 bajtówWypróbuj online!
Zapisano:
źródło
//
w Python 2?Czerwony , 153 bajty
Wypróbuj online!
Nieco bardziej czytelny:
źródło
Java (JDK 10) , 184 bajty
Wypróbuj online!
Drukuje dodatkowe wiodące i końcowe miejsce dla każdej wielokrotności 7.
Wyjaśnienie
Kredyty
źródło
,w=-~h*2+1,i=h+1
na,i=h+1,w=i*2+1
i-~i
zamiasti*2+1
Stax , 23 bajty
Uruchom i debuguj
Rozpakowane, niepolowane i skomentowane, wygląda to tak.
Uruchom ten
źródło