トラック
/
Python
Python
/
演習
/
回文の積
回文の積

回文の積

中級

説明

与えられた範囲の中から、回文の積を見つけます。

回文数とは、数字を逆に並べても同じになる数のことです。 たとえば、121は回文数ですが、112はそうではありません。

ある範囲の数が与えられたとき、その範囲内の2つの数の積として表せる回文のうち、最大のものと最小のものを見つけます。

解答では、最大と最小の回文の積を、それぞれの範囲内での因数とともに返します。 最大または最小の回文の積に、範囲内での因数の組が複数ある場合は、そのすべての組を返します。

例1

範囲[1, 9](両端を含む)が与えられたとします…

また、この範囲で考えられるすべての積を並べると、次のようになります。 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 16, 18, 15, 21, 24, 27, 20, 28, 32, 36, 25, 30, 35, 40, 45, 42, 48, 54, 49, 56, 63, 64, 72, 81]

回文の積は、(この場合は)すべて1桁の数です。 [1, 2, 3, 4, 5, 6, 7, 8, 9]

最小の回文の積は1です。 その因数は(1, 1)です。 最大の回文の積は9です。 その因数は(1, 9)と(3, 3)です。

例2

範囲[10, 99](両端を含む)が与えられたとします…

最小の回文の積は121です。 その因数は(11, 11)です。 最大の回文の積は9009です。 その因数は(91, 99)です。

smallestとlargestの実装に関する注意点

どちらの関数も、2つのキーワード引数を受け取る必要があります:

  • max_factor: int
  • min_factor: int、デフォルトは0

戻り値はtuple -- (value, factors)でなければなりません。ここでvalueは回文そのもので、factorsはその回文の2つの因数を任意の順序で含むiterableです。

例外メッセージ

ときには例外を発生させる必要があります。そのときは、エラーの原因が何なのかを示す意味のあるエラーメッセージを、必ず含めるようにしましょう。そうするとコードが読みやすくなり、デバッグもぐっと楽になります。エラーの原因が特定の種類であるとわかっている場合は、組み込みのエラータイプの中から選んで発生させてもかまいませんが、その場合も意味のあるメッセージを含めるようにしましょう。

この演習では、largest()関数またはsmallest()関数が正しい範囲にない因数のペアを受け取ったときに、raise文を使ってValueErrorを「スロー」する必要があります。テストが通るのは、exceptionをraiseすると同時に、それにメッセージを添えたときだけです。

メッセージ付きでValueErrorを発生させるには、exception型の引数としてメッセージを書きます:

# if the max_factor is less than the min_factor
raise ValueError("min must be <= max")
GitHubで編集する リンクは新しいウィンドウまたはタブで開きます
Python Exercism

回文の積を始める準備はできましたか?

Exercismに登録すれば、17個のコンセプト146個の演習、そして本物の人間によるメンタリングとともに、Pythonを学んでマスターできます。すべて無料です。