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

#321 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 27 May 2013 - 07:01 AM

Đáp án bài #308. Đã thank 2 người có lời giải. Có nhầm lẫn chỗ FF thiếu và JJ thừa.

(initget "1 2 3 4 5 6 7 8 9 _AA BB CC DD EE FF GG HH II")

(getkword "\nChon 1 so [1/2/3/4/5/6/7/8/9]: "))

 (initget "1 2 3 4 5 6 7 8 9 _AA BB CC DD EE FF GG HH II") (getkword "\nChon 1 so [1/2/3/4/5/6/7/8/9]: "))

  • 2

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


#322 ndtnv

ndtnv

    biết lệnh minsert

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

Đã gửi 23 July 2013 - 10:52 AM

Cách đây vài tuần, trên Discovery có chiếu 1 chương trình về 1 đứa bé 12 tuổi tìm thứ trong tuần cho 1 ngày bất kỳ trong thế kỷ 20. Kết quả là đứa bé chỉ đáp sai 1 câu. Mục đích chương trình là giới thiệu về khả năng nghe âm thanh tần số cao của trẻ em mà người lớn không có. Tuy nhiên, khi làm chương trình này,  không rõ Discovery có nghĩ tới việc 1 đứa bé tính nhẩm nhanh có thể cho ra kết quả chính xác hơn hay không?
Vì vậy tôi nghĩ đến 1 câu đố về lisp như sau:
Tìm thứ theo ngày, tháng năm bất kỳ, từ ngày 15 / 10 / 1582 (vì quy tắc năm nhuận của lịch Gregory chỉ đúng từ lúc này trở đi)

(defun C:thu ( / d m y)
    (setq d (getint "\nNhap ngay: ") m (getint "Nhap thang: ") y (getint "Nhap nam: "))
    (strcat "Ngay " (itoa d) " thang " (itoa m)  " nam " (itoa y) " la ngay "
         (nth (thu ...) '("chu nhat" "thu hai" "thu ba" "thu tu" "thu nam" "thu sau" "thu bay")))
)
(defun thu (d m y) ...)

Để đơn giản, xem như user nhập d m y hợp lệ
Yêu cầu: chỉ dùng +, - , * , / và rem trong hàm và gọi hàm "thu"

Không dùng biến phụ, setq, lệnh rẽ nhánh hoặc convert như if, cond, fix ...

2 vote cho lời giải đúng đầu tiên, 1 cho những lời giải sau nếu ngắn hơn các lời giải trước.
 


  • 0

#323 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 23 July 2013 - 11:35 AM

Dùng “công thức Gregory”  trong link này là ra ngay thôi.

http://thegioimoi.vn...vao-thu-may.tgm


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


#324 ndtnv

ndtnv

    biết lệnh minsert

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

Đã gửi 23 July 2013 - 12:45 PM

Dùng “công thức Gregory”  trong link này là ra ngay thôi.

http://thegioimoi.vn...vao-thu-may.tgm

 

Mục đích của câu đố này là vận dụng các hàm cho số nguyên thay cho các lệnh if, cond hoặc dùng list.

Tôi tách ra hàm con để dễ nhìn chứ viết trực tiếp trong hàm chính thì code sẽ ngắn hơn. 

Công thức trong link trên phù hợp khi dùng calculator.

Công thức sau phù hợp cho tính nhẩm: #3 trong link

http://diendan.congd...ead.php?t=14155

Nếu ai có trí nhớ tốt thì theo Tomohiko Sakamoto trong

http://en.wikipedia....day_of_the_week


  • 0

#325 lyky

lyky

    biết vẽ polygon

  • Members
  • PipPip
  • 70 Bài viết
Điểm đánh giá: 126 (tàm tạm)

Đã gửi 23 July 2013 - 01:32 PM

..........
(defun thu (d m y) ...)
Để đơn giản, xem như user nhập d m y hợp lệ
Yêu cầu: chỉ dùng +, - , * , / và rem trong hàm và gọi hàm "thu"
2 vote cho lời giải đúng đầu tiên, 1 cho những lời giải sau nếu ngắn hơn các lời giải trước.

 

(defun thu (d m y)
(if (<= m 2) (setq m (+ m 12) y (1- y)))
(if (<= m 2) (setq dt1 (atoi (substr (rtos (* (1+ m) 2.6)) 1 1)))
(setq dt1 (atoi (substr (rtos (* (1+ m) 2.6)) 1 2))))
(if (< (atoi (substr (rtos y) 1 2)) 20) (setq dt2 (atoi (substr (rtos (* (atoi (substr (rtos y) 1 2)) 5.25)) 1 2)))
(setq dt2 (atoi (substr (rtos (* (atoi (substr (rtos y) 1 2)) 5.25)) 1 3))))
(if (< (atoi (substr (rtos y) 3 2)) 80) (setq dt3 (atoi (substr (rtos (* (atoi (substr (rtos y) 3 2)) 1.25)) 1 2)))
(setq dt3 (atoi (substr (rtos (* (atoi (substr (rtos y) 3 2)) 1.25)) 1 3))))
(rem (+ (1- d) dt1 dt2 dt3) 7))

Hoặc:

(defun thu1 (d m y) (if (< m 3) (setq m (+ m 12) y (1- y))) (rem (- (+ (* m 2) (/ (* (1+ m) 3) 5) y (/ y 4) (/ y 400) 1) (/ y 100)) 7))

 
Chỉ đúng khi y nằm trong khoảng từ 15/10/1582 trở đi.
P/S: Vì giới hạn chỉ dùng các hàm + - * / và rem nên viết dài và "rào cản" có vẻ lỏng lẽo!
       Nếu không dùng hàm IF, mong chờ mọi người có biện pháp thay thế để thực hiện điều kiện này: (if (< m 3) (setq m (+ m 12) y (1- y))) ??!


       Mong mọi người vui nhé!


  • 1

22665_13x13progress.gif   22665_lyky.gif   22665_13x13progress.gif


#326 Song Nhi

Song Nhi

    biết vẽ rectang

  • Members
  • PipPip
  • 83 Bài viết
Điểm đánh giá: 52 (tàm tạm)

Đã gửi 23 July 2013 - 11:26 PM

Không được sử dụng hàm điều kiện IF (hoặc COND) hoặc dùng LIST tương đương với việc tìm kiếm một công thức "hồi quy": Y(X) và Z(X;Y) chỉ dùng các phép toán căn bản và phép đồng dư để mô tả bản số sau:

 

118347_555555.jpg

 

Tuy nhiên, công việc này gian nan và vất vả quá - có lẽ không khả thi?!!!


  • 0

#327 ndtnv

ndtnv

    biết lệnh minsert

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

Đã gửi 25 July 2013 - 03:56 PM

Không được sử dụng hàm điều kiện IF (hoặc COND) hoặc dùng LIST tương đương với việc tìm kiếm một công thức "hồi quy": Y(X) và Z(X;Y) chỉ dùng các phép toán căn bản và phép đồng dư để mô tả bản số sau:

...

 

Tuy nhiên, công việc này gian nan và vất vả quá - có lẽ không khả thi?!!!

 

Công thức không dùng list trong hàm con tham khảo trong link đầu đã post ở trên.

Vấn đề chỉ còn là không dùng if trong khi gọi hàm

(thu d

 (if (< m 3) (+ m 12) m)

 (if (< m 3) (1- y) y)

)
 


  • 0

#328 TaiNguyen79

TaiNguyen79

    biết vẽ ellipse

  • Members
  • PipPip
  • 51 Bài viết
Điểm đánh giá: 24 (tàm tạm)

Đã gửi 25 July 2013 - 09:19 PM

Cách đây vài tuần, trên Discovery có chiếu 1 chương trình về 1 đứa bé 12 tuổi tìm thứ trong tuần cho 1 ngày bất kỳ trong thế kỷ 20. Kết quả là đứa bé chỉ đáp sai 1 câu. Mục đích chương trình là giới thiệu về khả năng nghe âm thanh tần số cao của trẻ em mà người lớn không có. Tuy nhiên, khi làm chương trình này,  không rõ Discovery có nghĩ tới việc 1 đứa bé tính nhẩm nhanh có thể cho ra kết quả chính xác hơn hay không?
Vì vậy tôi nghĩ đến 1 câu đố về lisp như sau:
Tìm thứ theo ngày, tháng năm bất kỳ, từ ngày 15 / 10 / 1582 (vì quy tắc năm nhuận của lịch Gregory chỉ đúng từ lúc này trở đi)

(defun C:thu ( / d m y)
    (setq d (getint "\nNhap ngay: ") m (getint "Nhap thang: ") y (getint "Nhap nam: "))
    (strcat "Ngay " (itoa d) " thang " (itoa m)  " nam " (itoa y) " la ngay "
         (nth (thu ...) '("chu nhat" "thu hai" "thu ba" "thu tu" "thu nam" "thu sau" "thu bay")))
)
(defun thu (d m y) ...)
Để đơn giản, xem như user nhập d m y hợp lệ
Yêu cầu: chỉ dùng +, - , * , / và rem trong hàm và gọi hàm "thu"
Không dùng biến phụ, setq, lệnh rẽ nhánh hoặc convert như if, cond, fix ...
2 vote cho lời giải đúng đầu tiên, 1 cho những lời giải sau nếu ngắn hơn các lời giải trước.


Hàm con đạt y/c của chủ đề thì đc.
Còn hàm chính thì "cho em xin" .
Và đây là lời giải :

(defun C:lich ( / d m y G th )
(setq d (getint "\nNhap ngay: ") m (getint "Nhap thang: ") y (getint "Nhap nam: "))
(If (< m 3) (setq m (+ m 12) y (- y 1)))
(setq G (thu d m y))
(mapcar '(lambda (a B)(if (= G a) (setq th B)))
'(1.0 2.0 3.0 4.0 5.0 6.0 7.0)
'("Chu Nhat" "Thu Hai" "Thu Ba" "Thu Tu" "Thu Nam" "Thu Sau" "Thu Bay"))
(If (> m 12) (setq m (- m 12) y (+ y 1)))
(alert (strcat "\n Ngay " (itoa d) " thang " (itoa m) " nam " (itoa y) " la ngay : " th)))
;============
(defun thu (d m y)
(+ (rem (+ (- d 1) (- (* 2.6 (+ m 1)) (rem (* 2.6 (+ m 1)) 1)) (- (* 5.25 (/ y 100)) (rem (* 5.25 (/ y 100)) 1))
(- (* 1.25 (* 100 (- (/ y 100.0) (/ y 100)))) (rem (* 1.25 (* 100 (- (/ y 100.0) (/ y 100)))) 1))) 7) 1))

  • 0

#329 ndtnv

ndtnv

    biết lệnh minsert

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

Đã gửi 29 July 2013 - 07:31 AM

Hàm con đạt y/c của chủ đề thì đc.
Còn hàm chính thì "cho em xin" .
Và đây là lời giải :


(defun C:lich ( / d m y G th )
(setq d (getint "\nNhap ngay: ") m (getint "Nhap thang: ") y (getint "Nhap nam: "))
(If (< m 3) (setq m (+ m 12) y (- y 1)))
(setq G (thu d m y))
(mapcar '(lambda (a B)(if (= G a) (setq th B)))
'(1.0 2.0 3.0 4.0 5.0 6.0 7.0)
'("Chu Nhat" "Thu Hai" "Thu Ba" "Thu Tu" "Thu Nam" "Thu Sau" "Thu Bay"))
(If (> m 12) (setq m (- m 12) y (+ y 1)))
(alert (strcat "\n Ngay " (itoa d) " thang " (itoa m) " nam " (itoa y) " la ngay : " th)))
;============
(defun thu (d m y)
(+ (rem (+ (- d 1) (- (* 2.6 (+ m 1)) (rem (* 2.6 (+ m 1)) 1)) (- (* 5.25 (/ y 100)) (rem (* 5.25 (/ y 100)) 1))
(- (* 1.25 (* 100 (- (/ y 100.0) (/ y 100)))) (rem (* 1.25 (* 100 (- (/ y 100.0) (/ y 100)))) 1))) 7) 1))

Yêu cầu là chỉ viết trong 2 đoạn: gọi hàm và hàm "thu" giữa 3 dấu chấm.
Trong trang web trên đã có công thức, chỉ cần sửa 1 ít là thành hàm lisp
(defun thu (d m y)
(rem (+ y (/ y 4) (/ y 400) (/ y -100) m m (/ (+ 3 (* m 3)) 5) d 1) 7))

Công thức trên còn có thể rút gọn, nhưng tôi chưa post ở đây
 


  • 0

#330 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 29 July 2013 - 08:31 AM

Chưa ổn.

"Ngay 28 thang 2 nam 2013 la ngay thu hai"

"Ngay 29 thang 2 nam 2013 la ngay thu ba"

"Ngay 30 thang 2 nam 2013 la ngay thu tu"

"Ngay 31 thang 2 nam 2013 la ngay thu nam"

"Ngay 1 thang 3 nam 2013 la ngay thu sau"

"Ngay 28 thang 2 nam 2013 la ngay thu hai"
"Ngay 29 thang 2 nam 2013 la ngay thu ba"
"Ngay 30 thang 2 nam 2013 la ngay thu tu"
"Ngay 31 thang 2 nam 2013 la ngay thu nam"
"Ngay 1 thang 3 nam 2013 la ngay thu sau"
 
"Ngay 28 thang 2 nam 2013 la ngay thu hai"
"Ngay 29 thang 2 nam 2013 la ngay thu ba"
"Ngay 30 thang 2 nam 2013 la ngay thu tu"
"Ngay 31 thang 2 nam 2013 la ngay thu nam"
"Ngay 1 thang 3 nam 2013 la ngay thu sau"
 
"Ngay 28 thang 2 nam 2013 la ngay thu hai"
"Ngay 29 thang 2 nam 2013 la ngay thu ba"
"Ngay 30 thang 2 nam 2013 la ngay thu tu"
"Ngay 31 thang 2 nam 2013 la ngay thu nam"
"Ngay 1 thang 3 nam 2013 la ngay thu sau"

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


#331 ndtnv

ndtnv

    biết lệnh minsert

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

Đã gửi 29 July 2013 - 09:08 AM

Chưa ổn.

"Ngay 28 thang 2 nam 2013 la ngay thu hai"

"Ngay 29 thang 2 nam 2013 la ngay thu ba"

"Ngay 30 thang 2 nam 2013 la ngay thu tu"

"Ngay 31 thang 2 nam 2013 la ngay thu nam"

"Ngay 1 thang 3 nam 2013 la ngay thu sau"

"Ngay 28 thang 2 nam 2013 la ngay thu hai"
"Ngay 29 thang 2 nam 2013 la ngay thu ba"
"Ngay 30 thang 2 nam 2013 la ngay thu tu"
"Ngay 31 thang 2 nam 2013 la ngay thu nam"
"Ngay 1 thang 3 nam 2013 la ngay thu sau"
 
"Ngay 28 thang 2 nam 2013 la ngay thu hai"
"Ngay 29 thang 2 nam 2013 la ngay thu ba"
"Ngay 30 thang 2 nam 2013 la ngay thu tu"
"Ngay 31 thang 2 nam 2013 la ngay thu nam"
"Ngay 1 thang 3 nam 2013 la ngay thu sau"
 
"Ngay 28 thang 2 nam 2013 la ngay thu hai"
"Ngay 29 thang 2 nam 2013 la ngay thu ba"
"Ngay 30 thang 2 nam 2013 la ngay thu tu"
"Ngay 31 thang 2 nam 2013 la ngay thu nam"
"Ngay 1 thang 3 nam 2013 la ngay thu sau"

Sorry là lần đầu mình post đoạn code áp dụng đúng cho hàm chính trên máy mình sau khi đã rút gọn, lúc này mình còn post cả đoạn code rút gọn.

Vì vậy nó sẽ lệch ngày so với thực tế, mình đã sửa lại, chắc bạn copy code trước khi mình sửa và xoá đoạn rút gọn.

Như đã nói ở trên, để đơn giản xem như user nhập ngày tháng năm hợp lệ nên không có đoạn kiểm tra

(mục đích câu đố chỉ là cách dùng các hàm số học)

vì vậy nếu nhập  ngày 29 tháng 2 năm 2013 là không hợp lệ


  • 0

#332 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 29 July 2013 - 09:31 AM

Mình nhầm ở chỗ nào nhỉ? Và có cảm giác như không thể chỉ dùng 5 hàm trên?

(defun C:thu ( / d m y)
 (setq d (getint "\nNhap ngay: ") m (getint "Nhap thang: ") y (getint "Nhap nam: "))
 (strcat "Ngay " (itoa d) " thang " (itoa m)  " nam " (itoa y) " la ngay "
  (nth (thu d m y) '("chu nhat" "thu hai" "thu ba" "thu tu" "thu nam" "thu sau" "thu bay"))))
(defun thu (d m y)
 (rem (+ y (/ y 4) (/ y 400) (/ y -100) m m (/ (+ 3 (* m 3)) 5) d 1) 7))
;EX: 
;"Ngay 28 thang 2 nam 2013 la ngay thu hai"
;"Ngay 1 thang 3 nam 2013 la ngay thu sau"
 

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


#333 ndtnv

ndtnv

    biết lệnh minsert

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

Đã gửi 29 July 2013 - 09:38 AM

Mình nhầm ở chỗ nào nhỉ? Và có cảm giác như không thể chỉ dùng 5 hàm trên?

Bạn quên đọc dòng phía dưới:

với d/m/y là ngày tháng năm với quy ước tháng 1,2 của năm y được xem là tháng 13, 14 của năm y - 1 (chẳng hạn ngày 23/1/1999 được xem là ngày 23/13/1998)


  • 0

#334 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 29 July 2013 - 09:47 AM

Bạn quên đọc dòng phía dưới:

với d/m/y là ngày tháng năm với quy ước tháng 1,2 của năm y được xem là tháng 13, 14 của năm y - 1 (chẳng hạn ngày 23/1/1999 được xem là ngày 23/13/1998)

Khổ thế! Tôi biết câu trên, nhưng nó nằm ở các web kia chứ không phải nằm trong câu đố. Thành ra lỗi này không phải do tôi, bởi nếu người khác thì họ cứ nhập như thế sẽ sai. Nên chăng bạn đưa dòng trên vào câu đố luôn để người ta khỏi phải đọc những quy ước này ở 1 web khá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.


#335 ndtnv

ndtnv

    biết lệnh minsert

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

Đã gửi 29 July 2013 - 09:52 AM

Khổ thế! Tôi biết câu trên, nhưng nó nằm ở các web kia chứ không phải nằm trong câu đố. Thành ra lỗi này không phải do tôi, bởi nếu người khác thì họ cứ nhập như thế sẽ sai. Nên chăng bạn đưa dòng trên vào câu đố luôn để người ta khỏi phải đọc những quy ước này ở 1 web khác?

Thì trong câu đố tôi cũng chỉ ghi là (thu ...) chứ đâu ghi (thu d m y). Lúc đầu cũng để mọi người tự tìm trong web,

nhưng thấy ít ai giải nên tôi đưa luôn hàm con lên luôn để tập trung vào phần gọi hàm mà thôi.

Để đơn giản, câu đố trở thành chỉ dùng +,-,*,/ và rem để khử if trong phần gọi hàm sau

(thu d

 (if (< m 3) (+ m 12) m)

 (if (< m 3) (1- y) y)

)

Sau đó rút gọn cả ở hàm chính và hàm con sao cho càng ngắn càng tốt


  • 0

#336 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 19 November 2013 - 08:27 AM

Hâm nóng topic bằng một câu đố "lạ" sau đây:

Hàm (alert "Do ai giai duoc cau do nay!") thông thường sẽ làm xuất hiện dialog với message là "Do ai giai duoc cau do nay!".

Hỏi: thay đổi gì trong cad để khi paste hàm trên vào command thì không xuất hiện dialog mà chỉ xuất hiện ở dòng command (tương tự princ)?


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


#337 ndtnv

ndtnv

    biết lệnh minsert

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

Đã gửi 19 November 2013 - 08:47 AM

Hâm nóng topic bằng một câu đố "lạ" sau đây:

Hàm (alert "Do ai giai duoc cau do nay!") thông thường sẽ làm xuất hiện dialog với message là "Do ai giai duoc cau do nay!".

Hỏi: thay đổi gì trong cad để khi paste hàm trên vào command thì không xuất hiện dialog mà chỉ xuất hiện ở dòng command?

Nếu bit 2 của QAFLAGS set (vd = 4, 5, 6...) thì sẽ không xuất hiện dialog


  • 1

#338 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 22 January 2014 - 11:19 AM

Trước khi chuẩn bị nghỉ Tết, mời các bạn tham gia câu đố này cho vui.

Xem lisp dưới đây, dùng để tính tổng của 2 số.

Ví dụ:

Nhap so thu 1: >> bạn nhập là 1.2

Nhap so thu 2: >> bạn nhập là 3.4

Nhap tong so: >> bạn phải nhập là 4.6 - vì 4.6 là tổng của 1.2 và 3.4

Khi đó sẽ có thông báo "Ket qua nay la dung!" - Điều này ai mà không biết - Và làm sao mà sai được.

Hỏi: có lúc nào nó sai không nhỉ? Cho 1 ví dụ.

P/S: để đơn giản chỉ cần nhập các số nho nhỏ thôi, và cũng chỉ cần 1 số lẻ thôi.

Đêm giao thừa mời các bạn đón xem 1 câu đố khác nhé!

(defun C:HA()
 (setq a (getreal "\nNhap so thu 1: "))
 (setq b (getreal "\nNhap so thu 2: "))
 (setq c (getreal "\nNhap tong so: "))
 (if (= (+ a b) c)
  (alert "Ket qua nay la dung!")
  (alert "Ket qua nay la sai!")))
 


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


#339 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 22 January 2014 - 11:50 AM

Trước khi chuẩn bị nghỉ Tết, mời các bạn tham gia câu đố này cho vui.

Xem lisp dưới đây, dùng để tính tổng của 2 số.

Ví dụ:

Nhap so thu 1: >> bạn nhập là 1.2

Nhap so thu 2: >> bạn nhập là 3.4

Nhap tong so: >> bạn phải nhập là 4.6 - vì 4.6 là tổng của 1.2 và 3.4

Khi đó sẽ có thông báo "Ket qua nay la dung!" - Điều này ai mà không biết - Và làm sao mà sai được.

Hỏi: có lúc nào nó sai không nhỉ? Cho 1 ví dụ.

P/S: để đơn giản chỉ cần nhập các số nho nhỏ thôi, và cũng chỉ cần 1 số lẻ thôi.

Đêm giao thừa mời các bạn đón xem 1 câu đố khác nhé!

(defun C:HA()
 (setq a (getreal "\nNhap so thu 1: "))
 (setq b (getreal "\nNhap so thu 2: "))
 (setq c (getreal "\nNhap tong so: "))
 (if (= (+ a B) c)
  (alert "Ket qua nay la dung!")
  (alert "Ket qua nay la sai!")))
 

 

Đề không yêu cầu nhập như thế nào và thế là mình có quyền nhập phân số

 

Nhap so thu 1: 1/3

 

Nhap so thu 2: 1/4

 

Nhap tong so: 7/12

 

"SAI RỒI"

Nhap so thu 1: 1/3
 
Nhap so thu 2: 1/4
 
Nhap tong so: 7/12

  • 1

#340 ndtnv

ndtnv

    biết lệnh minsert

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

Đã gửi 22 January 2014 - 01:15 PM

Trước khi chuẩn bị nghỉ Tết, mời các bạn tham gia câu đố này cho vui.

Xem lisp dưới đây, dùng để tính tổng của 2 số.

Ví dụ:

Nhap so thu 1: >> bạn nhập là 1.2

Nhap so thu 2: >> bạn nhập là 3.4

Nhap tong so: >> bạn phải nhập là 4.6 - vì 4.6 là tổng của 1.2 và 3.4

Khi đó sẽ có thông báo "Ket qua nay la dung!" - Điều này ai mà không biết - Và làm sao mà sai được.

Hỏi: có lúc nào nó sai không nhỉ? Cho 1 ví dụ.

P/S: để đơn giản chỉ cần nhập các số nho nhỏ thôi, và cũng chỉ cần 1 số lẻ thôi.

Đêm giao thừa mời các bạn đón xem 1 câu đố khác nhé!

(defun C:HA()
 (setq a (getreal "\nNhap so thu 1: "))
 (setq b (getreal "\nNhap so thu 2: "))
 (setq c (getreal "\nNhap tong so: "))
 (if (= (+ a B) c)
  (alert "Ket qua nay la dung!")
  (alert "Ket qua nay la sai!")))
 

1 vd nhỏ theo P/S

a = 0.1, b = 19.8, c = 19.9

Lỗi này tôi đã gặp, tìm hiểu và biết nguyên nhân đã lâu.


  • 1