ONLY DO WHAT ONLY YOU CAN DO

こけたら立ちなはれ 立ったら歩きなはれ

F# で Project Euler Problem 4

左右どちらから読んでも同じ値になる数を回文数という. 2桁の数の積で表される回文数のうち, 最大のものは 9009 = 91 × 99 である.

では, 3桁の数の積で表される回文数のうち最大のものを求めよ.

A palindromic number reads the same both ways. The largest palindrome made from the product of two 2-digit numbers is 9009 = 91 99.

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]]]
>