powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Помогите, пожалуйста, с Лисп чуть-чуть :)
3 сообщений из 3, страница 1 из 1
Помогите, пожалуйста, с Лисп чуть-чуть :)
    #36955215
vazovod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Программку рисования фрактала Дракон Хартера — Хейтуэя надо на лиспе
Вот попытался:
Код: 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.
36.
37.
(DEFUN PAINT(X1 Y1 X2 Y2 K)
  (SETQ A(LIST X1 Y1))
  (SETQ B(LIST X2 Y2))
  ;(COMMAND "ОТРЕЗОК"A B)
   (IF (= k  0 )
    (PROGN
           (COMMAND "ОТРЕЗОК"A B) 
    exit
   )
     )  
  ; (DRAGON)
   
  (SETQ S1 (+ X1 X2))
   (SETQ S2 (- Y2 Y1))
    
   (SETQ S11 (/ S1  2 ))
   (SETQ S22 (/ S2  2 ))
   (SETQ TX (+ S11 S22))

  (SETQ Z1 (+ Y1 Y2))
  (SETQ Z2 (- X2 X1))
    
  (SETQ Z11 (/ Z1  2 ))
  (SETQ Z22 (/ Z2  2 ))
  (SETQ TY (- Z11 Z22)) 
  (SETQ KK(- K  1 ))
  

  (PAINT X2 Y2 TX TY KK)
  (PAINT X1 Y1 TX TY KK)
  
)
(DEFUN DRAGON()
 ;(setq X1  30  X2  30  Y1  30  Y2  300  K  0 )
;(Paint X1 Y1 X2 Y2 K)
 (PAINT  100   150   500   150   8 )
)

А вот на Delphi в инете нашёл.
Косяк весь с рекурсией, вот exit там есть, в лиспе не сделал, помогите пожалуйста

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
procedure Dragon(x1,y1,x2,y2,Depth:Longint;canv:TCanvas);
  procedure Paint(x1,y1,x2,y2,k:Longint);
  var tx,ty:Longint;
  begin
   if k= 0  then
    begin
     canv.MoveTo(x1,y1);
     canv.LineTo(x2,y2);
     Exit;                      <===================== !!!
    end;
   tx:=(x1+x2) div  2 +(y2-y1) div  2 ;
   ty:=(y1+y2) div  2 -(x2-x1) div  2 ;
   Paint(x2,y2,tx,ty,k- 1 );
   Paint(x1,y1,tx,ty,k- 1 );
  end;
begin
 Paint(x1,y1,x2,y2,Depth);
end;
...
Рейтинг: 0 / 0
Помогите, пожалуйста, с Лисп чуть-чуть :)
    #36955299
vazovod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что тут не хватает? а?
:)
...
Рейтинг: 0 / 0
Помогите, пожалуйста, с Лисп чуть-чуть :)
    #36955461
vazovod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот так ещё сделал, пишет всегда функция отменена
Помогите пожалуйста, очень срочно :)
Код: 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.
(DEFUN PAINT(X1 Y1 X2 Y2 K)
  (SETQ A(LIST X1 Y1))
  (SETQ B(LIST X2 Y2))
 
    (IF (> k  0 )
      (PROGN  
             
            (SETQ S1 (+ X1 X2))
            (SETQ S2 (- Y2 Y1))
            (SETQ S11 (/ S1  2 ))
            (SETQ S22 (/ S2  2 ))
            (SETQ TX (+ S11 S22))
            (SETQ Z1 (+ Y1 Y2))
            (SETQ Z2 (- X2 X1))
            (SETQ Z11 (/ Z1  2 ))
            (SETQ Z22 (/ Z2  2 ))
            (SETQ TY (- Z11 Z22)) 
            (SETQ KK(- K  1 ))
  

            (PAINT X2 Y2 TX TY KK)
            (PAINT X1 Y1 TX TY KK)
       )
       
       (COMMAND "ОТРЕЗОК"A B) 
 
    
   )  

)
(DEFUN DRAGON()
 (PAINT  100   150   500   150   8 )
)
 
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Помогите, пожалуйста, с Лисп чуть-чуть :)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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