Advertisement
MarkUa

Untitled

Sep 16th, 2019
885
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lisp 5.28 KB | None | 0 0
  1.                     (define s '"")
  2.  
  3. (define (count lst len)
  4.  
  5.  
  6.   (cond ((null? lst) 0)
  7.         ((PAIR? lst) len)
  8.         (else (+ 1 (
  9.                     ;(cond (( EQUAL? '()  (cdr '(  4 )) ) "hello" ) )
  10.                     count (cdr s (+ len 1) )
  11.                           )))))
  12.  
  13. (define (count1 lst len)
  14.  
  15.   ;(display lst)
  16.   ;(display (not (PAIR? lst)) )
  17.   ;(display "\n")
  18.  (cond ((null? lst) len  )
  19.         ((not (PAIR? lst)) len )
  20.         (else  (
  21.                     count1 (cdr lst  ) (+ len 1)
  22.                           ))))
  23.  
  24.  (define (cc c)
  25.        c
  26.   )
  27.  
  28. (define (reverse_ list_  result  position )
  29.  
  30.     (cond ((null? list_)  result  )
  31.           ( (and (= position 1  ) (PAIR?  list_) (LIST? list_) )
  32.  
  33.                             (cons  (car list_)  result ) )
  34.              ( (and  (= position 1  ) (PAIR?  list_) (not (LIST? list_)) )
  35.  
  36.                           (cons   list_   result ) )
  37.              (else
  38.                         (reverse_ (cdr list_) (cons (car list_) result  )  ( - position 1) )
  39.                      )
  40.      )      
  41. )
  42.  
  43. (define (check li copy possible_pair_position deep)
  44.  
  45.       (cond ((null? li)  copy  )
  46.             ( (and (=  possible_pair_position 1  ) (PAIR?  li) (LIST? li) )
  47.  
  48.                          (reverse_ (cons  (car li)  copy ) '() deep)     )
  49.              ( (and (=  possible_pair_position 1  ) (PAIR?  li) (not (LIST? li)) )
  50.  
  51.                          (reverse_ (cons   li   copy ) '() deep)  )
  52.            ( (=  possible_pair_position 1  )
  53.                       ;   (display (cdr li))
  54.              (cons  (car li) copy ) )
  55.            (else
  56.                    
  57.  
  58.       (check (cdr li  ) (cons (car li) copy )   (- possible_pair_position 1) deep )
  59.                  
  60.             )
  61.        )
  62.  
  63.  )
  64. (define (second my_list)
  65.      (define len  ( count1 my_list 0) )
  66.      (cond ((< len 2) "less than 2")
  67.            ((= len 2) '() )
  68.            (else  ( check (cddr my_list) '()  (- len 2) (- len 2) )
  69.  
  70.                            )
  71.            )
  72.      
  73.      
  74.   )
  75.      (define r '() )
  76.  
  77. (define (first my_list)
  78.    
  79.      (cond ((and  (not (LIST? my_list)) (not (PAIR? my_list))) "atom" )
  80.            ((< ( count1 my_list 0) 2) "list size less than 2"  )
  81.            ((= ( count1 my_list 0) 2)
  82.                                        (cond ((and (not (LIST? my_list)) (PAIR? x) )
  83.                                       (set! r (cons ( cdr my_list) r))
  84.                                         (set! r (cons (car my_list) r))
  85.                                         ;(display (cdr my_list))
  86.                                                                
  87.                                   r  )
  88.                                        (else
  89.                                               ; (display r)
  90.                                                ;(display (cadr my_list))
  91.                                                ;(display (car my_list) )
  92.                                                (set! r (cons ( cadr my_list) r))
  93.                                         (set! r (cons (car my_list) r))
  94.                                         ;(display (cdr my_list))
  95.                                                                
  96.                                                 r                       )
  97.                                              )                  )
  98.            ((> ( count1 my_list 0) 2)
  99.                                         (set! r (cons ( cadr my_list) r))
  100.                                         (set! r (cons (car my_list) r))
  101.                                         ;(display (cdr my_list))
  102.                                                                
  103.                                   r )
  104.  
  105.                     (else  '(car my_list)
  106.  
  107.                            )
  108.            )
  109.      
  110.      
  111.   )
  112.  
  113.  
  114. (define (parse_pair t)
  115.   (cond ((null? t) 0)
  116.        
  117.         (else (+ 1
  118.                  (parse_pair  (cdr t))
  119.          ))))
  120.  
  121. (define (parse_not_right_list my_list)
  122.   (cond ((LIST? my_list) "LIST")
  123.         ((PAIR? my_list) (parse_pair my_list))
  124.        
  125.    )
  126. )
  127. ;(count1 '( 4 5 5 5  5 . 6) 0)
  128. ;(first '(5   6 . 2 ) )
  129.  (define x '( 2 44 5 . 3  ) )
  130.  
  131.  (display x)
  132. (display "\n")
  133. ;(display x)
  134. ;(PAIR? '(2 . 22))
  135. (define first_part (first  x))
  136. (define second_part '() )
  137. (define result '())
  138. (cond ( (or (EQ? first_part "atom" ) (EQ? first_part "list size less than 2"))
  139.      
  140.          (display "could not make oparations because of ")
  141.         (display first_part)  )
  142.       (else
  143.             (set! second_part (second x))
  144.             (set! result (cons second_part result))
  145.             (set! result (cons first_part result))
  146.             (display result)
  147.        )
  148. )
  149. ;(second x)
  150.  ;(reverse_ (second x) '()  5 )
  151.  ;(define x  '(3 5 5 6 5 6 2 4 (5 . 4)  7))
  152.  ;(LIST? x)
  153. ;(check x '())
  154. ;(second '(5 (6 . 2) 5 53))
  155.  #|(cond ((null? '() ) "HH"))
  156.   (PAIR? '( 4 . 8) )
  157.  (cond (ATOM? cdr '(  4 . 8 )) )
  158.   (cond (( EQUAL? '()  (cdr '(  4 . 8 )) ) "hello" ) )|#
  159. #|(  cdr '( 4 . (6 5 5 4)) )
  160. (parse_not_right_list '(4 5
  161.  
  162.                           6 2  5  4))
  163. (define x '( 4  5 6 2  5  5  6 4  6  3  ))
  164. (first x)
  165. (second x)|#
  166. ;(parse_pair x)
  167. #|(count '(4 5 4 2 5 3 5))
  168. (define sec (second '(2 3 5 4)))
  169. (define fir (first '(2  3 5 4)))
  170. (define re '() )
  171. (set! re (cons sec '()))
  172. (set! re (cons fir re))|#
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement