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

欢迎!请查看关于页面以获取更多关于这个网站的介绍。

0
语法和读取器

你好!如果这个论坛不是启动这个主题的正确地方,我很抱歉,但我刚接触 Clojure/lisp,并想借此机会挑战自己学习。

所以我开始了第 1 天,并解决了这个问题(从本质上讲,给定一个由空格分隔的长数列,找到它们中的最大和),但是看起来这种方法在 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/很有帮助。

...