gpt4 book ai didi

lisp - 用 Lisp 编程乐透

转载 作者:太空宇宙 更新时间:2023-11-03 18:51:44 26 4
gpt4 key购买 nike

我将如何在 Lisp 中编写乐透代码,其中用户随机生成 1-45 之间的 6 个数字(非重复),然后输入他们自己选择的乐透号码以查看它们是否匹配,然后告诉他们它们是否“赢了还是没赢?

(defun shuffle (list)
(let ((len (length list)))
(loop repeat len
do (rotatef (nth (random len) list)
(nth (random len) list))
finally (return list))))

(defun lottery ()
(sort (subseq (shuffle (loop for i from 1 to 49 collect i))
0 6)
#'<))

(lottery)

(代码实际上是从其他作者那里拿来的这个问题:Get numbers for the lottery)

这会输出我需要的随机数,但我在获取用户输入的 6 个数字并将它们与这些数字进行比较以查看它们是否“获胜”时遇到了很多麻烦。

最佳答案

让我们从获取n 个非重复随机数开始。

(defun get-n-rand (n)
(loop :for i = (adjoin (1+ (random 44)) i)
:when (= (length i) n) :return i))

现在如果我们想要其中的 6 个很简单,可以编写 (get-n-rand 6)

接下来我们要检查是否可以在另一个列表中找到一个列表的每个成员。

(defun check-user-guess (guess-list actual-list)
(equal (sort guess-list #'<) (sort actual-list #'<)))

希望这涵盖了核心逻辑。输入我现在将离开,因为它已在其他答案中涵盖。

关于lisp - 用 Lisp 编程乐透,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29411099/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com