одиннадцать


игра идет с тремя зарами

понтеры ставят, после чего банкомет бросает кости

если сумма меньше чем 11 тогда банкомет забирает все ставки понтеров

если сумма равна или больше 11 тогда банкомет выплачивает понтерам в пропорции 1:1

листинг Haskell :

dice :: [Int]    
dice = [1..6]

average :: Double
average =
  let n = sum $ dice >>= \ x -> dice >>= \ y -> dice >>= \ z -> return $ x + y + z
  in (fromInteger n) / 216

below11 :: Double
below11 = 
  let n = length $ dice >>= \ x -> dice >>= \ y -> dice >>= \ z ->
           guard ( (x + y + z) < 11 ) >> return 1
  in (fromIntegral n) / 216.0 

и теперь в repl :

    λ> average
    10.5
    λ> below11
    0.5