diff --git a/v3/entities.py b/v3/entities.py deleted file mode 100644 index 025a913..0000000 --- a/v3/entities.py +++ /dev/null @@ -1,19 +0,0 @@ -class MemoryContext: - def __init__(self): - self.hiddenItems = [] - self.mismatchedItems = [] - self.playfieldItems = {} - self.playfieldSize = 0 - self.recentField = None - self.selectedId = None - self.selectedItems = [] - self.victory = False - - def __repr__(self): - return self.__str__() - - def __str__(self): - return f"MemoryContext(plyfieldI/playfieldS/recentF/selectedId/selectedI: '{self.playfieldItems}'/'{self.playfieldSize}'/'{self.recentField}'/'{self.selectedId}'/'{self.selectedItems}')" - -def memory_createEmptyContext(): - return MemoryContext() diff --git a/v3/functions.py b/v3/functions.py deleted file mode 100644 index cc231d8..0000000 --- a/v3/functions.py +++ /dev/null @@ -1,329 +0,0 @@ -from entities import * -from llm import * - -# Detect victory -# -# Conditions: -# 1. Matching items have just been hidden and all items are hidden now -@llm_by_value -def memory_detectVictory( - c: MemoryContext -) -> MemoryContext: - if ( - c.recentField == "hiddenItems" and - len(c.hiddenItems) == len(c.playfieldItems) - ): - c.victory = True - c.recentField = "victory" - return c - - c.recentField = None - return c -#} - -# Deselect mismatched items -# -# Conditions: -# 1. Two items are selected and they are of different groups -@llm_by_value -def memory_deselectMismatchedItems( - c: MemoryContext -) -> MemoryContext: - if ( - c.recentField == "selectedItems" and - len(c.selectedItems) == 2 and - c.playfieldItems[c.selectedItems[0]] != c.playfieldItems[c.selectedItems[1]] - ): - c.mismatchedItems.clear() - c.mismatchedItems.append(c.selectedItems[0]) - c.mismatchedItems.append(c.selectedItems[1]) - c.recentField = "mismatchedItems" - return c - - c.recentField = None - return c -#} - -# Generate constant playfield suitable for testing and debugging -@llm_by_value -def memory_generateConstPlayfield( - c: MemoryContext -) -> MemoryContext: - idGroups: dict[int, int] = { } - id = 0 - for gid in range(0, c.playfieldSize): - idGroups[id] = gid - id += 1 - idGroups[id] = gid - id += 1 - #} - c.playfieldItems = idGroups - c.recentField = "playfieldItems" - return c -#} - -# Hide matching selected items -# -# Conditions: -# 1. Two items are selected and they are of the same group -@llm_by_value -def memory_hideMatchingItems( - c: MemoryContext -) -> MemoryContext: - if ( - c.recentField == "selectedItems" and - len(c.selectedItems) == 2 and - c.playfieldItems[c.selectedItems[0]] == c.playfieldItems[c.selectedItems[1]] - ): - c.hiddenItems.append(c.selectedItems[0]) - c.hiddenItems.append(c.selectedItems[1]) - c.recentField = "hiddenItems" - return c - - c.recentField = None - return c -#} - -# Select item -# -# Conditions: -# 1. There are already two selected items -# 2. Item has just been selected -@llm_by_value -def memory_selectItem( - c: MemoryContext -) -> MemoryContext: - if ( - len(c.selectedItems) == 2 - ): - c.selectedItems = [] - - if ( - c.recentField == "selectedId" - ): - c.selectedItems.append(c.selectedId) - c.recentField = "selectedItems" - return c - - c.recentField = None - return c -#} - -# Test. - -def test_memory_generateConstPlayfield( -) -> str: - c = memory_createEmptyContext() - c.playfieldSize = 2 - c = memory_generateConstPlayfield(c) - if ( - c.recentField == "playfieldItems" and - len(c.playfieldItems) == 4 and - c.playfieldItems[0] == 0 and - c.playfieldItems[1] == 0 and - c.playfieldItems[2] == 1 and - c.playfieldItems[3] == 1 - ): - return "OK: memory_generateConstPlayfield" - #} - return "ERR: memory_generateConstPlayfield" -#} - -def test_memory_selectItem( -) -> str: - c = memory_createEmptyContext() - c.playfieldSize = 2 - c = memory_generateConstPlayfield(c) - - # Select the first item. - c.selectedId = 0 - c.recentField = "selectedId" - c = memory_selectItem(c) - - # See if it's in selectedItems now. - if ( - c.recentField == "selectedItems" and - len(c.selectedItems) == 1 and - c.selectedItems[0] == 0 - ): - return "OK: selectItem" - #} - return "ERR: selectItem" -#} - -def test_selectTwoItems( -) -> str: - c = memory_createEmptyContext() - c.playfieldSize = 2 - c = memory_generateConstPlayfield(c) - - # Select the first two items. - c.selectedId = 0 - c.recentField = "selectedId" - c = memory_selectItem(c) - c.selectedId = 1 - c.recentField = "selectedId" - c = memory_selectItem(c) - - # See if it's both items are selected now. - if ( - c.recentField == "selectedItems" and - len(c.selectedItems) == 2 and - c.selectedItems[0] == 0 and - c.selectedItems[1] == 1 - ): - return "OK: selectTwoItems" - #} - return "ERR: selectTwoItems" -#} - -def test_selectThreeItems( -) -> str: - c = memory_createEmptyContext() - c.playfieldSize = 2 - c = memory_generateConstPlayfield(c) - - # Select three items. - c.selectedId = 0 - c.recentField = "selectedId" - c = memory_selectItem(c) - c.selectedId = 1 - c.recentField = "selectedId" - c = memory_selectItem(c) - c.selectedId = 2 - c.recentField = "selectedId" - c = memory_selectItem(c) - - # See if only one (last) item is selected now. - if ( - c.recentField == "selectedItems" and - len(c.selectedItems) == 1 and - c.selectedItems[0] == 2 - ): - return "OK: selectThreeItems" - #} - return "ERR: selectThreeItems" -#} - -def test_memory_hideMatchingItems( -) -> str: - c = memory_createEmptyContext() - c.playfieldSize = 2 - c = memory_generateConstPlayfield(c) - - # Select two items of the same group. - c.selectedId = 0 - c.recentField = "selectedId" - c = memory_selectItem(c) - c.selectedId = 1 - c.recentField = "selectedId" - c = memory_selectItem(c) - - # Hide matching items. - c = memory_hideMatchingItems(c) - - # See if the two selected items match. - if ( - c.recentField == "hiddenItems" and - len(c.hiddenItems) == 2 and - c.hiddenItems[0] == 0 and - c.hiddenItems[1] == 1 - ): - return "OK: memory_hideMatchingItems" - #} - return "ERR: memory_hideMatchingItems" -#} - -def test_memory_deselectMismatchedItems( -) -> str: - c = memory_createEmptyContext() - c.playfieldSize = 2 - c = memory_generateConstPlayfield(c) - - # Select two items of different groups. - c.selectedId = 0 - c.recentField = "selectedId" - c = memory_selectItem(c) - c.selectedId = 2 - c.recentField = "selectedId" - c = memory_selectItem(c) - - # Detect mismatching. - c = memory_deselectMismatchedItems(c) - - # See if the two selected items do not match. - if ( - c.recentField == "mismatchedItems" and - len(c.mismatchedItems) == 2 and - c.mismatchedItems[0] == 0 and - c.mismatchedItems[1] == 2 - ): - return "OK: memory_deselectMismatchedItems" - #} - return "ERR: memory_deselectMismatchedItems" -#} - -def test_memory_detectVictory( -) -> str: - c = memory_createEmptyContext() - c.playfieldSize = 2 - c = memory_generateConstPlayfield(c) - - # Select the first two items of the same group. - c.selectedId = 0 - c.recentField = "selectedId" - c = memory_selectItem(c) - c.selectedId = 1 - c.recentField = "selectedId" - c = memory_selectItem(c) - - # Hide the first pair. - c = memory_hideMatchingItems(c) - - # Select the last two items of the same group. - c.selectedId = 2 - c.recentField = "selectedId" - c = memory_selectItem(c) - c.selectedId = 3 - c.recentField = "selectedId" - c = memory_selectItem(c) - - # Hide the second pair. - c = memory_hideMatchingItems(c) - - # Detect victory. - c = memory_detectVictory(c) - - # See if victory has been detected. - if ( - c.recentField == "victory" and - c.victory == True - ): - return "OK: memory_detectVictory" - #} - return "ERR: memory_detectVictory" -#} - -def test_passContextByValue( -) -> str: - c = memory_createEmptyContext() - c.playfieldSize = 2 - c = memory_generateConstPlayfield(c) - - c.selectedId = 0 - c.recentField = "selectedId" - c1 = memory_selectItem(c) - - c.selectedId = 1 - c.recentField = "selectedId" - c2 = memory_selectItem(c) - - # See if c1 and c2 have different recentField. - if ( - c1.selectedId != c2.selectedId - ): - return "OK: passContextByValue" - - return "ERR: passContextByValue" -#} - diff --git a/v3/main.py b/v3/main.py index e6e1327..2892f9e 100644 --- a/v3/main.py +++ b/v3/main.py @@ -8,5 +8,3 @@ print(memory_test_shouldDeselectMismatchedItems()) print(memory_test_shouldDeselectMismatchedItems_itemTwice()) print(memory_test_shouldDetectVictory()) print(memory_test_shouldHideMatchingItems()) - -#print(memory_seq_test_selectTwoItems()) diff --git a/v3/memory_seq_test.py b/v3/memory_seq_test.py deleted file mode 100644 index 3a31bce..0000000 --- a/v3/memory_seq_test.py +++ /dev/null @@ -1,50 +0,0 @@ -from memory_api import * -from memory_api_Context import * -from memory_seq import * -from memory_seq_Context import * - -def memory_seq_test_selectThreeItems( -) -> str: - seq = memory_seq_createContext() - - seq.api = memory_api_createContext() - seq.api.playfieldSize = 2 - seq.api = memory_api_generateConstPlayfield(seq.api) - - seq.itemsToSelect = [0, 1, 2] - seq = memory_seq_selectItems(seq) - - # See if only one (last) item is selected now. - if ( - seq.api.recentField == "selectedItems" and - len(seq.api.selectedItems) == 1 and - seq.api.selectedItems[0] == 2 - ): - return "OK: memory_seq_selectThreeItems" - #} - return "ERR: memory_seq_selectThreeItems" -#} - -def memory_seq_test_selectTwoItems( -) -> str: - seq = memory_seq_createContext() - - seq.api = memory_api_createContext() - seq.api.playfieldSize = 2 - seq.api = memory_api_generateConstPlayfield(seq.api) - - seq.itemsToSelect = [0, 1] - seq = memory_seq_selectItems(seq) - - # See if both items are selected now. - if ( - seq.api.recentField == "selectedItems" and - len(seq.api.selectedItems) == 2 and - seq.api.selectedItems[0] == 0 and - seq.api.selectedItems[1] == 1 - ): - return "OK: memory_seq_selectTwoItems" - #} - return "ERR: memory_seq_selectTwoItems" -#} - diff --git a/v3/seq.py b/v3/seq.py deleted file mode 100644 index a8060be..0000000 --- a/v3/seq.py +++ /dev/null @@ -1,231 +0,0 @@ -from entities import * -from llm import * - -# Execute selections and verify -# -# Conditions: -# 1. Matching items have just been hidden and all items are hidden now -@llm_by_value -def memory_api_detectVictory( - c: MemoryContext -) -> MemoryContext: - - -# Test. - -def test_memory_generateConstPlayfield( -) -> str: - c = memory_createEmptyContext() - c.playfieldSize = 2 - c = memory_generateConstPlayfield(c) - if ( - c.recentField == "playfieldItems" and - len(c.playfieldItems) == 4 and - c.playfieldItems[0] == 0 and - c.playfieldItems[1] == 0 and - c.playfieldItems[2] == 1 and - c.playfieldItems[3] == 1 - ): - return "OK: memory_generateConstPlayfield" - #} - return "ERR: memory_generateConstPlayfield" -#} - -def test_memory_selectItem( -) -> str: - c = memory_createEmptyContext() - c.playfieldSize = 2 - c = memory_generateConstPlayfield(c) - - # Select the first item. - c.selectedId = 0 - c.recentField = "selectedId" - c = memory_selectItem(c) - - # See if it's in selectedItems now. - if ( - c.recentField == "selectedItems" and - len(c.selectedItems) == 1 and - c.selectedItems[0] == 0 - ): - return "OK: selectItem" - #} - return "ERR: selectItem" -#} - -def test_selectTwoItems( -) -> str: - c = memory_createEmptyContext() - c.playfieldSize = 2 - c = memory_generateConstPlayfield(c) - - # Select the first two items. - c.selectedId = 0 - c.recentField = "selectedId" - c = memory_selectItem(c) - c.selectedId = 1 - c.recentField = "selectedId" - c = memory_selectItem(c) - - # See if it's both items are selected now. - if ( - c.recentField == "selectedItems" and - len(c.selectedItems) == 2 and - c.selectedItems[0] == 0 and - c.selectedItems[1] == 1 - ): - return "OK: selectTwoItems" - #} - return "ERR: selectTwoItems" -#} - -def test_selectThreeItems( -) -> str: - c = memory_createEmptyContext() - c.playfieldSize = 2 - c = memory_generateConstPlayfield(c) - - # Select three items. - c.selectedId = 0 - c.recentField = "selectedId" - c = memory_selectItem(c) - c.selectedId = 1 - c.recentField = "selectedId" - c = memory_selectItem(c) - c.selectedId = 2 - c.recentField = "selectedId" - c = memory_selectItem(c) - - # See if only one (last) item is selected now. - if ( - c.recentField == "selectedItems" and - len(c.selectedItems) == 1 and - c.selectedItems[0] == 2 - ): - return "OK: selectThreeItems" - #} - return "ERR: selectThreeItems" -#} - -def test_memory_hideMatchingItems( -) -> str: - c = memory_createEmptyContext() - c.playfieldSize = 2 - c = memory_generateConstPlayfield(c) - - # Select two items of the same group. - c.selectedId = 0 - c.recentField = "selectedId" - c = memory_selectItem(c) - c.selectedId = 1 - c.recentField = "selectedId" - c = memory_selectItem(c) - - # Hide matching items. - c = memory_hideMatchingItems(c) - - # See if the two selected items match. - if ( - c.recentField == "hiddenItems" and - len(c.hiddenItems) == 2 and - c.hiddenItems[0] == 0 and - c.hiddenItems[1] == 1 - ): - return "OK: memory_hideMatchingItems" - #} - return "ERR: memory_hideMatchingItems" -#} - -def test_memory_deselectMismatchedItems( -) -> str: - c = memory_createEmptyContext() - c.playfieldSize = 2 - c = memory_generateConstPlayfield(c) - - # Select two items of different groups. - c.selectedId = 0 - c.recentField = "selectedId" - c = memory_selectItem(c) - c.selectedId = 2 - c.recentField = "selectedId" - c = memory_selectItem(c) - - # Detect mismatching. - c = memory_deselectMismatchedItems(c) - - # See if the two selected items do not match. - if ( - c.recentField == "mismatchedItems" and - len(c.mismatchedItems) == 2 and - c.mismatchedItems[0] == 0 and - c.mismatchedItems[1] == 2 - ): - return "OK: memory_deselectMismatchedItems" - #} - return "ERR: memory_deselectMismatchedItems" -#} - -def test_memory_detectVictory( -) -> str: - c = memory_createEmptyContext() - c.playfieldSize = 2 - c = memory_generateConstPlayfield(c) - - # Select the first two items of the same group. - c.selectedId = 0 - c.recentField = "selectedId" - c = memory_selectItem(c) - c.selectedId = 1 - c.recentField = "selectedId" - c = memory_selectItem(c) - - # Hide the first pair. - c = memory_hideMatchingItems(c) - - # Select the last two items of the same group. - c.selectedId = 2 - c.recentField = "selectedId" - c = memory_selectItem(c) - c.selectedId = 3 - c.recentField = "selectedId" - c = memory_selectItem(c) - - # Hide the second pair. - c = memory_hideMatchingItems(c) - - # Detect victory. - c = memory_detectVictory(c) - - # See if victory has been detected. - if ( - c.recentField == "victory" and - c.victory == True - ): - return "OK: memory_detectVictory" - #} - return "ERR: memory_detectVictory" -#} - -def test_passContextByValue( -) -> str: - c = memory_createEmptyContext() - c.playfieldSize = 2 - c = memory_generateConstPlayfield(c) - - c.selectedId = 0 - c.recentField = "selectedId" - c1 = memory_selectItem(c) - - c.selectedId = 1 - c.recentField = "selectedId" - c2 = memory_selectItem(c) - - # See if c1 and c2 have different recentField. - if ( - c1.selectedId != c2.selectedId - ): - return "OK: passContextByValue" - - return "ERR: passContextByValue" -#} -