Pohon yang kita tanam memiliki beberapa aturan yang menentukan bagaimana mereka tumbuh:
Aturan Pertumbuhan:
- Pohon hanya terdiri dari cabang.
- Cabang terdiri dari kombinasi dari simbol-simbol berikut:
_
,\
,|
,/
, &_
Sebuah pohon dimulai sebagai satu cabang / batang vertikal tunggal (
|
) di tanah (_
):__________________|___________________
Makanan untuk pertumbuhan cabang berasal dari cahaya.
- Cahaya mulai pada intensitas 2 pada setiap titik di langit dan bergerak lurus ke bawah.
- Setiap cabang mampu memakan separuh cahaya yang tersedia untuknya dan sisanya melewati cabang yang lebih rendah.
- Dengan demikian, cabang tanpa cabang lain di atasnya akan mendapatkan 1 unit makanan ringan setiap musim, cabang dengan 1 cabang di atasnya akan mendapatkan 0,5 unit makanan setiap musim, dan secara umum cabang dengan n cabang di atasnya akan mendapatkan 1 / (2 ^ n) unit makanan setiap musim.
- Pada akhir setiap musim, makanan dijumlahkan dimulai dengan batang dan bergerak naik dan diubah menjadi cabang dan buah baru (menerapkan aturan berikut sampai cabang berubah menjadi buah atau memiliki kurang dari 1 unit makanan yang tersisa):
- Jika cabang memiliki kurang dari 1 unit makanan pada akhir musim, semua makanan untuk cabang itu disimpan di cabang itu sampai musim berikutnya.
- Jika cabang memiliki lebih dari atau sama dengan 1 unit makanan dan memiliki ruang untuk tumbuh, itu akan tumbuh secara acak cabang baru menggunakan pola pertumbuhan yang tersedia (lihat di bawah) dan menyimpan sisa makanan untuk musim berikutnya.
- Jika sebuah cabang memiliki> = 1 unit makanan, tidak ada tempat untuk tumbuh, dan memiliki cabang cabang, ia mendistribusikan makanan secara merata ke cabang-cabang cabangnya.
- Jika cabang memiliki> = 1 unit makanan, tidak ada tempat untuk tumbuh, dan tidak ada cabang cabang, itu menjadi buah (diwakili oleh
O
)
- Berikut adalah konfigurasi pertumbuhan yang mungkin
Konfigurasi Pertumbuhan:
_ \ | / _ _ \ | / \ | / _
| | | | | \ \ \ \ / / / / __ \_ |_ _| _/ __
--- Vertical Branches --- --- Diagonal Branches --- --- Horizontal Branches ---
Contoh pohon potensial:
\
/ /
\/O |___//
\_/ \//O\_/
\__/|\|_/
\|/
__________________|__________________
Memasukkan:
Program Anda harus dapat mengambil sebagai masukan daftar snapshot dari pohon yang ingin Anda lihat. Misalnya [10,20,50] berarti Anda ingin melihat pohon setelah 10 musim, 20 musim, dan 50 musim.
Keluaran:
Untuk setiap musim input, program Anda harus menampilkan musim dan kemudian gambar pohon di musim itu. Jika ini membantu, Anda dapat menentukan usia maksimum pohon, seperti 60, sehingga tinggi maksimum pohon 61, dan lebar maksimum 121, lalu selalu memperlihatkan pohon pada skala itu. Jika tidak, silakan skala gambar Anda ke pohon ukuran apa pun. Misalnya, jika inputnya [0,1,2,3], output Anda mungkin:
Season 0:
_|_
Season 1:
\
__|__
Season 2:
_
\|
___|___
Season 3:
|_/ _
\|
____|___
Pemenang
Setiap solusi harus memposting output dari program favorit coder dari program mereka dengan input [10,40]
, bersama dengan kode sumber mereka. Juga, SEMUA kriteria di atas harus dipenuhi untuk memenuhi syarat.
Pemenang akan menjadi kualifikasi dengan jumlah suara tertinggi.
Selamat mencoba dan selamat menanam !!!
sumber
Jawaban:
Python
Saya mengambil sedikit kebebasan dengan ini:
Output Sampel, 2 pohon
Sumber
Saya penasaran melihat solusi golf.
sumber
Python, 673 karakter
Ini versi golfnya:
sample @ 10 (terpotong ke bagian yang menarik):
contoh @ 40:
sumber
Javascript
UPD: Menambahkan beberapa aturan baru:
Ini bukan kode yang paling indah di javascript. Mungkin nanti akan ada beberapa perbaikan. Kode tentang JSFiddle
Beberapa contoh (10.40.100):
sumber