clojure - 列出列表的所有排列

2023-11-28

假设我有一个这样的集合:

#{"word1" "word2" "word3"}

我怎样才能列出这些单词可能排序的所有方式,即

word1 word2 word3
word2 word3 word1
word3 word2 word1

etc.


最简单的方法是使用数学组合学:

user> (require '[clojure.math.combinatorics :as combo])
nil
user> (combo/permutations #{"word1" "word2" "word3"})
(("word1" "word2" "word3") ("word1" "word3" "word2") ("word2" "word1" "word3") ("word2" "word3"    "word1") ("word3" "word1" "word2") ("word3" "word2" "word1"))

编辑:我还没有看过 math.combinatorics 实现,但这是一个懒惰的版本,因为 OP 要求遵循一些代码。

(defn permutations [s]
  (lazy-seq
   (if (seq (rest s))
     (apply concat (for [x s]
                     (map #(cons x %) (permutations (remove #{x} s)))))
     [s])))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

clojure - 列出列表的所有排列 的相关文章

随机推荐

  • 选择日期/时间范围内的数据

    如何在 MySQL 中选择日期范围内的数据 我的datetime列采用 24 小时祖鲁时间格式 select from hockey stats where game date between 11 3 2012 00 00 00 and
  • 如何更改 kubernetes 节点的名称

    我在 kubernetes 集群中有一个正在运行的节点 有什么办法可以更改它的名称吗 我已经尝试过 使用 kubectl delete 删除节点 更改节点清单中的名称 将节点添加回来 但节点不会启动 有人知道应该怎么做吗 Thanks 通常
  • 数组 [] 括号内的 static 关键字[重复]

    这个问题在这里已经有答案了 我最近发现了新的用法static关键词 什么是static意思是这里 void fun int some array static 7 EDIT 有人能举个例子吗 该标准在6 7 6 3中规定 将参数声明为 类型
  • ASP.NET MVC Bootstrap 动态模式内容

    我正在使用 MVC 5 并且我有一个
  • MongoDB 全文搜索 vs Lucene? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 目前 MongoDB 的全文搜索与 Lucene 相比如何 提出这个问题的原因是由于我不确定 a 在生产中使用 mongo 的 FTS 实现 因为大约 6 个月前它仍处于测试阶段 and
  • SOAP 和 REST Web 服务有什么区别? SOAP 可以是 RESTful 的吗?

    来自 MSDN 杂志https msdn microsoft com en us magazine dd315413 aspx and https msdn microsoft com en us magazine dd942839 asp
  • 组织功能文件的最佳方式是什么? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我尚未解决的一个挑战是以某种方式组织我的功能文件和场景 这样可以轻松地在 Specflow 和 BDD 中导航和探索 想象一下一年后有人想要来了解这
  • GCP PubSub:通过 CURL 类型的请求发布消息

    有没有人有一个工作示例 说明如何直接从 shell 通过 CURL 类型的命令将消息发布到 GCP PubSub 主题 我试图不使用 CLI 也不使用客户端库 而且我对 OAUTH 的东西很感兴趣 我很高兴能有一个在 Linux 上运行的
  • 如何创建特定 TFS 2010 源代码管理路径的资源管理器快捷方式

    我们正在慢慢地将项目从旧的基于文件的存储 不要问 转移到 tfs 我们的编码员仍然习惯在文件系统中查找代码 由于我们正在讨论 100 个项目 每个项目都有一定的历史 因此我们必须小心地逐个移动它们 因此 我们将不得不在一段时间内将现有的文件
  • 是否可以从 Golang 中的父结构调用重写的方法?

    我想实现这样的代码 其中B继承自A并且只重写A的Foo 方法 并且我希望代码打印B Foo 但它仍然打印A Foo 看来接收者在Golang在C 中不能这样工作 当启用动态绑定时 代码可以像我想要的那样工作 我还发布了另一段代码 它可以工作
  • 如何在 Maven 中将多个 OpenAPI 3.0 规范文件合并为一个?

    在使用 Spring Boot 的 Maven 项目中 有多个 OpenAPI 3 0 规范文件 一个规范定义了所有 HTTP 错误 errors yml 并且 error yml 的组件在其他规范中引用 我想生成一个输出规范 其中包含 e
  • 如何使用服务器时间在 Firestore 中设置纪元

    我正在尝试设置在 Firestore 中创建数据时的纪元 我希望使用以下命令获得与实时数据库中所做的类似的结果ServerValue TIMESTAMP 我不想使用设备时间来设置它System getCurrentMillis因为该时间可以
  • 编译器抱怨“错误:程序中存在杂散'\240'”[重复]

    这个问题在这里已经有答案了 我需要实现以下功能 void calc double a double b int r int c double f double 参数a r c和f是输入 b是输出 a 和 b 是具有 r 行和 c 行的二维矩
  • 如何以 ArrayList 形式检索 JDBC 结果集?

    我正在执行一个查询来检索大量 ID 整数 有没有某种方法可以简单地以 ArrayList 形式检索所有内容 而不是在 ResultSet 中迭代数百万次并将所有内容一一复制到 ArrayList 中 我知道 ResultSet 应该被迭代
  • 如何集成 Python mido 和 asyncio?

    我有一个通过 MIDI 进行文件 I O 的设备 我有一个使用 Mido 来下载文件的脚本 但它是一堆全局变量 我想整理它以正确使用 asyncio 但我不确定如何集成 mido 回调 我认为文档说我应该使用 Future 对象 但我不确定
  • 渲染脚本和 GPU

    I knowRenderscript 的设计是为了掩盖我正在运行的处理器的事实 但是有没有办法编写代码 以便在具有 GPU 计算能力的设备 目前是 Nexus 10 上 它will在 GPU 上运行 有什么方法可以判断脚本的函数正在 GPU
  • 让 Visual Studio 忽略异常?

    我在 Silverlight 4 中使用异常来验证控件的输入 当我引发无效输入异常时 VS 2010 将显示弹出窗口并停止程序 我忽略这一点并恢复程序 一切都继续正常 因为异常用于表示验证错误 有没有一种方法可以将该异常标记为忽略 我正在关
  • 将表格布局转换为 CSS 布局的最佳方法是什么?

    我即将开始开发一个具有复杂的基于表格的布局的网页 几年前编码 我想做的一件事是将布局转换为带有 div 和 span 的正确 CSS 布局 您能建议一个解决此类问题的好方法吗 我应该使用像 Blueprint 这样的 CSS 框架吗 只要进
  • 将 mp4 转换为具有透明度的 webm?

    我知道怎么做使用 ffmpeg 将 mp4 转换为 webm ffmpeg y i me939371029 mp4 r 30 out3 webm 但我想用网络管理透明度 该指南使用 Blender 但 Blender 是一个桌面工具 不容易
  • clojure - 列出列表的所有排列

    假设我有一个这样的集合 word1 word2 word3 我怎样才能列出这些单词可能排序的所有方式 即 word1 word2 word3 word2 word3 word1 word3 word2 word1 etc 最简单的方法是使用