PDA

View Full Version : حرفه ای: مسئله ای حرفه ای برای برنامه نویسان حرفه ای و باهوش



dominic programmer
پنج شنبه 14 مرداد 1389, 15:33 عصر
برنامه ای به زبان ++c برای حل مسئله زیر بنویسید:

در پنج خانه که رنگ هر یک با دیگری متفاوت است 5 نفر از 5 ملیت مختلف زندگی می کنند و هر یک به یک نوع غذا و به یک نوع نوشیدنی و به یک نوع حیوان علاقه دارند. بر اساس اطلاعات زیر(1-14) برنامه ای بنویسید که تعیین کند در کدام خانه گورخر نگهداری می شود و در کدام خانه آب نوشیده می شود؟

1-مرد انگلیسی در خانه ی قرمز زندگی می کند.
2-مرد اسپانیایی یک سگ دارد.
3-مرد نروژی در اولین خانه ی سمت چپ زندگی می کند.
4-در خانه ی زرد رنگ به استیک علاقه است.
5-خانه ی مردی که پیتزا دوست دارد کنار خانه ای است که روباه دارد.
6-مرد نروژی کنار خانه ی آبی رنگ زندگی می کند.
7-فردی که همبرگر دوست دارد حلزون نگهداری می کند.
8-فردی که هات داگ دوست دارد آب پرتقال می نوشد.
9-مرد اکراینی چای می نوشد.
10-مرد ژاپنی سوشی می خورد.
11-استیک در خانه ای مصرف می شود که کنار خانه ای است که در آن اسب نگهداری می شود.
12-در خانه ی سبز قهوه نوشیده می شود.
13-خانه ی سبز سمت راست خانه ی شیری رنگ درست چسبیده به آن قرار دارد.
14- در خانه ای که وسط قرار گرفته شیر نوشیده می شود.

tdkhakpur
پنج شنبه 14 مرداد 1389, 16:20 عصر
این ساختاری است که باید پر کرده و هر چیزی راکه میخواهید درش جستجو کنید.


struct MySt
{
BYTE Color;
BYTE Human;
BYTE Aniumel;
BYTE Food;
BYTE DrinkFood;
}CleverStt[5]={0};

Salar Ashgi
پنج شنبه 14 مرداد 1389, 16:33 عصر
کاربران عزیز دقت کنند ، که این طرح سوال جواب و مسابقه ، ترفندی نباشد برای درخواست برنامه ؛ که در اینصورت تاپیک مربوطه حذف خواهد شد !

dominic programmer
پنج شنبه 14 مرداد 1389, 22:56 عصر
با سلام خدمت آقای Salar Ashgi .
این تنها یک مسئله برنامه نویسی است و در ضمن خودم هم آن را حل کرده ام و سپس مطرح کردم و در غیر این صورت آن را مطرح نمی کردم و همینطور از خوانندگان عزیز این تاپیک خواهش می کنم جواب آن را در سایت مطرح نکنند تا هر کس بتواند آن را خود حل کند زیرا این کار حق فکر کردن به یک مسئله را از خواننده می گیرد و خواننده دیگر لذت حل کردن آن مسئله را نخواهد چشید.

با تشکر dominic programmer.

Salar Ashgi
جمعه 15 مرداد 1389, 00:16 صبح
دوست عزیز dominic programmer (http://www.barnamenevis.org/forum/member.php?u=157636) ، منظور من هم شما نبودید و اینو به شکل کلی عرض کردم !
دوستان بهتره این گونه تاپیک ها رو در بخش منابع ، مراجع و مقالات مفید تالار (http://www.barnamenevis.org/forum/showthread.php?t=233161) ‏مطرح کنید ./

khafan_bat
جمعه 15 مرداد 1389, 01:40 صبح
این همون ممعمایی هست که انیشتن مطرح کرده بود و گفته بود کسانی که این سوال رو حل کنند جزو 2 درصد باهوش ترین افراد دنیا هستند ( 98 % نمی توانند این سوال رو حل کنند. ) جالبه !! ببینیم می تونم حل کنم !!! ؟؟؟ حداقل اگه خودمون نمی تونیم حل کنیم واگذارش کنیم به کامپیوتر !!



http://litemind.simplusmedia.com/wp-content/uploads/2008/11/einstein-portrait.jpg




Albert Einstein's Logic Problem:

http://www.davar.net/MATH/PROBLEMS/EINSTEIN.HTM

dominic programmer
جمعه 15 مرداد 1389, 19:41 عصر
با سلام می خواستم کمکی در مورد حل این مسئله به صورت نظری بکنم. یک کاغذ بردارید 5 مربع رسم کرده و درون هر یک اطلاعات مسئله مربوط به آن خانه قرار داده.

khafan_bat
جمعه 15 مرداد 1389, 22:12 عصر
با سلام ، 100 درصد باید این کار رو انجام داد ( رسم جدول ) اما یه مشکلی انگار وجود داره :

ویژگی های هر خونه ( یا صاحب خانه ) شامل وارد زیر میشه ( سطر های جدول : )

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

برای مثال طبق سوالی که گذاشتین :

ملیت ها : نروژ - اکراین - انگلیسی - اسپانیایی - ژاپنی که شد پنج تا و درسته

اما

خوردنی ها : آب پرتقال - چای - سوشی - قهوه - شیر - استیک - آب که شد هفت تا و تعداد خونه ها 5 تا است!!!

یا اینکه :

غذاهای مورد علاقه : استیک - پیتزا - همبرگر که شد سه تا !!

اشتباه کردم ؟؟ گمراه شدم یعنی ؟؟ من تا یه جایی درست اومدم اما یهو گیر کردم !

dominic programmer
شنبه 16 مرداد 1389, 01:05 صبح
با سلام و تشکر.
در مورد اینکه من به جای استفاده از مارک های سیگار از غذا استفاده کردم به دلیل بد آموزی آن است. و غذای در حال خوردن با غذای مورد علاقه در این مسئله یکی هستند. در مورد تعداد غذا ها که سه تا هستند به این دلیل است که تعداد و یا نوع آن ها در روند مسئله هیچ تاثیری نمی گذارد و تنها مقادیر مهم نوشیدنی ها و حیوان ها و رنگ خانه ها هستند که ما را به جواب می رسانند و غذا ها نقش گمراه کردن خواننده را دارند.

khafan_bat
شنبه 16 مرداد 1389, 04:21 صبح
سلام . مسئله ی شما پیچیده تر بود گیج می شدم. اما معمایی که انیشتین مطرح کرده بود رو حل کردم . کاری نداشت. بحث سر داشتن ها و نداشتن ها یا بودن ها و نبودن ها بود . روش حل رو پست کنم ؟؟

و اما . . .

چطور باید این مسئله توسط کامپیوتر حل بشه ؟ اصلا شروع الگوریتم از کجاست . برنامه هایی که من نوشتم یا ساخت یافته بودند یا شیئ گرا و خلاصه الگوریتم یک سوال رو میشد در قالب یک برنامه ی کامپیوتر ( منطق منظمی ) پیاده کرد. اما این مسئله رو چی کار باید کرد ؟ نمیشه که همه جا else if گذاشت ؟. یک راهنمایی کنید ( ++C )

sh4mid
شنبه 16 مرداد 1389, 10:43 صبح
سلام


بحث سر داشتن ها و نداشتن ها یا بودن ها و نبودن ها بود

این مدل مسایل که بیشتر تو هوش مصنوعی مطرح می شود به Constraint Programming معروف است(مسایل ارضای محدودیت)، نمونش همین مساله بالا که نام دیگرش Zebra Puzzle است یا مساله معروف SEND+MORE=MONEY
معمولا این مدل برنامه ها رو با Prolog یا Lisp مینویسند
مثلا همین مثال بالا تو Prolog




next_to(X, Y, List) :- is_right(X, Y, List).
next_to(X, Y, List) :- is_right(Y, X, List).

is_right(L, R, [L | [R | _]]).

is_right(L, R, [_ | Rest]) :- is_right(L, R, Rest).


owns_zebra(Street, Who) :-
Street = [_House1, _House2, _House3, _House4, _House5],
member(house(red, englishman, _, _, _), Street),
member(house(_, spaniard, dog, _, _), Street),
member(house(green, _, _, coffee, _), Street),
member(house(_, ukrainian, _, tea, _), Street),
is_right(house(green,_,_,_,_), house(ivory,_,_,_,_), Street),
member(house(_, _, snails, _, old_gold), Street),
member(house(yellow, _, _, _, kools), Street),
[_, _, house(_, _, _, milk, _), _, _] = Street,
[house(_, norwegian, _, _, _) | _] = Street,
next_to(house(_, _, _, _, chesterfields), house(_, _, fox, _, _), Street),
next_to(house(_, _, _, _, kools), house(_, _, horse, _, _), Street),
member(house(_, _, _, orange_juice, lucky_strike), Street),
member(house(_, japanese, _, _, parliaments), Street),
next_to(house(_, norwegian, _, _, _), house(blue, _, _, _, _), Street),
member(house(_, Who, zebra, _, _), Street).


یا مساله SEND+MORE=MONEY



sendmore(Digits) :-
Digits = [S,E,N,D,M,O,R,Y], % Create variables
Digits :: [0..9], % Associate domains to variables
S #\= 0, % Constraint: S must be different from 0
M #\= 0,
alldifferent(Digits), % all the elements must take different values
1000*S + 100*E + 10*N + D % Other constraints
+ 1000*M + 100*O + 10*R + E
#= 10000*M + 1000*O + 100*N + 10*E + Y,
labeling(Digits). % Start the search

dominic programmer
شنبه 16 مرداد 1389, 11:21 صبح
کمک بعدی در مورد تبدیل آن به برنامه :
ببینید برنامه شما نباید بر طبق حل خودتان جواب دهد بلکه باید طبق داده هایی که در هنگام اجرای برنامه به آن می دهید(1-14) این کار را انجام دهد و همینطور باید خود قابل به تصمیم گیری باشد یعنی اگر شما یک قسمت از داده ها مانند رنگ خانه را تغییر دهید باز باید به شما جواب درست دهد و پیشنهاد می کنم در مورد ریاضیات آمار و احتمال و مجموعه ها و هوش مصنوعی مطالعه ای داشته باشید.

khafan_bat
شنبه 16 مرداد 1389, 14:41 عصر
دوستان بحث سر زبان برنامه نویسی و پیاده سازی سوال نبود . بحث سر الگوریتم این سوال هست. راهنمایی ... !!؟؟

sh4mid
شنبه 16 مرداد 1389, 18:00 عصر
سلام
من که گفتم ، این مسایل معروفند به Constraint satisfaction problem
از BackTrack میشه استفاده کرد ، از Constraint propagation میشه ، با Local search میشود و ...
به اینجا سر بزن
http://en.wikipedia.org/wiki/Constraint_satisfaction_problem

dominic programmer
شنبه 16 مرداد 1389, 22:21 عصر
سلام

ببینید این مساله یک مسئله منطقی است یعنی که باید جواب را بر اساس منطق خود بیان کنید