在給定的範圍中找出迴文乘積。
迴文數是指把數字反轉後仍然相同的數字。
例如,121是迴文數,但112不是。
給定一個數字範圍,找出該範圍內兩個數字相乘的乘積中,最大與最小的迴文。
你的解法應該回傳最大與最小的迴文,以及各自在該範圍內的因數。 如果最大或最小的迴文在該範圍內有多於一組因數,就回傳所有的因數對。
給定範圍[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, 2, 3, 4, 5, 6, 7, 8, 9]
最小的迴文乘積是1。
它的因數是(1, 1)。
最大的迴文乘積是9。
它的因數是(1, 9)和(3, 3)。
給定範圍[10, 99](包含兩端)……
最小的迴文乘積是121。
它的因數是(11, 11)。
最大的迴文乘積是9009。
它的因數是(91, 99)。
要解這道練習,你需要實作以下兩個函式:
largestPalindromesmallestPalindrome這兩個函式都會接收因數的下限與上限,並回傳一組 (value, [(factor1, factor2)]),裡面包含該迴文以及它可能的因數配對。
如果你不確定型別,可以使用提供的簽章,但別讓它們限制了你的創意。
因數陣列中出現重複值是沒關係的,因數的順序也不重要。
你可以考慮用稍微不同的演算法來找出較小或較大的迴文。