package recursion

import (
	"logik/aussagenlogik/formulae"
)

/* ---------------------------------------------------------------- *
 * METHOD: Formula Depth
 * ---------------------------------------------------------------- */

func FmlDepth(tree formulae.Formula) int {
	// Definiere Schema:
	var schema = func(tree formulae.Formula, prevValues []int) int {
		// Herausforderung: schreibe diese Funktion!
		return 0
	}
	// Erzeuge Funktion aus Schema und berechne Wert:
	fn := formulae.CreateFromSchemeIntValued(schema)
	return fn(tree)
}

/* ---------------------------------------------------------------- *
 * METHOD: Formula Length
 * ---------------------------------------------------------------- */

func FmlLength(tree formulae.Formula) int {
	// Definiere Schema:
	var schema = func(tree formulae.Formula, prevValues []int) int {
		// Herausforderung: schreibe diese Funktion!
		return 0
	}
	// Erzeuge Funktion aus Schema und berechne Wert:
	fn := formulae.CreateFromSchemeIntValued(schema)
	return fn(tree)
}

/* ---------------------------------------------------------------- *
 * METHOD: Number of Parentheses
 * ---------------------------------------------------------------- */
func NrParentheses(tree formulae.Formula) int {
	// Definiere Schema:
	var schema = func(tree formulae.Formula, prevValues []int) int {
		// Herausforderung: schreibe diese Funktion!
		return 0
	}
	// Erzeuge Funktion aus Schema und berechne Wert:
	fn := formulae.CreateFromSchemeIntValued(schema)
	return fn(tree)
}
