From 5419427642a59d09905c7a78521a2e43d582e7b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B8=D1=85=D0=B0=D0=B8=D0=BB=20=D0=9A=D0=B0=D0=BF?= =?UTF-8?q?=D0=B5=D0=BB=D1=8C=D0=BA=D0=BE?= Date: Wed, 15 May 2024 22:47:07 +0300 Subject: [PATCH] d --- v4/main.py | 60 ++++++------ v4/memory.py | 99 +++++++++++--------- v4/memory_test.py | 228 +++++++++++++++++++++++++--------------------- 3 files changed, 212 insertions(+), 175 deletions(-) diff --git a/v4/main.py b/v4/main.py index 274bc8d..611fa9e 100644 --- a/v4/main.py +++ b/v4/main.py @@ -1,37 +1,37 @@ -from cli import * -from cli_test import * +#from cli import * +#from cli_test import * from memory_test import * -from shell import * -import sys +#from shell import * +#import sys -print(memory_test_generateConstPlayfield()) -print(memory_test_selectItem_1x()) -print(memory_test_selectItem_2x()) -print(memory_test_selectItem_3x()) print(memory_test_shouldDeselectMismatchedItems()) print(memory_test_shouldDeselectMismatchedItems_itemTwice()) print(memory_test_shouldDetectVictory()) +print(memory_test_shouldGenerateConstPlayfield()) print(memory_test_shouldHideMatchingItems()) +print(memory_test_shouldSelectItem_1x()) +print(memory_test_shouldSelectItem_2x()) +print(memory_test_shouldSelectItem_3x()) -print(cli_test_greetUser()) -print(cli_test_selectItem()) -print(cli_test_shouldPromptSelection()) -#print(cli_test_shouldReportIvalidItemSelection_outOfBoundsMin()) -print(cli_test_showHelp_h()) -print(cli_test_showHelp_help()) - -c = shell_createContext() -c.cCLI = cli_createContext() -c.cCLI.cMemory = memory_createContext() -c.cCLI.cMemory.playfieldSize = 2 -c.cCLI.cMemory = memory_generateConstPlayfield(c.cCLI.cMemory) - -c = shell_launch(c) -print(c.output) - -for line in sys.stdin: - c.input = line.rstrip() - c = shell_processInput(c) - if c.exit: - break - print(c.output) +#print(cli_test_greetUser()) +#print(cli_test_selectItem()) +#print(cli_test_shouldPromptSelection()) +##print(cli_test_shouldReportIvalidItemSelection_outOfBoundsMin()) +#print(cli_test_showHelp_h()) +#print(cli_test_showHelp_help()) +# +#c = shell_createContext() +#c.cCLI = cli_createContext() +#c.cCLI.cMemory = memory_createContext() +#c.cCLI.cMemory.playfieldSize = 2 +#c.cCLI.cMemory = memory_generateConstPlayfield(c.cCLI.cMemory) +# +#c = shell_launch(c) +#print(c.output) +# +#for line in sys.stdin: +# c.input = line.rstrip() +# c = shell_processInput(c) +# if c.exit: +# break +# print(c.output) diff --git a/v4/memory.py b/v4/memory.py index ad3fbd1..d9b7bd9 100644 --- a/v4/memory.py +++ b/v4/memory.py @@ -1,49 +1,6 @@ from memory_Context import * from llm import * -######## -# Client initiated input -######## - -# Generate constant playfield -# -# Both ids and group ids start with 0 -@llm_by_value -def memory_generateConstPlayfield( - c: memory_Context -) -> memory_Context: - 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 -#} - -# Select item -@llm_by_value -def memory_selectItem( - c: memory_Context -) -> memory_Context: - if ( - len(c.selectedItems) == 2 - ): - c.selectedItems.clear() - #} - c.selectedItems.append(c.selectedId) - c.recentField = "selectedItems" - return c -#} - -######## -# System initiated reaction -######## - # Deselect mismatched items # # Conditions: @@ -102,6 +59,36 @@ def memory_shouldDetectVictory( return c #} +# Generate constant playfield +# +# Conditions: +# 1. Size has just been specified +# +# Both ids and group ids start with 0 +@llm_by_value +def memory_shouldGenerateConstPlayfield( + c: memory_Context +) -> memory_Context: + if not ( + c.recentField == "playfieldSize" + ): + c.recentField = "none" + return c + #} + + 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: @@ -123,3 +110,29 @@ def memory_shouldHideMatchingItems( c.recentField = "none" return c #} + +# Select item +# +# Conditions: +# 1. Id has just been specified for selection +@llm_by_value +def memory_shouldSelectItem( + c: memory_Context +) -> memory_Context: + if not ( + c.recentField == "selectedId" + ): + c.recentField = "none" + return c + #} + + if ( + len(c.selectedItems) == 2 + ): + c.selectedItems.clear() + #} + c.selectedItems.append(c.selectedId) + c.recentField = "selectedItems" + return c +#} + diff --git a/v4/memory_test.py b/v4/memory_test.py index 8557dfa..2704683 100644 --- a/v4/memory_test.py +++ b/v4/memory_test.py @@ -1,105 +1,20 @@ from memory import * from memory_Context import * -def memory_test_generateConstPlayfield( -) -> str: - c = memory_createContext() - 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 memory_test_selectItem_1x( -) -> str: - c = memory_createContext() - c.playfieldSize = 2 - c = memory_generateConstPlayfield(c) - - # Select the first item. - c.selectedId = 0 - 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: memory_selectItem_1x" - #} - return "ERR: memory_selectItem_1x" -#} - -def memory_test_selectItem_2x( -) -> str: - c = memory_createContext() - c.playfieldSize = 2 - c = memory_generateConstPlayfield(c) - - # Select the first two items. - c.selectedId = 0 - c = memory_selectItem(c) - c.selectedId = 1 - c = memory_selectItem(c) - - # See if 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: memory_selectItem_2x" - #} - return "ERR: memory_selectItem_2x" -#} - -def memory_test_selectItem_3x( -) -> str: - c = memory_createContext() - c.playfieldSize = 2 - c = memory_generateConstPlayfield(c) - - # Select three items. - c.selectedId = 0 - c = memory_selectItem(c) - c.selectedId = 1 - c = memory_selectItem(c) - c.selectedId = 2 - 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: memory_selectItem_3x" - #} - return "ERR: memory_selectItem_3x" -#} - def memory_test_shouldDeselectMismatchedItems( ) -> str: c = memory_createContext() c.playfieldSize = 2 - c = memory_generateConstPlayfield(c) + c.recentField = "playfieldSize" + c = memory_shouldGenerateConstPlayfield(c) # Select two items of different groups. c.selectedId = 0 - c = memory_selectItem(c) + c.recentField = "selectedId" + c = memory_shouldSelectItem(c) c.selectedId = 2 - c = memory_selectItem(c) + c.recentField = "selectedId" + c = memory_shouldSelectItem(c) # Detect mismatching. c = memory_shouldDeselectMismatchedItems(c) @@ -120,13 +35,16 @@ def memory_test_shouldDeselectMismatchedItems_itemTwice( ) -> str: c = memory_createContext() c.playfieldSize = 2 - c = memory_generateConstPlayfield(c) + c.recentField = "playfieldSize" + c = memory_shouldGenerateConstPlayfield(c) # Select the same item twice. c.selectedId = 0 - c = memory_selectItem(c) + c.recentField = "selectedId" + c = memory_shouldSelectItem(c) c.selectedId = 0 - c = memory_selectItem(c) + c.recentField = "selectedId" + c = memory_shouldSelectItem(c) # Detect mismatching. c = memory_shouldDeselectMismatchedItems(c) @@ -146,22 +64,27 @@ def memory_test_shouldDetectVictory( ) -> str: c = memory_createContext() c.playfieldSize = 2 - c = memory_generateConstPlayfield(c) + c.recentField = "playfieldSize" + c = memory_shouldGenerateConstPlayfield(c) # Select the first two items of the same group. c.selectedId = 0 - c = memory_selectItem(c) + c.recentField = "selectedId" + c = memory_shouldSelectItem(c) c.selectedId = 1 - c = memory_selectItem(c) + c.recentField = "selectedId" + c = memory_shouldSelectItem(c) # Hide the first pair. c = memory_shouldHideMatchingItems(c) # Select the last two items of the same group. c.selectedId = 2 - c = memory_selectItem(c) + c.recentField = "selectedId" + c = memory_shouldSelectItem(c) c.selectedId = 3 - c = memory_selectItem(c) + c.recentField = "selectedId" + c = memory_shouldSelectItem(c) # Hide the second pair. c = memory_shouldHideMatchingItems(c) @@ -179,17 +102,39 @@ def memory_test_shouldDetectVictory( return "ERR: memory_shouldDetectVictory" #} +def memory_test_shouldGenerateConstPlayfield( +) -> str: + c = memory_createContext() + c.playfieldSize = 2 + c.recentField = "playfieldSize" + c = memory_shouldGenerateConstPlayfield(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_shouldGenerateConstPlayfield" + #} + return "ERR: memory_shouldGenerateConstPlayfield" +#} + def memory_test_shouldHideMatchingItems( ) -> str: c = memory_createContext() c.playfieldSize = 2 - c = memory_generateConstPlayfield(c) + c.recentField = "playfieldSize" + c = memory_shouldGenerateConstPlayfield(c) # Select two items of the same group. c.selectedId = 0 - c = memory_selectItem(c) + c.recentField = "selectedId" + c = memory_shouldSelectItem(c) c.selectedId = 1 - c = memory_selectItem(c) + c.recentField = "selectedId" + c = memory_shouldSelectItem(c) # Hide matching items. c = memory_shouldHideMatchingItems(c) @@ -205,3 +150,82 @@ def memory_test_shouldHideMatchingItems( #} return "ERR: memory_shouldHideMatchingItems" #} + +def memory_test_shouldSelectItem_1x( +) -> str: + c = memory_createContext() + c.playfieldSize = 2 + c.recentField = "playfieldSize" + c = memory_shouldGenerateConstPlayfield(c) + + # Select the first item. + c.selectedId = 0 + c.recentField = "selectedId" + c = memory_shouldSelectItem(c) + + # See if it's in selectedItems now. + if ( + c.recentField == "selectedItems" and + len(c.selectedItems) == 1 and + c.selectedItems[0] == 0 + ): + return "OK: memory_shouldSelectItem_1x" + #} + return "ERR: memory_shouldSelectItem_1x" +#} + +def memory_test_shouldSelectItem_2x( +) -> str: + c = memory_createContext() + c.playfieldSize = 2 + c.recentField = "playfieldSize" + c = memory_shouldGenerateConstPlayfield(c) + + # Select the first two items. + c.selectedId = 0 + c.recentField = "selectedId" + c = memory_shouldSelectItem(c) + c.selectedId = 1 + c.recentField = "selectedId" + c = memory_shouldSelectItem(c) + + # See if 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: memory_shouldSelectItem_2x" + #} + return "ERR: memory_shouldSelectItem_2x" +#} + +def memory_test_shouldSelectItem_3x( +) -> str: + c = memory_createContext() + c.playfieldSize = 2 + c.recentField = "playfieldSize" + c = memory_shouldGenerateConstPlayfield(c) + + # Select three items. + c.selectedId = 0 + c.recentField = "selectedId" + c = memory_shouldSelectItem(c) + c.selectedId = 1 + c.recentField = "selectedId" + c = memory_shouldSelectItem(c) + c.selectedId = 2 + c.recentField = "selectedId" + c = memory_shouldSelectItem(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: memory_shouldSelectItem_3x" + #} + return "ERR: memory_shouldSelectItem_3x" +#}