ブラックジャックの点数
ブラックジャックの点数を数えるプログラムが思ってたのと全然違った
employment.en-japan.com
Aを2回以上11と数えるとバースト確実やねんから
Aの枚数=Aの合計値とみなしてかまへん
Aの枚数とA以外の合計値を求め、合計値-1が10以下ならA1枚を11とする
他はAを1と数えるだけでいい
せやないと6個のデッキをごちゃまぜにしてプレイしたときの
エース21枚という合法手に対し計算がややこしくなるやん(するかい、そんなん)
sumHand2 :: [Card] -> Int sumHand2 cards | as == 0 = ax | ax + as - 1 <= 10 = ax + as - 1 + 11 | otherwise = ax + as where (a, xs) = partition (== A) cards ax = sum (map toPoint2 xs) as = length a toPoint2 :: Card -> Int toPoint2 A = 1 -- 不要だけど書いておく toPoint2 (N n) = n toPoint2 _ = 10
そういえば練習でポーカーの手役を判定するプログラムと麻雀のシャンテン数を数えてたけど
作り途中でほっぽったのはどこ行ったんだろう
前のPCの中かな?