递增和递减,同时递增一倍


14

输入:

非空列表/向量,其中每个元素包含一个值/字符,表示如果你能指望向上向下。我将使用1-1,但是您可以选择任何喜欢的东西。您只能使用两个值,而不能分别使用1,2,3...-1,-2,-3...来表示向上和向下。

挑战:

您将使用几何序列1、2、4、8、16、32 ...中的数字。每次开始计数向上或向下,都可以在增量计数1,然后2,然后4上等等。如果更改并开始计数的其他方式,那么你就减1,然后2,然后4等。输出将是最后得到的数字。

例子:

在下面的示例中,第一行是输入,第二行是您要递增/递减的数字,第三行是累积总和,最后一行是输出。

范例1:

1   1   1   1   1   1   1   1   1   1   
1   2   4   8   16  32  64  128 256 512 
1   3   7   15  31  63  127 255 511 1023
1023

范例2:

1   1   1   1   1   1   -1  -1  -1  -1  1   1   1
1   2   4   8   16  32  -1  -2  -4  -8  1   2   4
1   3   7   15  31  63  62  60  56  48  49  51  55
55

如您所见,第一个1-1 “重置”我们正在计算的值,连续的1或序列-1意味着将值加倍。

范例3:

-1  -1  1   1   -1  -1  -1
-1  -2  1   2   -1  -2  -4
-1  -3  -2  0   -1  -3  -7
-7

一些其他测试用例可以解决一些潜在的极端情况。

输入在第一行。输出在第二个。

1
1
-------    
-1
-1
-------
-1   1  -1   1  -1   1  -1   1  -1   1  -1   1
0

这是因此每种语言中提交时间最短的文件将获胜。

Answers:



6

MATL,6个字节

Y'Wq*s

在线尝试!验证所有测试用例

说明

考虑输入[1 1 1 1 1 1 -1 -1 -1 -1 1 1 1]

     % Implicit input
     % STACK: [1 1 1 1 1 1 -1 -1 -1 -1 1 1 1]
Y'   % Run-length encoding
     % STACK: [1 -1 1], [6 4 3]
W    % Exponentiation with base 2, element-wise
     % STACK: [1 -1 1], [64 16 8]
q    % Subtract 1
     % STACK: [1 -1 1], [63 15 7]
*    % Multiply, element-wise
     % STACK: [63 -15 7]
s    % sum of array
     % STACK: 55
     % Implicit display

6

Japt8 6字节

@ETHproductions --2个字节

ò¦ xì2

在线尝试!

说明

隐式输入: [1, 1, 1, -1, -1, -1, -1, 1, 1]

ò¦

ò在不同(¦)元素之间对输入数组()进行分区:
[[1, 1, 1], [-1, -1, -1, -1], [1, 1]]

ì2

将每个分区映射到自己解析为基数数组2ì)的自身:[7, -15, 3]

x

获取x结果数组的总和():-5


好的技术。我相信你可以改变®ì2Ãx,以xì2挽救两个字节。
ETHproductions

@ETHproductions伙计,你到处都是我的帖子。再次感谢!
贾斯汀·马里纳

5

Cubix,65个字节

W(?\q.p)w.;0.w;/0>I!U-unP(nwUs;q\^q:;^!u?P(w!u+w.;;>2p!u/@Os..sr\

在线尝试!

        W ( ? \
        q . p )
        w . ; 0
        . w ; /
0 > I ! U - u n P ( n w U s ; q
\ ^ q : ; ^ ! u ? P ( w ! u + w
. ; ; > 2 p ! u / @ O s . . s r
\ . . . . . . . . . . . . . . .
        . . . .
        . . . .
        . . . .
        . . . .

观看它运行

作为对此的简要说明:

  • 读入每个整数(1或-1)并将其与上一个比较。如果:
    • 同样将其推到底部作为计数器的开始
    • 否则将计数器置顶并适当增加/减少它。
  • 输入完成后,将每个计数器放在顶部,并处理负数2 ^计数器-1
  • 对结果和输出求和

4

JavaScript(ES6),38个字节

a=>a.map(e=>r+=d=d*e>0?d+d:e,r=d=0)&&r

3

R,32个字节

sum((2^(R=rle(scan()))$l-1)*R$v)

在线尝试!

这与此处的其他方法相同。

随着输入 -1 -1 1 1 -1 -1 -1

  • 在输入上执行游程编码。长度为的结果2, 2, 3和值的-1, 1, -1
  • 对长度的乘方做2-1。结果 3, 3, 7
  • 乘以RLE值得出 -3, 3, -7
  • 返回总和 -7



2

C ++ 14,58个字节

[](auto v,int&s){int p=s=0;for(auto x:v)s+=p=x*p<1?x:2*p;}

通过v参数(std::vector或任何可迭代的容器)获取输入,输出到s参数(通过引用)。的每个元素v必须为1-1

用法示例和测试用例。


2

Brachylog,13个字节

ḅ⟨{ȧᵐ~ḃ}×h⟩ᵐ+

在线尝试!

Brachylog使用_代替-

说明:

?ḅ⟨{ȧᵐ~ḃ}×h⟩ᵐ+. Predicate (implicit ?.)
?               The input
 ḅ              A list where its elements' elements are equal, and when concatenated is ?
            ᵐ   The result of mapping this predicate over ?
  ⟨        ⟩      The result of forking two predicates over ? with a third
   {    }           The result of this predicate on ?
     ᵐ                The result of mapping this predicate over ?
    ȧ                   The absolute value of ?
      ~               An input where the result of this predicate over it is ?
       ḃ                A list that represents the digits of ? in base I (default 2)
          h         An object that is the first element of ?
         ×          A number that is the product of ?
             +  A number that is the sum of ?
              . The output




1

CJam(13字节)

{e`{(*2b}%1b}

在线测试套件。这是一个匿名块(函数),它在堆栈上获取一个整数数组,并在堆栈上保留一个整数。最后的测试表明它正确处理了一个空数组,给出0。

该方法是简单的行程编码,然后是每次行程和基本转换的手动行程解码。使用内置的游程长度解码,我可以使用{e`1/:e~2fb1b}或来增加一个字节{e`{ae~2b}%1b}



1

Haskell,54 53字节

k#(a:b:c)=k+last(b:[k*2|a==b])#(b:c)
k#_=k
(#)=<<head

在线尝试!

一个简单的递归,可使累加器加倍 k它将或将其重置为1/ -1并添加每个步骤的值。


0

Mathematica,60个字节

Tr[Last@*Accumulate/@(#[[1]]2^(Range@Tr[1^#]-1)&/@Split@#)]&


0

Java,91个字节

int f(int[]a){int s=0,r=0,i=-1;while(++i<a.length)r+=s=s!=0&s>0==a[i]>0?2*s:a[i];return r;}

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.