Algorithm Hackerrank测试失败,但答案正确

Algorithm Hackerrank测试失败,但答案正确,algorithm,clojure,Algorithm,Clojure,我有以下解决方案: (defn count-swaps [a] (letfn [(swap [a i j] ;; looked up letfn online (assoc a i (nth a j) j (nth a i)))] (loop [a a num-swaps 0 i 0] (if (< i (count a)) (let [int-loop (loop [a' a j 0 num-swaps' 0]

我有以下解决方案:

(defn count-swaps [a]
  (letfn [(swap [a i j] ;; looked up letfn online
            (assoc a i (nth a j) j (nth a i)))]
    (loop [a a num-swaps 0 i 0]
      (if (< i (count a))
        (let [int-loop (loop [a' a j 0 num-swaps' 0]
                         (if (< j (dec (count a)))
                           (if (> (nth a j) (nth a (inc j)))
                             (recur (swap a' j (inc j)) (inc j) (inc num-swaps'))
                             (recur a' (inc j) num-swaps'))
                           [a' num-swaps']))]
          (recur (nth int-loop 0) (+ num-swaps (nth int-loop 1)) (inc i)))
        [num-swaps (nth a 0) (nth a (dec (count a)))]))))

(let [result (count-swaps [4 2 3 1])]
  (prn (str "Array is sorted in " (nth result 0) " swaps.") )
  (prn (str "First Element: " (nth result 1)) )
  (prn (str "Last Element: " (nth result 2)))
  )

(定义计数交换[a]
(letfn[(swap[aij];;在线查找letfn
(第一助理律师(第n助理律师)j(第n助理律师))
(循环[a num交换0 i 0]
(如果((第n a j)(第n a(inc j)))
(重复(掉期a'j(inc j))(inc j)(inc num掉期)
(重复a'(inc j)num swaps'))
[a‘num swaps’)]
(重复(第n个整数循环0)(+num交换(第n个整数循环1))(inc i)))
[num swaps(第n个a 0)(第n个a(第12个a计数))]]
(让[结果(计数交换[4 2 3 1])]
(prn(str“数组按”(第n个结果0)“交换”排序。)
(prn(str“第一个元素:”(第n个结果1)))
(prn(str“最后一个元素:”(第n个结果2)))
)
对于此问题:


但是,在运行提交问题时,没有一个测试通过。我不知道为什么。

在测试了大约一个小时后,我意识到你错在哪里了。也就是说,使用
prn
而不是
print
打印实际文本旁边的引号字符。这对我来说是一个惊喜,因为我一直认为这两者是可以互换的。如果您将
prn
s更改为
println
s,您应该没事

我创建的最终代码通过了所有测试:

;
; Complete the 'countSwaps' function below.
;
; The function accepts INTEGER_ARRAY a as parameter.
;

(defn count-swaps [a]
  (letfn [(swap [a i j] ;; looked up letfn online
            (assoc a i (nth a j) j (nth a i)))]
    (let [result (loop [a a num-swaps 0 i 0]
      (if (< i (count a))
        (let [int-loop (loop [a' a j 0 num-swaps' 0]
                         (if (< j (dec (count a)))
                           (if (> (nth a j) (nth a (inc j)))
                             (recur (swap a' j (inc j)) (inc j) (inc num-swaps'))
                             (recur a' (inc j) num-swaps'))
                           [a' num-swaps']))]
          (recur (nth int-loop 0) (+ num-swaps (nth int-loop 1)) (inc i)))
        [num-swaps (nth a 0) (nth a (dec (count a)))]))]
  (println (str "Array is sorted in " (nth result 0) " swaps.") )
  (println (str "First Element: " (nth result 1)))
  (println (str "Last Element: " (nth result 2))))))

(def n (Integer/parseInt (clojure.string/trim (read-line))))

(def a (vec (map #(Integer/parseInt %) (clojure.string/split (clojure.string/trimr (read-line)) #" "))))

(count-swaps a)
;
; 完成下面的“countSwaps”功能。
;
; 函数接受整数数组作为参数。
;
(定义计数互换[a]
(letfn[(swap[aij];;在线查找letfn
(第一助理律师(第n助理律师)j(第n助理律师))
(let[result(loop[a num交换0 i 0]
(如果((第n a j)(第n a(inc j)))
(重复(掉期a'j(inc j))(inc j)(inc num掉期)
(重复a'(inc j)num swaps'))
[a‘num swaps’)]
(重复(第n个整数循环0)(+num交换(第n个整数循环1))(inc i)))
[num swaps(第n个a 0)(第n个a(第12个a计数))]]
(println(str“数组按”(第n个结果0)“交换”排序)
(println(str“第一个元素:”(第n个结果1)))
(println(str“Last Element:”(第n个结果2‘‘‘‘‘)’))
(def n(整数/parseInt(clojure.string/trim(读取行)))
(def a(vec(map#(Integer/parseInt%)(clojure.string/split(clojure.string/trimr(read line))#“”)
(计数互换a)

如果您需要进一步的许可,请告诉我。

Hackerrank页面上的说明说明程序将通过stdin输入,但我在您的程序中没有看到
(读取)
或类似内容。“测试失败”是什么意思?是否存在错误、日志、断言?