Форум программистов, компьютерный форум, киберфорум
Наши страницы
Lisp
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
Quidow
0 / 0 / 0
Регистрация: 06.11.2012
Сообщений: 7
1

Обратный порядок цифр в атоме. Рекурсия

05.06.2013, 15:38. Просмотров 640. Ответов 3
Метки нет (Все метки)

В общем, нужно сделать так, чтобы в каждом атоме списка цифры шли в обратном порядке, но буквы при этом оставались не тронуты. К примеру (a53r2 - a23r5).
Нужна помощь.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.06.2013, 15:38
Ответы с готовыми решениями:

Рекурсия: обратный порядок + произведение
Добрый день! Мое задание: Вводится последовательных целых чисел. Признак конца -- 0. Необходимо...

Обратный порядок цифр в числе
Напечатать в обратном порядке цифры некоторого положительного числа целого типа,расположенные на...

Поменять порядок цифр на обратный
Дано целое число X. Поменять порядок цифр числа на обратный. в c++ не бум бум Х__х

поменять порядок цифр на обратный
http://saveimg.ru/pictures/27-05-10/e3a9fb4910dd1c9da78185ce59fe75ec.jpg

Изменить порядок цифр на обратный
Задано натуральное число N.Изменить в нем порядок цифр на обратный.Например: 327-723.

3
Catstail
Модератор
24287 / 12254 / 2209
Регистрация: 12.02.2012
Сообщений: 19,886
05.06.2013, 19:48 2
НомеLisp:

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
;; Преобразование списка
 
(defun f1 (lst)
  (let ((lstn (reverse (remove-if-not #'numberp lst))))
       (mapcar #'(lambda (x) (if (numberp x) (pop lstn) x)) lst))) 
         
 
==> f1
 
(f1 '(1 2 a s 3 4 c v 5))
 
==> (5 4 a s 3 2 c v 1)
 
;; Решение задачи
 
(defun task (lst)
  (mapcar #'(lambda (x) (if (atom x) (implode (f1 (explode x))) (task x))) lst))
 
==> task
 
(task '(a53r2 (bh78w3 h34-y71)))
 
==> (a23r5 (bh38w7 h17-y43))
Добавлено через 6 секунд
НомеLisp:

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
;; Преобразование списка
 
(defun f1 (lst)
  (let ((lstn (reverse (remove-if-not #'numberp lst))))
       (mapcar #'(lambda (x) (if (numberp x) (pop lstn) x)) lst))) 
         
 
==> f1
 
(f1 '(1 2 a s 3 4 c v 5))
 
==> (5 4 a s 3 2 c v 1)
 
;; Решение задачи
 
(defun task (lst)
  (mapcar #'(lambda (x) (if (atom x) (implode (f1 (explode x))) (task x))) lst))
 
==> task
 
(task '(a53r2 (bh78w3 h34-y71)))
 
==> (a23r5 (bh38w7 h17-y43))
1
Quidow
0 / 0 / 0
Регистрация: 06.11.2012
Сообщений: 7
05.06.2013, 20:00  [ТС] 3
Спасибо, только... Можно на обычном CLisp?
0
_sg
3982 / 3747 / 268
Регистрация: 12.05.2012
Сообщений: 2,621
10.06.2013, 07:29 4
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
(defun symbols (a)
  (mapcar #'read-from-string (map 'list #'string (string a))))
 
(defun rev-ns (w v)
  (cond ((null w) nil)
        ((numberp (car w))
         (cons (car v) (rev-ns (cdr w) (cdr v))))
        ((cons (car w) (rev-ns (cdr w) v)))))
 
(defun reverse-numbers (a &aux (v (symbols a)))
  (read-from-string
   (apply #'concatenate
          'string (mapcar #'write-to-string
                          (rev-ns v (reverse (remove-if-not
                                              #'numberp v)))))))
 
(defun inner-reverse (w)
  (when w (cons (reverse-numbers (car w)) (inner-reverse (cdr w)))))
 
> (inner-reverse '(a1b2c a10b23))
(A2B1C A32B01)
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.06.2013, 07:29

Обратный порядок цифр числа
В вводе имеем положительное число меньше чем 32768. Нужно, чтобы на выводе было число с обратным...

Обратный порядок цифр в числе
После ввода числа (in) не выводится выходное число (out). Код: #include <iostream> #define...

Поменять порядок цифр числа n на обратный
Вести число n.Поменять порядок цифр числа n на обратный.То есть число 12345 перевести в 54321. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru