فائز احیا

تمرین برنامه نویسی : قیمت لپ تاپ ها

فائز احیا ۱۳۹۹/۰۵/۱۹ زبان برنامه‌نویسی پایتون

سلام
اگر ممکن هست این تمرین حل بشه بدون استفاده از کلاس

ه روز سیندخت و ایرسا در حال بحث در مورد قیمت لپ تاپ ها و کیفیت آنها بودند. سیندخت حدس میزنه هرچی یه لپ تاپ گرون تر باشه کیفیت بهتری هم داره. اما ایرسا ادعا می کنه می تونه ۲ تا لپ تاپ پیدا کنه که قیمت اولی از دومی کمتر باشه ولی کیفیتش از دومی بیشتر باشه و بتونه حدس سیندخت را رد کند. حالا شما باید با نوشتن یه برنامه به ایرسا کمک کنید ادعای خودش را بررسی کند.

مشخصات n لپ تاپ به شما داده میشه. خط اول ورودی شامل عدد n هست که تعداد لپ تاپ ها را نشان می دهد. هر یک از n خط بعدی شامل دو عدد می باشد که عدد اول قیمت لپ تاپ را نشان می دهد و عدد دوم کیفیت آن لپ تاپ را. اگه تونستید دو تا لپ تاپ پیدا کنید که شرایط گفته شده توسط ایرسا را داشته باشد چاپ کنید happy irsa در غیر این صورت چاپ کنید poor irsa (لطفا به کوچک بودن حروف توجه کنید تمامی حروف به صورت کوچک نوشته می شوند.)

ورودی نمونه:

2
1 10
7 3
خروجی نمونه:

happy irsa

در ورودی نمونه لپ تاپ اول قیمت ۱ را دارد و کیفیت ۱۰ (هرچه عدد بزرگتر باشد کیفیت بیشتر است) لپ تاپ دوم قیمت ۷ دارد و کیفیت ۳. خب ایرسا موفق شده است دو لپ تاپ پیدا کند که با اینکه قیمت دومی از قیمت اولی بیشتر است اما کیفیت دومی از کیفیت اولی کمتر است.

ورودی نمونه:

4
1 5
7 9
5 6
20 30
خروجی نمونه:

poor irsa

پاسخ‌ها به این تاپیک
محمد حسین فریدونی
محمد حسین فریدونییک دولوپر بک اند علاقه‌مند به یادگیری
۱۳۹۹/۰۶/۱۳

پاسخ @alibadparva0 میتونه به صورت زیر نوشته بشه تا به راحتی از nested loops با پیدا کردن پاسخ بیرون بیایم:

def is_irsa_happy(laptops):
 for i in range (len(laptops)):
 for j in range (i+1, len(laptops)):
 if ((laptops[i][0] < laptops[j][0]) and (laptops[i][1] > laptops[j][1])) or ((laptops[i][0] > laptops[j][0]) and (laptops[i][1] < laptops[j][1])):
 return True

 return False

count = int(input())

laptops = []
for i in range (count):
 inp = input()
 inp_list = inp.split(' ')
 laptops.append ((int(inp_list[0]), int(inp_list[1])))

if (is_irsa_happy(laptops)):
 print ("happy irsa")
else:
 print ("poor irsa")
alibadparva0
alibadparva0
۱۳۹۹/۰۵/۱۹
count = int(input())

laptops = []
for i in range (count):
 inp = input()
 inp_list = inp.split(' ')
 laptops.append ((int(inp_list[0]), int(inp_list[1])))

found = False
for i in range (len(laptops)):
 for j in range (i+1, len(laptops)):
 if laptops[i][0] < laptops[j][0]:
 if laptops[i][1] > laptops[j][1]:
 found = True
 break
 if laptops[i][0] > laptops[j][0]:
 if laptops[i][1] < laptops[j][1]:
 found = True
 break
 if found:
 break

if found:
 print ("happy irsa")
else:
 print ("poor irsa")


 
محمد حسین فریدونی
محمد حسین فریدونییک دولوپر بک اند علاقه‌مند به یادگیری
۱۳۹۹/۰۶/۱۳

به نظرم به جای شرط های تو در تو میتونیم شرط ها رو با هم چک کنیم. مثلا قطعه کد بالا رو به صورت زیر تغییر بدیم.

for i in range (len(laptops)):
 for j in range (i+1, len(laptops)):
 if ((laptops[i][0] < laptops[j][0]) and (laptops[i][1] > laptops[j][1])) or ((laptops[i][0] > laptops[j][0]) and (laptops[i][1] < laptops[j][1])):
 found = True
 break
 
 if found:
 break

در پاسخ به

فائز احیا
فائز احیا
۱۳۹۹/۰۵/۲۰

سپاسگزارم

در پاسخ به