目标:
给定两个自然数(整数从0到无穷大),输出一个不是这些数之和的数字,而是一个自然数。
解决方案示例(TI基础):
A+B+1
not(A+B)
无效的解决方案:
A+B-1
(对于输入0,0
,它返回-1
,这是不自然的)"ABC"
(ABC
不是数字)
笔记:
输出必须始终是两个自然数之和(实际上只是一个自然数)
-1
,undefined
,infinity
,NaN
和错误消息不自然数。就我们的目的而言,0
是自然的(尽管并非所有数学家都同意)。
给定两个自然数(整数从0到无穷大),输出一个不是这些数之和的数字,而是一个自然数。
A+B+1
not(A+B)
A+B-1
(对于输入0,0
,它返回-1
,这是不自然的)
"ABC"
(ABC
不是数字)
输出必须始终是两个自然数之和(实际上只是一个自然数)
-1
,undefined
,infinity
,NaN
和错误消息不自然数。就我们的目的而言,0
是自然的(尽管并非所有数学家都同意)。
Answers:
E
最简单的解决方案是比较A和B是否相等。如果为true,则将其推送为RProgN视为1;否则为false(也称为0)。
0+0 = 1
1+0 = 0
0+1 = 0
1+1 = 1
1
(第一行在换行符之前有一个空格。Stack Exchange不太擅长显示尾随空白。)
输入是十进制数字,以空格分隔(例如12 34
)。该程序只是将空格更改为a 1
,创建了一个太大的数字而不能等于输入数字的总和(它必须比任何一个数字多至少2个数字,将两个数字相加会产生一个输出,该数字比输入数字多不超过1个数字较大的输入)。
0 0
应该也可以。
010
基本上所有整数解析器都将其视为整数。我可以看到一个潜在的参数,该参数0 8
在018
通过一些整数解析器被视为无效八进制的基础上是无效的(尽管其他人认为它是十进制18)。注意,该程序非常乐于处理输入中的前导零,并将它们视为十进制;而且我编写的程序在没有人看到问题的情况下输出其他问题的前导零。是否有与此主题相关的元信息?
.
1
如果您不想自己返回前导零。
[(0,0)].count
在线尝试!将输入作为元组。
对函数使用对象方法可避免创建样板lambda
。
lambda a,b:a-~b # 15 bytes
在这里,想法是映射(0,0)
到1
以及其他所有内容0
。由于仅0+0
给出0
自然数之和,因此始终避免匹配该总和。
如果有人可以在此处输出一个布尔值(我觉得很黑),则可以将一个字节保存为
(0,0).__ge__
这将检查输入元组是否最多(0,0)
,这仅适用于(0,0)
。在Python True==1
和中False==0
。更可疑的是,通过退出代码输出并将其视为Python Boolen将节省两个字节:
[(0,0)].pop
如果允许字符串I / O并且前导零可以,那么有8字节的解决方案
'1'.join
这是级联的a1b
,总是大于a+b
。
int.__eq__
10字节
=
接受两个自然数作为输入并进行比较。如果它们相等,则输出为1
;如果它们不相等,则输出为0
。这与@ATaco的解决方案相同。
x=>y=>!x+y
使用类似currying的语法取2个数字:
(x=>y=>!x+y)(0)(0) // 1
<C-a>gJ
请注意,<C-a>
实际上是ctrl-a,它表示byte 0x01
。
当vim(甚至不是编程语言)可以与高尔夫语言竞争时,我会喜欢它。:)输入格式如下:
a
b
这只是将第一个数字加一个(这是<C-a>
部分),然后将两个数字的字符串表示形式连接在一起。据我所知,这绝对不会导致总和。
({}{}())
这是我写过的最易读的大脑性答案。:)
说明:
( ) # Push the sum of all the following:
{} # The first input
{} # The second input
() # and one
备用解决方案(也是8个字节):
({}[]{}) # Sum + 1
([]{}{}) # Sum + 2
还有许多其他解决方案仅适用于正数:
(<{}>{})
({}<{}>)
({{}}())
({{}()})
({{}}[])
({{}[]})
(a+b)+1
,但a+(b+1)
由于对子,单子链fG
被视为f(a, G(b))
。在这种情况下,这是同一件事,但从技术上讲,它的工作方式不同:P
not(max(Ans
替代解决方案:
10^(sum(Ans 3 bytes @DestructibleWatermelon
not(sum(Ans 3 bytes
1+sum(Ans 4 bytes
Input :X=Y 5 bytes @ATaco
Input :X+not(Y 6 bytes
Input :not(X+Y 6 bytes
Input :10^(X+Y 6 bytes
Input :X+Y+1 7 bytes
Input :not(max(X,Y 7 bytes
Ans(1)=Ans(2 8 bytes
Ans(1)+not(Ans(2 9 bytes
not(Ans(1)+Ans(2 9 bytes
有趣的是,您在TI-Basic中提出了问题的示例,但您忘记了较短的示例A=B
(或者可能是我们要找出答案吗?)
Prompt A,B:
到它们使字节数每个增加到八个字节。
1+##&
输出两个自变量加1的总和。例如1+##&[2,5]
yields 8
。
(旁注:Binomial
虽然几乎是有效的,尽管Binomial[1,0]=1
和Binomial[4,2]=6
都是反例;但我认为它们是唯一的反例。)
Pochhammer
似乎比更好Binomial
。据我所知只有1,0
失败。
KroneckerDelta
适用于所有输入(相当于某些esolang中的相等性检查)。实际上,重新实现的时间要短一些Boole[#==#2]&
,但是我认为您正在寻找的是可以正常使用的内置功能。
a->b->a-~b
。也适用于Java 8,任何版本(因此无需指定OpenJDK 9)
这可能是Hodor编写的最短的程序!
当您在两周的学校假期中无事可做时,就会发生这种情况:生成一堆真正容易编码的笑话语言,但它们什么都不做。耶学校假期!!!
Walder
Hodor?!
Hodor?!
Hodor HODOR!
HODOR!!!
Walder
是霍多尔(Hodor)的原始名称,因此开始该计划需要。
Hodor?!
接受STDIN中的数字或单个字符,并将累加器设置为输入
Hodor
将1加到累加器
HODOR!
将累加器输出为数字
HODOR!!!
杀死霍多尔!不!
这是伪代码:
Take input
Take input
Add 1 to sum(inputs)
Output value
sum(scan()+1)
感谢Jonathan Allan的投入!
00
是0
,也许sep="1"
吗?
cat
它,它是一个完整的程序,替代品将是具有相同字节成本的未命名函数function(a,b)a+b+1
f(c,d){return!c+d;}
非高尔夫版本:
int f(int c,int d)
{
return !c+d;
}
我希望我的规格正确。绝对可以缩短!?
@Pavel感谢您保存2个字节
@Neil感谢您的输入。
()
周围!c+d
吗?
return
,例如return!c+d;
?<.!?)@
或者采用更具可读性的格式,
? <
. ! ?
) @
这超过了当前的11字节Hexagony解决方案。
这将读取第一个数字并向右分支。然后,它读取第二个数字,然后包装并尝试读取第三个数字,但是该数字不存在,因此它读取为0。将其打印并终止程序(请注意,如果a> 0,因为b为非负a + b> 0)。
这将读取第一个数字并向左分支。它到达拐角处,因为数字为0,所以从西北边缘开始沿路线行驶,然后读取第二个数字。它包装,然后递增第二个数字并打印。
它反跳<
,再次打印增加的第二个输入。它增加了该值并再次占据了东北边缘,但这一次是因为当前边缘的非负值增加了两倍,该值肯定为正。然后,它尝试获取第三个输入,但改为接收0。
最后,它包装并被箭头转移,然后尝试读取第四个输入并再次获得0。它包装并尝试读取第五个输入,最后一次接收到0。它进行打印,并包装到@
和退出。
请注意,b *(10 ^ k + 1)* 10> 0 + b = b,其中k是b的长度(以数字为单位),因此可行。
⇲
⇲
+
1
+
↥
机具 x + y + 1
。很基础。它在两条单独的线上接受输入。(顺便说一句,在挑战之后对语言进行了稍微的修改,但只是为了抑制提示输入,不确定该答案是否仍然有效)。
这是较短的,但只有在对语言进行新的更新后才可能:
⇲
⇲
=
$
它使用x == y
,从@ATaco的RProgN解决方案中偷偷偷走的[希望您不要介意(:]。$
出口处的,输出经过它的球数。
slightly after the language
错字,我也认为当语言具有输入提示时,它仍然有效。我认为输出标准不是严格的和不可抑制的输出,我认为