F# で Project Euler Problem 4
左右どちらから読んでも同じ値になる数を回文数という. 2桁の数の積で表される回文数のうち, 最大のものは 9009 = 91 × 99 である.
では, 3桁の数の積で表される回文数のうち最大のものを求めよ.
Find the largest palindrome made from the product of two 3-digit numbers.
Scala のロジックを そのまま移植しようとしたが、F# には flatten がない...
> [1..9] - ;; val it : int list = [1; 2; 3; 4; 5; 6; 7; 8; 9] > [1..9] - |> List.map(fun i -> [i..9]) - ;; val it : int list list = [[1; 2; 3; 4; 5; 6; 7; 8; 9]; [2; 3; 4; 5; 6; 7; 8; 9]; [3; 4; 5; 6; 7; 8; 9]; [4; 5; 6; 7; 8; 9]; [5; 6; 7; 8; 9]; [6; 7; 8; 9]; [7; 8; 9]; [8; 9]; [9]] > [1..9] - |> List.map(fun i -> [i..9] |> List.map(fun j -> [i; j])) - ;; val it : int list list list = [[[1; 1]; [1; 2]; [1; 3]; [1; 4]; [1; 5]; [1; 6]; [1; 7]; [1; 8]; [1; 9]]; [[2; 2]; [2; 3]; [2; 4]; [2; 5]; [2; 6]; [2; 7]; [2; 8]; [2; 9]]; [[3; 3]; [3; 4]; [3; 5]; [3; 6]; [3; 7]; [3; 8]; [3; 9]]; [[4; 4]; [4; 5]; [4; 6]; [4; 7]; [4; 8]; [4; 9]]; [[5; 5]; [5; 6]; [5; 7]; [5; 8]; [5; 9]]; [[6; 6]; [6; 7]; [6; 8]; [6; 9]]; [[7; 7]; [7; 8]; [7; 9]]; [[8; 8]; [8; 9]]; [[9; 9]]] >