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

[Hỏi]Đố vui với LISP

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

Nếu lập hàm thì phải có điều kiện có sử dụng cal hay acet không ạ ?

Với lại hình như số này không đổi và không phụ thuộc vào vị trí point trong tam giác, đúng k ạ ^^

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

Nếu lập hàm thì phải có điều kiện có sử dụng cal hay acet không ạ ?

Với lại hình như số này không đổi và không phụ thuộc vào vị trí point trong tam giác, đúng k ạ ^^

 

Ket ơi, câu đố đã đầy đủ, giám thị không được giải thích gì thêm!

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

Không cal, thêm khoản không kiểm tra điều kiện nó có là tam giác đều hay không, point nằm trong hay không nữa, thì hình như kết quả là : (do e học dốt hình nên k biết tính đúng không ^^)

(defun tkc (p1 p2 p3 pt)
(* (distance p1 p2) (expt 3 0.5) 0.5)
)

  • 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

Nếu lập hàm thì phải có điều kiện có sử dụng cal hay acet không ạ ?

Với lại hình như số này không đổi và không phụ thuộc vào vị trí point trong tam giác, đúng k ạ ^^

Reply :

Với một điểm P bất kỳ nằm bên trong tam giác, khoảng cách từ nó đến các cạnh tam giác là a, b, c thì a+b+c = chiều cao của tam giác đêu, không phụ thuộc vào vị trí P

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

Quá lâu mục này không ai ngó ngàng tới, nay khơi dậy bằng một câu cho vui:

Trên bản vẽ đã vẽ sẵn 1 Ellipse. Làm thế nào để vẽ 1 Spline trùng với Ellipse đó?

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

Quá lâu mục này không ai ngó ngàng tới, nay khơi dậy bằng một câu cho vui:

Trên bản vẽ đã vẽ sẵn 1 Ellipse. Làm thế nào để vẽ 1 Spline trùng với Ellipse đó?

Khi Offset 1 Ellipse thì CAD sẽ tạo ra 1 Spline

=> ví dụ code biến Ellipse thành Spline :

(defun c:test ()(vla-offset (setq sEl (car (vlax-invoke (setq el (vlax-ename->vla-object (ssname (ssget ":S" (list (cons 0 "Ellipse"))) 0))) 'offset -1e-8))) 1e-8)
(vla-delete sEl)(vla-delete el))

  • Vote tăng 3

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

Tue_NV có thêm một câu nữa :

 

Xây dựng hàm con có chức năng Tách List

 

Tách 1 List mẹ thành các List con, trong đó count là số lượng phần tử của các List con (tách từ List mẹ).

Số lượng phần tử trong các List con phải bằng nhau.

Nếu Số lượng phần tử trong các List con không bằng nhau thì trả về nil

Các bac xem thêm ví dụ ở dưới nhé

 

(defun Tue-list-tach (lst count / ...)

;;;;

;;;

 

;;;;;Ex: (Tue-list-tach '(1 5 4 6 3 5) 2)--> ((1 5) (4 6) (3 5))

;;;;;;;;;(Tue-list-tach '(1 5 4 6 3 5) 1)--> ((1) (5) (4) (6) (3) (5))

;;;;;;;;;(Tue-list-tach '(1 5 4 6 3 5) 3)--> ((1 5 4) (6 3 5))

;;;;;;;;;(Tue-list-tach '(1 5 4 6 3 5) 6)--> ((1 5 4 6 3 5))

;;;;;;;;;(Tue-list-tach '(1 5 4 6 3 5) 5)--> nil

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

Trên mạng có nhìu, cứ lấy 1 cái về kiếm tks đã nào :lol:

(defun ST:List-Split ( l n / a b )
(and (zerop (rem (length l) n))
 (while l
(repeat n
 	(setq a (cons (car l) a) l (cdr l))
)
(setq b (cons (reverse a) B) a nil)
 )
)
 (reverse B)
)

 

(defun ST:List-Split1 ( l n / a b )
(and (zerop (rem (length l) n))
(While l
(setq b(cons (car (setq a (acet-list-split l (nth n l)))) B)  l (cadr a))
))
(reverse B)
)

  • 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

Nếu ko có yêu cầu ngắn gọn xúc tích thì em thử múa xem thế nào! :)

 
(defun tachlist(lst count / lst lst1 lstkq id count)
 (if (=(*(fix (/(length lst)count))count) (length lst))
(progn
 	(setq id (length lst))
 	(repeat (fix (/(length lst)count))
(setq lst1 nil)
(repeat count  
  (setq lst1(vl-list* (nth (setq id (1- id))lst) lst1))  
  )
(setq lstkq (vl-list* lst1 lstkq))
)
 	)
)
 )

  • Vote tăng 2

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

Hic, không biết có câu đố nào khó nữa không đây, CADVIET toàn cao thủ không á! :)

Có ai có câu nào khó khó tí, đố cho anh em Lisper thể hiện tí :)

Đây là 1 trong những đáp án đó

Thanks All


(defun Tue-list-tach (lst count / i j Lst-tinh Reslis)
  (setq i 0 j 0)
  (while (and (< i (/ (length lst) count)) (= (rem (length lst) count) 0))
(Repeat count
(setq Lst-tinh (append Lst-tinh (list (nth j lst)) ))
(setq j (1+ j))  
)
        (setq Reslis (append Reslis (list Lst-tinh)) Lst-tinh nil)
    (setq i (1+ i))
   )
Reslis
)

  • 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

Tue_NV Có 1 câu đố vui nữa đây:

Cho tứ giác ABCD. Xây dựng 1 hàm kiểm tra tứ giác ABCD có phải là Hình chữ nhật không? Nếu đúng là hình chữ nhật thì hàm trở về T, nếu không đúng hàm trở về nil

 

Code dạng như thế này :

(defun xdHCN(A B C D)
 (if dieukienlogic
  T nil
 )
)

- điều kiện câu đố : Ở điều kiện logic sau hàm If không sử dụng hàm And (không sử dụng hàm if lồng nhau). Không sử dụng hàm (= làm điều kiện so sánh

- Câu đố của topic được lấy từ Yêu cầu ở đây : http://www.cadviet.com/forum/index.php?showtopic=62132

Nào, xin mời các bác tham gia giải đố

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

Đề bài thiếu dữ kiện a ạ :)

Thiếu dữ kiện gì nữa, Ketxu bổ sung giúp cho đầy đủ nhé. Thanks.

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

A B C D là cái j ạ ^^

A B C D là 4 đỉnh của tứ giác ABCD.

trong mặt phẳng (ABCD) Cho tứ giác ABCD có 4 đỉnh A B C D.

Trong hàm

(defun xdHCN(A B C D) (if dieukienlogic T nil ) )

thì A B C D là các biến tọa độ điểm. Ở dieukienlogic phải xử lý các biến tọa độ điểm này để thỏa mãn yêu cầu của câu đố

 

:D Chắc là đủ thông tin rồi các bác nhỉ?

........

- Câu đố của topic được lấy từ Yêu cầu ở đây : http://www.cadviet.com/forum/index.php?showtopic=62132

Nào, xin mời các bác tham gia giải đố

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

A B C D là 4 đỉnh của tứ giác ABCD.

trong mặt phẳng (ABCD) Cho tứ giác ABCD có 4 đỉnh A B C D.

Trong hàm

(defun xdHCN(A B C D) (if dieukienlogic T nil ) )

thì A B C D là các biến tọa độ điểm. Ở dieukienlogic phải xử lý các biến tọa độ điểm này để thỏa mãn yêu cầu của câu đố

 

:D Chắc là đủ thông tin rồi các bác nhỉ?

Điều kiện logic: tích của 4 sin của 4 góc bằng 1 là 1 đáp án

P/S: chỉ cần tích của 3 sin của 3 góc bằng 1 là đủ.

  • 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

Tue_NV Có 1 câu đố vui nữa đây:

Cho tứ giác ABCD. Xây dựng 1 hàm kiểm tra tứ giác ABCD có phải là Hình chữ nhật không? Nếu đúng là hình chữ nhật thì hàm trở về T, nếu không đúng hàm trở về nil

 

Code dạng như thế này :

(defun xdHCN(A B C D)
 (if dieukienlogic
  T nil
 )
)

- điều kiện câu đố : Ở điều kiện logic sau hàm If không sử dụng hàm And (không sử dụng hàm if lồng nhau). Không sử dụng hàm (= làm điều kiện so sánh

- Câu đố của topic được lấy từ Yêu cầu ở đây : http://www.cadviet.com/forum/index.php?showtopic=62132

Nào, xin mời các bác tham gia giải đố

Cũng không cần phải dùng đến hàm IF vẫn trả về T hoặc nil

(defun xdHCN(A B C D)
(equal (abs (* (sin (- (angle A B) (angle A D)))
                     	(sin (- (angle B C) (angle B A)))
                     	(sin (- (angle C D) (angle C B))))) 1.0 1E-8))
;--- Hoac
(defun xdHCN(A B C D)
(equal (abs (+ (sin (- (angle A B) (angle A D)))
                     	(sin (- (angle B C) (angle B A)))
                     	(sin (- (angle C D) (angle C B))))) 3.0 1E-8))

  • 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

Xây dựng hàm con có chức năng Tách List

 

Tách 1 List mẹ thành các List con, trong đó count là số lượng phần tử của các List con (tách từ List mẹ).

Số lượng phần tử trong các List con phải bằng nhau.

Nếu Số lượng phần tử trong các List con không bằng nhau thì trả về nil

(Tue-list-tach '(1 5 4 6 3 5) 5)--> nil

Xét về hiệu năng khi sử dụng thì hàm trả về kết quả như trên là không hợp lý lắm

Nên để trả về các danh sách con có số phần tử nhập vào, phần dư còn lại bao nhiêu thì cũng đưa vào 1 danh sách con khác

(Tue-list-tach '(1 5 4 6 3 5) 5)--> ((1 5 4 6 3) (5))

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

Quá lâu không thấy bác nào đố vui để thư giản. Hôm nay góp vui bằng 1 câu như sau:

Chúng ta đều biết, do nhu cầu công việc, chúng ta thường có những kết quả thu về, ví dụ:

- (setq a 5) => (type a) = 'INT

- (setq a 1.2) => (type a) = 'REAL

- (setq a '(1 2 3)) => (type a) = 'LIST

- ...

Bây giờ chúng ta muốn ghi những kết quả đó (a) ra file.

Đố: Hãy viết 1 hàm dạng (defun GHI(a)...

Sao cho mọi kiểu của a đều ghi vào file được.

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

Ketxu không có Cad ở đây, nhưng cũng thử viết 1 phát notepad xem sao ^^ :

(defun Ghi (a fn) ;a : variable, fn : file name
  (setq fn (open fn "a"))
  (write-line (vl-prin1-to-string a) fn)
  (close fn)
)

  • 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

Dùng (vl-prin1-to-string) cho ra kết quả không đúng ý đồ câu hỏi (do hỏi chưa rõ chăng?), bởi tất cả ghi ra file đều nằm trong trong cặp nháy kép "".

Ví dụ kết quả của Ket:

a=5 => in ra "5"

a=(1 2 3) => in ra "(1 2 3)"

v.v...

Trong khi tôi muốn:

a=5 => in ra 5

a=(1 2 3) => in ra (1 2 3)

v.v...

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

Dùng (vl-prin1-to-string) cho ra kết quả không đúng ý đồ câu hỏi (do hỏi chưa rõ chăng?), bởi tất cả ghi ra file đều nằm trong trong cặp nháy kép "".

Ví dụ kết quả của Ket:

a=5 => in ra "5"

a=(1 2 3) => in ra "(1 2 3)"

v.v...

Trong khi tôi muốn:

a=5 => in ra 5

a=(1 2 3) => in ra (1 2 3)

v.v...

Hàm (write-line (vl-prin1-to-string a) fn)

ghi vào file fn không có " " đâu 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

×