سلام دوست من 😃👋

به آزمون ورودی دورۀ کارآموزی تابستانۀ Software Engineering کُداِستار خوش اومدی!

هدفِ این آزمون، سنجش شیوۀ برنامه‌نویسی‌ت تو موضوعاتی مثل الگوریتم و شی‌گرایی‌‍ه.


ترتیب سوالا از آسون به سخته و بعد از مسابقه، نحوۀ برنامه‌نویسی و امتیازی که کسب کردی بررسی میشه و امیدواریم به مرحلۀ بعدی که مصاحبۀ اسکایپی هست، دعوت بشی!


برای آشنایی با مسابقه و فرستادن جواب، پیشنهاد می‌کنیم این لینک‌ها رو مطالعه کنی!


در طول مسابقه هر سوالی برات پیش اومد می‌تونی از قسمت "سوال بپرسید" مطرح کنی.

همچنین برای دسترسی به آخرین اخبار و اطلاعیه‌ها (روال مصاحبه و دوره‌های بعدی) حتماً یه سر به کانال تلگرام @code_star بزن.

ما به عنوان تیم آکادمی ستاره برات از صمیم قلب آرزوی موفقیت داریم و امیدواریم بتونیم تو کارآموزی ببینیمت 😉❤️

پیاده‌سازی - ماشین‌حساب پیشرفته!


  • محدودیت زمان: ۱ ثانیه
  • محدودیت حافظه: ۲۵۶ مگابایت
  • سوال پیاده‌سازی

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

اعمال اصلی که این ماشین‌حساب آن‌ها را پشتیبانی می‌کند شامل جمع (+)، تفریق (-)، ضرب (*)، تقسیم (/)، توان (^) می‌باشد. اولویت این اعمال مشابه اولویت‌ آن‌ها در ریاضی است.(به ترتیب پرانتز ، توان ، ضرب و تقسیم از چپ به راست ، جمع و تفریق از چپ به راست)

در این سوال قصد داریم ماشین‌حساب موردنیاز رضا را پیاده‌سازی کنیم.

دستوراتی که توسط رضا به شما داده می‌شوند به صورت زیر هستند:

operand1 operator operand2 = definition
Plain text
  • operand1 و operand2 ترکیبی از حداکثر ۵۰ حرف کوچک و بزرگ انگلیسی است.
  • operator ترکیبی از حداکثر ۵۰ حرف کوچک و بزرگ انگلیسی و ارقام است و تضمین می‌شود کاراکتر اول حرف است.
  • تضمین می‌شود که در هر دستور، مقادیر وارد شده به‌جای operand1 ،operator و operand2 همگی متمایز باشند.
  • همچنین هیچ دو دستوری، دارای operator یکسان نمی‌باشند.
  • عبارت جبری که به جای definition وارد می‌شود؛ یک عبارت جبری است که متغیر های آن operand1 و operand2 می‌باشد. جز‌ئیات مربوط به definition در قسمت امتیازدهی توضیح داده ‌‌شده‌است.

نمونه ای از این دستورات را به صورت زیر هستند:

a sum b = 2*a+b
a trick b = a^b/b
a square b = a^2+b^2
Plain text

این دستورات تعریف‌شده هنگام استفاده از ماشین‌حساب به صورت زیر استفاده می‌شوند:

2 sum 3
Plain text

که به‌صورت 22+32*2+3 محاسبه‌شده و خروجی زیر را می‌دهد.

7
Plain text

و برای دستور square داریم:

3 square 3 = 3^2+3^2
Plain text

که به‌صورت 32+323^2+3^2 محاسبه‌شده و خروجی زیر را می‌دهد.

18
Plain text

دقت کنید این ماشین‌حساب از بقیه ماشین‌حساب‌ها مستثنی نیست و از پرانتزگذاری پشتیبانی می‌کند و شما باید بیش‌ترین اولویت محاسباتی را به پرانتز اختصاص دهید.

دستورات🔗

Add Command
Plain text

با آمدن این دستور، در خط بعد از آن دستوری که مدیر قنادی میخواهد به ماشین حسابش اضافه کند می‌آید. (مانند شبه دستورات بالا که آورده شده است.)

Calculate
Plain text

با آمدن این دستور، در خط بعد از این دستور شما باید عبارتی که برای محاسبه در خط بعد از این می‌آید را حساب کنید و جواب را در خروجی چاپ کنید.

End
Plain text

با آمدن این دستور نیز برنامه به پایان میرسد.

زیر مسئله اول (۱۲۰ امتیاز)

در این قسمت، ماشین‌حساب از دستورات شخصی‌سازی شده پشتیبانی نمی‌کند و همانند ماشین‌حساب ساده فقط عبارت‌های جبری شامل اعمال اصلی را محاسبه می‌کند.

  • ممکن است در ورودی برنامه با عبارت Add Command دستوری تعریف شود؛ اما تضمین می‌شود در قسمت Calculate فقط از اعمال اصلی استفاده می‌شود.
زیر مسئله دوم (۱۸۰ امتیاز)
  • در این قسمت، ماشین‌حساب از دستورات شخصی‌سازی شده پشتیبانی می‌کند و عبارت تعریف شده در قسمت definition فقط شامل اعمال اصلی می‌باشد.
  • تضمین می‌شود ورودی ها به نحوی پرانتزگذاری شود تا نیازی به دانستن اولویت دستور های تعریف‌شده نباشد.

تضمین می‌شود همه اعداد صحیح هستند.

تضمین می‌شود در تقسیم‌ها اعداد بخش‌پذیر هستند و هیچ‌گاه تقسیم بر صفر انجام نمی‌شود.

تضمین می‌شود مقدار خروجی به صورت 106value106-10^6 \le value \le 10^6 است.

مثال🔗

ورودی نمونه ۱🔗

Add Command
a Comp b = 2*a+b
Add Command
a trick b = a^b/b
Add Command
a square b = a^2+b^2
Calculate
(2 trick 4)+3
Calculate
(4 square 1)*(1 Comp 1)
End
Plain text

خروجی نمونه ۱🔗

7
51
Plain text

ورودی نمونه ۲🔗

Add Command
a row b = (a)^b
Add Command
a beEqual b = b
Add Command
a col b = (a+b)/(a*b)
Calculate
((3 row 2)+3*(0*(2+1)+(1 beEqual 3)))/(2 col 2)
End
Plain text

خروجی نمونه ۲🔗

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