PowerShell v2 +, 81 octets
param($n)($b=$n[$n.count..0]-join','-replace'(\d+),\1','($1*2)'|iex)[$b.count..0]
Prend l'entrée en tant que tableau explicite $n, l'inverse $n[$n.count..0], -joins les éléments avec une virgule, puis regex est -replaceune paire de chiffres correspondante avec le premier élément, a *2, et entourée de parenthèses. Les tubes qui résultent (qui @(2,2,4,4)ressemblera à l' entrée (4*2),(2*2)) à iex(abrégé Invoke-Expressionet similaire à eval), qui convertit la multiplication en nombres réels. Stocke le tableau résultant dans $b, encapsule celui-ci entre parenthèses pour le placer sur le pipeline, puis l'inverse $bavec [$b.count..0]. Laisse les éléments résultants sur le pipeline et la sortie est implicite.
Cas de test
NB-- Dans PowerShell, le concept de "retourner" un tableau vide n'a pas de sens - il est converti$nullen dès qu'il quitte la portée - et équivaut donc à ne rien renvoyer, ce qui est fait ici dans le premier exemple. (après quelques erreurs vachement verbeuses). De plus, la sortie ici est séparée par des espaces, car c'est le séparateur par défaut pour les tableaux stringifiés.
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