পাওয়ারশেল ভি 2 +, 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
প্রথম উপাদান, ক *2
এবং প্যারেন্সের চারপাশে ঘিরে অঙ্কের জুড়ি মেলাতে রেজিেক্স। যে পাইপগুলি ফলাফল দেয় (যা ইনপুটটির জন্য @(2,2,4,4)
দেখতে ভাল হবে (4*2),(2*2)
) এর উপর iex
(সংক্ষিপ্ত Invoke-Expression
এবং এর অনুরূপ eval
), যা গুণকে প্রকৃত সংখ্যায় রূপান্তর করে। ফলস্বরূপ অ্যারে এতে সঞ্চয় $b
করে, পাইপলাইনে এটি প্যারেন্সে রাখার জন্য এনপ্যাপুলেট করে, তারপরে বিপরীত $b
হয় [$b.count..0]
। পাইপলাইনে ফলাফলের উপাদানগুলি ফেলে দেয় এবং আউটপুট অন্তর্ভুক্ত থাকে।
পরীক্ষার মামলা
এনবি-- পাওয়ারশেলের ক্ষেত্রে, খালি অ্যারে "ফিরিয়ে দেওয়া" ধারণাটি অর্থহীন - এটি$null
সুযোগ ছাড়ার সাথে সাথেই এতেরূপান্তরিত হয়- এবং তাই এটি কিছুই না ফেরার সমতুল্য, যা এখানে প্রথম উদাহরণে করা হয়েছে (কিছু দুষ্টুভাবে verbose ত্রুটি পরে)। অতিরিক্ত হিসাবে, এখানে আউটপুট স্থান-বিচ্ছিন্ন, কারণ এটি স্ট্রিংযুক্ত অ্যারেগুলির জন্য ডিফল্ট বিভাজক।
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