首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >逆向数学循环

逆向数学循环
EN

Code Golf用户
提问于 2017-09-11 19:28:27
回答 6查看 1.7K关注 0票数 19

启发

在链接挑战中,我们被要求对输入数组的原始元素和反向元素进行添加。在这个挑战中,通过引入其他基本的数学运算,我们将使它变得更加困难。

给定一个整数数组,循环通过+, *, -, //, %, ^,其中//是整数除法,^是指数,同时将它应用到数组的反面。或者,换句话说,将上述函数中的一个应用于数组的每个元素,第二个参数是数组的反面,函数在上面的列表中循环应用。这可能仍然是令人困惑的,所以让我们通过一个例子。

代码语言:javascript
复制
Input:   [1, 2, 3, 4, 5, 6, 7, 8, 9]
Reverse: [9, 8, 7, 6, 5, 4, 3, 2, 1]

         [ 1,  2,  3,  4,  5,    6,  7,  8,  9]
Operand:   +   *   -   /   %     ^   +   *   -
         [ 9,  8,  7,  6,  5,    4,  3,  2,  1]

Result:  [10, 16, -4,  0,  0, 1296, 10, 16,  8]

所以[1, 2, 3, 4, 5, 6, 7, 8, 9]的输出将是[10, 16, -4, 0, 0, 1296, 10, 16, 8]

若要覆盖角情况,输入将永远不包含0,但可能包含从负无穷到正无穷的范围内的任何其他整数。如果需要,可以将输入作为表示数字的字符串列表。

测试用例

代码语言:javascript
复制
input => output

[1, 2, 3, 4, 5, 6, 7, 8, 9]     => [10, 16, -4, 0, 0, 1296, 10, 16, 8]
[5, 3, 6, 1, 1]                 => [6, 3, 0, 0, 1]
[2, 1, 8]                       => [10, 1, 6]
[11, 4, -17, 15, 2, 361, 5, 28] => [39, 20, -378, 7, 2, 3.32948887119979e-44, 9, 308]

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

EN

回答 6

Code Golf用户

发布于 2017-09-11 20:05:14

Python 2,67字节

-3字节,这要归功于ovs。

代码语言:javascript
复制
lambda l:[eval(j+'*+*-/%*'[-~i%6::6]+l[~i])for i,j in enumerate(l)]

在网上试试!

Python 2,95字节

代码语言:javascript
复制
lambda l:[[add,mul,sub,div,mod,pow][i%6](v,l[~i])for i,v in enumerate(l)]
from operator import*

在网上试试!

eval是邪恶的。但也许更金一些。:P

票数 3
EN

Code Golf用户

发布于 2017-09-11 21:00:59

05AB1E,18字节

代码语言:javascript
复制
Â"+*-÷%m"Ig×)øε`.V

在网上试试!

解释

代码语言:javascript
复制
                    # push a reversed copy of the input
 "+*-÷%m"            # push the list of operators
         Ig×         # repeat it input times
            )ø       # zip together
              ε      # apply to each triplet
               `     # push separately to stack
                .V   # evaluate
票数 3
EN

Code Golf用户

发布于 2022-05-07 04:33:20

因子 + sequences.repeating,69字节

代码语言:javascript
复制
[ dup reverse { + * - /i mod ^ } over length cycle [ execute ] 3map ]

在网上试试!

怎么做?

代码语言:javascript
复制
                    ! { 1 2 3 4 5 6 7 8 9 }
dup                 ! { 1 2 3 4 5 6 7 8 9 } { 1 2 3 4 5 6 7 8 9 }
reverse             ! { 1 2 3 4 5 6 7 8 9 } { 9 8 7 6 5 4 3 2 1 }
{ + * - /i mod ^ }  ! { 1 2 3 4 5 6 7 8 9 } { 9 8 7 6 5 4 3 2 1 } { + * - /i mod ^ }
over                ! { 1 2 3 4 5 6 7 8 9 } { 9 8 7 6 5 4 3 2 1 } { + * - /i mod ^ } { 9 8 7 6 5 4 3 2 1 }
length              ! { 1 2 3 4 5 6 7 8 9 } { 9 8 7 6 5 4 3 2 1 } { + * - /i mod ^ } 9
cycle               ! { 1 2 3 4 5 6 7 8 9 } { 9 8 7 6 5 4 3 2 1 } { + * - /i mod ^ + * - }
[ execute ] 3map    ! { 10 16 -4 0 0 1296 10 16 8 }
票数 2
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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