Đế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

#361 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 12 February 2014 - 02:30 PM

Cám ơn các bạn đã tham gia. Đã like lấy hên đầu năm.

1). Phương án của Ket trùng với đáp án. Tốc độ nhanh hơn của ndtnv nhưng chỉ tính được đến n<=1475 (kết quả nằm trong tầm 10^308 -> 10^309). Cách gọi hàm mà tác giả đã post là (FUNC n).

2). Phương án của ndtnv tuy tốc độ chậm hơn 1 tí nhưng tính được với n>1475. Tác giả chưa hiểu code của lisp này ra sao?

Chúc năm mới nhiều niềm vui. Xin kết thúc câu đố ở đây.


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


#362 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 26 June 2014 - 03:18 PM

Câu đố vui dưới đây gồm 2 phần:

Phần 1:

Trước hết, bằng bản lĩnh về lisp của cá nhân, không thèm tải lisp về. Các bạn hãy dòm vào code và phán đoán xem nhận định nào dưới đây là đúng?

a). Hàm HA1 viết đúng cú pháp, hàm HA2 viết sai cú pháp.

B). Hàm HA2 viết đúng cú pháp, hàm HA1 viết sai cú pháp.

c). Cả 2 hàm HA1 và HA2 đều viết sai cú pháp.

a). Cả 2 hàm HA1 và HA2 đều viết đúng cú pháp.

Phần 2:

Bây giờ, tải lisp về, không edit nó, load lisp xem cái gì sẽ xãy ra? Giải thích lý do? Cách khắc phục?

(defun HA1 (a)
 (cond
  ((= a 1) "A")
  ((= a 2) "B")))
 
(defun HA2 (a)
 (cond
  ((= a 3) "C")
  ((= a 4) "D")))


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


#363 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1432 Bài viết
Điểm đánh giá: 1425 (rất tốt)

Đã gửi 26 June 2014 - 03:56 PM

Câu đố vui dưới đây gồm 2 phần:

Phần 1:

Trước hết, bằng bản lĩnh về lisp của cá nhân, không thèm tải lisp về. Các bạn hãy dòm vào code và phán đoán xem nhận định nào dưới đây là đúng?

a). Hàm HA1 viết đúng cú pháp, hàm HA2 viết sai cú pháp.

B). Hàm HA2 viết đúng cú pháp, hàm HA1 viết sai cú pháp.

c). Cả 2 hàm HA1 và HA2 đều viết sai cú pháp.

a). Cả 2 hàm HA1 và HA2 đều viết đúng cú pháp.

Phần 2:

Bây giờ, tải lisp về, không edit nó, load lisp xem cái gì sẽ xãy ra? Giải thích lý do? Cách khắc phục?

(defun HA1 (a)
 (cond
  ((= a 1) "A")
  ((= a 2) "B")))
 
(defun HA2 (a)
 (cond
  ((= a 3) "C")
  ((= a 4) "D")))

Ý bác muốn nói lỗi CodeBox ???

15454_codebox.jpg


  • 0

#364 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 26 June 2014 - 03:59 PM

Vâng


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


#365 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 08 July 2014 - 04:31 PM

Trước khi xem Germany và Brasil đá bán kết, mời các bạn cùng thư giản với câu đố vui sau:

Trong mặt phẳng cho 4 điểm bất kỳ p1, p2, p3, p4.

Hãy thiết lập hàm kiểm tra xem 4 điểm đó có tạo thành 1 hình chữ nhật hay không? Hàm trả về T nếu nó tạo thành HCN, nil nếu không.

Điều kiện: càng ít cặp () càng có giá trị.


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


#366 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 09 July 2014 - 12:05 AM

Trước khi xem Germany và Brasil đá bán kết, mời các bạn cùng thư giản với câu đố vui sau:

Trong mặt phẳng cho 4 điểm bất kỳ p1, p2, p3, p4.

Hãy thiết lập hàm kiểm tra xem 4 điểm đó có tạo thành 1 hình chữ nhật hay không? Hàm trả về T nếu nó tạo thành HCN, nil nếu không.

Điều kiện: càng ít cặp () càng có giá trị.

Hề hề hề,

Thử tài tí chơi.

(defun c:chk (/ p1 p2 p3 p4)
 (and (= (distance p1 p2) (distance p3 p4)) (= (distance p1 p3) (distance p2 p4)) (= (distance p1 p4) (distance p2 p3)))
)

  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#367 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 09 July 2014 - 12:12 AM

Sao lại có câu khoai thế bác ^^


  • 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


#368 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 09 July 2014 - 07:02 AM

Sao lại có câu khoai thế bác ^^

Khoai chưa chắc đã dễ nhai. Như bác PTB là không ổn rồi.


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


#369 Tot77

Tot77

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 990 Bài viết
Điểm đánh giá: 498 (tốt)

Đã gửi 09 July 2014 - 08:49 AM

Nếu cho 1 polyline 4 điểm rồi kiểm tra đã là khó rồi, mà bây giờ chỉ có 4 điểm thì làm sao biết đường nối 2 điểm nào là cạnh, đường nào là đường chéo đây? chắc gì p1-p2 đã là cạnh hay là đừơng chéo?  Tổ hợp của 4 cũng khá lớn đó. Bác Ha chơi khó quá.


  • 1

#370 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 09 July 2014 - 08:52 AM

Nếu cho 1 polyline 4 điểm rồi kiểm tra đã là khó rồi, mà bây giờ chỉ có 4 điểm thì làm sao biết đường nối 2 điểm nào là cạnh, đường nào là đường chéo đây? chắc gì p1-p2 đã là cạnh hay là đừơng chéo?  Tổ hợp của 4 cũng khá lớn đó. Bác Ha chơi khó quá.

Còn Ket thì bảo là "khoai".


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


#371 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 09 July 2014 - 08:58 AM

Khoai thật sự, vì ket đã đọc 6 trang topic rectangle-p hồi lâu lâu r. Vì mở rộng ra cho một polygon nữa ^^

@Tot77 : code bác Bình nguyên lý là khoảng cách từ 1 đỉnh bất kỳ đến 1 đỉnh bất kỳ bằng khoảng cách 2 đỉnh còn lại, bất luận nó là của đường chéo hay cạnh bên


  • 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


#372 Tot77

Tot77

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 990 Bài viết
Điểm đánh giá: 498 (tốt)

Đã gửi 09 July 2014 - 09:15 AM

Cho là 1 bảng đấu có 4 đội bóng thi đấu vòng tròn, thì phải có tất cả  6 trận đấu, coi như 6 cặp, nếu so sánh 6 cặp đó bằng nhau thì nó là hình vuông rồi. Mà biết đâu trong 6 cặp đó bạn so sánh nhầm cạnh với đường chéo thì sao?


  • 0

#373 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1360 (rất tốt)

Đã gửi 09 July 2014 - 09:31 AM

Bác Hà chắc ko biết ở phía bắc "khoai" tương đương với khó nhai đại loại nó thế.


  • 1

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#374 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 09 July 2014 - 09:36 AM

Cho là 1 bảng đấu có 4 đội bóng thi đấu vòng tròn, thì phải có tất cả  6 trận đấu, coi như 6 cặp, nếu so sánh 6 cặp đó bằng nhau thì nó là hình vuông rồi. Mà biết đâu trong 6 cặp đó bạn so sánh nhầm cạnh với đường chéo thì sao?

 

Code của bác Bình trả về đúng là hình chữ nhật, đương nhiên đúng cho hình vuông vì hình vuông là TH đặc biệt của hình chữ nhật

Trong code không có so sánh 2 cạnh kề của hình chữ nhật, nên bác yên tâm đó là Hình chữ nhật ^_^

(2 cạnh kề nhau có chung nhau 1 đỉnh)

Nếu so sánh nhầm cạnh với đường chéo thì không thể có trong code của bác Bình Vì cạnh với đường chéo có chung nhau 1 đỉnh

KL: Code của bác Bình mình thấy ok


  • 1

#375 ndtnv

ndtnv

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 437 Bài viết
Điểm đánh giá: 384 (khá)

Đã gửi 09 July 2014 - 09:38 AM

Vì đang bận nên làm tạm

(mapcar 'set (list 'l1 'l2 'l3 'l4 'l5 'l6)
                (vl-sort  (mapcar 'distance (list p1 p1 p1 p2 p2 p3) (list p2 p3 p4 p3 p4 p4)) '<))
(and (= l1 l2) (= l3 l4) (= l5 l6) (> l1 0))


 

PS:

đã thêm 2 đk để loại trừ trường hợp 4 điểm thẳng hàng nhưng chưa xét sai số do phép toán trên kiểu double như ở bài #340

Câu đố không nói 4 điểm theo thứ tự p1, p2, p3, p4 tạo thành HCN.

Nếu phải theo thứ tự thì thuật toán sẽ khác.

1. Vector p1p2 = p4p3 và góc p1p2p3 có cos = 0

2. 3 điểm : giao p1p3 và p2p4, trung điểm p1p3, p2p4 trùng nhau

PS2:

Xem lại thì thấy 4 đk là đủ


  • 1

#376 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1432 Bài viết
Điểm đánh giá: 1425 (rất tốt)

Đã gửi 09 July 2014 - 10:31 AM

Hề hề hề,

Thử tài tí chơi.

 

(defun c:chk (/ p1 p2 p3 p4)
 (and (= (distance p1 p2) (distance p3 p4)) (= (distance p1 p3) (distance p2 p4)) (= (distance p1 p4) (distance p2 p3)))
)

Code của bác Bình và ndtnv chỉ đúng khi không quan tâm đến thứ tự các điểm.

 

15454_hcn.jpg


  • 0

#377 VUVUZELA

VUVUZELA

    biết lệnh chamfer

  • Members
  • PipPipPipPip
  • 210 Bài viết
Điểm đánh giá: 97 (tàm tạm)

Đã gửi 09 July 2014 - 10:56 AM

Vụ này thì thuật toán sẽ viết như sau :

- Tìm điểm giữa của 4 điểm,  giống như trọng tâm ta có được điểm tâm (pt)

- Sắp xếp thứ tự 4 điểm chọn theo góc quay từ nhở đến lớn với trục quay ở điểm tâm (pt )

- Kiểm tra góc giữa 4 điểm đã sắp xếp trên có = 90 độ hay không nếu đúng hết thì trả về T


  • 1

Hệ thống Liên Kết, Thiết Kế Tự Động

ttps://www.facebook...etThietKeTuDong


#378 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1432 Bài viết
Điểm đánh giá: 1425 (rất tốt)

Đã gửi 09 July 2014 - 11:02 AM

Vụ này thì thuật toán sẽ viết như sau :

- Tìm điểm giữa của 4 điểm,  giống như trọng tâm ta có được điểm tâm (pt)

- Sắp xếp thứ tự 4 điểm chọn theo góc quay từ nhở đến lớn với trục quay ở điểm tâm (pt )

- Kiểm tra góc giữa 4 điểm đã sắp xếp trên có = 90 độ hay không nếu đúng hết thì trả về T

 

Cậu này mới từ world cup Nam Phi về nên hơi bị "lơ ngơ" ..

Bây giờ đang là world cup Brazil mà, Đố vui với LISP: Điều kiện: càng ít cặp () càng có giá trị.


  • 1

#379 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 09 July 2014 - 11:50 AM

Code của bác Bình và ndtnv chỉ đúng khi không quan tâm đến thứ tự các điểm.

 

15454_hcn.jpg

Hề hề hề,

Thực ra hôm qua vì nóng xem World Cup nên mình cũng chẳng nghĩ tới việc xet 4 điểm có thẳng hàng hay không.

Nhưng nếu chấp nhận có HCN dẹp (tức chiều rộng bằng 0 thì vẫn có thể chấp nhập code phía trên.

Thuật toán của mình chỉ đơn giản là dựa trên hai định lý từ thời phổ thông là 

1/- HCN là hình bình hành có hai đường chéo bằng nhau.

2/- Hình bình hành là hình tứ giác có hai cặp cạnh đối diện bàng nhau đôi một.

 

Như vậy khi đả cho 4 điểm thì nếu phát xuất từ một điểm sẽ chỉ có 3 đoạn nối với ba điểm còn lại. Các đoạn này sẽ tương ứng với hai cạnh liền kề và đường chéo của hinh tứ giác tạo thành, bất kể vị trí tương đối của chúng trên mặt phẳng. Do đó nếu lấy các đoạn không trùng đỉnh đả chọn, ắt chúng sẽ là các cặp cạnh và đường chéo tương ứng với các định lý nêu trên.

 

Nếu nó đã đúng với trường hợp bất kể thứ tự thì có nhẽ cũng sẽ không sai nếu như có quy ước về trật tự của các đỉnh bởi trong code mình chỉ sử dụng distance mà không quan tâm tới chiều của đoạn thẳng.

 

Mong các bác đèn giời soi xét thêm. May ra có thể xếp đoạn code của mình vào tới trận chung kết.

 

Hề hề hề, .....

 

@ Bác Ketxu: Khoai thì có khoai, song cứ nhai ắt được bác ạ. Tuy có hơi ê răng nhưng mà cũng đỡ đói .....lisp bác ạ.


  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#380 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 09 July 2014 - 12:45 PM

Khoai chưa chắc đã dễ nhai. Như bác PTB là không ổn rồi.

Hề hề hề,

Đúng là chưa ổn thật. Vì mình không test lại nên cứ nghĩ thế là xong. Ai dè cái hám (= ....) này nó chơi mình. vậy nên xin phép sửa lại code trên như sau:

 

(defun c:chk ()
(and (equal (distance p1 p2) (distance p3 p4) 0.0001) (equal (distance p1 p3) (distance p2 p4) 0.0001) (equal (distance p1 p4) (distance p2 p3) 0.0001))
)

 

Ở code này mình bỏ luôn cả việc khử biến để không phải khai báo lại biến và code sẽ làm việc khi các biến p1, p2, p3, p4 này đã được xác định trước.

 

Hy vọng code lần này sẽ được vào chung kết mặc dù số cặp () không giảm so với code trước.


  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.