【问题标题】:Equality of vectors in clojureclojure 中向量的相等性
【发布时间】:2020-12-19 21:18:22
【问题描述】:

我试图解决这个问题

我意识到这个语句的输出是错误的。

(= (#(into [] (distinct %)) [1 2 3]) 
   '(1 1 2 2 3 3))

这应该是真的,因为函数也返回相同的向量。

有人可以向我解释为什么这是错误的吗?

【问题讨论】:

  • 你使用distinct 对抗[1 2 3] 而不是'(1 1 2 2 3 3)
  • 问题是要求您编写一个复制序列中每个元素的函数。 distinct 在相反的方向工作,删除重复。

标签: vector clojure equality


【解决方案1】:

您提出的问题与您所指的问题无关,your own answer 解决了该问题。单独看问题...

  • 作为 rascio cmets,您将 distinct 应用于错误 顺序。
  • 此外,您可以将= 应用于任意两个序列。你没有 将distinct 生成的惰性序列转换为向量。

因此以下就足够了...

(= [1 2 3] (distinct '(1 1 2 2 3 3)))
=> true

【讨论】:

    【解决方案2】:

    从 cmets 中,我发现我错误地使用了 distinct 方法,因此决定使用 repeat 方法得到答案:

    mapcat #(repeat 2 %)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-06
      相关资源
      最近更新 更多