aboutsummaryrefslogtreecommitdiff
path: root/eight_hash.py
diff options
context:
space:
mode:
Diffstat (limited to 'eight_hash.py')
-rwxr-xr-xeight_hash.py77
1 files changed, 40 insertions, 37 deletions
diff --git a/eight_hash.py b/eight_hash.py
index 7211d5a..e688310 100755
--- a/eight_hash.py
+++ b/eight_hash.py
@@ -1,55 +1,58 @@
#!/usr/bin/env python3
-import sys
import random
+import sys
# Source: https://en.wikipedia.org/wiki/Magic_8-ball#Possible_answers
committal_responses = [
- # Affirmative
- "It is certain.",
- "It is decidedly so.",
- "Without a doubt.",
- "Yes definitely.",
- "You may rely on it.",
- "As I see it, yes.",
- "Most likely.",
- "Outlook good.",
- "Yes.",
- "Signs point to yes.",
- # Negative
- "Don't count on it.",
- "My reply is no.",
- "My sources say no.",
- "Outlook not so good.",
- "Very doubtful.",
+ # Affirmative
+ "It is certain.",
+ "It is decidedly so.",
+ "Without a doubt.",
+ "Yes definitely.",
+ "You may rely on it.",
+ "As I see it, yes.",
+ "Most likely.",
+ "Outlook good.",
+ "Yes.",
+ "Signs point to yes.",
+ # Negative
+ "Don't count on it.",
+ "My reply is no.",
+ "My sources say no.",
+ "Outlook not so good.",
+ "Very doubtful.",
]
non_committal_responses = [
- "Reply hazy, try again.",
- "Ask again later.",
- "Better not tell you now.",
- "Cannot predict now.",
- "Concentrate and ask again.",
+ "Reply hazy, try again.",
+ "Ask again later.",
+ "Better not tell you now.",
+ "Cannot predict now.",
+ "Concentrate and ask again.",
]
def djb2_hash(text):
- res = 5381
- for c in text:
- res = res * 33 + ord(c)
- return res
+ res = 5381
+ for c in text:
+ res = res * 33 + ord(c)
+ return res
+
def get_committal_response(question):
- return committal_responses[djb2_hash(question) % len(committal_responses)]
+ return committal_responses[djb2_hash(question) % len(committal_responses)]
+
def get_response(question):
- if random.random() < len(non_committal_responses) / len(committal_responses):
- return random.choice(non_committal_responses)
- else:
- return get_committal_response(question)
+ if random.random() < len(non_committal_responses) / len(committal_responses):
+ return random.choice(non_committal_responses)
+ else:
+ return get_committal_response(question)
+
if __name__ == "__main__":
- try:
- while True:
- print(get_response(input("> ")))
- except (KeyboardInterrupt, EOFError):
- sys.exit(0)
+ try:
+ while True:
+ print(get_response(input("> ")))
+ except (KeyboardInterrupt, EOFError):
+ sys.exit(0)