Альтернативный Нэш
This commit is contained in:
@@ -21,13 +21,12 @@ nashEquilibriumStrategy opponentMoves generatedMoves n =
|
|||||||
nashEquilibriumStrategy (tail opponentMoves) (generatedMoves ++ [nextStep]) (n + 1)
|
nashEquilibriumStrategy (tail opponentMoves) (generatedMoves ++ [nextStep]) (n + 1)
|
||||||
else generatedMoves
|
else generatedMoves
|
||||||
where
|
where
|
||||||
cases = [['П', 'С'], ['П', 'П']]
|
cases = [['С', 'С'], ['С', 'П'], ['П', 'С'], ['П', 'П']]
|
||||||
results = [[0, 10], [5, 5]]
|
results = [[1, 1], [10, 0], [0, 10], [5, 5]]
|
||||||
result =
|
p_years = min (results !! 1 !! 1) (results !! 3 !! 1)
|
||||||
[ min (results !! 0 !! 1) (results !! 1 !! 1),
|
s_years = min (results !! 0 !! 1) (results !! 2 !! 1)
|
||||||
max (results !! 0 !! 0) (results !! 1 !! 0)
|
nextStep | p_years <= s_years = 'П'
|
||||||
]
|
| otherwise = 'С'
|
||||||
nextStep = cases !! indexOf results result !! 1
|
|
||||||
|
|
||||||
getScore :: [Char] -> [Char] -> Int -> Int -> (Int, Int)
|
getScore :: [Char] -> [Char] -> Int -> Int -> (Int, Int)
|
||||||
getScore moves1 moves2 score1 score2 =
|
getScore moves1 moves2 score1 score2 =
|
||||||
@@ -47,7 +46,8 @@ game playerMoves gameStrategy
|
|||||||
|
|
||||||
|
|
||||||
playerMoves = ['С', 'П', 'С', 'С', 'П', 'П', 'С', 'С', 'П', 'П']
|
playerMoves = ['С', 'П', 'С', 'С', 'П', 'П', 'С', 'С', 'П', 'П']
|
||||||
gameStrategy = forgivingStrategy -- forgivingStrategy, nashEquilibriumStrategy
|
-- gameStrategy = forgivingStrategy
|
||||||
|
gameStrategy = nashEquilibriumStrategy
|
||||||
computerMoves = game playerMoves gameStrategy
|
computerMoves = game playerMoves gameStrategy
|
||||||
(score1, score2) = getScore playerMoves computerMoves 0 0
|
(score1, score2) = getScore playerMoves computerMoves 0 0
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user