\documentclass[实验报告模板]{subfiles}

\renewcommand{\mydate}{
    2023/10/10
}
\renewcommand{\mychapternum}{2}

\begin{document}
    \mytitle
    \begin{enumerate}
        \myitem{实验目的}{
            \item 使用第二章知识解决约瑟夫环问题（复杂版）。
        }
        \myitem{实验内容}{
            \item 在原有约瑟夫环的基础上，输入参与这场游戏的人数 n 与自杀报数 m，
            输出为最后两个幸存者的位置序号。
            \item 在第一题的基础上，输入参与这场游戏的人数 n 与两个自杀报数 a 和
            b，按照一次 a 一次 b 的顺序自杀（a，b 可以为负数，正数代表正向，
            负数代表反向），输出为最后两个幸存者的位置序号。
        }
        \myitem{实验原理}{
            \item 程序设计原理。
        }
        \myitem{实验步骤}{
            \item 问题抽象
            \item 编写程序
            \item 调试程序
            \item 完善总结
        }
        \myitem{调试过程、结果和分析}{
            \item 简单考虑，暂时不考虑输入错误或者输入为0的情况；
            \item JavaScript没有指针的概念，所以使用对象的引用代替；
            \item JavaScript在严格模式下暂时无法直接删除对象，因此移除结点时无法完全销毁一个节点；
            \item 最后只留下两个，而不是$\min(\mathrm{abs}(a), \mathrm{abs}(b))-1$个；
            \item 删除的结点应该作为第0个，此时往前a个或往后b个，一开始如果a是正数那么应该按照$1, 2, 3, \ldots $的顺序遍历，如果a是负数那么应该按照$n, n-1, n-2, \ldots $的顺序遍历；
            \item 由于此问题中只涉及到初始化链表、删除单个结点两个操作，因此链表的添加结点、清空、销毁等操作暂不需要实现。
        }
        \myitem{总结}{
            \item 由于JavaScript的异步性质，需要进行连续多个输入时，可以将回调过程封装成Promise对象后，使用async创建异步函数，在其中使用await可以方便使用Promise对象，避免大量回调，同时也可以结合循环、分支等结构，实现更复杂的控制；
            \item 抽象出了结点对象和链表对象，并且实现了从当前节点开始寻找第n个结点（可以为负数）的方法；
            \item 整个文件中只有input和main\_函数与Node.js环境耦合，即使用了readline模块，而主要功能放在main函数中，因此在浏览器环境中可以直接调用main函数，方便代码复用。
        }
        \myitem{附件}{
            \itemsep 3em
            \item 在原有约瑟夫环的基础上，输入参与这场游戏的人数 n 与自杀报数 m，
            输出为最后两个幸存者的位置序号。\\
            （JavaScript，Node.js环境）
            \inputminted[linenos=true,breaklines=true]{javascript}{../JavaScript/第二章作业1.js}
            \item 在第一题的基础上，输入参与这场游戏的人数 n 与两个自杀报数 a 和
            b，按照一次 a 一次 b 的顺序自杀（a，b 可以为负数，正数代表正向，
            负数代表反向），输出为最后两个幸存者的位置序号。\\
            （JavaScript，Node.js环境）
            \inputminted[linenos=true,breaklines=true]{javascript}{../JavaScript/第二章作业2.js}
        }
    \end{enumerate}
\end{document}