【问题标题】:How can I test the length of all the characters in a list and adjust the location of Output( based on the length?如何测试列表中所有字符的长度并调整输出的位置(基于长度?
【发布时间】:2020-01-17 19:09:53
【问题描述】:

我编写了一个程序来滚动 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

示例输出如下所示:

___{8,10,9,10,9,15}_______| 

另一个可能是这样的

___{13,9,14,11,9,10}______|

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

请注意,它总是从一个位置开始,但其余位置在不同的位置。

如果屏幕尺寸很重要,这是 TI-84 Plus CE

【问题讨论】:

    标签: list output ti-basic


    【解决方案1】:

    字符串是你的朋友!

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

    这是工作代码 sn-p。

    toString(∟STATS(1))→Str0
    For(I,2,6,1
    Str0+" "+toString(∟STATS(I))→Str0
    End
    

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

    ClrHome
    While not(getKey
    Output(5,(int(length(Str0)/2-2)),Str0
    End
    

    所以完整的工作代码是

    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
    toString(∟STATS(1))→Str0
    For(I,2,6,1
    Str0+" "+toString(∟STATS(I))→Str0
    End
    ClrHome
    While not(getKey
    Output(5,(int(length(Str0)/2-2)),Str0
    End
    ClrHome
    SetUpEditor
    

    【讨论】:

      【解决方案2】:

      自从我使用我的 TI 已经很久了,但我认为您必须遍历数组并依次输出每个数字。根据索引和数字的大小定位每个。类似的东西

      For (X, 1, dim(STATS), 1)
      Output (5,floor(1+3X+∟STATS(X)/2),∟STATS(X)
      End
      

      【讨论】:

      • 试着看看我的答案,看看我是如何解决这个问题的。我不记得看到过地板功能,也不知道它的作用,所以这并没有真正的帮助。
      • @Himitsu_no_Yami - 对于您的版本,INT( 应该返回与 floor() 相同的结果。
      • 我尝试将 floor 替换为 int 并且输出很糟糕,并且在某些情况下与自身重叠(在 while 循环中会导致它们不断地相互覆盖)跨度>
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-07
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      • 2011-04-27
      • 1970-01-01
      • 2011-12-13
      相关资源
      最近更新 更多