Tugas Anda adalah menulis program yang akan menggambar 800x600 gambar hitam-putih dengan sesuatu yang menyerupai hutan.
Seperti ini (ini foto yang membingungkan):
Aturan
- Anda dilarang menggunakan gambar yang ada - Anda harus menghasilkan gambar murni secara algoritmik
- Gunakan hanya 2 warna - hitam dan putih (tanpa skala abu-abu)
- Setiap kali program menjalankan gambar harus baru - acak setiap kali
- Satu pohon bukan hutan (misalkan 5 pohon minumum)
- Perpustakaan khusus untuk menggambar pohon / hutan dilarang
- Jawab dengan kemenangan terbanyak
Jawaban:
C:
386311441023999942927Solusi asli menyimpan 2 file pnm per run (satu dengan g ditambahkan, sebelum dithering). Karena dithering tidak cantik untuk beberapa baris pertama, ada retasan di tempat untuk membuat lebih banyak baris dari yang dibutuhkan, dan memotong selama output.
Solusi golf memiliki dithering lebih sederhana dan hanya menyimpan gambar dithered. (tidak ada peringatan dengan gcc -std = c11 -pedantic -Wall -Wextra)
Contoh gambar dari 3 running program asli dan satu running dari versi golf (gambar terakhir):
Versi golf
Versi asli
sumber
Hutan Jawa
(954 bermain golf)
Penuh dengan semak-semak yang dalam dan berliku-liku, ini adalah hutan yang tidak mudah dilalui.
Pada dasarnya ini adalah jalan acak fraktal dengan tanaman merambat yang berkelok-kelok dan perlahan menyusut. Saya menggambar 75 dari mereka, secara bertahap berubah dari putih di belakang menjadi hitam di depan. Lalu aku meratapi semuanya, tanpa malu-malu menyesuaikan kode Averroes di sini untuk itu.
Golf: (Hanya karena orang lain memutuskan untuk)
Kode asli sane:
Satu lagi? Baik! Yang ini memiliki dithering yang sedikit disetel, sehingga orang-orang kulit hitam di depan jauh lebih rata.
Sayangnya, dither tidak menunjukkan detail halus dari layer vine. Berikut adalah versi skala abu-abu, hanya untuk perbandingan:
sumber
Javascript + HTML - tidak golf
Porting javascript algoritma @Manuel Kansten - sungguh menakjubkan betapa bagusnya pohon-pohon ini.
Hanya untuk melakukan sesuatu yang berbeda, saya menggambar gambar dalam warna, lalu gentar ke b / w pada langkah terakhir.
Saya tidak tahu mengapa, tetapi hutan saya kurang gelap dan rasa takut yang kurang menakutkan terhadap Manuel.
Uji dengan JSfiddle atau jalankan Cuplikan baru di bawah ini. Itu TIDAK cepat. Bersabarlah dan saksikan hutan tumbuh.
sumber
Seni Bebas Konteks 3 (1133)
CF adalah bahasa render grafik vektor, jadi saya tidak bisa menghindari anti-alising. Saya mengerjakannya dengan menggambar persegi di tempat yang sama beberapa kali (variabel
N
). Kabut dilakukan dengan menggambar kotak kecil di tempat-tempat acak.Lebih banyak render menggunakan angka yang berbeda
sumber
C: 301
Program ini membuat gambar abstrak sederhana dalam format PGM . Anda bisa membukanya dengan GIMP.
Ini adalah contoh run:
sumber
IFS dengan JAVA
Solusi ini menggunakan Iterated Function System (IFS) untuk menggambarkan satu (proto) pohon. IFS diterapkan 100 kali (= hutan). Sebelum setiap pohon dicat (ditanam di hutan) IFS diubah sedikit di tempatnya (gaya berjalan acak). Jadi setiap pohon terlihat sedikit berbeda.
Gambar berasal dari biji acak:
Tidak diperlukan dithering.
sumber
Saya perhatikan ada sedikit tumbuhan runjung di sini, jadi saya meretas sesuatu bersama-sama dengan Python.
Ini Golf Code pertamaku, sangat menyenangkan!
sumber
Jawaban ini tidak secantik yang saya harapkan, tetapi ini adalah batu loncatan menuju ide 3D yang sedang saya kerjakan, dan saya sangat menyukai ide untuk benar-benar mensimulasikan pohon mana yang mendapatkan sumber daya
sumber