PowerShell v2 +, 81 byte
param($n)($b=$n[$n.count..0]-join','-replace'(\d+),\1','($1*2)'|iex)[$b.count..0]
Đưa đầu vào thành một mảng rõ ràng $n
, đảo ngược nó $n[$n.count..0]
, -join
s các phần tử cùng với dấu phẩy, sau đó regex -replace
sa cặp chữ số phù hợp với phần tử đầu tiên, a *2
và được bao quanh trong các ô. Các ống dẫn đến kết quả (mà đầu vào @(2,2,4,4)
sẽ trông giống như (4*2),(2*2)
) iex
(viết tắt Invoke-Expression
và tương tự eval
), chuyển đổi phép nhân thành số thực. Lưu trữ mảng kết quả vào $b
, đóng gói nó trong parens để đặt nó trên đường ống, sau đó đảo ngược $b
với [$b.count..0]
. Để lại các yếu tố kết quả trên đường ống và đầu ra là ẩn.
Các trường hợp thử nghiệm
NB-- Trong PowerShell, khái niệm "trả về" một mảng trống là vô nghĩa - nó được chuyển đổi$null
ngay khi nó rời khỏi phạm vi - và do đó, nó tương đương với việc trả về không có gì, đó là những gì được thực hiện ở đây trong ví dụ đầu tiên (sau một số lỗi dài dòng xấu xa). Ngoài ra, đầu ra ở đây được phân tách bằng dấu cách, vì đó là dấu phân cách mặc định cho các mảng được xâu chuỗi.
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