From 0f5f020fc8c943f197ffc2df3c598e2d8088670e Mon Sep 17 00:00:00 2001 From: Arity-T Date: Sun, 10 Nov 2024 01:33:30 +0300 Subject: [PATCH] =?UTF-8?q?=D0=97=D0=B0=D0=BC=D0=B5=D0=BD=D0=B8=D0=BB=20if?= =?UTF-8?q?-else=20=D0=BD=D0=B0=20gurads?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lab2/prisoner/game.hs | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/lab2/prisoner/game.hs b/lab2/prisoner/game.hs index fe87a86..6256138 100644 --- a/lab2/prisoner/game.hs +++ b/lab2/prisoner/game.hs @@ -1,18 +1,10 @@ forgivingStrategy :: (Ord t, Num t) => [Char] -> [Char] -> t -> [Char] -forgivingStrategy opponentMoves generatedMoves n = - if n <= 100 && length opponentMoves /= 1 - then - ( if n == 0 - then - forgivingStrategy opponentMoves (generatedMoves ++ ['С']) (n + 1) - else - if head opponentMoves == 'С' - then - forgivingStrategy (tail opponentMoves) (generatedMoves ++ ['С']) (n + 1) - else - forgivingStrategy (tail opponentMoves) (generatedMoves ++ ['П']) (n + 1) - ) - else generatedMoves +forgivingStrategy opponentMoves generatedMoves n + | n > 100 || length opponentMoves == 1 = generatedMoves + | n == 0 = forgivingStrategy opponentMoves (generatedMoves ++ ['С']) (n + 1) + | head opponentMoves == 'С' = forgivingStrategy (tail opponentMoves) (generatedMoves ++ ['С']) (n + 1) + | otherwise = forgivingStrategy (tail opponentMoves) (generatedMoves ++ ['П']) (n + 1) + indexOf :: (Eq t) => [t] -> t -> Int indexOf [] _ = -1 @@ -35,6 +27,7 @@ nashStrategy opponentMoves generatedMoves n = ] nextStep = cases !! indexOf results result !! 1 +getScore :: Num t => [Char] -> [Char] -> t -> t -> (t, t) getScore moves1 moves2 score1 score2 = if length moves1 == 0 then (score1, score2) else getScore (tail moves1) (tail moves2) newScore1 newScore2