如何测试列表中所有字符的长度,并根据长度调整Output()的位置?

Him*_*ami 6 list ti-basic output

我编写了一个程序来统计D&D 5e角色的统计信息。它滚动4d6并放下最低值,然后将该值添加到列表中。总共重复6次,然后将结果输出到屏幕。我希望能够使输出居中,使其看起来不错,并删除列表中的{}括号以及数字之间的逗号。我遇到的问题是我不能只在所有位置输出空格,因为第二个字符之后的所有内容都是可变的。

这是我正在使用的代码。

0?dim(?STATS
For(I,1,6,1
0?dim(?ROLLS
randInt(1,6,4)??ROLLS
1+sum(not(cumSum(?ROLLS=min(?ROLLS))))?X
?ROLLS(X)-min(?ROLLS)??ROLLS(X)
sum(?ROLLS)??STATS(1+dim(?STATS
End
ClrHome
While not(getKey
Output(5,4,?STATS
End
ClrHome
Run Code Online (Sandbox Code Playgroud)

输出示例如下所示:

___{8,10,9,10,9,15}_______| 
Run Code Online (Sandbox Code Playgroud)

另一个可能看起来像这样

___{13,9,14,11,9,10}______|
Run Code Online (Sandbox Code Playgroud)

(|代表屏幕的结尾,_代表空格,但出于宽度原因而显示)

请注意,它总是从一个位置开始,而其他位置则在不同位置。

如果出于屏幕尺寸的考虑,这是TI-84 Plus CE

Him*_*ami 4

弦乐是你的朋友!

\n\n

我和一位朋友讨论过这个问题,她给了我一个想法,将列表元素存储到一个字符串中,然后输出该字符串而不是列表。诀窍在于弄清楚如何将数字存储在字符串中。我找到了toString(对此有帮助的功能。

\n\n

这是工作代码片段。

\n\n
toString(\xe2\x88\x9fSTATS(1))\xe2\x86\x92Str0\nFor(I,2,6,1\nStr0+" "+toString(\xe2\x88\x9fSTATS(I))\xe2\x86\x92Str0\nEnd\n
Run Code Online (Sandbox Code Playgroud)\n\n

这给了我格式很好的数字和空格字符串。我的最后一个问题是如何将其居中,我的朋友再次来拯救我并建议将字符串 /2 的长度作为列坐标。我尝试使用它,但有点偏离中心,所以我减去 2 以获得一列。我这样做的方法在下面的代码中。

\n\n
ClrHome\nWhile not(getKey\nOutput(5,(int(length(Str0)/2-2)),Str0\nEnd\n
Run Code Online (Sandbox Code Playgroud)\n\n

所以完整的工作代码是

\n\n
0\xe2\x86\x92dim(\xe2\x88\x9fSTATS\nFor(I,1,6,1\n0\xe2\x86\x92dim(\xe2\x88\x9fROLLS\nrandInt(1,6,4)\xe2\x86\x92\xe2\x88\x9fROLLS\n1+sum(not(cumSum(\xe2\x88\x9fROLLS=min(\xe2\x88\x9fROLLS))))\xe2\x86\x92X\n\xe2\x88\x9fROLLS(X)-min(\xe2\x88\x9fROLLS)\xe2\x86\x92\xe2\x88\x9fROLLS(X)\nsum(\xe2\x88\x9fROLLS)\xe2\x86\x92\xe2\x88\x9fSTATS(1+dim(\xe2\x88\x9fSTATS\nEnd\ntoString(\xe2\x88\x9fSTATS(1))\xe2\x86\x92Str0\nFor(I,2,6,1\nStr0+" "+toString(\xe2\x88\x9fSTATS(I))\xe2\x86\x92Str0\nEnd\nClrHome\nWhile not(getKey\nOutput(5,(int(length(Str0)/2-2)),Str0\nEnd\nClrHome\nSetUpEditor\n
Run Code Online (Sandbox Code Playgroud)\n