clojure clj随机生成50个整数,这50个整数都在1000以内

第一种解法

(take 20 (repeatedly #(rand-int 100)))

 第二种解法

(repeatedly 50 #(rand-int 1000))

箭头红

(->> (repeatedly #(rand-int 100))
     (take 20))

结果:

随机的,我就不写了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为你提供一个基本的五子棋游戏实现,使用Clojure语言编写。 首先,我们需要定义一个棋盘数据结构,在Clojure中可以使用一个嵌套的向量来表示,其中每个元素表示一个棋子的状态,例如: ``` (def board [[nil nil nil nil nil nil nil nil nil nil] [nil nil nil nil nil nil nil nil nil nil] [nil nil nil nil nil nil nil nil nil nil] [nil nil nil nil nil nil nil nil nil nil] [nil nil nil nil nil nil nil nil nil nil] [nil nil nil nil nil nil nil nil nil nil] [nil nil nil nil nil nil nil nil nil nil] [nil nil nil nil nil nil nil nil nil nil] [nil nil nil nil nil nil nil nil nil nil] [nil nil nil nil nil nil nil nil nil nil]]) ``` 在这个棋盘中,每个元素都是一个空值nil,表示这个位置没有棋子。我们还需要定义一个变量来表示当前玩家是谁,例如: ``` (def player "黑方") ``` 接下来,我们需要定义一些函数来操作这个棋盘和玩家变量。首先,我们需要一个函数来打印当前的棋盘状态,例如: ``` (defn print-board [] (doseq [row board] (doseq [cell row] (print (if cell cell "·"))) (println))) ``` 这个函数使用了两个嵌套的doseq循环来遍历整个棋盘,打印每个位置的状态。空位置打印为"·",有棋子的位置打印为棋子的状态。 接下来,我们需要一个函数来让玩家下棋。这个函数应该接受一个位置参数,表示玩家想要下棋的位置,然后将这个位置的状态设置为当前玩家的颜色。例如: ``` (defn make-move [x y] (if (nil? (get-in board [x y])) (do (assoc-in board [x y] player) (if (= player "黑方") (def player "白方") (def player "黑方"))) (println "这个位置已经有棋子了,请重新选择位置。"))) ``` 这个函数首先检查这个位置是否已经有棋子,如果没有,就将这个位置的状态设置为当前玩家的颜色,并且切换玩家。如果这个位置已经有棋子了,就打印一个错误信息,让玩家重新选择位置。 最后,我们需要一个函数来判断游戏是否结束。这个函数应该检查棋盘上是否已经有五个同色的棋子连成一条线,如果有,就返回true,表示游戏结束。例如: ``` (defn check-win [] (let [win-lines [[(range 5) (repeat 5)] [(repeat 5) (range 5)] [(range 5) (range 5)] [(range 4 9) (range 5)] [(range 5) (range 4 9)] [(range 4 9) (range 4 9)] [(range 4 9) (range 0 5)] [(range 4 9) (range 1 6)] [(range 4 9) (range 2 7)] [(range 4 9) (range 3 8)]]] (some #(every? #(= player (get-in board [%1 %2])) %) win-lines))) ``` 这个函数定义了一个win-lines列表,其中包含了所有可能的五子棋连线。然后,使用some和every?函数来检查每一条连线是否都是同色的棋子,如果有一条连线满足条件,就返回true,表示游戏结束。 现在,我们已经定义了一个基本的五子棋游戏,可以使用REPL来运行。你可以通过调用print-board函数来打印当前的棋盘状态,make-move函数来让玩家下棋,check-win函数来检查游戏是否结束。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值