مسابقه تمرینی برنامه نویسی جمعی از دانشجویان پیام نور هشتگرد

راه بهشت در شهر دروغ‌گویان


-«راه بهشت از برنامه‌ی تو میگذره!»

جمله‌ی بالا آخرین حرفی بود که یک فرد گمشده در جهنم به زبان آورد!

جاده‌ی اصلی یک شهر در انتها به دو جاده تقسیم می‌شود. جاده‌ی اول رو به بهشت است و جاده‌ی دوم رو به جهنم! هیچ کدام از این جاده‌ها راه برگشتی ندارند. اینک شمایید و مردم این شهر و انتخاب جاده! متأسفانه انتخاب جاده چندان آسان نیست و هیچ تابلویی وجود ندارد و شما مجبورید در انتخاب جاده به حرف مردم آن شهر اعتماد کنید. این مردم به دو گروه تقسیم می شوند. گروهی همیشه راست می‌گویند و گروهی همیشه دروغ! و تنها اطلاعات دیگری که داریم، این است که تعداد افراد راست‌گوی شهر از تعداد دروغ‌گویان بیشتر است.

شما فکر می‌کنید و فکر می‌کنید و ناگهان ایده به ذهن شما می‌رسد! کافی است که از هرکس بخواهید اطلاعاتش را درباره‌ی دروغ‌گو یا راست‌گو بودن دیگران به شما بگوید و با استفاده از تناقضات آن‌ها، افراد راست‌گو و دروغ‌گو را تشخیص دهید. حال «راه بهشت از برنامه‌ای که می‌نویسید، میگذرد!»

مثال🔗

در ابتدا تعداد نفرات شهر از سوی کاربر وارد می‌شود.

فرض کنید که در این شهر سه نفر وجود دارند. از هریک از آن‌ها که می‌خواهیم که اطلاعاتشان را درباره‌ی تمامی نفرات شهر بدهند. آن‌ها نیز به ترتیب شروع به دادن اطلاعات می‌کنند و جدول زیر به دست می‌آید:

3
L L
L D
D T
Plain text

این جدول به این معناست که نفر اول ادعا می‌کند دو نفر دیگر دروغ می‌گویند، نفر دوم ادعا می‌کند نفر اول دروغ می‌گوید ولی درباره‌ی نفر سوم نظری ندارد. همچنین نفر سوم درباره‌ی نفر اول نظری ندارد ولی ادعا می‌کند که نفر دوم راست می‌گوید.

حال بر اساس ورودی بالا می‌توان حقیقت را تشخیص داد. فرض کنید که نفر اول راست‌گو باشد. در این صورت طبق ادعای او، دو نفر دیگر دروغ‌گو هستند و این با اطلاعات تطبیق دارد؛ زیر اگر نفر دوم دروغ‌گو باشد ادعا می‌کند که نفر اول دروغ‌گو است و اگر نفر سوم دروغ‌گو باشد، از آنجا که می‌داند نفر دوم دروغ‌گو است، به دروغ او را راست‌گو معرفی خواهد کرد! بنابراین طبق اطلاعات این حالت ممکن است ولی توجه کنید که تعداد راست‌گویان شهر از تعداد دروغ‌گویان بیشتر است و بنابراین این حالت امکان‌پذیر نخواهد بود.

از طرفی فرض کنید که نفر اول دروغ‌گو باشد. از آن‌جا که خودش دروغ‌گو است و دو نفر دیگر را دروغ‌گو معرفی کرده است، دو نفر دیگر باید راستگو باشند! این حالت نیز با اطلاعات تطبیق دارد؛ زیرا اگر نفر دوم راست‌گو باشد، نفر اول را دروغ‌گو معرفی می‌کند و نفر سوم نیز نفر دوم را راست‌گو معرفی می‌کند.

بنابراین حالت دروغ گو، راست‌گو، راست‌گو با اطلاعات تطبیق دارد و حالات دیگر با توجه به نحوه‌ی ورودی امکان‌پذیر نیست:

L T T
Plain text

ورودی نمونه

4
D D D
T L D
L D L
D T D
Plain text

خروجی نمونه

T T L T
Plain text
ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.