کدهای اسمبلی کوتاه را در شبکهای از پردازندهها بنویسید که مقادیر را به همسایههایشان میسپارند تا جریان ورودی را بدون ایجاد گرهشدگی به هدف تبدیل کنند.
نحوه بازی
شما شبکهای از رایانههای بسیار کوچک را برنامهریزی میکنید. هر گره یک لیست کوتاه از دستورات را اجرا میکند و تنها میتواند با همسایههای مستقیم خود ارتباط برقرار کند و مقادیر را از طریق پورتها منتقل کند؛ بنابراین عددی که باید از شبکه عبور کند، باید گره به گره و دستبهدست منتقل شود.
هر گره یک جمعکننده و مجموعهای از دستورات دارد: جابهجایی مقدار، جمع، تفریق، پرش.
یک گره میتواند از همسایه بالا، پایین، چپ یا راست بخواند یا به آنها بنویسد، یا با جریانهای ورودی و خروجی تعامل داشته باشد.
پورتها مسدود میشوند. گرهای که به سمت راست مینویسد، صرفاً منتظر میماند تا گره سمت راست از سمت چپ خود بخواند.
این یعنی دو گره باید نه تنها در مقدار، بلکه در زمان نیز با هم هماهنگ باشند.
اگر یک چرخه کامل بگذرد و هیچکس پیشرفت نکند و کسی هنوز در انتظار باشد، شبکه دچار گرهشدگی میشود.
پازل زمانی حل میشود که جریان خروجی با هدفی که مرحله درخواست کرده مطابقت داشته باشد.
کنترلها
دسکتاپ: کد را در کادر متنی هر گره تایپ کنید، یک مرحله را از فهرست کشویی انتخاب کنید و سپس روی Run بزنید.
گوشی و تبلت: کار میکند، اما برای نوشتن کد، استفاده از کیبورد خارجی به شدت توصیه میشود.
حالتهای بازی
روزانه: یک پازل مشترک که از تاریخ امروز تولید شده است.
تمرین: با دکمه New، ورودیهای تصادفی و تازه را به چرخش درآورید.
نکات و استراتژی
مسیر را قبل از محاسبات طراحی کنید. اکثر شکستها به دلیل مقادیری است که نمیتوانند به مقصد برسند، نه جمعهایی که اشتباه محاسبه میشوند.
دو گره که هرکدام منتظر دیگری است، گرهشدگی کلاسیک است. اگر هر دو قبل از خواندن، به سمت هم بنویسند، هیچکدام هرگز حرکت نمیکند.
هر جا که میتوانید، جریان را یکطرفه نگه دارید. شبکهای که جهتگیری یکدست دارد، بسیار آسانتر از شبکهای است که مقادیر در آن به هم میخورند.
هر جا که نیاز دارید، از یک گره به عنوان رله خالص استفاده کنید. انجام هیچ کاری جز عبور دادن یک مقدار، شغلی مشروع و اغلب ضروری است.
گره مسدود شده را بخوانید، نه پاسخ اشتباه. وقتی خروجی متوقف میشود، نکته کلیدی این است که کدام گره منتظر است و برای چه کسی.
چه چیزهایی یاد میگیرید
شبکه گرهها یک پازل برنامهنویسی موازی درباره عبور پیام و اجتناب از گرهشدگی در یک مش از پردازندههاست.
مهارتها: برنامهنویسی موازی و همزمان، عبور پیام، اجتناب از گرهشدگی
مناسب برای: تقریباً پایههای ۹ تا ۱۲ (سن ۱۴+)
برای والدین و معلمان: همزمانی و گرهشدگی، به صورت عملی.
ریشهها
جدولی از رایانههای بسیار کوچک، که هر کدام فهرست کوتاه دستورهای خود را اجرا میکند و تنها با همسایههای درست در کنارش میتواند گفتوگو کند، TIS-100 است — Zachtronics، ژوئیهی 2015 — که پازلهایش را روی ماشینی خیالی و خراب از دههی 1970 قرار داد.
قیدی که آموزش داده میشود واقعی و در محاسبات موازی محوری است: بدون حافظهی مشترک، مقداری که باید از جدول بگذرد باید با دست، گره به گره، از راه تبادل پیام منتقل شود.
و انتقال با دست همان راهی است که با بنبست روبهرو میشوید — دو گره که هر کدام منتظر دیگری است، و هر دو برای همیشه متوقف. این باگی است که واقعاً نمیتوان روی تخته توضیحش داد، چون تمام دشواری در این است که هر گره بهتنهایی درست رفتار میکند.
درباره شبکه گرهها
شبکه گرهها یک پازل برنامهنویسی موازی درباره عبور پیام و اجتناب از گرهشدگی در یک مش از پردازندههاست. این یک بازی مرورگری اصیل و رایگان است که بهصورت داخلی برای PlayPendium ساخته شده است.