我的炉子温度是多少?
我的炉灶有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(1015
++8*0=<;)/@
。@,] 请联机试用!
0(1015
++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 C3RETexpander,41 bytes 接受0表示+和1表示-.
}{0quot;+1^1-0=v`158*v
lt;,<;+lt;^10 联机试用!
a循环并基于输入}向下@朝向-1和mod 1515(将-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
免责声明:
本页内容仅代表作者本人意见,若因此产生任何纠纷由作者本人负责,概与琴岛网公司无关。本页内容仅供参考,请您根据自身实际情况谨慎操作。尤其涉及您或第三方利益等事项,请咨询专业人士处理。