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
तत्वों को एक अल्पविराम के साथ मिलाता है, फिर -replace
पहले तत्व के साथ regex सा मिलान अंक जोड़ी *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