آناگرام

آناگرام

متوسط

مقدمه

در یک حراج خانگی، یک ماشین تحریر قدیمی و زیبا را به قیمتی ارزان پیدا می‌کنید! با هیجان به خانه می‌دوید، یک برگ کاغذ در آن می‌گذارید و شروع به تایپ می‌کنید. اما وقتی خروجی را بررسی می‌کنید، هیجانتان فروکش می‌کند: همه‌ی کلمه‌ها به‌هم‌ریخته‌اند! برای مثال، به جای «post» کلمه‌ی «stop» را چاپ می‌کند و به جای «stale» کلمه‌ی «least» را. با دقت دوباره امتحان می‌کنید، اما این بار «spot» و «slate» را چاپ می‌کند. پس از کمی آزمایش، متوجه می‌شوید پیش از چاپ هر حرف، تأخیری تصادفی وجود دارد که ترتیب را به‌هم می‌ریزد. حالا می‌فهمید چرا آن را به این ارزانی فروخته بودند!

متوجه می‌شوید که این ویژگی عجیب به شما امکان می‌دهد «آناگرام» بسازید؛ یعنی کلمه‌هایی که با جابه‌جا کردن حرف‌های یک کلمه‌ی دیگر ساخته می‌شوند. از این کشف خود خوشحال می‌شوید و باقی روز را صرف ساختن صدها آناگرام می‌کنید.

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

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

«واروواژه» بازآرایی حروف برای ساختن واژه‌ای تازه است: برای نمونه، "owns" واروواژه‌ی "snow" است. یک واژه واروواژه‌ی خودش نیست: برای نمونه، "stop" واروواژه‌ی "stop" نیست.

واژه‌ی هدف و واژه‌های نامزد از یک یا چند حرف الفبایی ASCII تشکیل شده‌اند (A-Z و a-z). حروف کوچک و بزرگ معادل یکدیگرند: برای نمونه، "PoTS" واروواژه‌ی "sTOp" است، اما "StoP" واروواژه‌ی "sTOp" نیست. واژه‌هایی که باید پیدا کنید از میان واژه‌های نامزد انتخاب می‌شوند، با همان حالت حروف.

با داشتن واژه‌ی هدف "stone" و واژه‌های نامزد "stone"، "tones"، "banana"، "tons"، "notes" و "Seton"، واژه‌های واروواژه‌ای که باید پیدا کنید "tones"، "notes" و "Seton" هستند.

قالب ورودی/خروجی

هر مجموعه از واژه‌ها به‌صورت یک رشته‌ی پایان‌یافته با null نمایش داده می‌شود که در پایان هر واژه یک نویسه‌ی خط جدید دارد.

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

یک نمونه می‌تواند "tones\nnotes\nSeton\n" باشد.

ثبات‌ها

ثبات کاربرد نوع توضیح
$a0 ورودی آدرس رشته‌ی هدف پایان‌یافته با null، بدون خط جدید
$a1 ورودی آدرس رشته‌ی نامزدها پایان‌یافته با null که پس از هر واژه یک خط جدید دارد
$a2 ورودی/خروجی آدرس رشته‌ی خروجی پایان‌یافته با null که پس از هر واژه یک خط جدید دارد
$t0-9 موقت هر نوع برای ذخیره‌سازی موقت
ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
MIPS Assembly Exercism

آماده‌اید آناگرام را شروع کنید؟

در Exercism ثبت‌نام کنید تا MIPS Assembly را همراه با 70 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.