Skip to content

Instantly share code, notes, and snippets.

@puterleat
Created January 23, 2014 19:34
Show Gist options
  • Select an option

  • Save puterleat/8585287 to your computer and use it in GitHub Desktop.

Select an option

Save puterleat/8585287 to your computer and use it in GitHub Desktop.
goals in pseudocode
# An associative mapping of desired outcomes to actions which allows
# the nesting of goals.
goal_to_habit_mapping = {
"Attract a mate": {
"Disco": ["Demonstrate virility", "Be funny", "Be a nice person"],
"Bedroom": ["Demonstrate virility", "Be a nice person"],
}
"Demonstrate virility": {
"Disco": ["Dance like a boss", "Buy drinks", "Start a fight",],
"Bedroom": [...]
}
"Dance like a boss": {
"Ballroom": ["Do the Charleston", "Do a Waltz"]
"Default": ["Shake your booty", "Gesticulate wildly"]
}
"Despair": {
"Default": ["Climb into bed", "Drink beer", "Drive to Beachyhead"],
"Beachyhead": ["Jump"]
},
}
def pursue_goal(desired_outcome, environment):
print "Current active goal: " + desired_outcome
possibilities = filter(goal_to_habit_mapping, desired_outcome, environment)
if length(possibilities) == 0:
return pursue_goal("Despair", environment)
sort(possibilities, key=magic_inverse_inference_function_against_current_goal)
best_bet = possibilities.pop()
if is_an_an_actionable_thing(best_bet):
your_body_does(best_bet)
else:
return pursue_goal(best_bet, environment)
if outcome != complete:
return pursue_goal(desired_outcome, environment)
# happy scenario
pursue_goal("Dance like a boss", "In your bedroom")
> Current active goal: "Dance like a boss"
> You shake your booty
> You gesticulate wildly
# unhappy scenario
pursue_goal("Attract a mate", "At the disco")
> Current active goal: "Demonstrate your virility"
> Current active goal: "Dance like a boss"
> You shake your booty
> Current active goal: "Dance like a boss"
> You gesticulate wildly
> Current active goal: "Buy drinks"
...
> Current active goal: "Start a fight"
...
> Current active goal: "Despair"
...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment