Chuyển đến nội dung
Diễn đàn CADViet
anhGeodesy

[ Hỏi về Lisp] Tách 1234 thành 1 và 2 và 3 và 4

Các bài được khuyến nghị

23 giờ trước, anhGeodesy đã nói:

Các bác cho em hỏi cách tách số 1234 gán vào các biến a=1, b=2, c=3, d=4 . cảm ơn các bác!

(defun setq_split_strnum (str / n m ls)
    (setq n -1 m 96)
    (setq ls (mapcar 'chr (vl-string->list str))) 
    (repeat (length ls)
        (set (read (chr (setq m (1+ m)))) (atoi (nth (setq n (1+ n)) ls)))        
    )
)

Bạn dùng hàm này với biến str là một chuỗi số. Hàm gán giá trị từng con số trong biến str vào các biến

a = ...

b=...

c=...

....

z=...

Có thể gán giá trị đến 26 biến a, b, c,...z như ý muốn của bạn.

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Công nhận mọi người hiểu đề bài nhanh thiệt!
Tui đọc hoài cũng không hiểu 1234 là string hay integer, hoặc a/b/c/d là gì? Và chúng nằm ở đâu?

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
11 giờ trước, Doan Van Ha đã nói:

Công nhận mọi người hiểu đề bài nhanh thiệt!
Tui đọc hoài cũng không hiểu 1234 là string hay integer, hoặc a/b/c/d là gì? Và chúng nằm ở đâu?

Lâu rồi cũng quen với những kiểu đặt đề bài lưng lửng. Thời đại 4.0 mà @Doan Van Ha

  • Like 1
  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Vào lúc 15/2/2022 tại 16:50, thiep đã nói:
  • cadvietlisp.lsp
    lisp help
  •  

(defun setq_split_strnum (str / n m ls)
    (setq n -1 m 96)
    (setq ls (mapcar 'chr (vl-string->list str))) 
    (repeat (length ls)
        (set (read (chr (setq m (1+ m)))) (atoi (nth (setq n (1+ n)) ls)))        
    )
)

Bạn dùng hàm này với biến str là một chuỗi số. Hàm gán giá trị từng con số trong biến str vào các biến

a = ...

b=...

c=...

....

z=...

Có thể gán giá trị đến 26 biến a, b, c,...z như ý muốn của bạn.

(setq lst (list))
    (repeat (length ls)
        (setq lst (append lst (list (set (read (chr (setq m (1+ m)))) (atoi (nth (setq n (1+ n)) ls))))))
         
    )

 

Cảm ơn bác @thiep   - Như này là tách đc rồi. cảm ơn Bác nhiều.

  • Vote giảm 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
;(foo "abcde" '(biena bienb c d e))
(defun foo (str lstVar / i n)
	(setq i -1 n (min (strlen str) (length lstVar)))
	(while 	(< (setq i (1+ i)) n)
		(set (nth i lstVar) (substr str (1+ i) 1))
	)
)

Không giới hạn biến và chuỗi thì ket nghĩ ntn tiện hơn

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay

×