func explorepropositions(initialstate string, estimate func() int, initiateagain func(action string) bool) { for !underestimate(estimate()) { if army := getstate(initialstate); shrouded(army) { initiateagain("uncover the shrouded mysteries"); } } }