Đến nội dung


Hình ảnh
* * * * - 7 Bình chọn

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


  • Please log in to reply
391 replies to this topic

#221 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 903 Bài viết
Điểm đánh giá: 505 (tốt)

Đã gửi 17 February 2012 - 10:54 AM

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))
  • 0

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#222 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 03 May 2012 - 10:26 PM

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.
  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#223 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5678 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 03 May 2012 - 11:48 PM

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)
)

  • 1

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#224 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 04 May 2012 - 09:06 AM

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...
  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#225 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 04 May 2012 - 09:17 AM

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è! :)
  • 1

#226 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 04 May 2012 - 09:33 AM

Hàm (write-line (vl-prin1-to-string a) fn)
ghi vào file fn không có " " đâu nè! :)

Sao ngộ vậy. Ví dụ a=12 và a=toi
Thì ghi ra như vầy đây (trích từ file kết quả):
"12"
"toi"
  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#227 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5678 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 04 May 2012 - 09:59 AM

Lạ vậy hén bác :) Bác ghi ra file gì và đọc bằng chương trình gì ạ ?
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#228 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 04 May 2012 - 10:09 AM

Lạ vậy hén bác :) Bác ghi ra file gì và đọc bằng chương trình gì ạ ?

Ủa! Chẳng lẽ Ket xu và Tue_NV đều ghi ra không có ""?
Tôi ghi ra file txt, đọc bằng notepad.
Nếu quả thực 3 người mà có 2 kết quả khác nhau thì chắc sẽ điều gì lý thú nữa đây! Ái chà!

P/s : srr bác Tue_NV và Ketxu! Tôi sơ ý nên bị nhầm khi lấy a bởi hàm getstring. OK rồi.
  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#229 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 07 June 2012 - 03:04 PM

Lâu quá rồi các bác ơi, mà sao không ai đưa câu đố vui nào lên để cùng nhau giải stress?
Nhớ nó, làm một câu ngăn ngắn cho vui:
Trên bản vẽ có 3 điểm p1, p2, p3 và 1 đường tròn C bán kính bất kỳ đi qua p3.
Hãy viết 1 hàm lisp để vẽ đường thẳng nối tâm của C và trung điểm của p1p2.
Điều kiện: càng dùng ít cặp dấu ngoặc () càng tốt. Nếu số cặp () lớn hơn 5 thì được coi là rớt từ vòng gởi xe :lol:
[có thể sử dụng bất cứ hàm gì để viết]
  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#230 Hai_YenLang

Hai_YenLang

    biết lệnh explore

  • Members
  • PipPipPipPipPipPip
  • 473 Bài viết
Điểm đánh giá: 149 (tàm tạm)

Đã gửi 07 June 2012 - 03:39 PM

Lâu quá rồi các bác ơi, mà sao không ai đưa câu đố vui nào lên để cùng nhau giải stress?
Nhớ nó, làm một câu ngăn ngắn cho vui:
Trên bản vẽ có 3 điểm p1, p2, p3 và 1 đường tròn C bán kính bất kỳ đi qua p3.
Hãy viết 1 hàm lisp để vẽ đường thẳng nối tâm của C và trung điểm của p1p2.
Điều kiện: càng dùng ít cặp dấu ngoặc () càng tốt. Nếu số cặp () lớn hơn 5 thì được coi là rớt từ vòng gởi xe :lol:
[có thể sử dụng bất cứ hàm gì để viết]

Em không hiểu "1 hàm lisp để vẽ đường thẳng nối tâm của C và trung điểm của p1p2." ứng dụng gì trong việc viết lisp ?
(Nếu viết lisp để vẽ đường thẳng nối tâm từ một điểm đến trung điểm của hai điểm thì AutoCAD đã làm được ngon lành bằng cách gõ mtp....)
  • 0
Đức hạnh lớn nhất mà bên cạnh đó, mọi đức hạnh khác đều mờ nhạt đi, đó là không làm hại ai và tùy sức mà giúp đỡ mọi người "
Người cảnh sát điều tra hình sự giỏi là người biết được tất cả những hành vi thủ đoạn trộm cắp của bọn trộm cắp, nhưng lại dốt ăn cắp ăn trộm ...

#231 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 07 June 2012 - 04:01 PM

Lâu quá rồi các bác ơi, mà sao không ai đưa câu đố vui nào lên để cùng nhau giải stress?
Nhớ nó, làm một câu ngăn ngắn cho vui:
Trên bản vẽ có 3 điểm p1, p2, p3 và 1 đường tròn C bán kính bất kỳ đi qua p3.
Hãy viết 1 hàm lisp để vẽ đường thẳng nối tâm của C và trung điểm của p1p2.
Điều kiện: càng dùng ít cặp dấu ngoặc () càng tốt. Nếu số cặp () lớn hơn 5 thì được coi là rớt từ vòng gởi xe :lol:
[có thể sử dụng bất cứ hàm gì để viết]

Câu này dễ quá!!!! :lol:


(defun ttt(p1 p2 p3)
(command "line" (acet-geom-midpoint p1 p2) (osnap p3 "cen") "")
)

  • 1

#232 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 07 June 2012 - 04:16 PM

Câu này dễ quá!!!! :lol:


(defun ttt(p1 p2 p3)
(command "line" (acet-geom-midpoint p1 p2) (osnap p3 "cen") "")
)

Dễ quá cho nên bác chỉ mới lọt qua vòng gởi xe :lol:
  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#233 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 07 June 2012 - 04:18 PM

Em không hiểu "1 hàm lisp để vẽ đường thẳng nối tâm của C và trung điểm của p1p2." ứng dụng gì trong việc viết lisp ?
(Nếu viết lisp để vẽ đường thẳng nối tâm từ một điểm đến trung điểm của hai điểm thì AutoCAD đã làm được ngon lành bằng cách gõ mtp....)

Topic này là để đố vui với lisp, nên nhiều khi nó vô tích sự so với cad. Nhưng đôi lúc từ cái vô tích sự đó chúng ta lại học hỏi được vài điều tích sự. :lol:
  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#234 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 07 June 2012 - 04:37 PM

Dễ quá cho nên bác chỉ mới lọt qua vòng gởi xe :lol:

Tue_NV qua tiếp đây bác :lol:


(defun ttt(p1 p2 p3)
(command "line" "mtp" p1 p2 "cen" p3 "")
)

  • 1

#235 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 07 June 2012 - 04:38 PM

Y chang đáp án!
  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#236 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5678 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 07 June 2012 - 06:30 PM

gặp n đường tròn cùng đi qua p3 thì bùn :) với điều kiện trên thì điểm thứ 2 ở đâu cũng thỏa logic :D


  • 1

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#237 Hai_YenLang

Hai_YenLang

    biết lệnh explore

  • Members
  • PipPipPipPipPipPip
  • 473 Bài viết
Điểm đánh giá: 149 (tàm tạm)

Đã gửi 07 June 2012 - 09:51 PM

gặp n đường tròn cùng đi qua p3 thì bùn :) với điều kiện trên thì điểm thứ 2 ở đâu cũng thỏa logic :D

Trời! Đề ra là 1 đường tròn C bán kính bất kỳ đi qua p3!
Bác giả thiết vậy, chả hóa ra là 3 điểm P1, P2 và P3 trùng nhau thì sao nhỉ???
  • 0
Đức hạnh lớn nhất mà bên cạnh đó, mọi đức hạnh khác đều mờ nhạt đi, đó là không làm hại ai và tùy sức mà giúp đỡ mọi người "
Người cảnh sát điều tra hình sự giỏi là người biết được tất cả những hành vi thủ đoạn trộm cắp của bọn trộm cắp, nhưng lại dốt ăn cắp ăn trộm ...

#238 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 07 June 2012 - 10:05 PM

@ Ketxu: đây chỉ là 1 câu đố vui, cốt để mọi người biết "m2p" và "cen", chứ nếu nêu ra đ/k "trên bản vẽ chỉ có 1 đường tròn... " thì mất vui.
@Hai_Yenlang: 3 điểm trùng nhau thì kệ, có sao đâu hè.
  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#239 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 08 June 2012 - 06:01 AM

@ Ketxu: đây chỉ là 1 câu đố vui, cốt để mọi người biết "m2p" và "cen", chứ nếu nêu ra đ/k "trên bản vẽ chỉ có 1 đường tròn... " thì mất vui.
@Hai_Yenlang: 3 điểm trùng nhau thì kệ, có sao đâu hè.

Tue_NV giải đố, cốt để mọi người biết thêm về hàm OSNAP :rolleyes:
  • 0

#240 hoan2182

hoan2182

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 2646 Bài viết
Điểm đánh giá: 832 (rất tốt)

Đã gửi 11 September 2012 - 08:45 AM

P/S : Quán gió nhà bác Ketxu đìu hiu quá! Em vào đây chém gió tí :rolleyes: > Đây không phải là đố vui mà là câu hỏi hay có thể hiểu là viết lisp theo [yêu cầu]. Nếu có sai chủ đề mong các bác thông cảm, em lười không muốn lập topic mới!

Bài toán vẽ đoạn vuông góc chung giữa hai đường thẳng chéo nhau trong không khí, đã có lời giải của bác Phamngoctukts. Ngày trước em đã phải vật vã với nó hơi bị mất thời gian khi phải xác định vị trí và độ dài của đoạn vuông góc chung >giờ em muốn nhờ các bác viết lisp với thông số là 2 đường thẳng chéo nhau, thao tác lisp là chọn 2 đường thẳng nó sẽ vẽ 2 point và cho biết khoảng cách giữa hai điểm đánh số thứ tự P1- P1= 35 chẳng hạn. Nếu trên bản vẽ có nhiều đường chéo nhau thì bấm chọn liên tục nó sẽ đánh số thứ tự P2-P2 = ... , Pn-Pn= ...Hoặc đơn giản là chỉ cần vẽ hai đường thẳng thôi quý hóa các bác ạ!

Mình có cách này bạn than khảo nhé. Copy d2 cắt d1 (bắt điểm nearest) gọi là d1'. Dựng hình bình hành ABCD từ các đỉnh của d1 d1'. Extrude hình bình hành này với chiều cao là bắt điểm trên d2. Nối đỉnh A' C' trên của hình bình hành đã extrude cắt d2 tại o. Từ o vẽ đường vuông góc với d1 ta được đường vuông góc chung. Do mình dùng điện thoại nên không có hình minh hoạ được bạn thông cảm nhé.
BS: Vừa có mạng mình tranh thủ up ảnh lên cho bạn xem
Hình đã gửi


  • 0

Gió đưa cây cải về trời

Rau răm ở lại chịu lời đắng cay...