আমার একটি তালিকা l
এবং একটি ফাংশন রয়েছে f
। f
কঠোরভাবে বৃদ্ধি বা হ্রাস না। f(item)
সবচেয়ে ছোটটি তালিকার আইটেমটি কীভাবে খুঁজে পাব? উদাহরণস্বরূপ, আসুন এই তালিকাটি বলা যাক:
l = [1, 2, 3, 4]
এবং list(f(x)for x in l)
হ'ল:
[2, 9, 0, 3]
f(3)
অন্য যে কোনও একটির তুলনায় চ ছোট, তাই এটি "3" মুদ্রণ করা উচিত। এটি করার সবচেয়ে সংক্ষিপ্ততম উপায় কী? আমি প্রথমে চেষ্টা করেছি:
min(f(x) for x in l)
কিন্তু এই দেয় 0
, না 3
। আমি যদি ব্রাভিটি নয়, পাঠযোগ্যতার জন্য শুটিং করতাম তবে আমি করতাম:
index = 0
smallest = f(l[0])
for i in range(len(l)):
value = f(l[i])
if value < smallest:
smallest = value
index = i
এটি সূক্ষ্ম, তবে কোড-গল্ফের জন্য ভয়ঙ্কর। এমনকি যদি এটি গল্ফ ছিল
i,s=0,f(l[0])
for x in range(len(l)):
v=f(l[x])
if v<s:s,i=v,x
এটি একটি খারাপ সমাধান। সবচেয়ে ছোট সমাধানটি আমি ভাবতে পারি তা হ'ল:
g=[f(x)for x in l];print(l[g.index(min(g))])
(৪৪ বাইট) আরও কীভাবে আমি এটিকে গল্ফ করতে পারি?
min(l,key=f)
।