تمرين بسيط(palindromise number)
نحن ننتضر إختصارك لحل التمرين في عدد أقل من الأسطر يا عبقور
و إن أمكن أن تظعه في سطر واحد فقط مثل برنامج التعرف على الباليندروم سيكون هذا رائعا
لكن انت قلت ايجاد اقرب palindrome وليس معرفة فيما ان كان المدخل palindrome ام لا
اقتباس
لكن انت قلت ايجاد اقرب palindrome وليس معرفة فيما ان كان المدخل palindrome ام لا
لو قرأت الموضوع من أوله لآخره بتمعن لما طرحت هذا السؤال
لقد قمنا بعمل برنامجين برنامج للتحقق من إن كان الرقم باليندروم
و البرنامج الثاني لإيجاد أقرب بليندروم
لقد قام الأخ med reda بإختصار البرنامج الأول في سكر واحد
أما الآن بقي أن نختصر البرنامج الثاني (أقرب بليندروم)
res = lambda s: (s, ' is palindrom' ) if s == s[::-1] else (int(s[len(s)/2 +1:][::-1]) > int(s[:len(s)/2]) and str(int(s[:len(s)/2])+1) + s[len(s)/2] + str(int(s[:len(s)/2])+1)[::-1] or str(int(s[:len(s)/2])) + s[len(s)/2] + str(int(s[:len(s)/2]))[::-1] and len(s)%2 == 1 or int(s[len(s)/2 :][::-1]) > int(s[:len(s)/2 ]) and str(int(s[:len(s)/2 ])+1) + str(int(s[:len(s)/2 ])+1)[::-1] or str(int(s[:len(s)/2 ])) + str(int(s[:len(s)/2 ]))[::-1])
تنفيذ الدالة يكون كما يلي:
print res("1230456")من لديه حل اقصر فليتفضل
أخي هذا سطر منطقي
لكنه أكثر من سطر برمجي
عذا ليس سطر برمجي واحد
def a(x):
if str(x)[:]==str(x)[::-1]:
return str(x)[::-1]
else:
return 'no palind'