এই হল টিপস মধ্যে golfing জন্য প্রশ্ন পাইথন ।
পাইথনের একাধিক গল্ফগুলিতে, বুলিয়ান দ্বারা নির্বাচিত দুটি ভেরিয়েবলের মধ্যে একটিতে একটি নির্দিষ্ট মান নির্ধারিত হয়। নির্বাচিত পরিবর্তনশীল প্রদত্ত মান দ্বারা ওভাররাইট করা হয় এবং অন্যটি অপরিবর্তিত থাকে।
১rs টি চর:
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
, শুধু Falsey বা Truthy, এবং যদি এটা সাহায্য করে এছাড়াও ধরনের তথ্য ও মূল্যবোধ সম্পর্কে অনুমানের করা।
x,y=C(x,y,z,b)
(14 টি অক্ষর) করতে পারেন এবং এর মধ্যে যে কোনও বাস্তবায়নকে দেহের অভ্যন্তরে ঠেলাতে পারেনC
।