我的炉子温度是多少?

2021-02-02 11:50

我的炉灶有10(0到9)种不同的热量设置和一种非常奇怪的循环方式。它总是从0开始,当我点击加号时它会增加数字,除非数字是9,在这种情况下它会变成0,或者数字

解答动态

  • JavaScript(ES6),38 37 36 bytes 需要一个布尔值数组,对于+为false,对于-为true。返回整数。
    a=gt;a=a++?c级?a-2:a%10:9gt;c)在线试用!
    commented 需要注意的是,a=[true]的++被求值为NaN,因为它首先被强制为字符串“true”,然后被强制为数字。这就是为什么我们可以安全地重用数组a[]来存储温度,即使我们将单例[true]作为输入。
    a=gt;//对于a[]中的每个命令c:a=//更新温度:a++?//如果a是数字且不等于0/(随后递增):c?//如果这是'-':a-2//减去2://else:a%10//应用模10://else:9gt;c//如果这是'-',则产生4;如果这是'+'),则产生9)

    • a//end of map();返回最终结果

      • 05AB1E,16 15 14 12 bytes Input作为列表分别为-/+的-1/1。
        ?vD?≠yè*yOθ 联机尝试或验证所有测试用例。
        Ex夷平面:
        ?#将0和输入列表v#Loop`y`推到输入列表上:D#复制当前值#弹出副本,并检查其是否为0(如果为0,则为1;否则为0)?≠#将压缩整数185 y##索引'y'放入其中(基于0的modulair,因此忽略前导1,而#1→8和-1→5)*#将其乘以==0布尔y#Push'y'O#取堆栈θ#上三个值的和,只保留最后一个数字(代表10→0)#(在循环之后,值作为结果隐式输出) 参见我的05AB1E技巧(如何压缩大整数一节?)要理解为什么≠是185.

        • Rust,46 bytes

          • x

            • x.fold(0,

              • u,v

                • if ugt;gt;(4,9)在整数运算中表示起来并不简单。
                  使用Arnauld的输入法和零位移位技巧。另外,Rust的if else表达式可以是更大表达式的一部分,因此将%10分解以避免(u-v*2+1)%10中的括号。

                  • cocouty,39 bytes 将输入作为1/-1
                    reduce$((p,k)-gt;0]%10的列表,是吗,?,0)在线试用!
                    使用(-1)%7-2)%10=(6-2)%10=4和(1%7-2)%10=(-1)%10=9,这是因为在Python中,模运算的结果与除数有相同的符号。-k%-7将代替k%7-2,如果在输入中交换-1和1,则会短一个字节,但这感觉像是滥用输入格式;foreach(str_split($argv[1])为$k{$k=='+'?($p==0?$p=9:($p==9?$p=0:$p++):($p==0?$p=4:$p--);}echo$p; Example explained
                    $p=0;//设置foreach(str_split($argv[1])为$k){//遍历参数$k=='+'?//如果k是“+”($p==0?//如果p为0$p=9://将p设置为9($p==9?//否则如果是9$p=0://设置为0$p++)//否则递增):($p==0?//如果p为0$p=4://将p设置为4$p--);//否则递减}echo$p;//打印设置 联机试用!-添加字符串作为参数

                    • Retina 0.8.2,33 bytes ^0{T`+09d`\u 9d`^.\+T`-d`\u 4d`^.- 在线试用!链接包括测试套件。前任夷平面:
                      ^0 从加热设置0开始。
                      { 处理所有控制按钮。
                      T`+09d`\u9d`^.\+ 如果控制按钮是加号,然后删除它(通过音译为?)并循环递增数字(T`9d`d是循环递增数字的标准方法),但在将d扩展到01234567前将其列为异常,从而将0改为9。
                      T`-d`\u 4d`^.- 如果控制按钮是负数,则删除它并递减数字,但使用4代替通常9表示循环减量。

                      • C(gcc),58 57 bytes t;f(char*s){表示(t=0;*s;)t=*s++-7?什么?t-1:4:t?-~t%10:9;t=t;}请在线试用!

                        输入一串正负正负钟字符(ASCII 7)和返回炉顶温度。

                        • 脑爆,132 bytes ([[(lt;)
                          输入一串输入和加加加加号钟字符(ASCII 7)和返回炉顶温度。
                          ;脑机,132 bytes ([[[(lt;()gt;){{{{{{{{}{}{}{}{}{{}{}{{{{{{{{{{{}{{{{{}{{{{}{{{}{}{{}{{}}}}{}>;)}{} 在线试用!
                          由于简单的相等性检查(等于0和等于10)而丢失大量字节。

                          • J,24字节 取-1表示-和1表示+。
                            0(10

                            • 15

                              • ++8*0=<;)/@

                                • 。@,] 请联机试用!
                                  0(10

                                  • 15

                                    • ++8*0=<;)/@

                                      • 。@,]0@,]0前加0和…@

                                        • 。从左侧旋转并…()/折叠:0=<;。如果步长和累加器的最小值为0(只有当它们为1/0时才能发生)+8*将8加到…+步长和累加器的总和15

                                          • mod 15得到-1->;14 10

                                            • mod 10得到10-gt;4

                                              • Python 3,对于input()中的k,151 117 bytes p=0:如果k=='+':如果p==0:p=9 elif p==9:p=0否则:p+=1如果p==0:p=4否则:p-=1打印(p) 在线试试吧!
                                                @pxeger公司太好了,谢谢你-35 bytes

                                                • AWK,47 43 bytes 期望每个操作都在一个单独的行上,+表示递增,-表示递减
                                                  /-/{a?a--:a=4}/+/{a=a?++a%10:9}结束{print+a}在线试用!

                                                  • 果冻,14 13字节 1o8 5lt;?如果它不是正确的论点,5个,另外5个。+将正确的参数添加到结果中,%mod 10.

                                                    • x86-16机器码,@Arnauld答案的40 bytes 端口。一定要投他一票!(由于只是一个端口,所以示例运行并不重要。)
                                                      0银行代码:0100 31配电箱E3 23 AC 84配电箱74-14 84 C0 75 04 FE CB EB 1…..#…t…u…..0银行代码:0110 14铁C3 89 D8 B7 0A F6-F7 88 C3 EB 08 B3 09 86……………0银行代码:0120 C8D2 EB 86 C8 E2 DD C3…….. 可调用函数.
                                                      期望[SI]=列表索引(0x00表示-,0x01对于+,CX=列表长度。
                                                      需要一个备用AX。
                                                      函数输出为BL(累加器值)。
                                                      Dis组装:
                                                      0BAC:0100 31DB XOR BX,BX0银行代码:0102 E323川川械注01270银行代码:0104 AC洛兹布0银行代码:0105 84DB试验BL,BL0银行代码:0107 7414京字011D0银行代码:0109 84C0测试AL,AL0银行代码:010B 7504京字01110银行代码:010D FECB12月BL0银行代码:010F EB14JMP 01250型银行代码:0111 FEC3公司BL0银行代码:0113 89D8移动AX,BX0银行代码:0115 B70A移动BH,0A0银行代码:0117 F6F7分区BH0银行代码:0119 88C3移动BL,AL0银行代码:011B EB08JMP 01250型银行代码:011D B309移动BL,090银行代码:011F 86C8化铝,铝银行代码:0121 D2EBSHR BL、CL0银行代码:0123 86C8化铝,铝银行代码:0125 E2DD回路01040银行代码:0127 C3RET

                                                      • expander,41 bytes 接受0表示+和1表示-.
                                                        }{0quot;+1^1-0=v`15

                                                        • 8*v

                                                          • lt;,<;+lt;^10 联机试用!
                                                            a循环并基于输入}向下@朝向-1和mod 15

                                                            • 15(将-1设置为14),或转到+1和+((a=0)*8)–因此,如果n为0,则设置为9。我们连接两条路径,使用mod 10

                                                              • 10我们得到14-gt;0。如果输入为空,a是否继续?到输出的侧路径}.
                                                                (10旁边的^应该不是必需的,但是我还没有修复错误。)

                                                                • Julia,47 bytes l-gt;0?(n+2i-1)%10:4+5i表示i=l];n) 在线试用!

                                                                  • Python 2,50 bytes n=0for b in input():n=[b%7-2,n+b][n>;0]%10打印n 联机试用!
                                                                    将输入取为±1。非常明确地修复了n=0的情况,使b=-1得到4,b=1得到9。可能有更好的方法。
                                                                    50 bytes
                                                                    n=0对于input()中的b:n=((n或9-b%5)+b)%10打印n 联机试用!

                                                                    • Stax,23字节 ╙ù╞{)#Xk?lt;fh/IK?[[z? 运行并调试it
                                                                      作为1和0的列表输入。将很快进一步优化。

                                                                      • carbon,23 bytes ??θfs???ι+%⊕∨θ?χ?∨θ?θiθ 在线试用!链接到详细版本的代码。前任夷平面:
                                                                        ??θ 从heat setting 0开始。
                                                                        fs 循环输入字符串。
                                                                        ???ι+%⊕∨θ?χ?∨θ?θ 如果下一个字符是加号,则取heat setting,如果为0,则取8,并将其模10递增,否则取heat setting,如果为0,则取5,并将其递减。
                                                                        iθ 输出最终结果heat setting.

                                                                        • Japt,@Arnauld对Japt的回答的21 bytes 端口。
                                                                          期望输入是一个二进制数组,其中0表示递增,1表示递减

                                                                          • End

                                                                          免责声明:

                                                                          本页内容仅代表作者本人意见,若因此产生任何纠纷由作者本人负责,概与琴岛网公司无关。本页内容仅供参考,请您根据自身实际情况谨慎操作。尤其涉及您或第三方利益等事项,请咨询专业人士处理。