Anda diberikan sebagai input gambar skala abu-abu. Tugas Anda adalah menemukan pola statis atau pengulangan di Game of Life Conway yang menyerupai gambar input sedekat mungkin.
Output Anda dapat berupa gambar diam atau animasi looping dalam beberapa format yang dapat dikonversi ke gif. Dimensi gambar output harus sama dengan input, dan hanya boleh mengandung piksel hitam dan putih.
Jika output adalah animasi, setiap frame harus dihasilkan dari yang sebelumnya sesuai dengan aturan Game of Life, dengan satu sel per piksel. Animasi harus berulang, dengan frame pertama dihasilkan dari frame terakhir dengan aturan yang sama.
Jika output adalah gambar diam, menerapkan aturan game-of-life untuk itu harus menghasilkan gambar yang sama. Ini berarti bahwa tidak ada sel 'hidup' dapat memiliki lebih dari tiga atau kurang dari dua tetangga 'hidup', dan tidak ada sel 'mati' mungkin memiliki tiga tetangga 'hidup'. (Perhatikan bahwa ini pada dasarnya sama dengan animasi seperti dijelaskan di atas, tetapi hanya dengan satu bingkai.)
Aturan dan klarifikasi tambahan:
Anda (atau program Anda) dapat memilih apakah sel 'hidup' direpresentasikan sebagai putih dan 'mati' sebagai hitam, atau sebaliknya. Yaitu, Anda dapat membuat hard-code ini atau program Anda dapat memilihnya berdasarkan gambar input. (Tapi itu harus sama untuk setiap frame animasi.)
Kondisi batas harus berkala, artinya sel di kolom paling kanan memiliki tetangga di kolom paling kiri, dll.
Untuk animasi, kecepatan bingkai terserah Anda (atau program Anda); Saya membayangkan frame rate cepat akan bekerja dengan baik untuk perkiraan piksel abu-abu.
Silakan kirim setidaknya dua hasil yang tertanam dalam jawaban Anda. Jika Anda dapat memposting hasil dari semua gambar input di bawah ini, lebih disukai.
Dapat diterima untuk memperkecil gambar uji jika ini diperlukan untuk mencapai gif dengan ukuran file yang cukup kecil. Jika Anda ingin menautkan ke file yang lebih besar juga, itu tidak masalah. Jika Anda ingin pamer, silakan cari beberapa file sumber beresolusi tinggi.
Cobalah untuk menghindari memiliki terlalu banyak parameter yang dapat dikontrol dalam kode Anda - yang terbaik adalah jika input program Anda hanyalah gambar. Pengecualiannya adalah jika Anda ingin memiliki parameter untuk mengontrol jumlah frame animasi, karena itu akan mempengaruhi ukuran file.
Anda dapat menggunakan program eksternal untuk mengubah format file input dan output, dan / atau mengkompilasi frame output menjadi animasi jika Anda mau. (Ini bukan tantangan penanganan format file.)
Ini adalah kontes popularitas , jadi jawaban dengan suara terbanyak menang.
Berikut ini adalah pilihan gambar uji, sebagian besar diambil dari pertanyaan lain di situs ini. (Mungkin saya akan menambahkan gambar input "bonus" tambahan nanti.)
Hanya untuk memulai, inilah upaya referensi yang sangat bodoh di Python 2, yang memanfaatkan fakta bahwa blok empat kotak adalah struktur yang stabil dalam Game of Life. Itu hanya mengubah gambar input dengan faktor 4, kemudian menggambar blok jika pixel yang sesuai lebih gelap dari 0,5.
from skimage import io
from skimage import transform
import sys
img = io.imread(sys.argv[1],as_grey=True)
source = transform.resize(img, [i/4 for i in img.shape])
img[:]=1
for x in xrange(source.shape[0]):
for y in xrange(source.shape[1]):
if source[x,y]<0.5:
img[x*4, y*4] = 0
img[x*4+1, y*4] = 0
img[x*4, y*4+1] = 0
img[x*4+1, y*4+1] = 0
io.imsave(sys.argv[2], img)
Berikut adalah beberapa output dari kode contoh. Saya yakin hasil yang jauh lebih baik dimungkinkan.
Jawaban:
Python
Silakan juling:
Perangko kode pada piksel paling putih dengan standar masih hidup pas . Ada argumen cut-off sehingga Anda bisa memutuskan apakah pembulatan ke ambang hitam-putih berjalan. Saya telah bereksperimen dengan hidup-putih dan hasilnya hampir sama.
sumber
#Python
Jawa
Pendekatan berbasis deteksi tepi. Membutuhkan file teks ini di direktori yang sedang berjalan.
Beberapa hasil:
sumber
C ++
Pendekatan pixelation langsung menggunakan rata-rata setiap grid 8x8 untuk memilih grid output 8x8 ("tekstur warna"). Setiap kisi keluaran 8x8 memiliki pemisah 2 sel di bagian atas dan kanan. Kisi dirancang mulai dari 4 sel masih hidup hingga 18 sel masih hidup dalam sisa 6x6 piksel.
Program ini bertindak sebagai filter dari PGM biner ke PBM biner. Secara default, gambar "gelap"; hitam adalah maut dan putih adalah kehidupan;
-i
membalikkan ini.-g [value]
menambahkan gamma, yang digunakan untuk rata-rata pra-berat sebelum memilih tekstur warna.Hasil yang dipilih (catatan: semua pbm dikonversi ke png menggunakan program pihak ketiga untuk diunggah):
Escher, gamma 2.2
Mona Lisa, gamma 2.2
Lautan, gamma 2.2 terbalik
Anak anjing, gamma 2.2
Pengkhianatan Gambar, gamma 2.2 terbalik
Mona Lisa gamma 2.2, terbalik, untuk perbandingan
sumber