Hasilkan peta hutan belantara ASCII.
Contoh output:
................^^^^
..................^^
...^^^^........o....
.....^^^^...........
....................
........o....TT.....
..TTTT..............
TTTT.TTTT....~~~~~~.
..TT..........~~~~~~
....................
Anti-contoh (jangan lakukan ini):
....................
...........T........
...^..........oo....
......^.............
....................
..............TT....
T.T.T.T.T........T..
.................T..
T.T.T.T.T..........T
..............TT...T
Aturan:
- Harus berukuran setidaknya 20x10 karakter
- Harus berbeda setiap kali dijalankan, yaitu acak
- Harus mengandung bidang bentuk 'T', bukit '^' dan air 'pohon yang kontinu dan bervariasi, yang sebagian besar terdiri dari lebih dari 5 sel.
- Default, karakter dasar adalah '.'
- Harus mengandung setidaknya 2 desa 'o' yang biasanya tidak bersebelahan
- Harus tidak mengandung pola yang jelas, seperti persegi panjang atau area yang berjarak sama - "tampilan alami" adalah kuncinya
- Anda tidak perlu memeriksa secara eksplisit bahwa aturan diikuti (mis. Tidak perlu logika anti-persegi panjang), tetapi sebagian besar proses (misalnya, 80%) harus menghasilkan hasil yang sesuai
- Dengan kiriman Anda, sertakan contoh output
Mencetak:
Pemenang memiliki skor terendah dari rumus: code character count
-votes
code-golf
ascii-art
random
generation
Tapio
sumber
sumber
Jawaban:
APL (
9976)Sedikit lebih lama dari yang seharusnya (sehingga memberikan hasil yang lebih baik) tetapi saya akan mempersingkat ketika jawaban Golfscript masukJawaban GolfScript telah diposting jadi inilah yang lebih pendek. Saya memikirkan cara lain (agak jelas, di belakang) untuk mempersingkat sehingga output tidak jauh lebih buruk daripada program asli, dan bahkan lebih pendek dari rencana cadangan asli saya.
(Dalam versi yang lama, saya memiliki lima bitfield yang saya xor satu sama lain, sekarang saya memiliki tiga bit yang saya tambahkan satu sama lain.)
Saya telah mengganti contoh output dengan output dari versi baru, tentu saja.
Penjelasan:
F←⍳S←10 20
: ukuran adalah 20x10, F adalah matriks di mana setiap elemen adalah koordinatnya{F∊(?S)∘+¨+\{2-?3 3}¨⍳99}¨T←⍳5
: menghasilkan 3 bitfield, dengan mulai dari koordinat acak, dan mengambil 99 langkah acak ke bidang tetangga dan kemudian menyetel bit itu. 99 terlihat tinggi tetapi sering kali backtracks karena acak. Ini membuat peta untuk area.(⊂7×F∊{?S}¨⍳2)
: Tambahkan dua desa.⊃7⌊1++/
: jumlah area, memberikan matriks di mana setiap angka mewakili tipe tertentu. Tutupi angka 7, karena desa-desa mungkin muncul di daerah lain dengan angka tinggi.'.T^~^To'[
...]
: ganti setiap nomor dengan karakter yang tepat. Ada 3 bidang yang mungkin tumpang tindih sehingga nilai tertinggi yang mungkin adalah 6. (3 + 3)Contoh output:
dan
Versi lama:
sumber
JavaScript -
294290 karakterUntuk mendorong upaya, saya mengambil celah sendiri. Anda dapat mencoba demo langsung di sini (Anda perlu membuka konsol JS browser Anda). Diuji dengan Chrome dan IE8.
Contoh output:
Ini tidak ideal, karena selalu ada hanya tiga area (satu dari setiap jenis), ukuran maksimumnya adalah 5x2 sel dan setelah beberapa kali berjalan, Anda mulai melihat keterbatasan dalam penempatan (dan desa) mereka. Namun, itu memenuhi aturan.
sumber
GolfScript, 97 karakter
Output contoh:
dan
sumber
Ruby 1.9 (
127116112107)Outputnya agak polos, tapi saya pikir sebagian besar memenuhi spesifikasi!
Beberapa contoh keluaran:
Lain:
Dan lagi:
Karena cara kode itu, hampir selalu ada pohon tunggal. Saya suka membayangkan itu pohon Deku.sumber
Q (
116107 char)Ini satu di Q
Output sampel
dan
dan
Saya dapat men-tweak matriks stokastik untuk mempengaruhi output tapi saya pikir di atas sesuai dengan apa yang Anda cari.
/ edit: output tweak
/ edit: pengurangan jumlah char dengan hanya menambahkan 2 desa
sumber
K, 84
Keluaran:
dan
sumber