У меня здесь небольшая проблема. Я хочу, чтобы кривая дракона использовала Racket. Во-первых, я хочу составить список с поворотами данного порядка кривой дракона.Кривая дракона в Racket
Например: Приказ 3 дал мне список: (список 'R' R 'L' R 'R' L 'L). L означает поворот на 90 градусов влево, а R означает поворот на 90 градусов вправо.
Алгоритм формирования списка с помощью данного порядка:
- Первого заказ всегда правый поворот (список «R)
- следующего порядка предыдущего порядок плюс элемент (список» R) плюс предыдущий порядок, где средний символ заменен на «L.
Таким образом, второй порядок будет (список «R» R «L)
Но я действительно не знаю, как написать этот„алгоритм“как (рекурсивный) кода.
;;number -> list
;; number 'n' is the order of the dragon curve.
;; (dragon-code 3) should make: (list 'R 'R 'L 'R 'R 'L 'L)
(define (dragon-code n)
(cond
[(zero? n) empty]
[else
Я был бы благодарен за каждый намек! :)
Благодарим за помощь! Я выполнил реализацию «replace-middle-with-L». Мне нужно получить индексную позицию среднего элемента и построить старый список до этого среднего элемента. Затем я должен добавить (список «L»). Затем я должен добавить все, что находится за этим средним элементом. Но как мне сделать этот последний шаг? – xEscape
@xEscape Читайте о 'split-at' (предпочитаете) или' take' и 'drop'. –