Изменить порядок букв в каждом слове файла на противоположный - Lisp
Формулировка задачи:
Помогите, пожалуйста, написать программку на лиспе для решения след задания:
"В данном текстовом файле изменить порядок букв в каждом слове на
противоположный".
например: "абв гд ежз" -> "вба дг зже"
Решение задачи: «Изменить порядок букв в каждом слове файла на противоположный»
textual
Листинг программы
- (defun nfoo (string)
- (prog (word-start word-end (i 0))
- find-word-start
- (when (>= i (length string)) (go end))
- (when (alpha-char-p (aref string i))
- (go set-word-start))
- (incf i)
- (go find-word-start)
- set-word-start
- (setf word-start i)
- (go word-start-set)
- word-start-set
- (go find-word-end)
- find-word-end
- (when (or (= (1+ i) (length string))
- (not (alpha-char-p (aref string (1+ i)))))
- (go set-word-end))
- (incf i)
- (go find-word-end)
- set-word-end
- (setf word-end i)
- (go word-end-set)
- word-end-set
- (incf i 2)
- (go reverse-word)
- reverse-word
- (when (>= word-start word-end) (go word-reversed))
- (rotatef (aref string word-start) (aref string word-end))
- (incf word-start)
- (decf word-end)
- (go reverse-word)
- word-reversed
- (go find-word-start)
- end
- (return string)))
- (defun foo (string)
- (nfoo (copy-seq string)))
Объяснение кода листинга программы
В полном объёме данный код реализовать задачу не сможет, так как в нём не учтена смена порядка букв в каждом слове файла на противоположный. Однако, можно усмотреть некоторые попытки реализации этой задачи в функциях nfoo
и foo
. Рассмотрим их по порядку:
- Функция
nfoo
пытается найти все слова в строке и изменить их порядок на противоположный. Однако, в данном коде реализован только алгоритм поиска слов в строке, но не их перестановка. - Функция
foo
является оберткой функцииnfoo
, она вызываетnfoo
на копии строки. То есть, если в исходной строке было несколько слов, то после вызова функцииfoo
каждое слово будет изменено на обратное, но все слова будут идти в том же порядке, что и в исходной строке. Таким образом, данный код не является полным решением поставленной задачи.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д