请在 2024 年 Clojure 状态调查!中分享您的想法。

欢迎使用!请查看 关于 页面以了解更多有关该论坛的信息。

0
语法和读取器

你好!很抱歉如果这个论坛不是开启此类贴的合适场所,但我是 Clojure/Lisp 的一般初学者,并认为这是一个很好的机会来挑战自己学习一点东西。

所以我已经开始了一天,并解决了问题(在本质上,给定一个由双空格分隔的数字列表,找到其中的最大和),但这看起来是 Clojure 中处理这个问题的最不优雅的方式。

例如,以下回答将是 300

10
20

100
200

我的解决方案如下,我主要想知道

  1. 这样解决这个问题的方法对初学者来说是否合理,我漏掉了什么会使它更加优雅。
  2. 如何格式化这样的行呢?

(以下是隐藏内容,如有其他人对这个挑战感兴趣)

(require '[clojure.string :as str])

(reduce max (map (fn [x] (reduce + (map #(Integer/parseInt %) (str/split x #"\n")))) (str/split (slurp "./input-1.txt") #"\n\n")))

我希望,时间允许的话,能够继续这个旅程到月底,因此我希望能够面对这些挑战,因为即使是我熟悉的语言,这些挑战也相当复杂,但可以预见的是,REPL 真的是一个奇妙的东西。

3 答案

0

您可能会觉得 Clojure API 技巧表很有帮助 https://clojure.org/api/cheatsheet

看起来 split-linesparse-long 可能是有用的函数。

0

嗨,很抱歉这并不是你问题的确切答案,但我也在用Clojure做Advent of Code。

我最多是一名中级业余Clojure开发者,所以不能保证任何解决方案都是规范化的或最佳化的,但如果你愿意,我的解决方案在这里可以比较。

https://github.com/dfornika/advent-of-code/tree/master/2022/clojure

0

关于格式化和惯用语的讨论中,你可能觉得非官方社区指南 https://guide.clojure.style/ 有所帮助。

...