016: 百夜通い¶
難易度: ☆☆☆
問題¶
関数 komachi_solutions() を書いてください。
この関数は、小町算の正解をすべてリストで返します。
この問題では、数字 1 2 3 4 5 6 7 8 9 をこの順に使います。
隣り合う数字の間には、次のいずれかを入れられます。
- 何も入れない
+-*/
式は通常の演算順位で評価します。
つまり、* と / は + と - より先に計算します。
括弧、先頭の符号、累乗、平方根は使いません。
100になる式をすべて見つけ、123 + 45 - 67 + 8 - 9 = 100 のような文字列で返してください。
この条件では、正解は101個あります。
制約¶
- 数字は
1から9までをこの順に使います。 - 数字の順番を入れ替えてはいけません。
- 数字を省略してはいけません。
- 割り算を含むため、丸め誤差で100かどうかを判定しないでください。
main()では、正解を1行に1つずつ出力してください。
例¶
>>> solutions = komachi_solutions()
>>> len(solutions)
101
>>> solutions[0]
'123 + 45 - 67 + 8 - 9 = 100'
>>> solutions[-1]
'1 / 2 / 3 * 456 + 7 + 8 + 9 = 100'
出力形式¶
main() は、komachi_solutions() が返す式を順に出力します。
個数は出力しません。