我想了解下面针对该问题设计的代码如何工作:“给出一个整数序列,找到一个连续的子序列,以最大化其元素的总和”
defn max-subseq-sum [coll]
(->> (take-while seq (iterate rest coll)) ; tails (1)
(mapcat #(reductions conj [] %)) ; inits (2)
(apply max-key #(reduce + %)))) ; max sum
所以我想看看形式(1),(2)和其他形式的输出。我可以在草书中设置断点,但我不知道如何获取这些值。 我尝试定义一个语言环境变量,例如
(defn max-subseq-sum [coll]
(->> (take-while seq (iterate rest coll)) ; tails
(let [d #(reductions conj [] %)]
d ) ; inits
(apply max-key #(reduce + %)))
)
(max-subseq-sum [-1, -2, 3, 5, 6, -2, -1, 4, -4, 2, -1])
但是例如,我还是不明白如何看待
如何解决这个问题?
答案 0 :(得分:4)
有一个不错的图书馆,名为debux
void onPlayerStateChanged(boolean playWhenReady,int playbackState)
答案 1 :(得分:1)
可以将一个打印并返回其输入的简单函数插入到链中:
<Route exact path="/" render={props => (
<GroupScreen groups={this.state.groups} />
)} />
<Route exact path="/conversation_area" render={props => (
<h1>bla bla</h1>
)} />
或者,如果您希望更好地跟踪并且不介意太多,可以使用在打印输出中包含表达式的宏:
(defn debug [x]
(println x)
x)
(defn max-subseq-sum [coll]
(->> (take-while seq (iterate rest coll))
(debug)
(mapcat #(reductions conj [] %))
(apply max-key #(reduce + %))))
(max-subseq-sum [-1, -2, 3, 5, 6, -2, -1, 4, -4, 2, -1])
([-1 -2 3 5 6 -2 -1 4 -4 2 -1] (-2 3 5 6 -2 -1 4 -4 2 -1) (3 5 6 -2 -1 4 -4 2 -1) (5 6 -2 -1 4 -4 2 -1) (6 -2 -1 4 -4 2 -1) (-2 -1 4 -4 2 -1) (-1 4 -4 2 -1) (4 -4 2 -1) (-4 2 -1) (2 -1) (-1))
=> [3 5 6 -2 -1 4]