結果

問題 No.7 プライムナンバーゲーム
ユーザー aimyaimy
提出日時 2017-04-28 14:45:37
言語 Haskell
(9.8.2)
結果
WJ  
(最新)
AC  
(最初)
実行時間 -
コード長 474 bytes
最終ジャッジ日時 2024-04-09 04:14:50
ジャッジサーバーID
(参考情報)
judge4 / judge5
このコードへのチャレンジ
(要ログイン)

ソースコード

diff #

import Data.Bool
import Data.List
import Data.IntMap ((!))
import qualified Data.IntMap as M 

primes = 2:3:[x | i<-[1..], j<-[-1,1], let x = 6*i+j, isPrime x]
 where isPrime n = null [i | i <- takeWhile (\x -> x^2 <= n) primes, rem n i == 0]

main = readLn >>= putStrLn . bool "Lose" "Win" . pgame

pgame n = (foldl' grundy (M.fromList [(2,0),(3,0)]) [4..n]) ! n /= 0
 where grundy im i = M.insert i (minimum ([0..11] \\ (map (im!) (takeWhile (>=2) (map (i-) primes))))) im
0