1 / 1 / 0
Регистрация: 06.10.2013
Сообщений: 97
|
||||||
1 | ||||||
Упорядочивание цифр12.03.2014, 11:28. Показов 1348. Ответов 17
Метки нет (Все метки)
Здравствуйте мне необходимо упорядочить цифры в каждом атоме списка (a53r2 должно быть a23r5)
я что-то накидала, но не знаю правильно вообще это сделано. Лисп начали только изучать поэтому функции должны быть простые. У меня менется регистр цифр. Может кто-то обьяснить почему.
0
|
12.03.2014, 11:28 | |
Ответы с готовыми решениями:
17
Упорядочивание чисел Упорядочивание Упорядочивание Упорядочивание |
Модератор
|
||||||
12.03.2014, 12:42 | 2 | |||||
Сообщение было отмечено как решение
Решение
Регистр цифр измениться не может. Меняется регистр букв. Потому, что в CL принято, что буквы, составляющие символ, при выводе меняются на заглавные. Хуже другое - программа не упорядочивает цифры.
Добавлено через 39 минут Я бы рекомендовал начать с преобразования одного атома. Потом эту функцию можно будет применить стандартными средствами Лиспа к каждому атому списка. В HomeLisp обработка одного атома может быть выполнена так (идея Ваша):
4
|
4486 / 2721 / 485
Регистрация: 28.04.2012
Сообщений: 8,590
|
|||||||||||
12.03.2014, 13:22 | 3 | ||||||||||
Сообщение было отмечено как решение
Решение
5
|
defun
603 / 617 / 44
Регистрация: 30.04.2011
Сообщений: 702
|
||||||
12.03.2014, 14:16 | 4 | |||||
Сообщение было отмечено как решение
Решение
=> (coerce (string atom) 'list) => across (string atom)
5
|
Модератор
|
|||||||||||
12.03.2014, 14:41 | 5 | ||||||||||
Сообщение было отмечено как решение
Решение
А вот обработка атома без сортировки:
4
|
12.03.2014, 14:53 | 6 | |||||
Сообщение было отмечено как решение
Решение
По простому не получилось.
4
|
Модератор
|
|
12.03.2014, 15:25 | 7 |
Сообщение было отмечено как решение
Решение
Все решения сортируют список цифр. А мне кажется, что рациональнее так:
1) выделить список цифр 2) встретив цифру при просмотре всех символов, брать минимум из текущего набора цифр и исключать этот минимум из набора (своеобразная сортировка выбором "на лету"). Используя рекурсию, можно при этом обойтись без setq/setf.
3
|
defun
603 / 617 / 44
Регистрация: 30.04.2011
Сообщений: 702
|
||||||
12.03.2014, 19:45 | 8 | |||||
Добавлено через 51 секунду а зачем?
1
|
1 / 1 / 0
Регистрация: 06.10.2013
Сообщений: 97
|
|
12.03.2014, 19:47 [ТС] | 9 |
спасибо большое. Правдо как для новичка это совсем все сложно. функции очень большие
Добавлено через 1 минуту спасибо, к сожалению у меня не работает эта прога. ошибка на explode
0
|
Модератор
|
|
12.03.2014, 20:08 | 10 |
- затем, что ФП должно избегать явного присвоения значений переменным. Хотя я не "пурист" и полагаю, что хорошая программа - это в первую очередь работающая программа.
Добавлено через 1 минуту - этой функции нет в CL. Можете взять другие решения. А я тем временем подгоню свое решение к CL.
0
|
defun
603 / 617 / 44
Регистрация: 30.04.2011
Сообщений: 702
|
|
12.03.2014, 20:09 | 11 |
0
|
Модератор
|
||||||
12.03.2014, 20:59 | 12 | |||||
Сообщение было отмечено как решение
Решение
- общеизвестный факт...
Добавлено через 13 минут Вот подгонка моего решения к Common Lisp:
2
|
4486 / 2721 / 485
Регистрация: 28.04.2012
Сообщений: 8,590
|
|
12.03.2014, 21:16 | 13 |
Совершенно серьёзно.
Определение ФП. Другое дело, что CL не (чистый) ФЯП.
1
|
defun
603 / 617 / 44
Регистрация: 30.04.2011
Сообщений: 702
|
|
12.03.2014, 21:26 | 14 |
0
|
493 / 426 / 56
Регистрация: 29.04.2011
Сообщений: 443
|
||||||
12.03.2014, 21:50 | 15 | |||||
Сообщение было отмечено как решение
Решение
2
|
4527 / 3521 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
|
12.03.2014, 23:26 | 16 |
Вообще, атомы курочить - это хак какой-то. Атом значит "неделимый" elik2011, скажите преподу своему, что задания даёт дебильные.
0
|
Модератор
|
|
13.03.2014, 09:44 | 17 |
- не могу не отметить "искреннюю доброту совета"
Но, если серьезно, то во многих современных языках строки - тоже неделимы. И это нисколько не мешает брать подстроки ("курочить"). Просто при необходимости создается новая строка. Так же, как и при "раскурочивании" атома в Лиспе. Атом остается неделимым, просто создается другой...
0
|
4527 / 3521 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
|
13.03.2014, 17:07 | 18 |
Если в языке строки играют роль и строк, и символов, то куда деваться? В иных языках и чисел нет, одни строки - живут люди. А в лиспе, слава богу, для операций с последовательностями букв есть массивы букв (строки), а символы имеют к ним весьма опосредованное отношение.
Я не говорю, что оперировать символами как строками совсем не нужно, но нужно редко. Например, в макросах типа defstruct, которые работают с символами make-символ и т. п. Для новичка это довольно эзотерично.
1
|
13.03.2014, 17:07 | |
13.03.2014, 17:07 | |
Помогаю со студенческими работами здесь
18
Упорядочивание точек Упорядочивание массива Упорядочивание матрицы Упорядочивание матрицы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |