在 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)
访问权限,实施起来会复杂得多,因为它需要散列。
是否可以在 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)
访问权限,实施起来会复杂得多,因为它需要散列。