首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >N可被2、3和4整除后的最小整数

N可被2、3和4整除后的最小整数
EN

Code Golf用户
提问于 2016-05-16 03:19:00
回答 30查看 5K关注 0票数 28

给予该信用的人信用

对象给定整数N > 0,减去最小整数ABC,以便:

  1. 所有的ABC都严格大于N
  2. 2划分A
  3. 3划分B
  4. 4C进行了划分。

这是一个代码-高尔夫,所以最短的答案以字节为单位获胜。

测试用例

代码语言:javascript
复制
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
EN

回答 30

Code Golf用户

回答已采纳

发布于 2016-05-16 03:19:31

果冻,8 字节数

代码语言:javascript
复制
~%2r4¤+‘

在网上试试!验证所有测试用例.

是如何工作的

代码语言:javascript
复制
~%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.
票数 17
EN

Code Golf用户

发布于 2016-05-16 03:43:45

Python 2,32字节

代码语言:javascript
复制
lambda n:[n+2&-2,n/3*3+3,n+4&-4]

位算法用于2和4,模块算法用于3。

我在k的下一个n上找到了4个7字节的表达式,但没有一个更短:

代码语言:javascript
复制
n-n%k+k
~n%k-~n
n/k*k+k
~n/k*-k

k=2,3,4复制时,任何一个字节都会给出34个字节,如果合并,则为33个字节:

代码语言:javascript
复制
[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个字节为零。

代码语言:javascript
复制
n+2&-2
n+4&-4

这为获得下一个倍数提供了6个字节(而不是7个字节),总共32字节,超过了for k in 2,3,4

不幸的是,看起来很有前途的n|1+1n|3+1首先完成了加法,因此增加输出时使用括号。

票数 26
EN

Code Golf用户

发布于 2016-05-16 03:23:37

Julia,16字节

代码语言:javascript
复制
n->n-n%(r=2:4)+r

在网上试试!

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

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

复制
相关文章

相似问题

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