最終的に、コードには非常に長く退屈に見える条件がたくさんあります。
if flag == 1:
while have != needed:
if type == 7:
これらは、はるかに愛らしい<3
条件付きの対応物に変換できます。
if abs(flag - 1) + 2 <3:
while 3 - abs(have - needed) <3:
if 2 + abs(type - 7) <3:
仕事
あなたの仕事は、条件を取り、の観点からそれを作ることです<3
。重要な唯一の間隔は、<
との間に何もないことです3
。
条件文は、いずれかの方法で区切ら二つの表現になります==
、!=
、>
、<
、>=
または<=
。
式には、加算、減算、単項否定(-something
)のみが含まれます。各変数または数値の前+
または-
前に1つまたは前があります(最初または何もないまたは-
前にあるものを除く)。
番号はになり[0-9]+
、変数はになります[a-z]+
。答えを使用する必要がある場合|x|
(の絶対値x
)、abs()
関数を使用します。すべての変数が整数であり、入力内のすべての数値定数が<1000であると仮定できます。
出力は、最も単純な形式である必要はありません。上記のような条件付きである必要があります。つまり、1つの条件付き記号で区切られた2つの式のみである必要がありますがabs
、有効な式を囲んで関数を使用することもでき、有効性の観点からは変数のように機能します。
入力に変数の値の出力がない場合は、常にfalseであるが、に関しては条件を出力します<3
。
課題の一部は、その方法を見つけることですが、have != needed
上記の手順は次のとおりです。
have != needed
have - needed != 0
abs(have - needed) > 0
-abs(have - needed) < 0
3 - abs(have - needed) <3
得点
これはコードゴルフなので、バイト単位の最短有効コードが優先されます。
テストケース
(注意、これらの出力は唯一の出力ではありませんが、私はそれらを単純化しようとしました。)
flag == 1
abs(flag - 1) + 2 <3
have != needed
3 - abs(have - needed) <3
type == 7
2 + abs(type - 7) <3
x > y
3 - x + y <3
x + 5 < -y
x + 8 + y <3
x + 6 <= y
x + 8 - y <3
-x >= y + 3
x + y + 5 <3
x < x
3 <3
# Unsimplified; both would be valid outputs.
x - x + 3 <3