คุณได้รับเมื่อป้อนรูปภาพ greyscale งานของคุณคือการหารูปแบบสแตติกหรือวนลูปในเกมแห่งชีวิตของคอนเวย์ที่มีลักษณะคล้ายกับภาพอินพุตให้ใกล้เคียงที่สุด
เอาต์พุตของคุณอาจเป็นภาพนิ่งหรือภาพเคลื่อนไหววนซ้ำในบางรูปแบบที่สามารถแปลงเป็น gif ขนาดภาพที่ส่งออกควรจะเหมือนกับอินพุทและจะต้องมีเพียงพิกเซลขาวดำ
หากเอาต์พุตเป็นภาพเคลื่อนไหวแต่ละเฟรมจะต้องสร้างขึ้นจากเฟรมก่อนหน้าตามกฎของเกมแห่งชีวิตโดยมีหนึ่งเซลล์ต่อพิกเซล ภาพเคลื่อนไหวจะต้องวนซ้ำโดยเฟรมแรกจะถูกสร้างจากเฟรมสุดท้ายด้วยกฎเดียวกัน
หากผลลัพธ์เป็นภาพนิ่งให้ใช้กฎของเกมแห่งชีวิตกับมันจะต้องผลิตภาพเดียวกัน ซึ่งหมายความว่าไม่มีเซลล์ 'ที่มีชีวิต' อาจมีเพื่อนบ้านที่มีชีวิตมากกว่าสามคนหรือน้อยกว่าสองคนและไม่มีเซลล์ที่ 'ตาย' อาจมีเพื่อนบ้านที่มีชีวิตสามคน (โปรดทราบว่านี่เป็นพื้นเดียวกันกับภาพเคลื่อนไหวตามที่อธิบายไว้ข้างต้น แต่มีเพียงหนึ่งเฟรมเท่านั้น)
กฎและการชี้แจงเพิ่มเติม:
คุณ (หรือโปรแกรมของคุณ) อาจเลือกว่าเซลล์ 'มีชีวิต' จะแสดงเป็นสีขาวและ 'ตาย' เป็นสีดำหรือในทางกลับกัน นั่นคือคุณสามารถใช้รหัสนี้หรือโปรแกรมของคุณสามารถเลือกได้ตามภาพอินพุต (แต่จะต้องเหมือนกันทุกเฟรมของภาพเคลื่อนไหว)
เงื่อนไขขอบเขตควรเป็นระยะซึ่งหมายความว่าเซลล์ในคอลัมน์ขวาสุดมีเพื่อนบ้านในคอลัมน์ซ้ายสุด ฯลฯ
สำหรับภาพเคลื่อนไหวอัตราเฟรมขึ้นอยู่กับคุณ (หรือโปรแกรมของคุณ) ฉันจินตนาการว่าอัตราเฟรมที่เร็วจะทำงานได้ดีสำหรับการประมาณพิกเซลสีเทา
โปรดโพสต์ผลลัพธ์อย่างน้อยสองรายการที่ฝังอยู่ในคำตอบของคุณ หากคุณสามารถโพสต์ผลลัพธ์จากภาพอินพุตทั้งหมดด้านล่างได้จะดีกว่า
สามารถลดขนาดภาพทดสอบได้หากจำเป็นเพื่อให้ได้ gif ที่มีขนาดไฟล์เล็กพอ หากคุณต้องการเชื่อมโยงไปยังไฟล์ที่มีขนาดใหญ่ขึ้นเช่นกันก็ไม่เป็นไร หากคุณต้องการอวดอย่าลังเลที่จะค้นหาไฟล์ต้นฉบับที่มีความละเอียดสูงกว่านี้
โปรดพยายามหลีกเลี่ยงการมีพารามิเตอร์ที่สามารถควบคุมได้มากเกินไปในรหัสของคุณ - จะดีที่สุดถ้าโปรแกรมของคุณใส่ภาพเท่านั้น ข้อยกเว้นคือถ้าคุณต้องการให้พารามิเตอร์สำหรับการควบคุมจำนวนเฟรมภาพเคลื่อนไหวเนื่องจากจะมีผลต่อขนาดไฟล์
คุณสามารถใช้โปรแกรมภายนอกเพื่อเปลี่ยนรูปแบบของไฟล์อินพุตและเอาต์พุตและ / หรือคอมไพล์เฟรมเอาต์พุตเป็นภาพเคลื่อนไหวได้หากคุณต้องการ (นี่ไม่ใช่ความท้าทายในการจัดการรูปแบบไฟล์)
นี่คือการประกวดความนิยมดังนั้นคำตอบที่ได้คะแนนมากที่สุดจะเป็นผู้ชนะ
นี่คือภาพทดสอบที่เลือกส่วนใหญ่นำมาจากคำถามอื่น ๆ ในเว็บไซต์นี้ (เป็นไปได้ว่าฉันจะเพิ่มภาพอินพุต "โบนัส" เพิ่มเติมในภายหลัง)
เพื่อเริ่มต้นสิ่งต่าง ๆ นี่เป็นความพยายามอ้างอิงที่โง่มากใน Python 2 ซึ่งใช้ประโยชน์จากความจริงที่ว่าบล็อกสี่เหลี่ยมสี่ช่องเป็นโครงสร้างที่มั่นคงใน Game of Life มันเพียงแค่ลดขนาดภาพอินพุตด้วยปัจจัย 4 แล้ววาดบล็อกถ้าพิกเซลที่เกี่ยวข้องนั้นมืดกว่า 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)
ต่อไปนี้เป็นผลลัพธ์บางส่วนจากโค้ดตัวอย่าง ฉันแน่ใจว่าจะได้ผลลัพธ์ที่ดีกว่ามาก