From 5bad80df69cdaadaf397c649ff82fa6f0ef5b7b2 Mon Sep 17 00:00:00 2001 From: Arity-T Date: Thu, 14 Nov 2024 19:49:49 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=BA=D0=BE=D0=B4=20=D0=9D=D0=B5=D1=88=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lab2/report/report.tex | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/lab2/report/report.tex b/lab2/report/report.tex index 95ae15f..1f6946b 100644 --- a/lab2/report/report.tex +++ b/lab2/report/report.tex @@ -343,16 +343,10 @@ \subsection{Повторяющаяся дилемма заключённого} \subsubsection{Равновесие Нэша} - Функция \texttt{nashEquilibriumStrategy}, код которой представлен в листинге~\ref{lst:nashEquilibriumStrategy}, реализует равновесие Нэша. Функция рекурсивная, она принимает на вход список действий оппонента, список уже сгенерированных действий и число -- счётчик количества ходов. Функция завершается, когда достигается максимум ходов, либо когда заканчиваются ходы оппонента. Также она использует вспомогательную функцию \texttt{indexOf}. Она принимает на вход некоторый список и элемент этого списка, а возвращает индекс первого совпавшего с указанным элемента. Она возвращает список ходов игрока в соответствии со стратегией. + Функция \texttt{nashEquilibriumStrategy}, код которой представлен в листинге~\ref{lst:nashEquilibriumStrategy}, реализует равновесие Нэша. Функция рекурсивная, она принимает на вход список действий оппонента, список уже сгенерированных действий и число -- счётчик количества ходов. Функция завершается, когда достигается максимум ходов, либо когда заканчиваются ходы оппонента. Она возвращает список ходов игрока в соответствии со стратегией. - \begin{lstlisting}[caption={Код функций, резализующих стратегию в соответствии с равновесием Нэша.}, label={lst:nashEquilibriumStrategy}] - indexOf :: (Eq t) => [t] -> t -> Int - indexOf [] _ = -1 - indexOf (x : xs) target - | x == target = 0 - | otherwise = 1 + indexOf xs target - + \begin{lstlisting}[caption={Код функции, резализующей стратегию в соответствии с равновесием Нэша.}, label={lst:nashEquilibriumStrategy}] nashEquilibriumStrategy :: [Char] -> [Char] -> Int -> [Char] nashEquilibriumStrategy opponentMoves generatedMoves n = if n <= 100 && length opponentMoves > 0 @@ -360,13 +354,12 @@ nashEquilibriumStrategy (tail opponentMoves) (generatedMoves ++ [nextStep]) (n + 1) else generatedMoves where - cases = [[' П', ' С'], [' П', ' П']] - results = [[0, 10], [5, 5]] - result = - [ min (results !! 0 !! 1) (results !! 1 !! 1), - max (results !! 0 !! 0) (results !! 1 !! 0) - ] - nextStep = cases !! indexOf results result !! 1 + cases = [[' С', ' С'], [' С', ' П'], [' П', ' С'], [' П', ' П']] + results = [[1, 1], [10, 0], [0, 10], [5, 5]] + p_years = min (results !! 1 !! 1) (results !! 3 !! 1) + s_years = min (results !! 0 !! 1) (results !! 2 !! 1) + nextStep | p_years <= s_years = ' П' + | otherwise = ' С' \end{lstlisting} \subsubsection{Прощающая стратегия}