تالار گفتمان مانشت
ساختمان(برج هانوی) - نسخه‌ی قابل چاپ

ساختمان(برج هانوی) - jameshenas - 28 تیر ۱۳۹۱ ۰۵:۳۳ ب.ظ

سلام بچه ها من یه سوال داشتم از بخش هانوی فصل ۱ page20 مقسمی....



A TO C

tower(n-1,a,c,b) a
writeln('move a disk from , a to c ) b
tower(n-1,b,a,) c
N=3
>>>>>>>>>>که تعداد حالات داریم ۱- ۲^n >>>>>>
حالا اگه کد هامون به این صورت باشه در زبان پاسکال
A TO B , B TO C
Writeln(move a disk from, a to b) a
Tower(n-1,a,b,c) b
Writeln(move a disk from b to c ) c

حالا تو کتاب نوشته که این راه حل اشتباه هست ؟ چراااا
ایا بخاطر اینکه حالت های برج به ۱۱تا میرسه و ابتدا به میله ی کمکی ب و بعد به مقصد سی میبره؟
دوستانی که بلدند لطفا راهنمایی کنند
مرسی


ساختمان(برج هانوی) - ana_12345 - 28 تیر ۱۳۹۱ ۰۷:۳۱ ب.ظ

چرا نمی تونیم فایل پیوست کنیم ؟ من نمی تونم یا کلا تو این فروم این امکان نیست ؟ من اشکالام از مسائل کتاب و میخوام عکس سوال رو بگذارم نه این که تایپ کنم . نمی شه ؟اقا جواب بدین

ساختمان(برج هانوی) - nomad:D - 28 تیر ۱۳۹۱ ۰۹:۴۷ ب.ظ

من نظرم راجع به این سوال اینه که نمیشه به صورت بازگشتی نوشتش
چون اگه اون بالایی رو روی میله کمکی بذاریم میله کمکی رو از دست میدیم.

ساختمان(برج هانوی) - jameshenas - 28 تیر ۱۳۹۱ ۱۰:۴۶ ب.ظ

(۲۸ تیر ۱۳۹۱ ۰۹:۴۷ ب.ظ)nomad:D نوشته شده توسط:  من نظرم راجع به این سوال اینه که نمیشه به صورت بازگشتی نوشتش
چون اگه اون بالایی رو روی میله کمکی بذاریم میله کمکی رو از دست میدیم.
نه میدونی قضیه چی.....
هر دوی اونها که میشه بصورت بازگشتی نوشت فقط اینکه اون بالاییه از a to c
ولی پایینیه از a to b b to c
فکر میکنم بخاطر اینکه تعداد جابجایی ها زیاد هست جواب قابل قبول نیس...

RE: ساختمان(برج هانوی) - equilibrium - 29 تیر ۱۳۹۱ ۰۲:۳۳ ب.ظ

(۲۸ تیر ۱۳۹۱ ۰۷:۳۱ ب.ظ)anahitanamvar نوشته شده توسط:  چرا نمی تونیم فایل پیوست کنیم ؟ من نمی تونم یا کلا تو این فروم این امکان نیست ؟

سلام؛
فکر نمی کنم مشکلی در پیوست فایل ها باشه؛
از ویرایشگر کامل استفاده می کنید یا سریع؟

(۲۸ تیر ۱۳۹۱ ۰۵:۳۳ ب.ظ)jameshenas نوشته شده توسط:  سلام بچه ها من یه سوال داشتم از بخش هانوی فصل ۱ page20 مقسمی....

A TO B , B TO C
Writeln(move a disk from, a to b) a
Tower(n-1,a,b,c) b
Writeln(move a disk from b to c ) c

حالا تو کتاب نوشته که این راه حل اشتباه هست ؟ چراااا

سلام؛
دستور اولی که اجرا میشه "(Writeln(move a disk from, a to b" کوچکترین دیسک رو از A به B منتقل میکنه؛
بنابراین شما دیگه نمیتونید به کمک میله B باقیمونده n-1 دیسک رو از A به C انتقال بدید (چون هیچ دیسکی روی B نمی تونه قرار بگیره)؛
میتونید به ازای n=3 تریسش کنید؛ در اینصورت سه انتقال متوالی از A به B باید انجام بشه که امکان پذیر نیست؛
درست میگم؟

RE: ساختمان(برج هانوی) - nomad:D - 29 تیر ۱۳۹۱ ۰۷:۰۴ ب.ظ

(۲۹ تیر ۱۳۹۱ ۰۲:۳۳ ب.ظ)Giasoddin نوشته شده توسط:  
(28 تیر ۱۳۹۱ ۰۵:۳۳ ب.ظ)jameshenas نوشته شده توسط:  سلام بچه ها من یه سوال داشتم از بخش هانوی فصل ۱ page20 مقسمی....

A TO B , B TO C
Writeln(move a disk from, a to b) a
Tower(n-1,a,b,c) b
Writeln(move a disk from b to c ) c

حالا تو کتاب نوشته که این راه حل اشتباه هست ؟ چراااا

سلام؛
دستور اولی که اجرا میشه "(Writeln(move a disk from, a to b" کوچکترین دیسک رو از A به B منتقل میکنه؛
بنابراین شما دیگه نمیتونید به کمک میله B باقیمونده n-1 دیسک رو از A به C انتقال بدید (چون هیچ دیسکی روی B نمی تونه قرار بگیره)؛
میتونید به ازای n=3 تریسش کنید؛ در اینصورت سه انتقال متوالی از A به B باید انجام بشه که امکان پذیر نیست؛
درست میگم؟

من هم همین نظر رو دارم.

RE: ساختمان(برج هانوی) - jameshenas - 29 تیر ۱۳۹۱ ۰۷:۳۶ ب.ظ

ببین من تریس کردم n=3
درسته بنظرتون؟
این لینک رو نیگاه عکس گرفتم نمیدونم چرا اینجا نمیشه

مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمی‌باشید. جهت مشاهده پیوندها ثبت نام کنید.


ساختمان(برج هانوی) - nomad:D - 29 تیر ۱۳۹۱ ۰۷:۴۹ ب.ظ

بله این روشی که حلقه ها رو جا به جا کردید درسته ولی من فکر میکنم این رو نمیشه به صورت بازگشتی نوشت.
چون وقتی اون یه دونه اولی رو میذارید رویِ میله کمکی دیگه نباید بهش دست بزنید و در مرحله بعد باید اون n-1 حلقه رو بذارید روی میله مقصد (که نمیشه چون نمیتونید حلقه های بزرگتر رو روی حلقه کوچکتر بذارید).
این استدلال شخصی من هست. شاید اشتباه می کنم.

RE: ساختمان(برج هانوی) - jameshenas - 29 تیر ۱۳۹۱ ۰۷:۵۵ ب.ظ

(۲۹ تیر ۱۳۹۱ ۰۷:۴۹ ب.ظ)nomad:D نوشته شده توسط:  بله این روشی که حلقه ها رو جا به جا کردید درسته ولی من فکر میکنم این رو نمیشه به صورت بازگشتی نوشت.
چون وقتی اون یه دونه اولی رو میذارید رویِ میله کمکی دیگه نباید بهش دست بزنید و در مرحله بعد باید اون n-1 حلقه رو بذارید روی میله مقصد (که نمیشه چون نمیتونید حلقه های بزرگتر رو روی حلقه کوچکتر بذارید).
این استدلال شخصی من هست. شاید اشتباه می کنم.

اره دیگه من این روش ابداعی خودمه ولی اگه بخایم اون چیزی که شما میگین رو انجام بدیم نشه چون دیسک بزرگ نباید روی دیسک کوچیکه باشه...
پس نتیجه میگیریم که دومیه رو نمیشه از روش بازگشتی حلش کردRolleyes