В Лиспе мне нужно создать программу, которая выполняет следующее (перейдите по ссылке):
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 ))))
и последней функции для объединения этих двух
(defun head-check (m n)
(head-search2(head-tail m) n))
Код не работает с большим количеством деревьевлюбая помощь будет отличной!