Я пытаюсь создать случайное дерево из списков в Racket.Случайное дерево в Racket
Дерево составлено из списка операторов и списка терминалов.
Результат будет выглядеть так:
'(* (+ 2 4) 2)
Так что список может быть вызвана с помощью функции Eval.
Дальше должен быть установлен максимальный уровень.
Итак, моя догадка заключается в том, что процедура будет выглядеть следующим образом.
(define (make-tree tree level) ...)
Я думал об использовании функции map
и расширение каждого уровня на глубине, но я новичок сюсюкать-любит, так что я нахожу, что это трудно понять алгоритм мне нужно.
В настоящий момент каждый оператор принимает только два параметра (по существу, сгенерированные деревья являются бинарными деревьями), но было бы полезно включить в любой ответ, как развернуть функцию, чтобы включить три или более параметров.
Ракетка и шепелявила не то же самое. Дальше ваш вопрос мне не ясен, не могли бы вы его подробнее разобрать? Например, какое дерево имеет '' (* (+ (2 4) 2)) 'представляют? – HyperZ
Мои извинения, я должен был сказать lisp-like, он представляет * корень, который содержит узлы (+ 2 4) и 2 – HedgepigMatt
Если '*' является корнем и имеет 2 дочерних элемента, '(+ 2 4)' и '2', не должно быть' '(* (+ 2 4) 2)'? – HyperZ