헤즈, 나는 (링크를 참조하십시오) 다음을 수행하는 프로그램을 만들 수 있습니다 리스프 동전 던지기가 리스프에서 순서
http://uva.onlinejudge.org/external/103/10328.html
내가 나무(defun head-tail (n &optional (total 0))
(if (< total n)
(list(cons 'H (head-tail n (1+ total)))
(cons 'T (head-tail n (1+ total))))
nil))
를 만드는 코드를 H = 헤드들의 시퀀스를 검사하도록 코드화한다.
(defun head-search2 (tree n &optional (total 0) (check 0))
(cond ((null tree)
check)
((listp (first tree))
(+ (head-search2 (first tree) n total)
(head-search2 (rest tree) n total check)))
((and (eq (first tree) 'H)
(>= (1+ total) n))
(head-search2 (rest tree) n (1+ total) 1))
((and (eq (first tree) 'H)
(< (1+ total) n))
(head-search2 (rest tree) n (1+ total) check))
((eq (first tree) 'T)
(head-search2 (rest tree) n 0 check))))
및 마지막 함수 t o 그 두 가지를 합치십시오.
(defun head-check (m n)
(head-search2(head-tail m) n))
코드가 많은 수의 나무와 함께 작동하지 않으면 어떤 도움이 될 수 있습니다!
"많은 수의 나무와 관련이 없다"는 것은 무엇을 의미합니까? – zmccord
내가 3의 트리에 대해 2를 찾는 경우에 올바른 결과를 가지지 만 트리 = 4와 시퀀스 = 2에 대해서는 출력이 8이고 트리가 6 일 때 출력이 7이된다. n = 2는 31을 준다. @ zmccord – Drakoumel
당신이 가리키는 웹 페이지가 무엇인가를 명확하게하지 않습니다. 실제로 동전 던지기 실험을하지는 않습니다 (의사 난수 생성기와 같음). 여러분은 머리와 꼬리의 모든'(expt 2 n)'의 가능한 조합을 처리하고 H의 시퀀스를 찾고 있습니다. 이것은 순전히 조합적인 문제입니다 : 0 ~ 2 N의 많은 N 비트 이진수는 적어도 K 제로 비트의 연속적인 시퀀스. 권리? – Kaz