gpt4 book ai didi

clojure - 在字符串列表中每第 n 个元素插入字符串

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

我是 Clojure 新手。

我正在开发一款井字游戏

我正在尝试制作一个“格式化”棋盘的函数,它是一个以位置编号为键和关键字 :x :o:e 表示值(:e 代表空)。


我想在关键字名称列表中每 3 个插入一个换行符。

例如 "x""x""x""e""e""e""e""e""e" 应转换为 "x""x""x""\n""e""e""e""\n""e""e""e" 然后我会连接这些字符串以便打印它。

(defn- newline-every
[n list]
(if (empty? list)
[]
(let [[fst snd] (split-at n list)]
(concat
(conj fst "\n")
(newline-every n snd)))))

最佳答案

它是 Clojure,所以在一行中肯定有很多方法可以做到这一点。这是一种尝试:

(flatten (interpose "\n" (partition n list))))

正如用户 amalloy 评论的那样,没有理由使用 flatten,所以这里有一个更好的方法:

(apply concat (interpose ["\n"] (partition n list))))

从你给出的字符串序列(都包含一个字符)开始,给出:

... > (newline-every 3 ["x" "x" "x" "e" "e" "e" "e" "e" "e"])
("x" "x" "x" "\n" "e" "e" "e" "\n" "e" "e" "e")

然后您可以将其转换为字符串:

... > (apply str (newline-every 3 ["x" "x" "x" "e" "e" "e" "e" "e" "e"]))
"xxx\neee\neee"

关于clojure - 在字符串列表中每第 n 个元素插入字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24793442/

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