« Ruby の「メソッド」と Python の「関数」の違いは… | トップページ | Project Euler : Problem 42 »

2010年8月 5日 (木)

Project Euler : Problem 41 ~ Pandigital な素数

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

 

 解き方の基本的な考え方は「Ruby 版」をご覧ください。
 まずは、素直に数字を使って調べていくもの……。

import ForEuler (isPrime, isPandigital) problem041 = head (check xs ++ check ys) where check ns = [n | n <- ns, isPrime n, isPandigital n] xs = [7654321, 7654320 .. 1234567] ys = [4321, 4320 .. 1234] main :: IO () main = print problem041
 次に、順列を使うことで Pandigital 数かどうかのチェックを省いたもの……。
import ForEuler (isPrime, listToDex, permutation) problem041 :: Int problem041 = head $ check 7 ++ check 4 where check n = [x | x <- map listToDex ns, isPrime x] where ns = permutation [n, n - 1 .. 1] n main :: IO () main = print problem041

« Ruby の「メソッド」と Python の「関数」の違いは… | トップページ | Project Euler : Problem 42 »

Haskell」カテゴリの記事

Project Euler」カテゴリの記事

コメント

コメントを書く

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

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

トラックバック

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

この記事へのトラックバック一覧です: Project Euler : Problem 41 ~ Pandigital な素数:

« Ruby の「メソッド」と Python の「関数」の違いは… | トップページ | Project Euler : Problem 42 »

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            
フォト

最近のトラックバック

無料ブログはココログ