« Project Euler : Problem 48 | トップページ | Project Euler : Problem 50 »

2010年10月 7日 (木)

Project Euler : Problem 49

 問題はこちらをご覧ください。
 また、自作の "ForEuler module" に関してはこちらをご覧ください。

 

 アルゴリズムは「Ruby 版」と同じなので、詳しい説明はこちらをご覧ください。

import ForEuler (primes, dexToList, combination) import Data.List (groupBy, sortBy, sort) import Data.Ord (comparing) -- nss = [[1021,1201,2011],[1013,1031,1103,1301,3011] .. ] nss :: [[Int]] nss = [map fst a | a <- groupBy pred ps2, length a >= 3] where pred (_, x) (_, y) = x == y -- ps1 : 四桁の素数のリスト ps1 = takeWhile (< 10000) $ dropWhile (< 1000) primes -- ps2 : 素数とその成分のタプルを成分順にソートしたリスト ps2 = sortBy (comparing snd) [(p, sort $ dexToList p) | p <- ps1] problem049 :: [(Int, Int, Int)] problem049 = concatMap func nss where func ns = [(a, b, c) | [a, b] <- combination ns 2, let c = 2 * b - a, elem c ns] main :: IO () main = print problem049

« Project Euler : Problem 48 | トップページ | Project Euler : Problem 50 »

Haskell」カテゴリの記事

Project Euler」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/112020/49674160

この記事へのトラックバック一覧です: Project Euler : Problem 49:

« Project Euler : Problem 48 | トップページ | Project Euler : Problem 50 »

2016年7月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            
フォト

最近のトラックバック

無料ブログはココログ