需要帮助使用函数转换地图中的数据
(defn transform-map-1 [past-step dir]
(cond (= dir "v")
(list (first (first past-step))
(+ -1 (first (first past-step))))
(= dir "^")
(list (first (first past-step))
(+ 1 (first (first past-step))))
(= dir ">")
(list (+ 1 (first (first past-step)))
(first (first past-step)))
(= dir "<")
(list (+ -1 (first (first past-step)))
(first (first past-step)))))
此函数采用 x,y 格式的两个输入坐标作为过去的步骤和方向上下左右以提供更新坐标
我想要做的是提供一系列的方向,并为每个方向返回更新的坐标
输入字符串 "^>v<" ,输出应为 ((0,1) (1,1) (1,0) (0,0)
我们从坐标 (0.0) 开始,第一个变换的输出成为第二个字符的输入
我能得到的最好的结果是但它给了我一个错误
(map (transform-map-1 ['(0, 0)] %1)(char-array string-test))
您的实施已经接近尾声。
我看到的问题是:
%1
调用中的仅在使用以下格式的匿名函数中transform-map-1
有效:#( ... use %1 %2 %3 etc inside)
您的函数期望方向是字符串,但对字符串进行映射将导致对字符序列进行迭代,这不是您的函数所期望的。将单个字符串转换为多个 1 个字符的字符串的一个技巧是
(map str your-string)
,它用于str
将每个字符串转换Char
为String
。经过这两处更改后,对函数的调用将如下所示:
您稍后还可以学习其他有助于解决难题的内容:
[x y]