Lisp 中无重复数字的随机列表

2024-02-10

我有这个函数可以创建一个包含其他问题中的初始元素的列表Lisp 中带有初始元素的列表从 99 开始到 0 https://stackoverflow.com/questions/59039638/list-with-initial-element-are-start-from-99-to-0-in-lisp/59040324#59040324

(defun newList (&optional(n 100))
  (loop for i from (- n 1) downto 0 collect i))

(defun board (newList &optional(n 10))
  (cond
   ((null newList) nil)
   (t (cons (subseq newList 0 n) (board (subseq newList n) n)))))

(defun show-board (board)
    (format T "~%")
    (mapcar (lambda (x) (format T " ~A ~%" x)) board)
    (format nil "")
)

(show-board (board (newList)))

(99 98 97 96 95 94 93 92 91 90) 
(89 88 87 86 85 84 83 82 81 80) 
(79 78 77 76 75 74 73 72 71 70) 
(69 68 67 66 65 64 63 62 61 60) 
(59 58 57 56 55 54 53 52 51 50) 
(49 48 47 46 45 44 43 42 41 40) 
(39 38 37 36 35 34 33 32 31 30) 
(29 28 27 26 25 24 23 22 21 20) 
(19 18 17 16 15 14 13 12 11 10) 
(9 8 7 6 5 4 3 2 1 0) 

在这里查看结果https://ideone.com/Paorct https://ideone.com/Paorct并用此功能删除重复的数字

(defun remove-duplicate (pred l)
  (cond ((null l) NIL) 
        ((funcall pred (car l)) (remove-duplicate pred (cdr l)))
        (T (cons (car l) (remove-duplicate pred (cdr l))))))

我想实现一个接收列表并随机更改其数字的函数。创建一个递归函数并使用

nth

函数、随机函数和

删除重复项

函数,其中该函数必须从列表中删除与随机找到的数字相等的数字。

停止条件是链表为空;

应该使用

let

使用以下语句在本地存储在随机位置找到的数字:

(nth (随机 (长度 l)) l)

使用

删除重复项

您应该从递归函数中作为参数传递的列表中删除随机找到并存储在本地的数字。 我有这个,但它不起作用,我试图理解算法

我的疑问是,如何实现随机列表的功能 无重复号码

(defun shuffle-list (l)
   ;; iterate 99 times
   (dotimes (i (- (length l) 1))
    ;; store random number to n
    (let ((n (nth (random (length l)) l)))
         ;; print value of n
         (format t "~A ~%" n)
         (cond 
             ((null l) nil)
             ;; I have this but it´s not show the new list
             (t (remove-duplicate #'(lambda (x) (= x n)) l))))))

例如结果应该是

 (94 25 54 89 21 8 36 14 41 96) 
 (78 47 56 23 5 49 13 12 26 60)  
 (0 27 17 83 34 93 74 52 45 80)  
 (69 9 77 95 55 39 91 73 57 30) 
 (24 15 22 86 1 11 68 79 76 72)  
 (81 48 32 2 64 16 50 37 29 71)  
 (99 51 6 18 53 28 7 63 10 88)  
 (59 42 46 85 90 75 87 43 20 31)  
 (3 61 58 44 65 82 19 4 35 62)
 (33 70 84 40 66 38 92 67 98 97)

有一个内置函数remove-duplicates http://clhs.lisp.se/Body/f_rm_dup.htm名字以“s”结尾。

remove-duplicates需要一个:from-end带有布尔值的关键字参数,用于控制保留哪个重复值:列表中出现的第一个或最后一个。

请阅读实用 Common Lisp http://www.gigamonkeys.com/book about let http://www.gigamonkeys.com/book/variables.html#variable-basics以及关于if/cond http://www.gigamonkeys.com/book/macros-standard-control-constructs.html。这是一本很棒的书!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Lisp 中无重复数字的随机列表 的相关文章

  • 为什么在基于 Lisp 的语言中习惯上将许多右括号放在一行上?

    通常代码如下所示 one thing another thing arg1 f arg5 r another thing arg1 f arg5 r 为什么不喜欢这样 one thing another thing arg1 f arg5
  • Lisp / Clojure:编写函数生成宏是个好主意吗?

    这个问题 https stackoverflow com q 7852351 346587要求创建一个 Clojure 宏来生成多个函数 我们找到了一种方法来做到这一点 但仍被 这是一个好主意吗 的问题所困扰 我的第一反应是并不真地 有两个
  • Scheme/Lisp 嵌套循环和递归

    我正在尝试解决方案中的一个问题 该问题要求我使用嵌套循环或嵌套递归 例如我有两个列表 我必须检查它们的笛卡尔积的条件 解决这些类型问题的最佳方法是什么 有关如何简化这些类型的函数的任何指示吗 I ll elaborate a bit sin
  • Lisp 中的 (定义 (平均 ....))

    我只是在玩scheme lisp 并正在考虑如何纠正我自己的定义average 我不确定如何做一些我认为需要的事情 定义一个接受任意数量参数的过程 计算这些参数 将参数列表传递给 以将它们加在一起 有人有定义的例子吗average 我似乎对
  • 为什么 LISP 中符号名称中的连字符是约定俗成的?

    这个推荐的理由是什么 为什么不与使用下划线的其他编程语言保持一致 我认为 LISP 使用连字符有两个原因 历史 和 因为你可以 History LISP 是一种古老的语言 在早期输入下划线可能会很困难 例如 我用于 LISP 的第一个终端是
  • F# 类型提供程序与 Lisp 宏

    我一直在阅读有关 F 3 0 类型提供程序的内容 例如here http msdn microsoft com en us library hh156509 aspx 并且它们似乎基于一种编译时代码生成 在这方面我想知道它们与 Lisp 宏
  • 为什么在 emacs-lisp 中的函数参数之前使用#'?

    我熟悉 Emacs Lisp 但不熟悉 Common 或任何其他 Lisp 一些 Lisp 程序员建议 例如emacs 的基本功能 https stackoverflow com questions 17076646 a basic fun
  • 学习 LISP 的最佳方法是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 试图理解 setf + aref “魔法”

    我现在已经了解了数组和aref在 Lisp 中 到目前为止 它很容易掌握 而且它的作用就像一个魅力 defparameter foo make array 5 aref foo 0 gt nil setf aref foo 0 23 are
  • 递归分割列表函数 LISP

    split list 函数接受一个列表并返回一个由两个列表组成的列表 其中两个列表由输入的交替元素组成 我写了以下内容 defun split list L cond endp L list NIL NIL t let X split li
  • Scheme (Lisp) 中树的深度反转

    我对Scheme中的基本树数据结构进行了深度逆向 define deep reverse t cond null t not pair t t else cons deep reverse cdr t deep reverse car t
  • 为什么我们在 Lisp 中需要 funcall?

    为什么我们必须使用funcall在 Common Lisp 中调用高阶函数 例如 为什么我们必须使用 defun foo test func args funcall test func args 而不是更简单的 defun bar tes
  • 更改 Common Lisp REPL 中文本的颜色

    我想控制 Common Lisp 中显示的文本的颜色 像这样的伪代码 print color red hello blue world 有什么办法可以做到这一点吗 我使用 SBCL 我的 repl 位于 emacs 内 谢谢 您可以使用AN
  • Lisp:使用语法糖访问递归哈希

    我正在尝试构建一个函数 或宏 来简化哈希表深处数据的获取和设置 也就是说 哈希中的哈希 哈希中的哈希等 我不认为我可以用宏来做到这一点 而且我不知道如何用 eval 来做到这一点 我希望能够执行以下操作 gethashdeep HEROES
  • Lisp 中的十进制到二进制 - 制作非嵌套列表

    当达到我的递归情况时 我使用list将未来结果附加到当前结果 但由于递归 我最终得到一个嵌套列表 当我有一个导致递归超过五次的数字时 这会导致错误 任何想法如何我可以在一个简单的非嵌套列表中获得结果 例如 CL 用户 100 8 gt BI
  • 关于onlisp中的广义变量

    我不确定这里发生了什么 文中的宏观示例 基本上不知道如何使用get setf 方法 一个内置宏 也许是函数 具体来说 如果某些返回值是这样的情况呢 get setf 方法为零 例如 get setf 方法 x NIL NIL NEW 306
  • Scheme 和 Common Lisp 之间的实际区别是什么? (或任何其他两种 Lisp 方言)

    注意 我并不是在问学哪个 哪个更好或者诸如此类的问题 我选择了 SICP 的免费版本 因为我觉得它读起来很好 我听说过有关它的好东西 并且我对编程的这一方面很感兴趣 我知道Scheme 是Lisp 的一种方言 我想知道 Scheme 和Co
  • defvar、defparameter、setf 和 setq 之间有什么区别

    我找到了一个类似问题 https stackoverflow com questions 3855862 setq and defvar in lisp 但我不太明白这个解释 所以我尝试使用以下示例运行 clisp 1 gt defvar
  • 一次性的 lisp 宏,我的实现正确吗?

    我正在尝试从 Peter Seibel 的书 Practical Common Lisp 中学习 Lisp 在第 8 章 宏 定义你自己的 http www gigamonkeys com book macros defining your
  • 计算二项式时“应用程序:不是过程”

    我正在定义一个函数binomial n k 又名帕斯卡三角形 但出现错误 application not a procedure expected a procedure that can be applied to arguments g

随机推荐

  • 使用 adb 向 Android 手机发出捏合/捏合命令

    到目前为止 我可以使用 adb 命令点击 滑动 解锁 安装 卸载和启动应用程序 但无法找到如何使用 adb 命令执行放大 缩小 我已经获得了捏入 捏出的坐标 但不知道如何使用终端的 adb 命令来触发它们 例如 我们有命令 gt adb s
  • 如何为本地Rails项目设置Postgres数据库?

    我最近买了一台新机器 现在想在 Github 上处理我的项目 我很好奇如何在本地计算机上正确设置 Postgres 数据库 我有postgresql pgadmin3 and libpq dev安装在 Ubuntu 12 04 上 我拉下项
  • 大量 iTunes Connect 抓取

    我正在研究从 iTunes Connect 网站获取销售报告和其他数据的不同选项 由于Apple不提供API 所以我找到的所有解决方案都是基于抓取页面 由于我需要我们提供的产品的信息 因此我不太乐意将所有 iTunes 帐户提供给第三方服务
  • Spring Boot 多个端口?

    如何让 Spring Boot Web 应用程序在多个端口上运行 例如8080和80我怎样才能做到这一点 应用程序属性 server port 8080 80 您可以添加侦听器 而不是运行多个应用程序 例如 如果您使用 undertow C
  • Firebase“抛出新错误('提供的服务帐户无效');”错误信息

    我注意到 Firebase 最近发生了变化 我正在构建一个需要 firebase 的 node js 应用程序 以前这就足够了 var Firebase require firebase var firebaseRef new Fireba
  • 从 create-react-app 公共文件夹读取 JSON 文件 [重复]

    这个问题在这里已经有答案了 我有一个 ipAddress json 文件 其中包含以下内容 ipAddress 11 111 111 111 在公共文件夹中 我将该 ipAddress json 文件放入 ipAddress 文件夹中 因此
  • 按日期对 pandas df 中的组进行排序和排名

    从以下类型的数据框中 我希望能够对id日期字段 df pd DataFrame id 1 1 2 3 3 4 5 6 6 6 7 7 value 01 4 2 3 11 21 4 01 3 5 8 9 date 10 01 2017 15
  • 代码挑战:Bash 提示路径缩短器

    我为 bash 实现了一个提示路径缩短器 将其包含在 PS1 环境变量中 它将工作目录缩短为更紧凑但仍具有描述性的目录 我很好奇可能存在什么其他想法 这是挑战 创建 bash 函数 dir chomp可以像这样包含到 PS1 中 插入换行符
  • 如何使用 for 循环迭代子级

    我想迭代 jQuery 的所有子级 children 返回值 像这样 var childs element children for var i 1 i lt childs length 1 i childs foo 我必须在第 3 行写什
  • 创建新的 OneNote 笔记本 错误请求

    我想使用 Graph api 创建一个新的 OneNote 笔记本 我正在关注这份文件 使用 Graph Explorer 我无损地创建了它 但我想从不同的环境中实现相同的目标 例如 Postman 我通过 client credentia
  • 更改 Derby 数据库密码

    我已经在 Glassfish Netbeans 中设置了 Derby DB 密码 我还选中了记住我复选框 现在我无法再更改密码了 要更改密码您只需执行 call SYSCS UTIL SYSCS SET DATABASE PROPERTY
  • CakePHP 3 和表单验证错误

    我使用 cakePHP 3 并且我有一个使用 Form gt input 的登录表单 如果我故意犯了一个错误 这个错误不会出现在表单字段下 它没有出现在任何地方 我的代码是这样的 newUser this gt Users gt newEn
  • 如何将 NULL 值更改为空字符串?

    我有一个 SSIS 包 它将数据从可为空的列复制到同一列不可为空的表 使源不可为空涉及繁文缛节 因此现在我需要一种方法将空值更改为空字符串 我从 ADO Net 源获取数据 而不是从查询中获取数据 在查询中我可以添加空值检查 如果需要 我可
  • 如何创建一个播放 mp3 google tts 的按钮

    我是新来的 但我希望你能帮助我 我正在尝试创建一个按钮来播放谷歌生成的文本到语音 mp3 我正在创建一个翻译器 所以 我想要做的是像谷歌翻译这样的事情 以某种方式 我尝试过使用 javascript 和 actionscript 但无法使其
  • 使用 pip 安装时出错

    尝试卸载用 pip 安装的软件包 我卸载了一些 现在 pip 不起作用 我尝试安装熊猫 sudo pip install pandas 这是错误 Requirement already satisfied use upgrade to up
  • 同步服务运行后刷新 FragmentActivity 中的片段

    有没有人有任何优雅的解决方案来刷新Views in Fragments in a FragmentActivity s ViewPager同步后Service from a SyncAdapter runs 我试过打电话notifyData
  • IndexAxisValueFormatter 未按预期工作

    我正在使用MPAndroid图表 https github com PhilJay MPAndroidChart创建条形图 我的配置
  • Magento:如何获取属于属性集的属性?

    有了属性集 如何获取它包含的属性列表 或者更好的是 仅获取不属于默认属性集的自定义属性 属性集本身可以通过多种方式获取 例如 entityTypeId Mage getModel eav entity gt setType catalog
  • `const_iterator` 真的需要是与 `iterator` 不同的类吗?

    假设我定义了某种容器A struct A iterator begin return iterator this 0 const iterator cbegin const return iterator this last 假设现在我想声
  • Lisp 中无重复数字的随机列表

    我有这个函数可以创建一个包含其他问题中的初始元素的列表Lisp 中带有初始元素的列表从 99 开始到 0 https stackoverflow com questions 59039638 list with initial elemen