Pythonで行った複数のゴルフでは、ブール値によって選択された2つの変数のいずれかに固定値が割り当てられます。選択された変数は指定された値で上書きされ、もう一方は変更されません。
17文字:
if b:y=z
else:x=z
条件値の割り当ては簡単ですが、条件変数への割り当ては不格好に思えます。私が見逃している短い方法があるのだろうかと思っています。
x,y
代わりにlistを使用した場合、これは簡単にL
なりますが、コンテキストでは書き込みL[0]
を行うのに十分な変数の参照が必要でL[1]
あり、禁止されていると想定します。変換に時間がかかりすぎる:
20文字:
L=[x,y];L[b]=z;x,y=L
私が知っている最速の方法は、Python 2を使用することですexec
。これは奇妙です。
16文字、Python 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だけではなく、それが助け場合も、データ型と値についての仮定を行います。
なぜスタックオーバーフローではないのですか?
—
BobTheAwesome
@BobTheAwesomeこれを行う良い方法を求めているのではなく、短いものを求めています。
—
xnor
x,y=C(x,y,z,b)
(14文字)を実行し、これらの実装のいずれかをの本体にプッシュできC
ます。