هل يمكنك معرفة الطريقة التي كتب بها هذا الكود , وما هي وظيفته ؟
سأسهل السؤال بإخبارك عن الوظيفة : الكود يكشف وجود التسلسل 1010 أو 0101 في المدخلات .
فمثلاً ضمن السلسلة 010101010 سيكون الخرج 000111111 أي أنه خلال أول 3 بت لم يكشف أحد الرمزين السابقين فأخرج 0 ثم كشف 0101 فأخرج 1 ثم كشف 1010 فأخرج 1 وهكذا ..
فهل يمكنك معرفة طريقة تحويل هذه الفكرة إلى كود ؟
مثلاً : اكتب كود مماثل عن طريق if و goto يقوم بكشف التسلسل 100110 أو 100001 في الدخل ..
هل تعرف طريقة كتابة أكواد هذا النوع من المسائل :)
لم يخطر على بالي أنك تطرح السؤال كلغز و تختبر ذكاءنا ؟
ظننتك تستفسر لتعرف .
من الجيد لو أنك وضحت ذلك كأن تكتب في أول العنوان :
أحجية : هل يمكنك معرفة الطريقة التي كتب بها هذا الكود , وما هي وظيفته ؟
حتى لا يبقى الموضوع بلا إجابة , فالإجابة هي:
كُتب هذا الكود اعتماداً على شيء يُدعى "مخطّطات الحالة" أو ما يُعرف بآلات الحالة State Machine
حيث يكون عندم عدة حالات a,b,c.... مثلاً a هي الحالة البدائية وعندما ندخل 1 مثلاً ننتقل إلى الحالة b أما لو أدخلنا 0 ننتقل إلى الحالة c وهكذا .. (آلات الحالة شائعة الاستخدام في الدارات المنطقية ذات الذاكرة )
وكما ذكرت في الرد فإنّ آلة الحالة المكوّدة تقوم بكشف التتابع 1010 أو 0101
وشكراً
التعليقات