Advertisement
MarkUa

Untitled

Sep 16th, 2019
811
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lisp 5.77 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.                           ;;(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 ((< ( count1 my_list 0) 2) '("less than 2" "fff") )
  108.            ((= ( count1 my_list 0) 2)
  109.                                        (cond ((and (not (LIST? my_list)) (PAIR? x) )
  110.                                       (set! r (cons ( cdr my_list) r))
  111.                                         (set! r (cons (car my_list) r))
  112.                                         ;(display (cdr my_list))
  113.                                                                
  114.                                   r  )
  115.                                        (else (
  116.                                                (set! r (cons ( cadr my_list) r))
  117.                                         (set! r (cons (car my_list) r))
  118.                                         ;(display (cdr my_list))
  119.                                                                
  120.                                   r
  121.                                               ) )
  122.                                              )                  )
  123.            ((> ( count1 my_list 0) 2)
  124.                                         (set! r (cons ( cadr my_list) r))
  125.                                         (set! r (cons (car my_list) r))
  126.                                         ;(display (cdr my_list))
  127.                                                                
  128.                                   r )
  129.  
  130.                     (else  '(car my_list)
  131.  
  132.                            )
  133.            )
  134.      
  135.      
  136.   )
  137.  
  138.  
  139. (define (parse_pair t)
  140.   (cond ((null? t) 0)
  141.        
  142.         (else (+ 1
  143.                  (parse_pair  (cdr t))
  144.          ))))
  145.  
  146. (define (parse_not_right_list my_list)
  147.   (cond ((LIST? my_list) "LIST")
  148.         ((PAIR? my_list) (parse_pair my_list))
  149.        
  150.    )
  151. )
  152. ;(count1 '( 4 5 5 5  5 . 6) 0)
  153. ;(first '(5   6 . 2 ) )
  154.  (define x   '( (5 . 4)     ) )
  155.  (display x)
  156. (display "\n")
  157. ;(display x)
  158. ;(PAIR? '(2 . 22))
  159. (first  x)
  160. ;(second x)
  161.  ;(reverse_ (second x) '()  5 )
  162.  ;(define x  '(3 5 5 6 5 6 2 4 (5 . 4)  7))
  163.  ;(LIST? x)
  164. ;(check x '())
  165. ;(second '(5 (6 . 2) 5 53))
  166.  #|(cond ((null? '() ) "HH"))
  167.   (PAIR? '( 4 . 8) )
  168.  (cond (ATOM? cdr '(  4 . 8 )) )
  169.   (cond (( EQUAL? '()  (cdr '(  4 . 8 )) ) "hello" ) )|#
  170. #|(  cdr '( 4 . (6 5 5 4)) )
  171. (parse_not_right_list '(4 5
  172.  
  173.                           6 2  5  4))
  174. (define x '( 4  5 6 2  5  5  6 4  6  3  ))
  175. (first x)
  176. (second x)|#
  177. ;(parse_pair x)
  178. #|(count '(4 5 4 2 5 3 5))
  179. (define sec (second '(2 3 5 4)))
  180. (define fir (first '(2  3 5 4)))
  181. (define re '() )
  182. (set! re (cons sec '()))
  183. (set! re (cons fir re))|#
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement