Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Помогите написать прогу на Lisp / 25 сообщений из 116, страница 1 из 5
22.10.2011, 13:15
    #37493564
Настаська
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать прогу на Lisp
Помогите написать прогу на Lisp если можно с комментариями!!!! срочно!!!

Скласти рекурсивну функцію для обробки списку з будь-якої кількості атомів, які складені з будь-яких знаків. Якщо у результаті обробки з атому видалені всі знаки, замінити його на атом <ПУСТО>.
У кожному списку замінити літери англійського алфавіту на відповідний номер у алфавіті (aф6Гs4 -> 1ф6Г194)
...
Рейтинг: 0 / 0
22.10.2011, 16:35
    #37493687
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать прогу на Lisp
...
Рейтинг: 0 / 0
22.10.2011, 16:58
    #37493697
ИринаВ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать прогу на Lisp
Настаська , Вам сюда http://www.lisp.ru. Там есть форум для студентов.
Тока переведите задание, ИМХО російською зручніше.

И + я не поняла, в задании, про удаление символов. Когда они удаляются? Мож просто Lisp не знаю.
...
Рейтинг: 0 / 0
22.10.2011, 18:17
    #37493735
Настаська
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать прогу на Lisp
Само задание вот: в каждом списке заменить буквы английского алфавита на их порядковый номер в алфавите. Вот пример как должно быть (aф6Гs4 -> 1ф6Г194)
а предусловие, это то что надо использовать рекурсию
...
Рейтинг: 0 / 0
22.10.2011, 18:43
    #37493753
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать прогу на Lisp
Оце так! Не успела продать выпускное платье - уже погрузилась
в пучину It-шной кутерьмы.

Яб тебе помог но нифига не шарю в Лисп. Так. Теоретицски....
...
Рейтинг: 0 / 0
22.10.2011, 19:22
    #37493768
Настаська
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать прогу на Lisp
при чем тут выпускное платье???
я чет туплю=)
...
Рейтинг: 0 / 0
22.10.2011, 19:39
    #37493770
ИринаВ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать прогу на Lisp
Настаськая чет туплю
Гы. Значит пора за косы подергать.
...
Рейтинг: 0 / 0
22.10.2011, 19:42
    #37493771
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать прогу на Lisp
Такого метода я незнаю

Я вообще тихоня был в школе....
...
Рейтинг: 0 / 0
22.10.2011, 21:42
    #37493865
avb1003
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать прогу на Lisp
Настаська,
не понятно, откуда могут взяться атомы с удаленными знаками? Есть правило замены латинских букв номерами, но нет никакого правила удалания каких-либо символов." видалені всі знаки" - это "удалены все знаки"?
...
Рейтинг: 0 / 0
22.10.2011, 22:18
    #37493892
Настаська
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать прогу на Lisp
то общее задание, а вот Само задание вот: в каждом списке заменить буквы английского алфавита на их порядковый номер в алфавите. Вот пример как должно быть (aф6Гs4 -> 1ф6Г194)
надо использовать рекурсию
Просто у меня надо сделать вот это.
...
Рейтинг: 0 / 0
22.10.2011, 23:08
    #37493939
trуц
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать прогу на Lisp
(вы (бы (хоть (версию (LISP-а сказали))))), для scheme например один из вариантов вот так
если нет map-а
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
(define (mymap func lst)
  (if (null? lst)
      lst
      (cons (func (car lst)) (mymap func (cdr lst)))))

(define (replace-chars items)
  (mymap 
    (lambda (item) 
      (if (char? item)
        (+  1  (- (char-code (char-downcase item)) (char-code #\a)))
        item)) 
    items))
если есть
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
(define (replace-chars items)
  (map 
    (lambda (item) 
      (if (char? item)
        (+  1  (- (char-code (char-downcase item)) (char-code #\a)))
        item)) 
    items))
...
Рейтинг: 0 / 0
23.10.2011, 11:55
    #37494126
Настаська
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать прогу на Lisp
извините за какой лисп забыла написать...comonLisp
...
Рейтинг: 0 / 0
23.10.2011, 20:17
    #37494414
avb1003
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать прогу на Lisp
Настаська,
совсем не специалист в lisp, но что-то получилось:transform_list.lisp
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
(defun latin (x) (and (alpha-char-p x) (standard-char-p x)))
(defun letter-num(x) (- (char-code (char-upcase x)) ( 1 - (char-code #\A))))
(defun transform-symb (x)
        (cond ((latin x) (princ-to-string (letter-num x)))
                (t (string x))
                ))
(defun transform-list-of-symb(list res) (cond
        ((null list) res)
        (t (transform-list-of-symb (cdr list) (append res (list (transform-symb (car list))) )))))
(defun transform-string(string) (apply #'concatenate 'string (transform-list-of-symb (coerce string 'list) nil)))
(defun transform-node(node)(cond
        ((stringp node) (transform-string node))
        ((symbolp node) (read-from-string (transform-string (symbol-name node))))
        (t (princ-to-string (list "Can't transform "  node " of type " (type-of node))))))
(defun do-transform(list res) (cond
        ((null list) res)
        (t (do-transform (cdr list) (append res (list (transform-node (car list))))))))
(defun transform(list) (do-transform list nil))
Пример рвботы
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
clisp
  i i i i i i i       ooooo    o        ooooooo   ooooo   ooooo
  I I I I I I I      8     8   8           8     8     o  8    8
  I  \ `+' /  I      8         8           8     8        8    8
   \  `-+-'  /       8         8           8      ooooo   8oooo
    `-__|__-'        8         8           8           8  8
        |            8     o   8           8     o     8  8
  ------+------       ooooo    8oooooo  ooo8ooo   ooooo   8

Welcome to GNU CLISP 2.44.1 (2008-02-23) < http://clisp.cons.org/> 

Copyright (c) Bruno Haible, Michael Stoll 1992, 1993
Copyright (c) Bruno Haible, Marcus Daniels 1994-1997
Copyright (c) Bruno Haible, Pierpaolo Bernardi, Sam Steingold 1998
Copyright (c) Bruno Haible, Sam Steingold 1999-2000
Copyright (c) Sam Steingold, Bruno Haible 2001-2008

Type :h and hit Enter for context help.

[1]> (load "transform_list.lisp")
;; Loading file transform_list.lisp ...
;; Loaded file transform_list.lisp
T
[2]>  (transform '(aaa abфи 123-aaa A123 БA 'A123 'Щ234))
(111 12ФИ |123-111| 1123 Б1 "(Can't transform  'A123  of type  CONS)"
 "(Can't transform  'Щ234  of type  CONS)")
[3]>  (transform '("aaa" "abфи" "123-aaa" A123 БA 'A123 'Щ234))
("111" "12фи" "123-111" 1123 Б1 "(Can't transform  'A123  of type  CONS)"
 "(Can't transform  'Щ234  of type  CONS)")
[4]>(transform '(aф6Гs4))
(1Ф6Г194)
[5]> 
Какие-то атомы обрабатываются, какие-то не совсем. "Допиливайте" сами.
...
Рейтинг: 0 / 0
24.10.2011, 14:48
    #37495318
k0rvin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать прогу на Lisp
avb1003,

потому что '(aaa abфи 123-aaa A123 БA 'A123 'Щ234) фактически является '(aaa abфи 123-aaa A123 БA (QUOTE A123) (QUOTE Щ234))

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
(defconstant latin-offset #.(1- (char-code #\a)))

(defun latin-char-p (char)
  (and (standard-char-p char)
       (alpha-char-p    char)))

(defun latin-char-to-ord (char)
  (- (char-code (char-downcase char)) latin-offset))

(defun transform-character (char)
  (format nil "~a"
          (if (latin-char-p char)
              (latin-char-to-ord char)
              char)))

(defun transform-string (string)
  (apply #'concatenate 'string (map 'list #'transform-character string)))

(defun transform-symbol (symbol)
  (intern (transform-string (string symbol))))

(defun transform-list (list)
  (if (null list)
      list
      (let ((head (car list))
            (tail (cdr list)))
        (cons (transform      head)
              (transform-list tail)))))

(defun transform (any)
  (cond ((characterp any) (transform-character any))
        ((stringp any)    (transform-string    any))
        ((symbolp any)    (transform-symbol    any))
        ((listp any)      (transform-list      any))
        ( t          (transform-string (format nil "~a" any)))))
...
Рейтинг: 0 / 0
24.10.2011, 22:47
    #37496120
avb1003
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать прогу на Lisp
k0rvinavb1003,

потому что '(aaa abфи 123-aaa A123 БA 'A123 'Щ234) фактически является '(aaa abфи 123-aaa A123 БA (QUOTE A123) (QUOTE Щ234))
...
Ну это я знаю. Ведь что-то про lisp я уже прочитал.

Но, к сожалению, у Вас результат тоже не идеальный:
Код: plaintext
1.
2.
3.
4.
5.
6.
Break 1 [2]> (transform '(aaa abфи 123-aaa A123 БA 'A123 'Щ234))
(|111| 12ФИ |123-111| |1123| Б1 (|172115205| |1123|) (|172115205| Щ234))
Break 1 [2]> (transform '("aaa" "abфи" "123-aaa" A123 БA 'A123 'Щ234))
("111" "12фи" "123-111" |1123| Б1 (|172115205| |1123|) (|172115205| Щ234))
Break 1 [2]> (transform '(aф6Гs4))
(1Ф6Г194)
Налицо лишние знаки "|" и 'Щ234, например, переходит в (|172115205| Щ234).
Я понял условие так, что (transform '(aaa abфи 123-aaa A123 БA 'A123 'Щ234)) должно давать
(111 12ФИ 123-111 1123 Б1 '1123 'Щ234). Мне это пока не под силу (ну, по крайней мере, за разумное время и с разумными усилиями, да и неизвестно, нужно ли это топикстартеру), но на полное решение я с удовольствием бы посмотрел.
...
Рейтинг: 0 / 0
25.10.2011, 00:26
    #37496228
k0rvin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать прогу на Lisp
avb1003,
"|" -- не лишние знаки =)
Код: plaintext
1.
2.
> (format t "~a ~s" '|a| '|a|)
a |a|
...
Рейтинг: 0 / 0
25.10.2011, 00:29
    #37496229
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать прогу на Lisp
Натаська ты как там? Жива?
...
Рейтинг: 0 / 0
25.10.2011, 00:37
    #37496233
k0rvin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать прогу на Lisp
avb1003 'Щ234, например, переходит в (|172115205| Щ234).
и правильно переходит, т.к. 'Щ234 -- это (QUOTE Щ234), а QUOTE -- это 172115205

avb1003Я понял условие так, что (transform '(aaa abфи 123-aaa A123 БA 'A123 'Щ234)) должно давать
(111 12ФИ 123-111 1123 Б1 '1123 'Щ234). Мне это пока не под силу (ну, по крайней мере, за разумное время и с разумными усилиями, да и неизвестно, нужно ли это топикстартеру), но на полное решение я с удовольствием бы посмотрел.
Вы немного недопоняли лисп, я же написал во что превращается это ваше выражение после его чтения "лиспом", зачем Вы там внутри поставили еще кавычки?

эти кавычки исчезают после работы Reader'а и исходное выражение
Код: plaintext
(transform '(aaa abфи 123-aaa A123 БA 'A123 'Щ234))
превращается в
Код: plaintext
(transform (quote (aaa abфи 123-aaa A123 БA (quote A123) (quote Щ234))))
так его видит компилятор, первая особая форма QUOTE вычисляется, две другие -- нет, т.к. они сами "зацитированы" первой QUOTE и интерпретируются компилятором просто как символы, ничем не отличающиеся от aaa например
...
Рейтинг: 0 / 0
25.10.2011, 00:55
    #37496252
k0rvin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать прогу на Lisp
avb1003,

собственно, если хотите, можете свою функцию transform-node переписать так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
(defun transform-node (node)
  (cond
    ((stringp node) (transform-string node))
    ((symbolp node) (intern (transform-string (symbol-name node))))
    ((consp node) (transform-cons node))
    (t (format nil "#<Can't transform ~s of type ~a" (type-of node)))))

(defun transform-cons (node)
  ;; Transforming cons node function
  ;; for example with excluding QUOTE:
  (destructuring-bind (head . tail) node
    (let ((hd (if (eq 'quote head) 'quote (transform-node head))))
      (cons hd (transform-node tail)))))
не проверял, но должно работать
...
Рейтинг: 0 / 0
25.10.2011, 00:57
    #37496254
k0rvin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать прогу на Lisp
пардон, вместо
Код: plaintext
1.
(t (format nil "#<Can't transform ~s of type ~a" (type-of node)))))
нужно
Код: plaintext
1.
(t (format nil "#<Can't transform ~s of type ~a>" node (type-of node)))))
...
Рейтинг: 0 / 0
25.10.2011, 01:24
    #37496264
avb1003
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать прогу на Lisp
k0rvinavb1003,

потому что '(aaa abфи 123-aaa A123 БA 'A123 'Щ234) фактически является '(aaa abфи 123-aaa A123 БA (QUOTE A123) (QUOTE Щ234))
...
Ну это я знаю. Ведь что-то про lisp я уже прочитал.

Но, к сожалению, у Вас результат тоже не идеальный:
Код: plaintext
1.
2.
3.
4.
5.
6.
Break 1 [2]> (transform '(aaa abфи 123-aaa A123 БA 'A123 'Щ234))
(|111| 12ФИ |123-111| |1123| Б1 (|172115205| |1123|) (|172115205| Щ234))
Break 1 [2]> (transform '("aaa" "abфи" "123-aaa" A123 БA 'A123 'Щ234))
("111" "12фи" "123-111" |1123| Б1 (|172115205| |1123|) (|172115205| Щ234))
Break 1 [2]> (transform '(aф6Гs4))
(1Ф6Г194)
Налицо лишние знаки "|" и 'Щ234, например, переходит в (|172115205| Щ234).
Я понял условие так, что (transform '(aaa abфи 123-aaa A123 БA 'A123 'Щ234)) должно давать
(111 12ФИ 123-111 1123 Б1 '1123 'Щ234). Мне это пока не под силу (ну, по крайней мере, за разумное время и с разумными усилиями, да и неизвестно, нужно ли это топикстартеру), но на полное решение я с удовольствием бы посмотрел.
...
Рейтинг: 0 / 0
25.10.2011, 01:28
    #37496265
avb1003
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать прогу на Lisp
k0rvin...
не проверял, но должно работатьНу и кто за Вас будет проверять? Пушкин что-ли?
...
Рейтинг: 0 / 0
25.10.2011, 01:32
    #37496266
avb1003
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать прогу на Lisp
k0rvinВы немного недопоняли лисп ...
Может быть Пока да. Пока я считаю его нормальным языком, на котором можно сделать все то же, что и на С, на ассемблере и т.д.
...
Рейтинг: 0 / 0
25.10.2011, 01:35
    #37496267
avb1003
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать прогу на Lisp
avb1003k0rvinavb1003,

потому что '(aaa abфи 123-aaa A123 БA 'A123 'Щ234) фактически является '(aaa abфи 123-aaa A123 БA (QUOTE A123) (QUOTE Щ234))
...
Ну это я знаю. Ведь что-то про lisp я уже прочитал.

Но, к сожалению, у Вас результат тоже не идеальный:
Код: plaintext
1.
2.
3.
4.
5.
6.
Break 1 [2]> (transform '(aaa abфи 123-aaa A123 БA 'A123 'Щ234))
(|111| 12ФИ |123-111| |1123| Б1 (|172115205| |1123|) (|172115205| Щ234))
Break 1 [2]> (transform '("aaa" "abфи" "123-aaa" A123 БA 'A123 'Щ234))
("111" "12фи" "123-111" |1123| Б1 (|172115205| |1123|) (|172115205| Щ234))
Break 1 [2]> (transform '(aф6Гs4))
(1Ф6Г194)
Налицо лишние знаки "|" и 'Щ234, например, переходит в (|172115205| Щ234).
Я понял условие так, что (transform '(aaa abфи 123-aaa A123 БA 'A123 'Щ234)) должно давать
(111 12ФИ 123-111 1123 Б1 '1123 'Щ234). Мне это пока не под силу (ну, по крайней мере, за разумное время и с разумными усилиями, да и неизвестно, нужно ли это топикстартеру), но на полное решение я с удовольствием бы посмотрел.Браузер, наверное, дублирует сообщения из истории. Sorry.
...
Рейтинг: 0 / 0
25.10.2011, 11:26
    #37496596
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать прогу на Lisp
avb1003k0rvinВы немного недопоняли лисп ...
Может быть Пока да. Пока я считаю его нормальным языком, на котором можно сделать все то же, что и на С, на ассемблере и т.д.
Аналогия неверна. Её надо перевернуть наоборот. На С и ассемблере (на уровне языка)
принципиально невозможно воспроизвести некоторые возможности Lisp.
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Помогите написать прогу на Lisp / 25 сообщений из 116, страница 1 из 5
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]