Advertisement
PonaFly

Untitled

Mar 14th, 2019
792
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scheme 3.41 KB | None | 0 0
  1. #lang scheme
  2. ;1 c прошлой лабы
  3.  
  4. (define (splitting lst n r1 r2 r3 l1 l2 l3)  
  5.   (if (and (= n l1)  (= n l2) (= n l3)) (list r1 r2 r3)    
  6.        ( cond((and  (<(length r1)n) (= 0 (remainder (car lst) 3)))
  7.                   (splitting (cdr lst) n (cons (car lst) r1) r2 r3 (+ 1 l1) l2 l3))
  8.              ((and (< (length r2) n) (= 1 (remainder (car lst) 3)))
  9.               (splitting (cdr lst) n r1 (cons (car lst) r2) r3 l1 (+ 1 l2) l3))
  10.              ( (and (<(length r3) n) (= 2 (remainder (car lst) 3)))
  11.                (splitting (cdr lst) n r1 r2 (cons (car lst) r3) l1 l2 (+ 1 l3)))
  12.  (else (splitting (cdr lst) n r1 r2 r3 l1 l2 l3)))))
  13. (define (main lst N)
  14.   (define (threelist lst res)
  15.     (if (empty? (car lst)) res
  16.         (threelist (list(cdar lst) (cdadr lst) (cdaddr lst)) (cons (list(caar lst) (caadr lst) (caaddr lst)) res))))
  17.   (threelist (splitting lst N '() '() '() 0 0 0) '()))
  18.  
  19.  
  20.  
  21. ;3 задача c прошлой
  22.  
  23. (define (Maxtree tree)
  24.   (if (empty? tree) -999999000000
  25.       (max (car tree) ( max (Maxtree (cadr tree)) (Maxtree (caddr tree))))))
  26. (define (CountMax tree)
  27.   (define Max (Maxtree tree))
  28.   (define (FunctionMax tree1 )
  29.      (if (empty? tree1) 0
  30.       (+ (if (= (car tree1) Max) 1 0)
  31.          (FunctionMax (cadr tree1)) (FunctionMax (caddr tree1)))))
  32.   (FunctionMax tree))
  33.  
  34.  
  35. ;5 задача с прошлой
  36.  
  37.  
  38. (define (KidsTree tree)
  39.   (if (empty? tree) #t
  40.       (cond ((or (and (empty? (cadr tree)) (not (empty? (caddr tree)))) (and (not (empty? (cadr tree))) (empty? (caddr tree))))#f )
  41.             ((and (empty? (cadr tree)) (empty? (caddr tree))) #t)
  42.            (else  (and (KidsTree (cadr tree)) (KidsTree (caddr tree)))) )))
  43.  
  44. ; 3 pflfxf
  45.  
  46. (define (LeftTree tree)
  47.   (define (lefttree tree )
  48.      (if (empty? tree) 0
  49. (+ (if (not (empty? (cadr tree))) 1 0)
  50.    (lefttree (cadr tree)) (lefttree (caddr tree)))))
  51. (lefttree tree ))
  52.  
  53.  
  54. ;4 pflfxf
  55. (define (Minlist tree)
  56.   (if (empty? tree) +inf.0
  57.       (if (and (empty? (cadr tree)) (empty? (caddr tree))) (car tree)
  58.             (min (Minlist (cadr tree) (Minlist (caddr tree)))))))
  59.  
  60.  
  61.  
  62. (define (left tree)
  63.   (cadr tree))
  64. (define (right tree)
  65.   (caddr tree))
  66.   (define (symmetric tree)
  67.   (if (empty? tree)
  68.       '()
  69.       (list (car tree)
  70.             (symmetric (right tree))
  71.             (symmetric (left tree)))))
  72.  
  73. (define (lefttrees tree)
  74.   (define (help tree i)  ;и-кол-во левых потомков
  75.     (cond                 ;
  76.       ( (null? tree)  i )  ; если дерево пусто-то выдает накопленный и
  77.       ( (not(null? (left tree))) (+ (help (right tree)  i) (help (left tree) (+ 1 i) ))) ; если не пустое левое поддерево то запускаем две рекурсии,в одной меняем i
  78.       (else (help (right tree) i))))                                                         ;аесли левое пустое ,то вызываем рекури от правого поддерева
  79.   (define (result e)                                                                     ; вспомогательная функция нужна для умееньшения результата на единицу
  80.   (+ e                                                                                       ;поскольку он считает корень дерева как за левый потомок
  81.   (help tree 0)))
  82.   (result 0))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement