دبستان

دبستان

متوسط

دستورالعمل‌ها

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

در پایان، باید بتوانید:

  • اسم یک دانش‌آموز را به فهرست یک پایه اضافه کنید:
    • «جیم را به پایه ۲ اضافه کنید.»
    • «باشد.»
  • فهرست همه‌ی دانش‌آموزانی را که در یک پایه ثبت‌نام کرده‌اند بگیرید:
    • «چه دانش‌آموزانی در پایه ۲ هستند؟»
    • «فعلاً فقط جیم را داریم.»
  • فهرست مرتب‌شده‌ای از همه‌ی دانش‌آموزان در همه‌ی پایه‌ها بگیرید. پایه‌ها باید به ترتیب ۱، ۲، ۳ و غیره مرتب شوند و دانش‌آموزان درون هر پایه باید بر اساس اسم به ترتیب الفبایی مرتب شوند.
    • «الان چه کسانی در مدرسه ثبت‌نام کرده‌اند؟»
    • «بگذارید فکر کنم. آنا، بارب و چارلی در پایه ۱ هستند، الکس، پیتر و زوئی در پایه ۲، و جیم در پایه ۵. پس پاسخ این است: آنا، بارب، چارلی، الکس، پیتر، زوئی و جیم.»

توجه کنید که همه‌ی دانش‌آموزان ما فقط یک اسم دارند (شهر کوچکی است، چه انتظاری دارید؟) و هیچ دانش‌آموزی را نمی‌توان بیش از یک بار به یک پایه یا به فهرست اضافه کرد. اگر یک تست بخواهد همان دانش‌آموز را بیش از یک بار اضافه کند، پیاده‌سازی شما باید نشان دهد که این کار نادرست است.

واژه‌ها

یک تاپل school تعریف کنید که فهرست را در خود نگه دارد (اینکه دانش‌آموزان را چطور داخل آن ذخیره می‌کنید به خودتان بستگی دارد)، سپس واژه‌های زیر را پیاده‌سازی کنید.

  • <school> ( -- school ): یک مدرسه‌ی خالی می‌سازد.
  • add-student ( school name grade -- ? ): name را به پایه‌ی grade اضافه می‌کند. در صورت موفقیت t را برمی‌گرداند؛ اگر name قبلاً اضافه شده باشد (در این پایه یا هر پایه‌ی دیگر) f را برمی‌گرداند و در این صورت فهرست بدون تغییر باقی می‌ماند.
  • roster ( school -- names ): همه‌ی دانش‌آموزان، مرتب‌شده بر اساس پایه و سپس بر اساس اسم به ترتیب الفبا.
  • grade ( school n -- names ): دانش‌آموزان پایه‌ی n، مرتب‌شده بر اساس اسم به ترتیب الفبا.

منبع

یک جلسه‌ی برنامه‌نویسی دونفره با Phil Battos در gSchool
ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
Factor Exercism

آماده‌اید دبستان را شروع کنید؟

در Exercism ثبت‌نام کنید تا Factor را همراه با 47 مفهوم163 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.