پروژهی پایانی درس ساختمان دادهها دکتر جمزاد نیمسال اول 2391-93 فضای مسئله در شهر مورچهها ساختار بدن هر مورچه با یک رشته از حروف انگلیسی مشخص میشود (مانند DNA در انسان) .برای مثال یک مورچه با رشتهی  abcdو مورچهی دیگری با  xمشخص میشود .در شهر مورچهها دو نوع مورچه وجود دارد ،مورچههای ملکه و مورچههای کارگر .در یک دورهی زاد ولد ،اگر زیررشتهای از یک مورچهی کارگر با یک پیشوند از یک مورچه ملکه یکسان باشد ،بچهای با آن زیررشته تولید میشود .برای مثال اگر xyzy کارگر و  yzxxملکه باشد ،فرزندان آنها  yzو دو تا  yخواهند بود. همهی مورچههای به دنیا آمده ،برای ورود به شهر در یک صف قرار میگیرند (بدون ترتیب خاص) .در این صف تعدادی مورچهی خارجی نیز هستند که میخواهند به شهر نفوذ کنند .این مورچهها به هیچ یک از بچه مورچهها شباهت ندارند و میتوان از روی رشتهشان آنها را از بچهها تمییز داد. دربان شهر وظیفه دارد از ورود مورچههای خارجی جلوگیری کند و همچنین ترتیب ورود بچه مورچهها را ذخیره کند .مشکل دربان این است که در یک دورهی زاد ولد تعداد زیادی مورچه تولید میشود و نوشتن نام همهی آنها به فضای زیادی نیاز دارد. خواستهی مسئله شما باید با داشتن لیست مورچههای کارگر و ملکه و صف ورودی:  .2مورچههای خارجی را تشخیص دهید و از صف حذف کنید.  .1ترتیب ورود بچه مورچهها را به صورت بهینه در یک فایل ذخیره کنید ،به طوری که دوباره با داشتن لیست مورچههای کارگر و ملکه ،بتوانید صف بچه مورچهها را بازسازی کنید. موارد تحویلی شما در این پروژه دو برنامه با نامهای  Encoderو  Decoderبه زبانهای  javaیا  C++تحویل میدهید. برنامهی  Encoderباید با گرفتن مورچههای کارگر و ملکه از فایل  parents.txtو صف ورودی به شهر از ورودی استاندارد ،پس از حذف مورچههای خارجی از صف ،ترتیب ورود بچه مورچهها به شهر را به صورت دلخواه در فایل  orderذخیره کند. برنامهی  Decoderباید بتواند فایل  orderرا به کمک فایل  parents.txtکدگشایی کند و همهی بچهها را به ترتیب ورودشان در خروجی استاندارد چاپ کند. برای چنین کاری در سادهترین حالت میتوان کل صف را در فایل  orderذخیره کرد! اما دقت کنید که در این پروژه هدف اصلی ضمن درست کار کردن برنامه ،کمینه کردن حجم فایل  orderاست. ورودی و خروجی - در فایل  parents.txtابتدا تعداد مورچههای ملکه و کارگر و سپس رشتههای آنها (ابتدا ملکه سپس کارگر) در خطهای جداگانه آمدهاست .تعداد مورچهها از  211تا بیشتر نمیشود. در ورودی استاندارد ابتدا طول صف و سپس در هر خط رشتهی یک مورچه میآید. فایل  orderمیتواند هر فرمتی داشته باشد ،و محتویات آن در ارزیابی پروژه مهم نیست. در خروجی استاندارد( )Decoderباید مورچهها را به ترتیب یکی یکی در خطهای جداگانه چاپ کنید. توضیحات تکمیلی - در ابتدای کار سعی کنید برنامهای بنویسید که درست کار کند سپس به سراغ کم کردن حجم بروید. توصیه میشود در پیادهسازی تا جای ممکن از داده ساختارهای مناسب استفاده کنید تا امتیازی از دست ندهید. هر داده ساختار و یا الگوریتمی که استفاده میکنید باید پیادهسازی خودتان باشد و حق استفاده از کتابخانههای آماده را ندارید (برای مثال داده ساختار پشته و یا الگوریتم مرتبسازی). برنامهی شما باید در زمان معقولی کار کند (در کل کمتر از  2دقیقه). ضمیمه کردن مستندنامهی مختصر و مفید از روش کد کردن امتیاز خواهد داشت. قسمتی از امتیاز پروژه به صورت رقابتی و بر اساس حجم فایل کدشده خواهد بود. سیاست امتیازدهی به صورت دقیق به زودی در اختیارتان قرار خواهد گرفت. !نمونهای از فرایند زاد ولد parents.txt: 12 bcde bbb abcd Encoder’s standard input: b bc x b bcd x b bcde b Decoder’s standard output: b bc b bcd b b موفق باشید  پایان
© Copyright 2025 Paperzz