首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >国防部浮标!

国防部浮标!
EN

Code Golf用户
提问于 2017-02-24 16:40:40
回答 10查看 1.3K关注 0票数 19

三维建模软件主要使用紫外测图将纹理映射到三维对象上。U和V的有效值通常位于一个包含[0..1]的范围内。

挑战

你买了一个新的三维建模软件,这是超级容易使用。然而,它有一个问题:它从UV值中添加或减去一个随机整数。您的任务是创建一个程序或函数,该程序或函数修改一个输入值,以在包含[0..1]的范围内获得一个浮点值。

生成的浮点数应该与原始浮点数相同,并且尽可能接近原始浮点数。由于01都在输出范围内,任何整数0或更少的整数都应该更改为0,而任何整数1或更高的整数都应该更改为1。

JavaScript中的一个示例算法:

代码语言:javascript
运行
复制
function modFloat(input) {
    while (input < 0 || input > 1) {
        if (input < 0) input += 1;
        if (input > 1) input -= 1;
    }
    return input;
}

规则

  • 输入是单个整数或浮点值。只要在您的回答中指定了任何合理的格式,都是允许的。
  • 输出应该是浮点值的十进制表示形式。
  • 输出精度应至少与输入相同的小数位数。
  • 允许尾随零。
  • 确保您的代码正确地为整数输入选择了0或1中的哪一个输出。

测试用例

代码语言:javascript
运行
复制
Input       | Output
------------+---------
         -4 | 0
         -1 | 0
          0 | 0
          1 | 1
          2 | 1
     1.0001 | 0.000100
 678.123456 | 0.123456
-678.123456 | 0.876544
        4.5 | 0.5

这是密码-高尔夫,所以以字节为单位的最短代码获胜!

EN

回答 10

Code Golf用户

发布于 2017-02-24 17:07:49

Python,20字节

代码语言:javascript
运行
复制
lambda x:x%1or+(x>0)

在网上试试!

获取输入模1,然后通过将正输入的输出转换为1来处理边界情况。bool输出将节省两个字节。

代码语言:javascript
运行
复制
lambda x:x%1or x>0
票数 9
EN

Code Golf用户

发布于 2017-02-24 17:24:54

JavaScript (ES6),19字节

代码语言:javascript
运行
复制
n=>(n%1+1)%1||n>0|0

在JavaScript中,n%x返回一个负数,如果n是负数,这意味着如果我们想得到正余数,那么如果n是负值,就必须添加x(n%x+x)%x涵盖所有情况:

代码语言:javascript
运行
复制
n     n%1   n%1+1 (n%1+1)%1
0     0     1     0
1     0     1     0
2.4   0.4   1.4   0.4
-1    0     1     0
-2.4  -0.4  0.6   0.6

另一个20个字节的工作解决方案,它显示了更多的模式:

代码语言:javascript
运行
复制
n=>n%1+(n%1?n<0:n>0)
票数 4
EN

Code Golf用户

发布于 2017-02-24 17:51:01

马蒂尔,9字节

代码语言:javascript
运行
复制
1&\0>yg>+

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

解释

输入678.123456示例

代码语言:javascript
运行
复制
1      % Push 1
       % STACK: 1
&\     % Implicit input. Divmod with 1
       % STACK: 0.123456, 678
0>     % Is it positive?
       % STACK: 0.123456, 1
y      % Duplicate from below
       % STACK: 0.123456, 1, 0.123456
g      % Convert to logical: nonzero becomes 1
       % STACK: 0.123456, 1, 1
>      % Greater than? This is true if fractional part of input was zero
       % and non-fractional part was positive
       % STACK: 0.123456, 0
+      % Add. Implicitly display
       % STACK: 0.123456
票数 3
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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