コンテンツにスキップ

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() が返す式を順に出力します。 個数は出力しません。