Advertisement
Guest User

Untitled

a guest
May 9th, 2019
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lisp 1.28 KB | None | 0 0
  1. (defun make-list-from-file (filename)
  2.   (with-open-file (in filename)
  3.     (loop for line = (read-line in nil nil)
  4.        while line
  5.        collect (read-from-string (concatenate 'string "(" line
  6. ")")))))
  7.  
  8. (defun maximum (list)
  9.   (reduce #'max list))
  10.  
  11. (defun create_reversed_graph (graf maks)
  12.     (let ((rev_graf (make-array (+ maks 1) :initial-element '())))
  13.         (let ((number_row 1))
  14.         (loop for x in graf do
  15.             (loop for y in x do
  16.                 (setf (aref rev_graf y) (nconc (aref rev_graf y) (list number_row)))
  17.                 ;; (print number_row)
  18.                 )
  19.             (setq number_row (+ number_row 1))
  20.             )
  21.         )
  22.     rev_graf
  23.     )
  24. )
  25.  
  26. (defparameter maks 'integer)
  27. (defparameter odleglosc 0)
  28. (defparameter poprzedni 0)
  29. (defparameter rev_graf 0)
  30.  
  31. (defun szukaj (x y)
  32.   "Funkcja zwraca ciąg wierzchołków i linii będących najkrótszą ścieżką"
  33.   (let ((graf (make-list-from-file "test.txt")))
  34.     (setq maks (maximum (mapcar #'maximum graf)))
  35.     (setq rev_graf (create_reversed_graph graf maks))
  36.     (setq odleglosc (make-array (+ maks 1) :initial-element -1))
  37.     (setq poprzedni (make-array (+ maks 1) :initial-element 0))
  38.     (setf (aref odleglosc x) 0)
  39.    
  40.     (print rev_graf)
  41.  
  42.   )
  43. )
  44.  
  45. (szukaj 5 2)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement