2009년 3월 31일 화요일

[Common Lisp] 로또(Lotto) 번호 생성기

먹고 살기 점점 힘들어져서 이래저래 한숨만 나오는 요즘입니다. 그래서, 혹시나 하는 기대로 로또를 해보기도 하는데, 이건 그때 쓸려고 Common Lisp으로 만든 로또 번호 생성 장난감 코드입니다. 번호를 하나씩 뽑을 때마다 난수 발생 방식으로 수 배열을 섞어줍니다.
(defun random-comp (a b)
(if (= (random 2) 1) t nil))

(defun take-random (lst n mixcnt)
(cond ((null lst) ())
((<= n 0) ())
(t
(let ((nlst
(dotimes (cnt mixcnt lst)
(setq lst (sort lst #'random-comp)))))
(cons (car nlst) (take-random (cdr nlst) (1- n) mixcnt))))))

(defun gen-lotto-seq (mixcnt)
(let ((lst (loop for i from 1 to 45 collect i)))
(take-random lst 6 mixcnt)))

(defun gen-lotto-helper (try mixcnt)
(if (<= try 0)
nil
(cons
(let ((lst (gen-lotto-seq mixcnt)))
(print lst)
(print (apply #'+ lst))
(finish-output)
(sort lst #'<))
(gen-lotto-helper (1- try) mixcnt))))

(defun gen-lotto (try &optional (mixcnt 1000))
(setq *random-state* (make-random-state t))
(gen-lotto-helper try mixcnt))

실행 방법)
(gen-lotto <시도할 게임 수 번호> <하나를 뽑을 때마다 수열을 섞는 회수, 기본값 1000>)

예)
(gen-lotto 5 500) ; 총 5 게임을 시도하고, 각 번호를 뽑을 때마다 500 번씩 섞음
(gen-lotto 3) ; 총 3 게임을 시도하고, 각 번호를 뽑을 때마다 1000 번씩 섞음


아래는 실제로 실행해본 스크린샷입니다.



주의.
이 코드로 인해 발생할 수 있는 정신적 스트레스 및 물질적 궁핍 또는 결여에 대해 저는 어떠한 책임도 지지 않습니다. 단, 이 코드로 인해 발생한 물질적 형태의 이익에 대해 사례를 하시겠다면 마다 하지는 않겠습니다. ;-)

2009년 3월 30일 월요일

DISQUS가 이상해요

드디어 ann 님 댓글에 답변 달기 성공했습니다. ㅡㅡv
혹시 문장 내용에 문제가 있나 해서 이리저리 말을 바꿔봤는데, 결국 되고야 말았습니다.
한 문장이 너무 길어서 그랬던 것인지, 아니면 제가 작성한 답변 글에 들어가 있던 특정 단어나 문장이 문제를 일으켰던 것인지는 아직 알 수가 없습니다. 쩝...

-----

음... Comment 시스템을 DISQUS로 변경하고 나서 그럭저럭 문제 없이 잘 동작하고 있다고 방심했나 봅니다.

제가 Total Commander Unalz Plug-in과 관련해 간략하게 쓴 글에 대해 댓글을 달아주신 분들이 있었는데(감사합니다 ^^), 이 중 한 분(ann 님)의 댓글에 제가 답변한 내용이 사라져 버린 겁니다. 그래서, 다시 답변을 달려고 시도하니까 이번에는 아예 추가가 되지 않고 있네요. 혹시 설정이 잘못된 것일까 해서 관리 페이지로 갔더니 개뿔 님이 남기신 댓글이 스팸으로 들어가 있지 뭡니까... (정말 죄송합니다. 워낙 손님이 드문 곳이라 이런 일이 생길 줄은 정말 몰랐습니다. 쩝... 또 다시 비겁한 변명을 하고 있습니다. 앞으론 더 신경 쓰도록 하겠습니다. ㅜㅠ) 어쨌거나 개뿔 님의 댓글도 스팸이 아니라고 지정해서 복구는 해두었는데, 이 글을 쓰고 있는 지금 여전히 답변은 달리지 않고 있습니다.

문제 현상을 정리해보면 크게 두 가지입니다.
1. 멀쩡한 글이 스팸으로 분류되었다.
2. 멀쩡한 글에 답변(Reply)이 안달린다. 그것도 관리자가 직접 달았는 데도...
3. 어쩌면 댓글 자체가 안달리고 있을지도 모른다. (이 부분은 확인이 좀 필요할 것 같습니다.)

혹시 저와 유사한 문제가 발생하는 분 혹은 겪어보신 분 있으세요?
있으시면 댓글을... (흠... 댓글이 안되면 메일이라도... ㅡㅡ)