رتبهبند
نام و تاریخ مسابقه: مسابقه جاوا_جیکل 6 – 18 بهمن 1396
مباحث: رشته و آرایه
برنامهای بنویسید که مجموعهای از اسناد را از نظر مرتبط بودن با واژهی مورد نظر، مرتب و رتبهبندی کند. سندی که بیشترین ارتباط را با واژهی مورد نظر داشته باشد، باید در رتبهی یک قرار بگیرد (مشابه کاری که موتورهای جستوجو انجام میدهند. البته بسیار سادهتر).
به این منظور، کلاس Ranker.java را دانلود کرده و محتویات آن را مشاهده کنید.
در این کلاس، یک متد با نام rank و به شکل زیر:
public int[] rank(String word, String[] documents)
وجود دارد که شما باید آن را با توجه به توضیحاتی که در ادامه آمده است، پیادهسازی کنید.
- این متد دو پارامتر ورودی دارد:
- کلمهای که میخواهیم اسناد را بر اساس ارتباطشان با آن، رتبهبندی کنیم.
- آرایهای از اسناد. هر سند یک رشته است.
- خروجی این متد یک آرایه از جنس int بوده و شامل اندیس اسناد ورودی است. مثلا اگر [document[3 از نظر ارتباطش با word در رتبهی اول قرار داشت، اولین خانهی آرایهی برگشتی، مقدار 3 خواهد داشت.
- هر سند مجموعهای از کلمات است که به واسطهی یک یا چند فاصله یا یک یا چند علامت ,!?. از هم جدا شدهاند.
- میزان ارتباط هر سند با واژهی word، برابر است با تعداد تکرار واژهی word در آن سند، تقسیم بر تعداد کل واژههای موجود در سند.
- بزرگ یا کوچک بودن حروف، تاثیری در شباهت دو کلمه به هم ندارد.
مثال:
در تکهکد زیر ، 6 سند با اندیسهای 0 تا 5 در ورودی داده شدهاند و محتوای هر سند نیز قابل مشاهده است. با فراخوانی متد rank، اسناد به ترتیب ارتباطشان با کلمهی ورودی salam به نحوی که توضیح دادهشد، رتبهبندی میشوند. همانطور که مشاهده میشود، سند با اندیس 3 بیشترین ارتباط را دارد و در رتبهی اول قرار میگیرد.
String[] documents = new String[6]; documents[0] = "hola hi hello salam? hello."; // 1/5 documents[1] = "hola hola hello,hello hi! hi."; // 0/6 documents[2] = "Salam salam hi! hola hello hello."; // 2/6 documents[3] = "salam hi hola salam salam hi."; // 3/6 documents[4] = "salam hi. hi! hi SALAM hi hola."; // 2/7 documents[5] = "salam hi. hi! hi hi hi hola."; // 1/7 int[] indexes = new Ranker().rank("salam", documents); // expected indexes: [3, 2, 4, 0, 5, 1]
آنچه باید آپلود کنید:
فقط فایل Ranker.java را zip کرده و بارگذاری کنید. دقت کنید که فایل Ranker.java در داخل هیچ پوشهای نباید قرار داشته باشد و وقتی فایل زیپ را باز میکنیم، دقیقا و فقط فایل Ranker.java را ببینیم.
برای داوری تمرین، میتوانید پاسخ خود را در سایت Quera به نحوی که در بالا گفته شد، بارگذاری کنید.
برای آشنایی با نحوهی ارسال پاسخ در Quera، این مطلب را مطالعه کنید.
با ما همراه باشید:
آدرس کانال تلگرام: IranianJavaDevelopers@
آدرس اکانت توییتر: JavaCupIR@
آدرس صفحه اینستاگرام: javacup.ir
آدرس گروه لینکدین: Iranian Java Developers