首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我的炉子温度是多少?

我的炉子温度是多少?
EN

Code Golf用户
提问于 2021-02-01 08:44:42
回答 22查看 4.7K关注 0票数 36

我的炉子上有10 (0到9)种不同的热量设置,还有一种非常奇怪的循环方式。

  • 它总是从0开始
  • 当我点击加法时,它会增加这个数字,除非这个数字是9,在这种情况下,它变成0,或者这个数字是0,在这种情况下,它变成9。
  • 当我点击减号时,它会减少这个数字,除非这个数字是零,在这种情况下,它变成了4。

没有其他温度控制按钮。

在这个挑战中,您将使用一串命令和输出作为输入,这些命令和输出设置了我的炉子顶,在运行该序列后结束。

答案将以字节为单位得分,而更少的字节将更好。

输入

您可以以下列任何一种格式输入:

  • 布尔人的列表/数组/向量/流/1或0/1或-1
  • 由两个不同字符组成的字符串(或列表/数组/向量/流)(对程序来说应该是一致的)

你可以输出

  • 范围0-9上的整数。
  • 在范围'0'-'9‘的字符。
  • 一种大小为1的字符串,由上面的内容组成。

测试案例

输入为字符串-表示递减,+作为增量输入。

代码语言:javascript
复制
 : 0
- : 4
+ : 9
-- : 3
-+ : 5
+- : 8
++ : 0
--- : 2
--+ : 4
-+- : 4
-++ : 6
+-- : 7
+-+ : 9
++- : 4
+++ : 9
---- : 1
---+ : 3
EN

回答 22

Code Golf用户

发布于 2021-02-01 09:56:19

生锈,46字节

代码语言:javascript
复制
|x|x.fold(0,|u,v|if u>0{u-v*2+1}else{9>>v}%10)

在网上试试!

取零的Iterator ( +)和1( -),并返回最终的炉子温度。取-1s和1s似乎没有帮助,因为在整数算术中表示(-1,1) -> (4,9)并不简单。

使用Arnauld输入法与位移位技巧作为零大小写。此外,Rust的if- larger表达式可以是较大表达式的一部分,因此%10被排除在外,以避免(u-v*2+1)%10中的括号。

票数 6
EN

Code Golf用户

发布于 2021-02-01 15:44:03

传话,41字节

接受0表示+和1表示-的列表。

代码语言:javascript
复制
  }{
0>?@`"+1
^ 1-0=v
`15|8*v
|<<,<+<
^10

在网上试试!

a循环,基于输入}@向下指向-1和mod 15 |15 (设置-1到14),或者转到+1+ ((a=0) * 8) -因此,如果n为0,则设置为9。我们将两个路径,连接起来,用mod 10 |10得到14 -> 4,10 -> 0。如果输入为空,则a继续?到输出}的旁路径。

(不应该需要在10旁边的^,但我还没有修复这个错误。)

票数 6
EN

Code Golf用户

发布于 2021-02-01 10:39:23

椰子,39字节

将输入作为1/-1的列表

代码语言:javascript
复制
reduce$((p,k)->[k%7-2,p+k][p>0]%10,?,0)

在网上试试!

这使用((-1)%7-2)%10 = (6-2)%10 = 4(1%7-2)%10 = (-1)%10 = 9,这是因为在Python中,模块操作的结果与除数具有相同的符号。

-k%-7将代替k%7-2工作,如果我们在输入中交换-11,则会缩短一个字节,但这感觉就像是滥用了输入格式。

票数 4
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/218360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档