给予该信用的人信用。
对象给定整数N > 0,减去最小整数A、B和C,以便:
A、B和C都严格大于N;2划分A;3划分B;4对C进行了划分。这是一个代码-高尔夫,所以最短的答案以字节为单位获胜。
N => A, B, C
1 => 2, 3, 4
4 => 6, 6, 8
43 => 44, 45, 44
123 => 124, 126, 124
420 => 422, 423, 424
31415 => 31416, 31416, 31416
1081177 => 1081178, 1081179, 1081180发布于 2016-05-16 03:19:31
~%2r4¤+‘在网上试试!或验证所有测试用例.
~%2r4¤+‘ Main link. Argument: n (integer)
~ Bitwise NOT; yield ~n = -(n + 1).
¤ Combine the three links to the left into a niladic chain:
2 Yield 2.
r4 Yield the range from 2 to 4, i.e., [2, 3, 4].
% Yield the remainder of the division of ~n by 2, 3 and 4.
In Python/Jelly, -(n + 1) % k = k - (n + 1) % k if n, k > 0.
‘ Yield n + 1.
+ Add each modulus to n + 1.发布于 2016-05-16 03:43:45
lambda n:[n+2&-2,n/3*3+3,n+4&-4]位算法用于2和4,模块算法用于3。
我在k的下一个n上找到了4个7字节的表达式,但没有一个更短:
n-n%k+k
~n%k-~n
n/k*k+k
~n/k*-k当k=2,3,4复制时,任何一个字节都会给出34个字节,如果合并,则为33个字节:
[n/2*2+2,n/3*3+3,n/4*4+4]
[n/k*k+k for k in 2,3,4]但是,2和4是2的幂,允许比特技巧将最后的1或2个字节为零。
n+2&-2
n+4&-4这为获得下一个倍数提供了6个字节(而不是7个字节),总共32字节,超过了for k in 2,3,4。
不幸的是,看起来很有前途的n|1+1和n|3+1首先完成了加法,因此增加输出时使用括号。
发布于 2016-05-16 03:23:37
n->n-n%(r=2:4)+r在网上试试!
https://codegolf.stackexchange.com/questions/79980
复制相似问题