Advertisement
MarkUa

Untitled

Sep 16th, 2019
915
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lisp 4.43 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. (define (check li copy possible_pair_position)
  28.   ; (display (PAIR? (cdr li)))
  29.    ; (display (LIST? (cdr li)))
  30.     #|(display "\n")
  31.     (display (PAIR? li))
  32.     (display (LIST? li))
  33.     (display (PAIR? (cdr li)))
  34.     (display (cdr li) )
  35.     (display  possible_pair_position)
  36.     (display copy)
  37.      (display "\n")|#
  38.      #| (display "\n")
  39.       (display (PAIR? (cdr li)))
  40.        (display li)
  41.          (display (cdr li))
  42.         (display "\n")|#
  43.       (cond ((null? li)  copy  )
  44.             ( (and (=  possible_pair_position 1  ) (PAIR?  li) (LIST? li) )
  45.                           ;;(display copy) (display li)
  46.                           ;;(display (car li))
  47.                           ;;(display (cdr li))
  48.                           (cons  (car li)  copy ) )
  49.              ( (and (=  possible_pair_position 1  ) (PAIR?  li) (not (LIST? li)) )
  50.                           ;;(display copy) (display li)
  51.                           ;;(display (car li))
  52.                           ;;(display (cdr li))
  53.                           ;; (display li)
  54.                           (cons   li   copy ) )
  55.            ( (=  possible_pair_position 1  )
  56.                          (display (cdr li))  (cons  (car li) copy ) )
  57.            (else
  58.                    
  59.      #|                 (display "\n")
  60.        (display (null? li))
  61.       (display li)
  62.       (display copy)
  63.       (display "\n")
  64.       (display (car li))|#
  65.       (check (cdr li  ) (cons (car li) copy )   (- possible_pair_position 1) )
  66.                  
  67.             )
  68.        )
  69.  
  70.  )
  71. (define (second my_list)
  72.      (define len  ( count1 my_list 0) )
  73.      (cond ((< len 2) "less than 2")
  74.            ((= len 2) '() )
  75.            (else  ( check (cddr my_list) '()  (- len 2) )
  76.  
  77.                            )
  78.            )
  79.      
  80.      
  81.   )
  82.      (define r '() )
  83.  
  84. (define (first my_list)
  85.      
  86.      (cond ((< ( count1 my_list 0) 2) '("less than 2" "fff") )
  87.            ((> ( count1 my_list 0) 1)
  88.                                     (cond ((PAIR? (cdr my_list))
  89.                                         (set! r (cons ( cdr my_list) r))
  90.                                         (set! r (cons (car my_list) r))
  91.                                         ;(display (cdr my_list))
  92.                                         r
  93.                                         )
  94.                                         (else (
  95.                                                (set! r (cons (car (cdr my_list)) r))
  96.                                     ;(display r)
  97.                                    (set! r (cons (car my_list) r))
  98.                                                )
  99.                                             )  
  100.                                     )
  101.                                  
  102.                                    r )
  103.  
  104.                     (else  '(car my_list)
  105.  
  106.                            )
  107.            )
  108.      
  109.      
  110.   )
  111.  
  112.  
  113. (define (parse_pair t)
  114.   (cond ((null? t) 0)
  115.        
  116.         (else (+ 1
  117.                  (parse_pair  (cdr t))
  118.          ))))
  119.  
  120. (define (parse_not_right_list my_list)
  121.   (cond ((LIST? my_list) "LIST")
  122.         ((PAIR? my_list) (parse_pair my_list))
  123.        
  124.    )
  125. )
  126. ;(count1 '( 4 5 5 5  5 . 6) 0)
  127. ;(first '(5   6 . 2 ) )
  128.  (define x   '(5 4 6 5 (1 . 5) (5 . 2) ) )
  129. (display x)
  130. (PAIR? '(2 . 22))
  131. (second x)
  132.  
  133.  ;(define x  '(3 5 5 6 5 6 2 4 (5 . 4)  7))
  134.  ;(LIST? x)
  135. ;(check x '())
  136. ;(second '(5 (6 . 2) 5 53))
  137.  #|(cond ((null? '() ) "HH"))
  138.   (PAIR? '( 4 . 8) )
  139.  (cond (ATOM? cdr '(  4 . 8 )) )
  140.   (cond (( EQUAL? '()  (cdr '(  4 . 8 )) ) "hello" ) )|#
  141. #|(  cdr '( 4 . (6 5 5 4)) )
  142. (parse_not_right_list '(4 5
  143.  
  144.                           6 2  5  4))
  145. (define x '( 4  5 6 2  5  5  6 4  6  3  ))
  146. (first x)
  147. (second x)|#
  148. ;(parse_pair x)
  149. #|(count '(4 5 4 2 5 3 5))
  150. (define sec (second '(2 3 5 4)))
  151. (define fir (first '(2  3 5 4)))
  152. (define re '() )
  153. (set! re (cons sec '()))
  154. (set! re (cons fir re))|#
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement