بازی زندگی کانوی (Conway's Game Of Life)
جان هورتون کانوی (John Horton Conway) ریاضی دانی بود که ایده یک بازی zero player جالب به اسم بازی زندگی رو داد . شاید سوال پیش بیاد بازی zero player چیه ؟
بازی های zero player بازی هایی هستند که هیچکس اونارو بازی نمیکنه . یعنی هیچ پلیری ندارن . به محض اجرای بازی خود بازی تکمیل میشه و میره جلو و تعاملی با کاربر نداره . این بازیا اکثرا وابسته به وضعیت ابتداییشون هستند . یعنی وضعیت ابتدایی در شروع مشخص میکنه که بازی چجوری پیش بره .
بازی زندگی یه شبیه سازی از یه دنیاس . اولین بار با ویدیو های جادی با این ایده آشنا شدم . خیلیامون قطعا یه زمانایی به فکر شبیه سازی و ساخت یه جهان بودیم . اینکه اصلا ممکنه بشه اینکارو کرد یا نه ؟
در بازی زندگی آقای کانوی ، ما یه جهان دو بعدی رو شبیه سازی میکنیم . یعنی کل جهانمون مثل یه جدول n در n میمونه .
هر خونه جدول میتونه نماینده یک سلول یا واحد از این جهانمونه . هر سلول یا خونه جدول میتونه دو حالت متقاوت داشته باشه : ۱ - زنده ۲- مرده
شکل زیر :
خونه های زنده رو با رنگ سیاه نشون میدیم و برعکس اونایی که سلولای مرده ان با رنگ سفیدن یعنی تو خالی ان .در واقع در تصویر بالا ، جدولی که میبینیم مثالی از یه جهان در سبک این بازیه که یه سری زنده و یه سری مرده توش هستن .
در ابتدا این ماییم که مشخص میکنیم این بازی با چه حالت ابتدایی اجرا بشه . یعنی کدوم خونه ها در ابتدا زنده و کدوما مرده باشن . بعدش دیگه بازی طبق یه سری قوانینی و با توجه به این وضعیت ابتدایی رشد میکنه و تا ابد ادامه پیدا میکنه . به عبارتی جهانی که شبیهسازی کردیم شروع به کار میکنه .
هر خونه در جهان دو بعدیمون 8 تا همسایه داره . در واقع همسایه های هر خونه اون خونه هایی از جدول هستند که بهش چسبیدن یا دورشو گرفتن . (خونه بالاو پایینش . چپ و راستش و چهار خونه گوشه های چسبیده بهش) . تصویر بالا این موضوع رو مشخص میکنه .
۴ تا قانون اصلی برای این بازی هست :
- هر سلول زنده ای که بیش از ۳ تا همسایه زنده داره به علت ازدحام جمعیت میمیره .
- هر سلول زنده ای که کم تر از ۲ تا همسایه زنده داره به علت کمبود جمعیت میمیره .
- هر سلول زنده که دقیقا ۲ یا ۳ همسایه زنده داره زنده میمونه و به نسل بعد میره .
- هر سلول مرده که دقیقا ۳ تا همسایه زنده داره در نسل بعدی زنده خواهد شد (بازتولید) .
حالا یه بار این بازیو از طریق سایت زیر خودتون آنلاین انجامش بدید تا این قوانین رو ببینید چجوریه . بعد ادامه پست رو میریم که باحال تر میشه جریان :
یه سایت آنلاین برای بازی کانوی :
وارد سایت که شدید به صورت دلخواه با زدن رو یه سری از خونه ها سلول های زنده ابتدایی رو قبل از شروع بازی مشخص کنید . سلول هایی بسازید که همسایه هم دیگن . چون اگه از هم دور باشن و همسایه نداشته باشن میمیرن زرتی طبق قوانین . به شکل پیشفرضشم توجه نکنید . سعی کنید صفحه رو شلوغ کنید یا هرجور میخواید بچینیدش . بعد روی دکمه start سایت که بزنید بازی اجرا میشه و میبینید جهان شروع به کار میکنه و طبق قوانینش پیش میره .
حالا بعد از بازی کردنش درک بهتری نسبت بهش پیدا کردید .
خب این جهانم مثل جهان خودمون قوانین خودشو داره که واحد های زنده و مرده داخلش طبق این قوانین تغییر میکنن .
با توجه به قوانین حاکم بر بازی زندگی ، یه سری از الگو های زنده تو این جهان کشف شدن که کارای خاصی میکنن .
شکل های زیر الگو های ثابت هستند (یعنی اگه اینا رو تو سایتی که معرفی کردیم بچینید اینا هیچ تغییری نمیکنن تو بازی) :
یه سری از الگو ها نوسانگر هستند . یعنی هی بین چند تا حالت نوسان میکنن و برمیگردن سر حالت اولیشون :
2 - Toad (تناوب : ۲)
3 - Beacon (تناوب : ۲)
4 - Plusar (تناوب : ۳)
5 - Pentadecathlon (تناوب : ۱۵)
و اما الگو هایی که من عاشقشونم . الگو های فضاپیما (spaceship) . اینا الگو هایی هستند که مثل فضاپیما داخل این جهان حرکت میکنن و میرن جلو هی :
1 - Glider ( خیلی معروف و کاربردی اسمشو یادتون بمونه)
2 - Light weight spaceship (LWSS)
3 - Middle weight spaceship (MWSS)
4 - Heavy weight spaceship (HWSS)
این شکلا رو خودتون پیاده سازی کنید ببینید . فک کنم شکل پیشفرض اون سایته که اول رفتید توش یه گلایدر بود . برامن همینجور بود .
موضوع اینه که آقای کانوی حدس زده بودن که احتمالا هیچ الگویی نیست که به صورت بینهایت رشد کنه . یعنی هر الگویی داخل این بازی بالاخره یه جا یی متوقف میشه و تا ابد رشد نمیکنه داخل جهان . برای همین کانوی اومد یه جایزه گذاشت . برای اولین کسی که بتونه این حدس رو اثبات یا نقض کنه . این جایزه توسط یه آقایی برده شد به اسم بیل گاسپر (Bill Gosper) . بیل گاسپر برای اولین بار الگوی بسیار وحشتناک باحالی رو درآورد تو این بازی . اسم این الگو (Gosper glider gun) هستش . اون گلایدره رو یادتونه ؟ جزو فضاپیماها بود ؟ این الگوی اقای گاسپر گلایدر تولید و شلیک میکنه !! :) . درواقع تفنگ گلایدره . به طور بینهایت گلایدر شلیک میکنه . این الگو اولین گلایدرش رو در پونزدهمین تناوب خودش شلیک میکنه و بقیه گلایدر ها رو در سی امین تناوب هر دور .
شکل این الگو :
نحوه کارکرد الگو رو ببینید :
همینطور که میبینید از سمت جنوب شرقی گلایدر شلیک میشه هی .
برای سال های زیادی تفنگ گلایدر آقای گاسپر کوچیکترین تفنگ گلایدری بود که شناخته شده بود . اما در سال ۲۰۱۵ یه تفنگ گلایدر دیگه به اسم "Simkin glider gun" شناخته شد که در ۱۲۰ امین تناوب هر دور یه گلایدر شلیک میکنه . شکل این تفنگ :
یک سری دیگه از الگو ها هم هستند که بهشون میگن Methuselah . این الگو ها وقتی شروع به کار میکنن نسبتا زمان زیادی میبرن تا از بین برن یا به شکل ثابتی برسن . اولین این نوع الگو که کشف شد اسمش R-pentomino هستش :
نمونه های دیگه ای هم از این الگو وجود داره :
الگوی Diehard بعد از ۱۳۰ نسل حرکت ناپدید میشه
الگوی Acorn بعد از 5206 نسل حرکت ، 633 تا سلول زنده باقی میزاره و همچنین ۱۳ گلایدر شلیک میکنه .
اما در کنار این ها الگوهایی هم هستند که تا بینهایت رشد میکنند :
الگوهای دیگه ای وجود دارن به اسم puffer trains . اینا مثل قطار میمونن . در جهان شروع به حرکت به سمت جلو میکنند و پشت سرشون هم یه سری پسماند جا میزارن :
الگو بعدی که معرفی میکنیم rake ها هستند . glider gun هارو یادتون ؟ گلایدر تولید میکردن . rake ها علاوه بر اینکه حرکت میکنند گلایدر هم شلیک میکنند برخلاف glider gun های قبلی که ثابت بودن :
یه الگوی وحشتناک دیگه وجود داره بهش میگن breeder که بازم آقای گاسپر که تفنگ گلایدری رو ساخته بودن تولیدش کردن . این الگو همینجور که حرکت میکنه تفنگ گلایدر میسازه میره :||! قبلیا گلایدر شلیک میکردن این خود تفنگشو هی میسازه :
اینا یه سری الگو از این بازی بودن که بررسی کردیم . اما معجزه این بازی به همینا ختم نمیشه . شاید عجیب به نظر برسه ولی بر پایه همین بازی زندگی میشه یه کامپیوتر ساخت !
داخل بازی زندگی میشه گیت های NOT , OR , AND رو شبیه سازی کرد . چجوری ؟از طریق برخورد گلایدر ها بهم دیگه . در واقع اینجوری میشه مدار های منطقی مختلف رو از طریق بازی زندگی شبیه سازی کرد. همون تفنگ گلایدری گاسپر رو فرض کنید . یه جریانی از گلایدر ها رو شلیک میکرد . این جریان گلایدر ها رو میتونیم جریان الکتریکی در نظر بگیریم . وجود جریان گلایدر رو معادل بیت ۱ منطقی و نبودش رو معادل بیت صفر منطقی در نظر میگیریم .
من تو زمینه الکترونیک و مدار های منطقی سررشته ای ندارم ولی اگه به این موضوع علاقه مندید پست زیر رو بهتون پیشنهاد میکنم . در پست زیر یه اقایی اومده توضیح داده چجوری میشه گیت های منطقی رو با بازی زندگی کانوی پیاده سازی کرد و تهش کاری که میخواد بکنه خیلی جالبه . هدف نهایی پست زیر اینه که با بازی زندگی کانوی یه پردازنده intel 4004 رو طراحی کنیم و با استفاده از اون خود بازی زندگی رو شبیه سازی کنیم دوباره :)
لینک پست : https://nicholas.carlini.com/writing/2020/digital-logic-game-of-life.html
یکی از چیزایی که بازی زندگی کانوی رو باحال میکنه سادگیشه . خیلی راحت میتونید خودتون با یه زبان برنامه نویسی که مد نظرتونه پیاده سازیش کنید . برای ساختن جهانش کافیه یک آرایه دو بعدی در نظر بگیرید .
جادی تو کانالش این بازی رو به زبان سی نوشته . با هر زبانی دوست دارید میتونید طراحیش کنید . آموزش هاشم پره تو اینترنت .
در آخر هم این فیلم بسیار زیبا که طرح های جالبی رو در بازی زندگی کانوی پیاده کرده رو پیشنهاد میکنم ببینید :
https://www.aparat.com/v/jcXqV
منابع استفاده شده :
ویکی پدیا
فعلا خدافظ ....
عههههه
از یه چیز دو بعدی ساده چه الگوهای پچم ریزونی درست میشه ...