PowerShell v2 +, 81 바이트
param($n)($b=$n[$n.count..0]-join','-replace'(\d+),\1','($1*2)'|iex)[$b.count..0]
명시적인 배열로의 입력을 받아 $n
이를 반전 $n[$n.count..0]
, -join
쉼표 요소를 함께 s가 다음 정규식 -replace
제 소자, 디지트 쌍으로 매칭 SA *2
및 괄호에 둘러싸인. 결과물 (입력 용 )이 (약칭 형 및 유사 @(2,2,4,4)
형 (4*2),(2*2)
) 파이프 로 곱셈을 실제 숫자로 변환합니다. 상점에 결과 배열은 , 괄호에 다음 반전, 파이프 라인에 배치하는 것을 캡슐화 와 함께 . 결과 요소를 파이프 라인에 남겨두고 출력은 암시 적입니다.iex
Invoke-Expression
eval
$b
$b
[$b.count..0]
테스트 사례
NB-- PowerShell에서 빈 배열을 "반환"한다는 개념은 의미가 없습니다.$null
범위를 벗어나 자마자변환되므로 아무것도 반환하지 않는 것과 같습니다. (사악한 장황한 오류 후). 또한 출력은 문자열 배열의 기본 구분 기호이므로 공백으로 구분됩니다.
PS C:\Tools\Scripts\golfing> @(),@(2,2,4,4),@(2,2,2,4,4,8),@(2,2,2,2),@(4,4,2,8,8,2),@(1024,1024,512,512,256,256),@(3,3,3,1,1,7,5,5,5,5)|%{"$_ --> "+(.\2048-like-array-shift.ps1 $_)}
Invoke-Expression : Cannot bind argument to parameter 'Command' because it is an empty string.
At C:\Tools\Scripts\golfing\2048-like-array-shift.ps1:7 char:67
+ param($n)($b=$n[$n.count..0]-join','-replace'(\d+),\1','($1*2)'|iex)[$b.count. ...
+ ~~~
+ CategoryInfo : InvalidData: (:String) [Invoke-Expression], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorEmptyStringNotAllowed,Microsoft.PowerShell.Commands.InvokeExpressionCommand
Cannot index into a null array.
At C:\Tools\Scripts\golfing\2048-like-array-shift.ps1:7 char:13
+ param($n)($b=$n[$n.count..0]-join','-replace'(\d+),\1','($1*2)'|iex)[$b.count. ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : NullArray
-->
2 2 4 4 --> 4 8
2 2 2 4 4 8 --> 2 4 8 8
2 2 2 2 --> 4 4
4 4 2 8 8 2 --> 8 2 16 2
1024 1024 512 512 256 256 --> 2048 1024 512
3 3 3 1 1 7 5 5 5 5 --> 3 6 2 7 10 10