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 中无重复数字的随机列表 的相关文章

  • 格式 - 帮助打印表格

    这个问题可能会以捂脸结束 但我已经尝试了一段时间 尽管阅读了超规范 但仍然卡住了 基本上我想做的是 format t 5d 1 23 2 312 23 456 1 7890 但不应该对 5 进行硬编码 而是应该从列表中计算 任何嵌套列表中最
  • 如何使用 Common Lisp 获得列表的所有可能排列?

    我正在尝试编写一个 Common Lisp 函数 该函数将给出列表的所有可能排列 每个元素仅使用一次 例如 列表 1 2 3 将给出输出 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 我已经写过一些有用的东西 但它
  • Jupyter 和 Common Lisp

    我正在尝试安装cl jupyter https github com fredokun cl jupyter common lisp 内核Jupyter http jupyter org 我无法让它工作 当我打开一个新的 lisp 笔记本
  • Common Lisp 中的未绑定变量

    我是 Lisp 新手 正在阅读 ANSI Common Lisp 第 8 章中的文本生成器示例 我按照该示例并在 LET 变量 prec 的范围内定义了一个函数 see let prec defun see symb let pair as
  • Lisp 内部引用工作

    口齿不清是如何做到的quote内部工作 例如 quote 1 1 2 似乎相当于 list 1 list 1 2 这意味着它是如何递归地象征 Head 值的 这个功能是内置的吗 Run equal quote 1 1 2 list 1 li
  • 如何在类Unix操作系统下方便的运行SBCL代码?

    David James 写了问题和答案 我将对其进行编辑以符合 Stackoverflow 标准 使用 SBCL 您可以将 Lisp 代码编译为机器代码 像 Java net C 甚至 C 一样 您将需要运行时 所以有两种方法来编译 Com
  • 防止 LISP 中的终端输出

    我想运行一个函数 但不让它在终端中输出结果 例如 set A B 正常返回B在控制台中如下所示 gt gt gt set A B B gt gt gt A B 我不希望它返回任何东西 我仍然希望该函数能够完成它应该做的事情 只是默默地 gt
  • 以下函数式编程模式的正确术语是什么?

    我听说它被称为stream http mitpress mit edu sicp full text sicp book node72 html as an 无限列表 http en wikibooks org wiki Clojure P
  • Common Lisp 类型声明未按预期工作

    当我在 Common Lisp 中定义一个函数时 如下所示 defun foo n declare type fixnum n n 42 我期待一个像这样的电话 foo a 立即失败 但在调用时失败 是个declareform 不保证静态类
  • Lisp 当前内存使用情况

    我需要从 Common Lisp 程序中找出当前使用了多少内存 我知道没有可移植的方法 标准函数room以文本形式将信息打印到标准输出 而不是将其作为值返回 但是sb kernel dynamic usage在 SBCL 工作 其他 Com
  • CLISP - 反转简单列表

    我必须反转简单 单维 列表的元素 我知道有一个内置的反向函数 但我不能用它来做这个 这是我的尝试 defun LISTREVERSE LISTR cond lt length LISTR 2 LISTR listr is 1 atom or
  • Lisp 中的数组与列表:为什么下面的代码中的列表要快得多?

    我在解决时得到了意想不到的结果欧拉计划中的问题 75 https projecteuler net problem 75 我的代码确实找到了正确的解决方案 但它的行为很奇怪 我的解决方案包括遍历毕达哥拉斯树 巴宁矩阵 https en wi
  • elisp:有没有办法获取当前 .el 模块的名称(如 C 中的 __FILE__ )?

    在我的 elisp 模块的顶部 我想做一些简单的事情 message concat Loading expand file name current elisp module 您可以使用变量load file name https www
  • 如何定义和使用 Common Lisp 包(库)?

    我在几个 Lisp 源文件中开发了一些 Common Lisp 函数 我希望这些函数可以轻松地供我编写的其他函数使用 或者如果我认为它们对其他人有用的话 可以在 github 上提供 现在 我只是将它们放在一些预定义的文件夹中并使用 req
  • let* 和 set 之间的区别?在 Common Lisp 中

    我正在从事一个基因编程爱好项目 我有一个函数 宏设置 当以 setq setf 形式评估时 将生成一个如下所示的列表 setq trees make trees 2 gt x abs x 然后它将绑定到 lambda 函数
  • 人们可以放心地忽略宏和内置宏之间的区别吗?

    我从 Clojure 开始 这也是我的第一个 lisp 显然有很多东西需要吸收 为了减轻认知负担 我尝试找到我可以安全地忽略的部分 目前 人们能否安全地以相同的方式处理带有宏的表单和带有内置函数的表单 或者是否会出现以后出现的陷阱 换句话说
  • 用通用函数替换普通函数

    我想将 elt nth 和 mapcar 等名称与我正在原型设计的新数据结构一起使用 但这些名称指定普通函数 因此我认为需要将其重新定义为通用函数 重新定义这些名称可能是一种不好的形式 有没有办法告诉 defgeneric 不要生成程序错误
  • Common Lisp 鼠标位置与 ltk

    我正在 Common Lisp 中制作一个简单的小程序 我想使用鼠标移动来控制它 我用 LTK 作为窗口 我找不到任何可以检索鼠标位置的函数 例如 Emacs Lisp 有 鼠标像素位置 我发现这在罗塞塔代码上 https rosettac
  • Lisp / Clojure:编写函数生成宏是个好主意吗?

    这个问题 https stackoverflow com q 7852351 346587要求创建一个 Clojure 宏来生成多个函数 我们找到了一种方法来做到这一点 但仍被 这是一个好主意吗 的问题所困扰 我的第一反应是并不真地 有两个
  • 学习 Lisp 的资源 [关闭]

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

随机推荐

  • 使用 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