Advertisement
MarkUa

Untitled

Sep 16th, 2019
3,548
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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.                           ;;(display copy) (display li)
  33.                           ;;(display (car li))
  34.                           ;;(display (cdr li))
  35.                             (cons  (car list_)  result ) )
  36.              ( (and  (= position 1  ) (PAIR?  list_) (not (LIST? list_)) )
  37.                           ;;(display copy) (display li)
  38.                           ;;(display (car li))
  39.                           ;;(display (cdr li))
  40.                           ;; (display li)
  41.                           (cons   list_   result ) )
  42.              (else
  43.                         (reverse_ (cdr list_) (cons (car list_) result  )  ( - position 1) )
  44.                      )
  45.      )      
  46. )
  47.  
  48. (define (check li copy possible_pair_position)
  49.   ; (display (PAIR? (cdr li)))
  50.    ; (display (LIST? (cdr li)))
  51.     #|(display "\n")
  52.     (display (PAIR? li))
  53.     (display (LIST? li))
  54.     (display (PAIR? (cdr li)))
  55.     (display (cdr li) )
  56.     (display  possible_pair_position)
  57.     (display copy)
  58.      (display "\n")|#
  59.      #| (display "\n")
  60.       (display (PAIR? (cdr li)))
  61.        (display li)
  62.          (display (cdr li))
  63.         (display "\n")|#
  64.       (cond ((null? li)  copy  )
  65.             ( (and (=  possible_pair_position 1  ) (PAIR?  li) (LIST? li) )
  66.                           ;;(display copy) (display li)
  67.                           ;;(display (car li))
  68.                           ;;(display (cdr li))
  69.                          (reverse_ (cons  (car li)  copy ) '() 5)     )
  70.              ( (and (=  possible_pair_position 1  ) (PAIR?  li) (not (LIST? li)) )
  71.                           ;;(display copy) (display li)
  72.                           ;;(display (car li))
  73.                           ;;(display (cdr li))
  74.                           ;; (display li)
  75.                          (reverse_ (cons   li   copy ) '() 5)  )
  76.            ( (=  possible_pair_position 1  )
  77.                          (display (cdr li))  (cons  (car li) copy ) )
  78.            (else
  79.                    
  80.      #|                 (display "\n")
  81.        (display (null? li))
  82.       (display li)
  83.       (display copy)
  84.       (display "\n")
  85.       (display (car li))|#
  86.       (check (cdr li  ) (cons (car li) copy )   (- possible_pair_position 1) )
  87.                  
  88.             )
  89.        )
  90.  
  91.  )
  92. (define (second my_list)
  93.      (define len  ( count1 my_list 0) )
  94.      (cond ((< len 2) "less than 2")
  95.            ((= len 2) '() )
  96.            (else  ( check (cddr my_list) '()  (- len 2) )
  97.  
  98.                            )
  99.            )
  100.      
  101.      
  102.   )
  103.      (define r '() )
  104.  
  105. (define (first my_list)
  106.    
  107.      (cond ((and  (not (LIST? my_list)) (not (PAIR? my_list))) "atom" )
  108.            ((< ( count1 my_list 0) 2) "list size less than 2"  )
  109.            ((= ( count1 my_list 0) 2)
  110.                                        (cond ((and (not (LIST? my_list)) (PAIR? x) )
  111.                                       (set! r (cons ( cdr my_list) r))
  112.                                         (set! r (cons (car my_list) r))
  113.                                         ;(display (cdr my_list))
  114.                                                                
  115.                                   r  )
  116.                                        (else
  117.                                                (display r)
  118.                                                (display (cadr my_list))
  119.                                                (display (car my_list) )
  120.                                                (set! r (cons ( cadr my_list) r))
  121.                                         (set! r (cons (car my_list) r))
  122.                                         ;(display (cdr my_list))
  123.                                                                
  124.                                                 r                       )
  125.                                              )                  )
  126.            ((> ( count1 my_list 0) 2)
  127.                                         (set! r (cons ( cadr my_list) r))
  128.                                         (set! r (cons (car my_list) r))
  129.                                         ;(display (cdr my_list))
  130.                                                                
  131.                                   r )
  132.  
  133.                     (else  '(car my_list)
  134.  
  135.                            )
  136.            )
  137.      
  138.      
  139.   )
  140.  
  141.  
  142. (define (parse_pair t)
  143.   (cond ((null? t) 0)
  144.        
  145.         (else (+ 1
  146.                  (parse_pair  (cdr t))
  147.          ))))
  148.  
  149. (define (parse_not_right_list my_list)
  150.   (cond ((LIST? my_list) "LIST")
  151.         ((PAIR? my_list) (parse_pair my_list))
  152.        
  153.    )
  154. )
  155. ;(count1 '( 4 5 5 5  5 . 6) 0)
  156. ;(first '(5   6 . 2 ) )
  157.  (define x '( 2 44 44 (4 . 3) 4 4 ) )
  158.  
  159.  (display x)
  160. (display "\n")
  161. ;(display x)
  162. ;(PAIR? '(2 . 22))
  163. (define first_part (first  x))
  164. (define second_part '() )
  165. (define result '())
  166. (cond ( (or (EQ? first_part "atom" ) (EQ? first_part "list size less than 2"))
  167.      
  168.          (display "could not make oparations because of ")
  169.         (display first_part)  )
  170.       (else
  171.             (set! second_part (second x))
  172.             (set! result (cons second_part result))
  173.             (set! result (cons first_part result))
  174.             (display result)
  175.        )
  176. )
  177. ;(second x)
  178.  ;(reverse_ (second x) '()  5 )
  179.  ;(define x  '(3 5 5 6 5 6 2 4 (5 . 4)  7))
  180.  ;(LIST? x)
  181. ;(check x '())
  182. ;(second '(5 (6 . 2) 5 53))
  183.  #|(cond ((null? '() ) "HH"))
  184.   (PAIR? '( 4 . 8) )
  185.  (cond (ATOM? cdr '(  4 . 8 )) )
  186.   (cond (( EQUAL? '()  (cdr '(  4 . 8 )) ) "hello" ) )|#
  187. #|(  cdr '( 4 . (6 5 5 4)) )
  188. (parse_not_right_list '(4 5
  189.  
  190.                           6 2  5  4))
  191. (define x '( 4  5 6 2  5  5  6 4  6  3  ))
  192. (first x)
  193. (second x)|#
  194. ;(parse_pair x)
  195. #|(count '(4 5 4 2 5 3 5))
  196. (define sec (second '(2 3 5 4)))
  197. (define fir (first '(2  3 5 4)))
  198. (define re '() )
  199. (set! re (cons sec '()))
  200. (set! re (cons fir re))|#
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement