Форум программистов, компьютерный форум, киберфорум
Lisp
Войти
Регистрация
Восстановить пароль
Другие темы раздела
Lisp Оператор If https://www.cyberforum.ru/ lisp/ thread1201973.html
Написать функцию, которая заменяет первым элементом списка, второй и третий элементы. Если длина списка меньше 3, выдать сообщение "Список слишком короткий". (defun zast(lista) (if (> (length lista) 3) (and (substitute (first lista) (second lista) lista) (substitute (first lista) (third lista) lista)) "Список слишком короткий")) При работе функции игнорирует первую часть and ....
Определить две рекурсивных функции Lisp
Пожалуйста, помогите определить две рекурсивных функции. Распечатать результаты трассировки. Указать вид рекурсии (рекурсия по значению или по аргументу). Все операции над списками выполняются только с элементами верхнего уровня, хотя списки могут содержать подписи. Рекурсия выполняется только в направлении CDR списка. Нужно и вариант a и b/
Lisp Печать "лесенкой" https://www.cyberforum.ru/ lisp/ thread1199289.html
Помогите реализовать печать "лесенкой" как показано ниже: (pr2 1 6 3) 123456 12345 1234
Lisp Определить функцию, конструирующую список из одноуровневых списков атомов, которые вводятся с клавиатуры Помогите определить функцию без параметров, конструирующую список, соответствующий номеру варианта, из одноуровневых списков атомов, которые вводятся с клавиатуры. Вариант: (A (B NIL )(C)) https://www.cyberforum.ru/ lisp/ thread1199284.html
Lisp Используя функцию DEFUN, определить фукцию f (a x)
Используя функцию DEFUN, определить фукцию f (a x), где а - S - выражение, а x - список, состоящий из 2-3 элементов. вариант: заменяет на а первые два элемента списка, если они являются подсписками, и возвращает пустой список в противном случае.
Lisp Для выражения сконструировать λ –вызов и вычислить его значение https://www.cyberforum.ru/ lisp/ thread1199269.html
Вот такое задание
Lisp Опишите функцию символьного дифференцирования https://www.cyberforum.ru/ lisp/ thread1197845.html
{D}_{x}(x) = 1;<br/>{D}_{x}(y) = 0,\: y \neq x<br/>{D}_{x}({e}_{1} + {e}_{2}) = {D}_{x}({e}_{1})+{D}_{x}({e}_{2});<br/>{D}_{x}({e}_{1} * {e}_{2}) = {D}_{x}({e}_{1})\cdot{e}_{2} +{D}_{x}({e}_{2})\cdot{e}_{1};<br/> Функция вызывается именно в инфиксной форме - {D}_{x}({e}_{1} + {e}_{2}). То есть ее нужно преобразовать в постфиксную префиксную, принятую в лиспе, а потом уже вычислять
Lisp Преобразование списков
Добрый день. Есть такое задание. Дан список - Фамилия Имя Отчество Пол Адрес Надо сформировать новый список-ведомость сокращённой формы. То есть вывести только, например. Фамилию и пол Подскажите пожалуйста, как это сделать.
Lisp Поатомное сравнение динамических списков https://www.cyberforum.ru/ lisp/ thread1197647.html
Уважаемые специалисты! Пишет вам нерадивый студент. Имеет место быть следующая задача: Поэлементно сравнить два динамических списка так, чтобы на выходе получить список из наименьших символов. Пример ввода: Список 1 - (1 0 5) Список 2 - (-1 2 3) Пример вывода: (-1 0 2) Т.е. программа сравнивает первый элемент одного списка с первым элементом второго списка, второй со вторым и т.д.
Lisp Ряд Фибоначчи https://www.cyberforum.ru/ lisp/ thread1197095.html
Добрый вечер уважаемые. Буду рад, если сможете помочь. На вход подается число. Нужно вывести его в виде списка в с.с. Фибоначчи. пример: вводим число 25. в ряду Фибоначчи (1 2 3 5 8 13 21 34) оно стоит между 21 и 34. Берем число, стоящее рядом с 25, но меньше его , т.е. 21. Т.к. 25>21, то начинаем список с 1. далее вычитаем 25-21 = 4. запоминаем 4 и идем к следующему числу в ряду Фибоначчи...
Lisp Минимальный и предминимальный элементы списка. Лисп
Добрый вечер! Есть задание. В среде Common Lisp нужно создать функцию, которая выдавала бы два минимальных элемента списка (минимальный и предминимальный). Буду очень благодарен за помощь.
Lisp Сформировать список чисел в промежутке от n до m, сортировка по возрастанию Добрый день! Требуется решить задачку по Lisp, но я не очень соображаю уже после бессонных ночей. В общем задача такая: -из аргументов сформировать список L1 из чисел, которые входят в определённый промежуток от n до m; -отсортировать список L1 в список L2 по возрастанию https://www.cyberforum.ru/ lisp/ thread1196828.html
1050 / 944 / 107
Регистрация: 04.11.2012
Сообщений: 974
Записей в блоге: 3
11.06.2014, 15:55 0

С помощью координат нарисовать граф и сделать обход на лиспе - Lisp - Ответ 6304814

11.06.2014, 15:55. Показов 2590. Ответов 26
Метки (Все метки)

Лучший ответ Сообщение было отмечено Catstail как решение

Решение

Можно еще способ пройтись по графу, вне конкурса?
Lisp
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
(defun Hamilton (net &optional (begin 0))
  (let* ((start begin)
         (x (array-dimension net 0))
         (from 0)
         (curr-vertex start)
         (curr-coord (list start 0))
         (repetit-coord nil)
         (count 1)
         (Path (list start))
         (Sum 0))
    (loop
      ;; find
      (loop :for j :from from :to (1- x) :do
        (if (plusp (aref net curr-vertex j))
            (unless (member j path)
              (return (setq curr-coord (list curr-vertex j))))))
      ;; not found the solve
      (and (equal curr-coord repetit-coord)
           (= curr-vertex start)
           (return (princ "No solution.")))
      ;; final check & return
      (if (= count (1- x))
          (when (plusp (aref net curr-vertex start))
            (setq Path (cons start (cons curr-vertex Path)))
            ;; path & sum
            (loop :for i :on Path :until (null (cdr i)) :do
                  (incf Sum (aref net (first i) (second i))))
            (return (values Path Sum))))  ; finish
      (cond
        ;;  backtracking
        ((equal curr-coord repetit-coord)
         (decf count)
         (setq from (1+ (pop Path))
               curr-vertex (first Path)))
        ;; step advance
        (t (unless (= (first path) (first curr-coord))
             (push (first curr-coord) Path)
             (incf count))
           (setq from 0
                 repetit-coord curr-coord
                 curr-vertex (second curr-coord)))))))
 
(compile 'Hamilton)
 
;; Test network. Picture №1.
(defparameter *net* #2A(
  (   0    0 1104    0 1292 1153  934  984 1068    0)
  (   0    0    0  740    0  482 1172    0  251    0)
  (1104    0    0    0  394    0  630    0    0  183)
  (   0  740    0    0    0  376    0 1206    0    0)
  (1292    0  394    0    0    0    0 2250    0  536)
  (1153  482    0  376    0    0    0 1090  288    0)
  ( 934 1172  630    0    0    0    0    0 1169  562)
  ( 984    0    0 1206 2250 1090    0    0    0    0)
  (1068  251    0    0    0  288 1169    0    0    0)
  (   0    0  183    0  536    0  562    0    0    0)))
 
(Hamilton *net* 7)
; (7 3 5 8 1 6 9 4 2 0 7)
; 6873
Буду делать ход конем. Таблица специально объявлена глобально, чтобы лепить из нее разные представления.
Lisp
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;; Граф для ходов коня по доске. ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun Make-Board (n)
  (let ((w (loop for i from 1 to n collect i)))
    (mapcan (lambda (col)
              (mapcar (lambda (row) (list col row)) w)) w)))
 
(defun Fill-Table (board)
  (let* ((len (length board)) (side (round (sqrt len))) (accum '())
         (alist (pairlis board (loop for i from 0 to (- len 1) collect i) accum)))
    (defparameter *ht* (make-hash-table :size len :test #'equal))
    (flet ((Knight (square &aux accum)  
             (dolist (offset '((2 1) (1 2) (-1 2) (-2 1) (-2 -1) (-1 -2) (1 -2) (2 -1)))
               (push (mapcar #'+ square offset) accum))
               (remove-if #'(lambda (x)
                              (or (< side (car  x)) (> 1 (car  x)) 
                                  (< side (cadr x)) (> 1 (cadr x))))
                          accum))); (Knight '(1 1))  => ((2 3) (3 2))
    (mapcar #'(lambda (square)
                (let ((fields (mapcar #'(lambda (offset)
                                          (cdr (assoc offset alist :test #'equal)))
                                      (Knight square)))
                      (cell (cdr (assoc square alist :test #'equal))))
                  (setf (gethash cell *ht*) fields)))
            board)
    'Ok)))
 
(defun Adjacency-Matrix (n)
  (let* ((dim (* n n))
         (arr (make-array (list dim dim) :initial-element 0)))
    (dotimes (node dim)
      (dolist (ls (gethash node *ht*))
        (setf (aref arr node ls) 1)))
    arr))
 
;;; Suite.
(defun Move-Knight (n)
  ;; create the table *ht*
  (Fill-Table (Make-Board n))
  ;; create the network
  (defparameter *net* (Adjacency-Matrix n)))
  
;;; Test.
;; 8x8  Picture №3.
(Move-Knight 8)
(Hamilton *net* 0)
=>
(0 17 27 37 31 46 63 53 36 30 47 62 52 58 48 42 57 51 61 55 45 39 54 60
 43 28 38 44 59 49 32 26 16 33 50 56 41 24 34 40 25 35 29 23 13 7 22 12
 6 21 15 5 11 1 18 8 2 19 9 3 20 14 4 10 0)
 
;; 6x6
(Move-Knight 6)
(Hamilton *net* 1)
=>
(1 12 25 33 29 21 34 23 10 2 13 0 8 4 17 28 32 24 
 20 31 18 26 30 19 6 14 27 35 22 11 15 7 3 16 5 9 1)


Вернуться к обсуждению:
С помощью координат нарисовать граф и сделать обход на лиспе Lisp
Миниатюры
С помощью координат нарисовать граф и сделать обход на лиспе   С помощью координат нарисовать граф и сделать обход на лиспе   С помощью координат нарисовать граф и сделать обход на лиспе  

2
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.06.2014, 15:55
Готовые ответы и решения:

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

Нарисовать ось координат без четвертей и место точек сделать линию
Нужно нарисовать вот такую ось координат только без четвертей и место точек сделать линию!!! Кол-во...

Левосторонний обход дерева (граф)
Задание. Спроектировать класс BinTree. Описание алгоритмов. Метод insert(int V). Условия...

Рекурсивный обход. Не могу сделать табуляцию. Обход с выводом имен файлов
Задание простое, ну по крайней мере на первый взгляд. Написать скрипт обхода вложенных директорий с...

26
11.06.2014, 15:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.06.2014, 15:55
Помогаю со студенческими работами здесь

Реализация циклов на Лиспе, Вложенные циклы на Лиспе
1)реализовать двумя способами (LET, LOOP, DO, DOTIMES) первая картинка 2)Согласно варианту...

нарисовать граф
люди подскажите кто знает(где можно об этом почитать конкретно об этом) Хочу чтобы пользователь...

Нарисовать граф
По матрице смежности нужно нарисовать граф. У меня идеи закончились. То, что ниже назвать кодом...

Нарисовать граф
Необходимо сделать свою реализацию графа и нарисовать его, проблема в том что нарисовать граф это...

Как нарисовать граф?
Какие библиотеки использовать что бы нарисовать граф?Есть ли встроение библиотеки?Задача:с матрицы...

Нарисовать граф в делпхи
Привет всем, у меня такой вопрос. я пытаюсь построить граф исходя из данных таблицы stringrid...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru