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

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

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

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

Я вообще тихоня был в школе....
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37493865
avb1003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Настаська,
не понятно, откуда могут взяться атомы с удаленными знаками? Есть правило замены латинских букв номерами, но нет никакого правила удалания каких-либо символов." видалені всі знаки" - это "удалены все знаки"?
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37493892
Настаська
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
то общее задание, а вот Само задание вот: в каждом списке заменить буквы английского алфавита на их порядковый номер в алфавите. Вот пример как должно быть (aф6Гs4 -> 1ф6Г194)
надо использовать рекурсию
Просто у меня надо сделать вот это.
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37493939
trуц
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
(вы (бы (хоть (версию (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
Помогите написать прогу на Lisp
    #37494126
Настаська
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
извините за какой лисп забыла написать...comonLisp
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37494414
avb1003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Настаська,
совсем не специалист в 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
Помогите написать прогу на Lisp
    #37495318
Фотография k0rvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Помогите написать прогу на Lisp
    #37496120
avb1003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Помогите написать прогу на Lisp
    #37496228
Фотография k0rvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
avb1003,
"|" -- не лишние знаки =)
Код: plaintext
1.
2.
> (format t "~a ~s" '|a| '|a|)
a |a|
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37496229
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Натаська ты как там? Жива?
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37496233
Фотография k0rvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Помогите написать прогу на Lisp
    #37496252
Фотография k0rvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Помогите написать прогу на Lisp
    #37496254
Фотография k0rvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пардон, вместо
Код: 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
Помогите написать прогу на Lisp
    #37496264
avb1003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Помогите написать прогу на Lisp
    #37496265
avb1003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
k0rvin...
не проверял, но должно работатьНу и кто за Вас будет проверять? Пушкин что-ли?
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37496266
avb1003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
k0rvinВы немного недопоняли лисп ...
Может быть Пока да. Пока я считаю его нормальным языком, на котором можно сделать все то же, что и на С, на ассемблере и т.д.
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37496267
avb1003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Помогите написать прогу на Lisp
    #37496596
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
avb1003k0rvinВы немного недопоняли лисп ...
Может быть Пока да. Пока я считаю его нормальным языком, на котором можно сделать все то же, что и на С, на ассемблере и т.д.
Аналогия неверна. Её надо перевернуть наоборот. На С и ассемблере (на уровне языка)
принципиально невозможно воспроизвести некоторые возможности Lisp.
...
Рейтинг: 0 / 0
25 сообщений из 116, страница 1 из 5
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Помогите написать прогу на Lisp
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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