是否可以在包含大型阵列的TI-84上创建程序并从该阵列获取数据?我会在程序中提示某些东西,我希望它能看到它是否能找到在数组中输入的提示。
例如,让我们说这是数组:
array("SEARCH1" => "ANSWER1", "SEARCH2" => "ANSWER2")
当我输入SEARCH1
时,我希望计算器返回ANSWER1
。
答案 0 :(得分:3)
也没有列表/字符串数组。但是,可以使用字符串实现一个。我们将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)
访问,实现将变得更加复杂,因为它需要散列。