Tulis sebuah program atau fungsi yang menarik suatu jajaran gunung, di mana setiap puncak gunung yang lebih besar berikutnya adalah "di belakang" yang ada di depan, dan bergantian sisi mana yang terlihat.
Ini adalah pegunungan dengan berbagai ukuran 1
/\
Ini adalah pegunungan dengan berbagai ukuran 2
/\
/\ \
Ini adalah pegunungan dengan berbagai ukuran 3
/\
/ /\
/ /\ \
Ini adalah pegunungan dengan berbagai ukuran 4
/\
/\ \
/ /\ \
/ /\ \ \
Ini adalah pegunungan dengan berbagai ukuran 5
/\
/ /\
/ /\ \
/ / /\ \
/ / /\ \ \
Dan seterusnya.
Memasukkan
Sebuah bilangan bulat positif dalam format yang nyaman , n > 0
.
Keluaran
Representasi seni ASCII dari pegunungan, mengikuti aturan di atas. Leading / trailing newlines atau spasi putih lainnya adalah opsional, asalkan puncak berbaris dengan tepat.
Aturan
- Program lengkap atau fungsi dapat diterima. Jika suatu fungsi, Anda dapat mengembalikan output daripada mencetaknya.
- Celah standar dilarang.
- Ini adalah kode-golf sehingga semua aturan golf biasa berlaku, dan kode terpendek (dalam byte) menang.
JavaScript (ES6), 75 byte
Program lengkap saat ini sedikit lebih pendek daripada fungsi rekursif:
sumber
Python 2, 67 byte
Mencetak baris demi baris, mengakumulasi string
s
dengan menambahkan garis miring ke kiri atau kanan berdasarkan pada paritas saat inin
. Awalan dengann
spasi.Cara alternatif untuk memperbarui adalah sama:
Metode rekursif lebih panjang (70 byte).
sumber
Haskell, 77 byte
Pemakaian:
Mencetak baris demi baris, mengakumulasi string dengan menambahkan slash ke kiri atau kanan secara bergantian berdasarkan paritas n saat ini. Awalan dengan spasi n-1.
sumber
Batch, 202 byte
Mengambil input sebagai parameter baris perintah. Jatuh untuk menjalankan loop terakhir.
sumber
Ruby, 61 byte
Port jawaban JavaScript ETHproduk yang cukup mudah .
Lihat di repl.it: https://repl.it/EPU5/1
Tidak disatukan
sumber
Haskell,
117 107 105 9790 byteCobalah di Ideone. Sunting: Disimpan 8 byte dengan sebuah ide dari Neil.
Versi tidak disatukan:
Pendekatan rekursif. Bentuk untuk
n
dihasilkan dengan menambahkan spasi di depan setiap barisn-1
bentuk dan mengambil baris terakhirn-1
dan menambahkan"/ "
sebelum jikan
ganjil atau" \"
setelah jikan
bahkan ... atau jadi saya pikir sebelum memperhatikan bahwa langkah terakhir ini terbalik untuk semua langkah rekursif ketika finaln
ganjil. Oleh karena itu benderab
dilewati yang bergantian setiap panggilan rekursif dan menentukan apakah bagian gunung berikutnya ditambahkan ke kiri atau kanan.sumber
b
untukodd n
setiap kali, Anda tidak hanya lulus bendera di pada awal dan flip itu pada setiap panggilan rekursif? Sesuatu sepertif n = unlines(p 0 n)
danlet m = p (1-b) (n-1)
.-b
adalah karakter lain.b
menjadi0
atau1
.Java 7.130 byte
Tidak disatukan
sumber
n%2
untukn--%2
, dan kedua--n
untukn
. Sunting: Dan 1 lagi dengan menambahkan,x=s+"\n"
dan mengubah keduanyas+"\n"
menjadix
. (Jadi total:String f(int n,String s){String l="",x=s+"\n";for(int i=1;i++<n;l+=" ");return n>1?n--%2<1?l+x+f(n,s+" \\"):l+x+f(n,"/ "+s):s;}
127 byte )C ++ 138 (fungsi)
Fungsi: -
Program lengkap: -
CATATAN: fungsi tersebut
_getch()
mungkin memiliki nama prototipe berbeda di berbagai kompiler.sumber