Pengantar:
(Sumber: Wikipedia )
Ketika kita melihat pelangi ia akan selalu memiliki warna dari atas ke bawah:
Merah; jeruk; kuning; hijau; biru; nila; violet
Jika kita melihat masing-masing cincin, cincin merah tentu saja lebih besar dari cincin ungu.
Selain itu, juga dimungkinkan untuk memiliki dua atau bahkan tiga pelangi secara bersamaan.
Semua gabungan di atas akan digunakan dalam tantangan ini:
Tantangan:
Diberikan bilangan bulat n
, mengeluarkan banyak cincin dari (mungkin lebih dari satu) 'pelangi', tempat kami akan menggunakan huruf vibgyor
untuk warna.
Lihat kotak uji di bawah ini untuk melihat bagaimana mereka dibangun ke atas n=1
, dan bagaimana ruang harus ditangani (at n=8
). Seperti yang Anda lihat, satu spasi ditambahkan di antara dua pelangi, termasuk spasi di bagian atas, sebelum kita menambahkan cincin pelangi berikutnya dalam barisan.
Aturan tantangan:
- Anda diizinkan menggunakan modal
VIBGYOR
alih-alih huruf kecil - Harus ada ruang di antara masing-masing pelangi
- Jumlah ruang terdepan dan / atau trailing / garis baru diperbolehkan, selama pelangi sebenarnya (di mana pun ditempatkan di layar) sudah benar
- Input akan selalu berupa bilangan bulat positif (
>= 1
). Perilaku ketikan=0
karenanya tidak terdefinisi, dan program / fungsi dapat melakukan apa pun yang diinginkannya (tidak menghasilkan apa-apa; mengeluarkan pelangin=1
; output acak; gagal dengan kesalahan; dll.) - Anda diperbolehkan untuk mengeluarkan daftar / array string atau 2D array / daftar karakter jika Anda mau (Anda bisa menambahkan kode pencetakan cantik yang sebenarnya di footer TIO).
- Abaikan fakta bahwa output lebih mirip kuil Maya daripada pelangi .. xD
Aturan umum:
- Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang.
Jangan biarkan bahasa kode-golf mencegah Anda memposting jawaban dengan bahasa non-codegolf. Cobalah untuk memberikan jawaban sesingkat mungkin untuk bahasa pemrograman 'apa pun'. - Aturan standar berlaku untuk jawaban Anda, jadi Anda diperbolehkan menggunakan STDIN / STDOUT, fungsi / metode dengan parameter yang tepat dan tipe pengembalian, program penuh. Panggilanmu.
- Celah default tidak diperbolehkan.
- Jika memungkinkan, silakan tambahkan tautan dengan tes untuk kode Anda.
- Juga, menambahkan penjelasan untuk jawaban Anda sangat dianjurkan.
Uji kasus (pertama n=1
sampai n=10
, dan 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
Jawaban:
Python 2 ,
848281 byte-2 byte terima kasih kepada ElPedro.
Cobalah online!
sumber
JavaScript (ES6), 100 byte
Mengembalikan array string.
Cobalah online!
sumber
05AB1E ,
323123 byteCobalah online!
-1 berkat Kevin Cruijssen dan -8 terima kasih kepada Adnan
Penjelasan (Contoh tumpukan dengan input 3):
sumber
"vibgyor"
dapat golf dengan 1 byte ke.•2Bãθ(•
. ( Di sini penjelasan untuk itu di bagian " Bagaimana mengompres string bukan bagian dari kamus? ".) Selain itu,„vr…v r:ð«
dapat di-golf ke'v„v .:
. Jadi 28 byte . Jawaban yang bagus, +1 dari saya..••
tidak akan menghemat byte. Angka yang satu kali saya tidak benar-benar periksa adalah waktu itu akan menghemat byte xD. Tangkapan yang bagus.•VvÈ©•¹∍¬„ v:Rηε¬ý}.c
¬ý
jenius ... Astaga ... Anda berpikir begitu berbeda dan itu luar biasa.Kanvas ,
292826 byteCoba di sini!
Penjelasan:
252422 byte setelah memperbaiki bahwa shouldold harus berputar jika panjang yang diinginkan lebih besar dari panjang input dan memperbaiki/
seperti waktu ke-10sumber
v
sideways (<
)? Apakahv
sudah kata kunci yang dipesan di kanvas, jika demikian, mengapa tidak menggunakan<
sebagai kata kunci terbalik bukan?<
diputar 90 ° berlawanan arah jarum jam sama denganv
: P Semua ASCII adalah bagian dari string dalam Canvas btwv
sini, dan Anda kemudian memutarnya 90 derajat berlawanan arah jarum jam, itu menjadi>
sebaliknya. Saya melihat. : DHaskell ,
114110101 byteTerima kasih kepada [nimi] [1] untuk -
413 byte!Cobalah online!
sumber
Dyalog APL ,
413938 byteCobalah online!
Pendekatan serupa dengan yang lain:
A←⌈⎕×8÷7
menemukan ketinggian pelangi (juga lebar 'setengah baris' terpanjang di kiri / kanan tengah) dan menetapkannyaA
untuk digunakan nanti, sementara¨-⍳
iterasi melalui nilai-nilai 1..A, meniadakan mereka untuk memilih di sisi yang benar ketika digunakan dengan↑
.A⍴' vibgyor'
menghasilkan 'setengah baris' dan⍵↑
memilih substring panjang yang benar.(⌽,⊃,A↑⊢)
menghasilkan baris penuh secara terbalik (yang membutuhkan lebih sedikit karakter untuk dilakukan), dimulai dengan setengah baris terbalik (⌽
), kemudian karakter tengah diambil dari awal string setengah baris (⊃
) dan akhirnya versi empuk kanan setengah baris ()A↑⊢
). Final⌽
membalikkan baris menjadi orientasi yang benar dan↑
mengubah vektor baris menjadi array 2D.Sunting: -2 terima kasih kepada dzaima
Sunting: -1 terima kasih kepada ngn
sumber
⍕⍪
dengan↑
- mengeluarkan array karakter 2D diizinkan1+÷7
->8÷7
Python 2 , 108 byte
Cobalah online!
sumber
Arang , 30 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
Ubah arah gambar ke atas.
Hitung ketinggian pelangi dan ulangi string literal sejauh itu.
Cetak garis tengah pelangi.
Cetak bagian kanan pelangi dengan mengambil irisan yang berurutan dan mencetak masing-masing pada "garis" sendiri.
Refleksikan untuk melengkapi pelangi.
sumber
Jelly , 31 byte
Cobalah online!
Lihatlah suite tes!
ಠ_ಠ Ini terlalu rumit karena Jelly tidak memiliki fungsi terpusat ...
sumber
Jelly , 28 byte
Tautan monadik yang menerima bilangan bulat yang menghasilkan daftar daftar karakter.
Cobalah online! (footer bergabung dengan karakter baris baru)
Atau lihat test-suite .
Bagaimana?
sumber
R , 130 byte
Cobalah online!
sumber
Haskell , 106
113byteSaya belum dapat mengomentari postingan lain (yaitu ini ) jadi saya harus memposting solusinya sebagai jawaban terpisah.
Golf jauhnya 7 byte demi ov
Cobalah online!
( Versi lama , 113 byte)
sumber
PowerShell ,
108988985 byteCobalah online!
Yang ini terasa cukup baik-baik saja sekarang. Pembulatan Bankir masih iblis dan saya menemukan cara untuk membuat bergabung non-bodoh. Saya mencoba monyet dengan $ ofs untuk tidak terlalu sukses. Omong-omong, hasil tanpa bergabung terlihat cukup bagus, agak melty:
sumber
Python 2 ,
132131 byteCobalah online!
Diselamatkan:
sumber
//
dengan Python 2?Merah , 153 byte
Cobalah online!
Sedikit lebih mudah dibaca:
sumber
Java (JDK 10) , 184 byte
Cobalah online!
Mencetak ruang ekstra depan dan belakang untuk setiap kelipatan 7.
Penjelasan
Kredit
sumber
,w=-~h*2+1,i=h+1
ke,i=h+1,w=i*2+1
i-~i
alih-alihi*2+1
Stax , 23 byte
Jalankan dan debug itu
Dibongkar, tidak diserang, dan dikomentari, sepertinya ini.
Jalankan yang ini
sumber