Ini adalah pertanyaan tips untuk bermain golf di python .
Dalam banyak golf yang saya lakukan dengan Python, nilai tetap diberikan ke salah satu dari dua variabel yang dipilih oleh Boolean. Variabel yang dipilih ditimpa oleh nilai yang diberikan, dan yang lainnya tidak berubah.
17 karakter:
if b:y=z
else:x=z
Menetapkan nilai kondisional itu mudah , tetapi menetapkan ke variabel kondisional tampaknya kikuk. Saya bertanya-tanya apakah ada cara yang lebih pendek saya hilang.
Ini akan mudah jika x,y
bukan daftar L
, tetapi menganggap konteksnya memerlukan merujuk pada variabel cukup bahwa menulis L[0]
dan L[1]
dilarang. Konversi terlalu lama:
20 karakter:
L=[x,y];L[b]=z;x,y=L
Cara tercepat yang saya tahu adalah dengan Python 2 exec
, yang aneh:
16 karakter, Python 2:
exec"xy"[b]+"=z"
Memilih Tuple tampaknya lebih lama:
18, 19, 18, 18 karakter:
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
Apakah ada metode yang lebih pendek atau optimasi hemat karakter? Anda dapat berasumsi b
adalah 0
atau 1
, bukan hanya Falsey atau Truthy, dan juga membuat asumsi tentang tipe dan nilai data jika itu membantu.
x,y=C(x,y,z,b)
(14 karakter) dan mendorong salah satu dari implementasi ini ke dalam tubuhC
.