درود دوستان.
من یه سوالی پیدا کردم توی یکی از این آزمون ها، که الگوریتمش رو تا حدودی میدونم، اما یه خورده گیج کننده است دقیقا متوجه نمیشم!
ببینید این متن سواله. این به هیچ وجه تقلب نیست چون آزمون 5 روز قبل بوده.
"
مجید، کودک دوستداشتنی و گوگولی قصه ما علاقه زیادی به جمع کردن ماژیک دارد .
مجید در خانه اش N تا ماژیک دارد که هر کدام از آن ها رنگی دارند که آن رنگ را با یک عدد نشان میدهیم. حال
مسئله ای ذهن مجید را مشغول کرده است که از کدام رنگ کمترین تعداد ماژیک را دارد .
از آنجایی که مجید بس یار کوچک است و هنوز شمردن بلد نیست از شما میخواهیم که به مجید کمک کنید و رنگ
ماژیکی که تعدادش کمتر از همه است را چاپ کنید. همچنین اگر بیش از یک رنگ داشتیم که تعداد ماژیکهایش
کمتر مساوی از بقیه بود، بین آن رنگ ها، آن رنگی را چاپ کنید که عددش از بقیه کمتر است. )برای فهمیدن بهتر
سوال، توضیح ورودی های نمونه را بخوانید. "
ورودی
در خط اول ورودی N که تعداد ماژیک های مجید است می آید. در خط بعدی N عدد با فاصله از هم میآی د که عدد
iام نشان دهنده رنگ ماژیک iام است.
خروجی
در تنها خط خروجی یک عدد چاپ کن ید که برابر شماره ی رنگ ماژیکی است که تعدادش کمتر از بقیه است
دوستان ممنون میشم اگه راهنمایی کنید، هی الگوریتمش رو میخوام تجسم کنم، ولی چون دانشم در این زمینه کمه، هی گیج میشم و راه رو گم میکنم.
(زبانش هم پایتونه، بقیه رو با پایتون زدم)
total_interation = int(input('Total ? '))
dic_numbers = {}
numbers = input('Number ? ').split()
# print(numbers)
for number in numbers:
# each number deafult plus number is 1
plus_number = 1
if number in dic_numbers:
# if number already exists in list we just get the number of the dic and + 1
plus_number = dic_numbers[number] + 1
dic_numbers[number] = plus_number
min_num = min(dic_numbers)
final_list = [v for (k, v) in dic_numbers.items() if k == min_num]
answer = min(final_list)
print(answer)
کاری که من کردم اومدم به ازای هر عددی که کاربر میداد یعنی همون ماژیک تو یه دیکشنری اضافه کردم و اگه نبود 1 میزاشتم اگه بود عدد قبلیو به اضافه 1 میکردم برا مثال وقتی کاربر 1 1 2 رو وارد کنه جواب یه همچین چیزی میشه
{"1" : 2 , "2" : 1}
بعد کمترین عدد رو از دیکشنری گرفتم فیلتر کردم دیکشنری رو بر اساس کمتریم عدد که میشه این
[2]
بعد اولین عدد لیست رو میگیریم و میگیم شاید این جواب باشه ولی چک میکنیم اگه لیست بیشتر عدد داشت خوب دوباره کمترین عددشو میگیریم بعد اون جوابه
@ajdar9667 نه اخه نمیدونم منطقش مثل اون میشه یا نه. چون یه خورده با هم تفاوت دارن اما نمیدونم بشه یا نه
من الان میدونم که این باید دو تا خروجی داشته باشه. یکی برای تعداد المان ها و اون یکی برای عددِ رنگ ماژیک ها. منتها اولین چیزی که نمیدونم اینه که چطور باید این ورودی دوم توی یه خط دریافت بشه و نمیدونم هم دقیقا چی باید سرچ کنم
دقیقا متوجه سوالتون نشدم، الان مشکلتون تو دریافت کردن دو خط ورودی هست؟
معمولا آزمون های برنامه نویسی ورودی sys.stdin دریافت میکنن
مثلا:
import sys
first = sys.stdin.readline()
secound = sys.stdin.readline()
a = int(first)+int(secound)
print(a)
k=input("press close to exit")
@mehranmarandi90 داخل php برای ازمون های برنامه نویسی از اینپوت ها در صفحات html استفاده کنیم مشکلی نیست ؟؟؟
یا مثه پایتون کتابخونه خاصی برای این کار هست چون منم یه سوال با ورودی های مشابه همین سوالی که بالا بیان کردند رو با php حل کردم ولی این نوع بیان که ورودی ها با فاصله از هم جدا می شوند و در خط بعد اعداد وارد می شود یکم با html کارکردن رو عجیب میکنه
@ajdar9667 نه برای آزمون برنامه نویسی با زبان php ورودی باید stdin readline باشه و خرجی باید با همون فرمتی که تو سوال گفته میشه echo بشه
total_interation = int(input('Total ? '))
dic_numbers = {}
numbers = input('Number ? ').split()
# print(numbers)
for number in numbers:
# each number deafult plus number is 1
plus_number = 1
if number in dic_numbers:
# if number already exists in list we just get the number of the dic and + 1
plus_number = dic_numbers[number] + 1
dic_numbers[number] = plus_number
min_num = min(dic_numbers)
final_list = [v for (k, v) in dic_numbers.items() if k == min_num]
answer = min(final_list)
print(answer)
کاری که من کردم اومدم به ازای هر عددی که کاربر میداد یعنی همون ماژیک تو یه دیکشنری اضافه کردم و اگه نبود 1 میزاشتم اگه بود عدد قبلیو به اضافه 1 میکردم برا مثال وقتی کاربر 1 1 2 رو وارد کنه جواب یه همچین چیزی میشه
{"1" : 2 , "2" : 1}
بعد کمترین عدد رو از دیکشنری گرفتم فیلتر کردم دیکشنری رو بر اساس کمتریم عدد که میشه این
[2]
بعد اولین عدد لیست رو میگیریم و میگیم شاید این جواب باشه ولی چک میکنیم اگه لیست بیشتر عدد داشت خوب دوباره کمترین عددشو میگیریم بعد اون جوابه
@411proplayer خیلی ممنون تا حدودی درست کار میکنه اما سوال گفته که باید تو یه خط باشه منم سر این گیر کردم.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟