यह अजगर में गोल्फ के लिए एक सुझाव सवाल है ।
पायथन में मैंने कई गोल्फों में एक बूलियन द्वारा चुने गए दो चरों में से एक को एक निश्चित मान दिया है। चुने गए चर को दिए गए मान से अधिलेखित किया जाता है, और दूसरा अपरिवर्तित होता है।
17 वर्ण:
if b:y=z
else:x=z
सशर्त मान असाइन करना आसान है , लेकिन सशर्त चर को असाइन करना क्लंकी लगता है। अगर कोई छोटा रास्ता याद आ रहा है तो मुझे आश्चर्य हो रहा है।
यह आसान होगा यदि x,y
इसके बजाय एक सूची थी L
, लेकिन मान लें कि संदर्भ को उन चर के लिए पर्याप्त रूप से संदर्भित करना होगा जो लेखन L[0]
और L[1]
निषेधात्मक हैं। परिवर्तित होने में बहुत अधिक समय लगता है:
20 वर्ण:
L=[x,y];L[b]=z;x,y=L
सबसे तेज़ तरीका मुझे पता है कि अजगर 2 के साथ है exec
, जो विचित्र है:
16 वर्ण, पायथन 2:
exec"xy"[b]+"=z"
ट्यूल-चुनने में अधिक समय लगता है:
18, 19, 18, 18 वर्ण:
x,y=b*(x,z)or(z,y)
x,y=[z,x,y,z][b::2]
y,x=[y,z,x][b:b+2]
y,x,*_=[y,z,x][b:] # Python 3
क्या कोई छोटी विधि या चरित्र-बचत अनुकूलन है? आप मान सकते हैं b
कि 0
या 1
, केवल फाल्सी या ट्रू नहीं है, और यदि यह मदद करता है तो डेटा प्रकारों और मूल्यों के बारे में भी धारणा बना सकता है।
x,y=C(x,y,z,b)
(14 चार्ट) कर सकते हैं और इनमें से किसी भी कार्यान्वयन को शरीर में धकेल सकते हैंC
।