تورينج اكتمل: الحفظ بأمان مع دليل دوائر التأخير

جولة في أحد أصعب مستويات Turing Complete.

 

الخطوة الأولى: ماذا علينا أن نفعل؟

وفقًا لصديقنا الفضائي ذي الأنف الطويل ، فإننا نبني دائرة يمكنها توفير قيمة وإخراج أي قيمة يتم حفظها حاليًا.

بتقسيم ذلك أكثر قليلاً ، هناك بعض المهام المختلفة التي يتعين علينا فعلاً القيام بها هنا. أولاً ، نحتاج بطريقة ما إلى حفظ قيمة إلى الأبد. ثانيًا ، في حالة تشغيل بت "الحفظ" (الإدخال العلوي) ، فإننا نحتاج إلى استبدال كل ما تم "حفظه" بالقيمة الموجودة في الجزء السفلي.

يبدو هذا الجزء الثاني صعبًا ، لكن دعنا نبدأ من الجزء الأول ونرى كيف يمكننا البناء عليه.

الخطوة 2: لنفترض أن الحفظ متوقف (وحل مشكلة قمنا بحلها من قبل)

تذكر القراد الفردية؟ في هذه المشكلة ، كنا نخرج ملف خصم ثم باستخدام لا "لحفظ" on، ثم في العلامة التالية تفعل الشيء نفسه ولكن بقيم معاكسة. هذا يبدو معقدًا ، لذلك دعونا نستخدم صورة.


في هذه الحالة ، كنا نحفظ بشكل أساسي نتيجة لا من قيمة العلامة الأخيرة. تتمثل إحدى طرق التفكير في هذا في أننا نخرج كل ما هو موجود في ملف دائرة تأخير، ووضع الناتج الذي نريده للعلامة التالية في دائرة تأخير. لذا فإن الطريقة الواضحة لحفظ قيمة هنا هي مجرد الرجوع إلى نفسها مرة أخرى. لنجرب ذلك.


رائع ، الآن لدينا حلقة حفظ. أيا كان الناتج من دائرة تأخير سوف يتم تغذيته مرة أخرى ، وسنكون ذهبيين. من أجل التبسيط ، سأشير إلى أي إدخال نرسله إلى دائرة التأخير على أنه "حفظ" الإدخال.

هل يمكننا اختبار هذا؟ بالتأكيد ، هذه فكرة جيدة. تشغيله ل خصم يعمل (حتى تفشل الاختبارات أدناه ، لكن يمكننا أن نرى أنه لا يوجد سبب يدعو إلى الانقلاب فجأة on والإخراج on الإشارة). دعونا نلقي on المولد وتأكد من أنه يحفظ ملف on.


بالطبع لن يكون الأمر بهذه السهولة: / لا شيء ودود OR لا يمكن الإصلاح.


هذا أفضل! أنا أعرف ال On سيجعلها on بغض النظر ، ولكن آمل أن تتمكن من معرفة ما إذا كان بإمكاننا أخذ ذلك on بعيدا ، المدخلات السفلية إلى OR سيبقيها إلى الأبد.

في الواقع ، في الحالات التي يكون فيها حفظ المدخلات is خصم، هذا هو بالضبط السلوك الذي نريده! أو بطريقة أخرى من الصياغة ، إذا كان حفظ المدخلات is خصم و القيمة المحفوظة هي on، ثم أرسل ملف on إلى دائرة تأخير، أو إذا كان حفظ المدخلات is خصم و القيمة المحفوظة هي خصم، إخراج خصم. يمكننا تبسيط ذلك قليلاً ؛ إذا كان حفظ المدخلات is خصم، ثم أرسل كل ما هو موجود في ملف دائرة تأخير إلى نفسه ، حتى نتمكن من إخراجها في العلامة التالية.

لنصنع جدول الحقيقة (تلك الأشياء الموجودة في المستويات السابقة التي توضح ما يجب أن يكون الناتج لمدخلات معينة).

حفظ المدخلات
إدخال الحلقة المحفوظة
الناتج

أنا أشجعك على محاولة بناء ذلك بنفسك ، ولكن إليك كيف قد يبدو ذلك:


هنا أستخدم اللون البرتقالي للدلالة على حلقة الحفظ ، والأزرق الفاتح لإظهار حفظ المدخلات. أوصي بالتعود على تلوين الأسلاك في مجموعات منطقية مثل هذه ، وستكون سعيدًا لأنك فعلت ذلك في المستويات اللاحقة 🙂

الخطوة 3: حسنًا ، دعنا نضيف القدرة على تغيير ما نحفظه

حلو ، لقد تم حل نصف المشكلة. الآن نحتاج فقط إلى معرفة كيفية تجاهل كل ما حفظناه عندما حفظ المدخلات is on، وبدلاً من ذلك احفظ كل ما هو موجود في ملف إدخال القيمة. هذا يبدو صعبًا ، لكن دعنا نبدأ في اللعب.


حسنًا ، بالنظر إلى دائرتنا مرة أخرى ، فقد تم حل أكثر من نصف المشكلة! إذا كان حفظ المدخلات is on، ثم لأي لبس سيضمن أن كل ما حفظناه مضبوطًا عليه خصم. في هذه الحالة ، كل ما علينا فعله هو الحصول على القيمة من إدخال القيمة واكتبها إلى دائرة تأخير.


آه ، نحن قريبون جدًا ، لكن هناك خطأ هنا. نحن نحفظ قيمة إدخال القيمة، حتى عندما يكون ملف حفظ المدخلات لم يتم تعيين. نريد فقط حفظ هذه القيمة إذا كان حفظ المدخلات قيد التشغيل ، فلنستخدم بعض المنطق مرة أخرى لمعرفة كيفية القيام بذلك.

حفظ المدخلات
إدخال القيمة
الناتج

بالنظر إلى منطق الحفظ الخاص بنا ، أردنا القيمة المحفوظة إذا كان حفظ المدخلات وكان خصم. هنا نريد إدخال القيمة، إذا كان حفظ المدخلات is on. هذا يبدو مشابهًا بشكل ملحوظ ، لذلك دعونا نجرب ملف لأي لبس البوابة مرة أخرى.


اضغط على اللعب و ... انتهينا!

آخر

هذه ليست الطريقة الأكثر فعالية لحل المستوى ، لكن هذا ليس بيت القصيد. أردت أن أوضح الخطوات التي يمكنك اتخاذها لحلها بنفسك ، حتى تتمكن من فهم المستوى وليس مجرد الحصول على زر "تخطي". ومع ذلك ، فإن شرح الأشياء ليس أقوى مهاراتي ، لذا إذا كان هناك شيء لا يزال غير واضح ، أو طريقة مختلفة في التفكير أدت إلى النقر عليه ، فيرجى المشاركة في التعليقات أدناه!

هذا المستوى صعب لأنه من أول المستويات التي تتطلب منك تقسيم المشكلة إلى مشاكل فرعية دون توضيح أنه يجب عليك ذلك. إن القدرة على النظر إلى مشكلة وتبسيطها إلى المشكلات الفرعية الأصغر والأسهل ستجعلك أكثر في هذه اللعبة من أي درجة علوم كمبيوتر أو خلفية حوسبة على الإطلاق ، لذلك أوصي بوضعها في الاعتبار في المستويات المستقبلية حيث تزداد المشكلات وأكبر.

By رينوالز

1 فكر في "Turing Complete: الادخار برشاقة مع دليل دوائر التأخير"

  1. يا إلهي! هذا الحل متطور ومرضٍ للغاية. شكرا جزيلا لك. لقد ساعدني كثيرًا في اجتياز هذا المستوى. ممتاز!

    رد

اترك تعليق

ArabicEnglishFrenchGermanItalianJapaneseKoreanPortugueseSpanish