]> git.cworth.org Git - turbot/commitdiff
Use a set instead of a list for a puzzle's solution
authorCarl Worth <cworth@cworth.org>
Sat, 8 Jan 2022 02:31:33 +0000 (18:31 -0800)
committerCarl Worth <cworth@cworth.org>
Sat, 8 Jan 2022 02:31:33 +0000 (18:31 -0800)
This allows for cleaner handling when two solvers submit the same
solution back-to-back. Previously the identical solution would appear
multiple times in the list of solutions which was obviously not
helpful.

Now, each solution will appear no more than once.

turbot/interaction.py

index cbb8befe2bcb3eb4ebf3df0d7f3165fcf1f5e128..75ff299bc6a5df9edd8feaaab4aff01029a12531 100644 (file)
@@ -187,9 +187,9 @@ def edit_puzzle(turb, puzzle, trigger_id):
         solved = True
 
     solution_str = None
-    solution_list = puzzle.get("solution", [])
-    if solution_list:
-        solution_str = ", ".join(solution_list)
+    solution_set = puzzle.get("solution", set())
+    if solution_set:
+        solution_str = ", ".join(solution_set)
 
     view = {
         "type": "modal",
@@ -280,12 +280,12 @@ def edit_puzzle_submission(turb, payload, metadata):
         puzzle['status'] = 'solved'
     else:
         puzzle['status'] = 'unsolved'
-    puzzle['solution'] = []
+    puzzle['solution'] = set()
     solution = state['solution']['solution']['value']
     if solution:
-        puzzle['solution'] = [
+        puzzle['solution'] = {
             sol.strip() for sol in solution.split(',')
-        ]
+        }
 
     # Verify that there's a solution if the puzzle is mark solved
     if puzzle['status'] == 'solved' and not puzzle['solution']:
@@ -1044,7 +1044,7 @@ def new_puzzle_submission(turb, payload, metadata):
     if rounds:
         puzzle['rounds'] = rounds
 
-    puzzle['solution'] = []
+    puzzle['solution'] = set()
     puzzle['status'] = 'unsolved'
 
     # Create a channel for the puzzle
@@ -1184,7 +1184,7 @@ def solved(turb, body, args):
 
     # Set the status and solution fields in the database
     puzzle['status'] = 'solved'
-    puzzle['solution'].append(args)
+    puzzle['solution'].add(args)
     if 'state' in puzzle:
         del puzzle['state']
     turb.table.put_item(Item=puzzle)