在 TI-84 上创建数组并抓取数据

Creating an array and grabbing data on TI-84

是否可以在 TI-84 上创建一个包含大数组的程序并从该数组中获取数据?我会让程序提示一些东西,我想看看它是否能找到在数组中输入的提示。

例如,假设这是数组:

array("SEARCH1" => "ANSWER1", "SEARCH2" => "ANSWER2")

当我输入SEARCH1时,我希望计算器returnANSWER1

TI-BASIC 没有字典

也没有lists/arrays个字符串。但是,可以使用字符串来实现一个。我们将使用 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?

然后访问key对应的值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) 访问权限,实施起来会复杂得多,因为它需要散列。