是否可以在TI-84上創建一個包含大型數組並從該數組獲取數據的程序?我會讓程序提示某些內容,我希望它能看到它是否能夠找到在數組中輸入的提示。在TI-84上創建一個數組並獲取數據
例如,讓我們說這是數組:
array("SEARCH1" => "ANSWER1", "SEARCH2" => "ANSWER2")
當我輸入SEARCH1
我想計算器返回ANSWER1
。
是否可以在TI-84上創建一個包含大型數組並從該數組獲取數據的程序?我會讓程序提示某些內容,我希望它能看到它是否能夠找到在數組中輸入的提示。在TI-84上創建一個數組並獲取數據
例如,讓我們說這是數組:
array("SEARCH1" => "ANSWER1", "SEARCH2" => "ANSWER2")
當我輸入SEARCH1
我想計算器返回ANSWER1
。
沒有字符串的列表/數組。但是,可以使用字符串來實現一個。我們將使用Str1
作爲包含所有鍵和值的大字符串。使用分隔符(如?
)來啓動鍵,另一個(如!
)啓動值。您可正是如此代表名單:
//starting delimiter
"?->Str1
//add value "SEARCH1" => "ANSWER1" at end
Str1+"SEARCH1!ANSWER1?→Str1
//add second value
Str1+"SEARCH2!ANSWER2?→Str1
Str1
現在?SEARCH1!ANSWER1?SEARCH2!ANSWER2?
。
然後訪問相應於該鍵Str0
= SEARCH1
值:
"SEARCH1→Str0
inString(Str1,"?"+Str0+"!")+length(Str0)+2 //now Ans = index of key
sub(Str1,Ans,inString(Str1,"?",Ans)-Ans //get the key
的此性能可以通過招數稍微改善。但是,隨着Str1變大,該例程變慢 - 它執行線性搜索,O(n)遍歷整個字符串以找到密鑰。如果你想訪問O(1)
,執行將會更加複雜,因爲它需要散列。
該代碼完美無缺地工作,但是我可以通過提示鍵入Str0嗎?我嘗試過簡單地使用「Prompt Str0」,但是返回錯誤 – Matt
@Matt'Prompt Str0'想要一些評估爲字符串的東西,例如。 '「SEARCH1」',所以你不會收到數據類型錯誤。要輸入不帶引號,請改爲使用「輸入Str0」。 – lirtosiast
歡迎來到Stack Overflow!請發佈[MCVE](https://stackoverflow.com/help/mcve);如果你讓我們知道你已經嘗試了什麼,以及你實際上想要做什麼,你就更有可能在這裏得到幫助。 – dho
我不完全明白。你是否試圖實現一個字典數據結構,其中鍵是字符串,值是字符串? – lirtosiast
@lirtosiast是的,正好。那可能嗎? –