【问题标题】:TI-84 Set Variable Based on Boolean ExpressionTI-84 基于布尔表达式设置变量
【发布时间】:2015-03-08 04:17:36
【问题描述】:

对于 ti-84 程序,我使用二次方程并将加号的根存储为 N,将负号的根存储为 R。然后我只想使用正根作为其余部分的值程序(如果两者都是正面的没关系,我只想检查一个是正面的),所以我做了如下:

If N>0 --> U

ElseR-->U

但它没有用。是否不能在 if-else 语句中使用 store 作为命令?还是有另一种方法只选择正变量并将其存储为 U?

【问题讨论】:

    标签: ti-basic


    【解决方案1】:

    好的,听着。 Blazo 的回答是错误的。每个具有 Else 的 If 语句也需要 Then 和 End。这是在没有分段表达式的情况下编写它的正确方法(但是,分段表达式通常是最好的方法,所以我建议您也查看 dohaqatar 的答案):

    If N>0
    Then
    N->U
    Else
    R->U
    End
    

    使用两个单独的 If,您可以将代码的大小减少 1 个字节到 17 个字节:

    If N>0
    N->U
    If N<=0
    R->U
    

    你可以进一步压缩它,多节省 5 个字节变成 12 个字节:

    R->U
    If N>0
    N->U
    

    你也可以使用分段表达式比如dohaqatar的下面,也是12个字节:

    N<0:RAns+Nnot(Ans->U
    

    最好的部分是,算法更改将代码大小减少到 6 个字节:

    max(R,N->U
    

    【讨论】:

      【解决方案2】:

      这可以通过您的标准IfElse 语句很容易地完成;但是,更快的方法是通过piece-wise functions。在 TI-Basic 中,每个布尔表达式的计算结果为 10,分别表示真和假。可以利用这一事实来使某些条件表达式更短。

      您的代码使用标准 If Else 语法:

      If N>0
      Then
      N→U
      Else
      R→U
      End
      

      此选项长 18 个字节。

      使用分段表达式,您的代码可以压缩成这样:

      N<0:RAns+Nnot(Ans→U
      

      导致一行代码只有 12 个字节长。

      【讨论】:

      • 将算法更改为 max(R,N-&gt;U 可能会更好:D 但我喜欢你的分段表达式。
      • @Timtech 我正要评论你对此的回答。像这样使用max( 的聪明解决方案。我注意到它的另一个好处是不会对复数抛出错误。
      • 是的,优化了一段时间后,我从来没想过要在SO上分享。我很高兴我做到了!
      猜你喜欢
      • 1970-01-01
      • 2015-08-23
      • 1970-01-01
      • 2016-05-29
      • 1970-01-01
      • 1970-01-01
      • 2021-08-27
      • 2014-01-16
      • 2017-02-05
      相关资源
      最近更新 更多