PowerShell v2 +, 81 bytes
param($n)($b=$n[$n.count..0]-join','-replace'(\d+),\1','($1*2)'|iex)[$b.count..0]
Toma la entrada como una matriz explícita $n
, la invierte $n[$n.count..0]
, -join
junta los elementos con una coma, luego regexifica -replace
un par de dígitos coincidentes con el primer elemento, a *2
, y está rodeado por pares. Tuberías que resultan (que @(2,2,4,4)
se verá como entrada (4*2),(2*2)
) a iex
(abreviatura Invoke-Expression
y similar a eval
), que convierte la multiplicación en números reales. Almacena la matriz resultante en $b
, encapsula eso en parens para colocarlo en la tubería, luego invierte $b
con [$b.count..0]
. Deja los elementos resultantes en la tubería, y la salida es implícita.
Casos de prueba
NB: en PowerShell, el concepto de "devolver" una matriz vacía no tiene sentido, se convierte en$null
tan pronto como sale del alcance, por lo que es el equivalente a no devolver nada, que es lo que se hace aquí en el primer ejemplo (después de algunos errores malvadamente verbosos). Además, la salida aquí está separada por espacios, ya que es el separador predeterminado para las matrices en cadena.
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