পাওয়ারশেল ভি 4, 144 বাইট
$d=date;gjb|rjb
1..20|%{sajb{$x=date;sleep 3;((date)-$x).Ticks/1e7}>$null}
while(gjb -s "Running"){}(gjb|rcjb)-join'+'|iex
((date)-$d).Ticks/1e7
এর $d
সমান সেট করে Get-Date
এবং এর সাথে বিদ্যমান যে কোনও কাজের ইতিহাসকে সাফ করে দেয় Get-Job | Remove-Job
। তারপরে আমরা লুপ করি 1..20|%{...}
এবং প্রতিটি পুনরাবৃত্তি Start-Job
এটি {$x=date;sleep 3;((date)-$x).ticks/1e7}
কাজের জন্য স্ক্রিপ্ট ব্লকটি পাস করে চালিত করে (যার অর্থ প্রতিটি কাজ script স্ক্রিপ্ট ব্লকটি কার্যকর করে)। ফিরে >$null
আসা প্রতিক্রিয়াগুলি (যেমন, কাজের নাম, স্থিতি ইত্যাদি) দমন করার জন্য আমরা সেই আউটপুটটি পাইপ করি ।
স্ক্রিপ্ট ব্লকটি সেট $x
হয় Get-Date
, তারপরে সেকেন্ডের Start-Sleep
জন্য 3
, তারপরে একটি নতুন Get-Date
পঠন লাগে , বিয়োগ করে $x
, পায় .Ticks
, এবং 1e7
সেকেন্ডগুলি পেতে (স্পষ্টতা সহ) ভাগ করে ।
মূল থ্রেডে ফিরে আসা, যতক্ষণ না কোনও কাজ এখনও -S
তাতাস থাকে "Running"
, আমরা খালি while
লুপের ভিতরে স্পিন করি । এটি শেষ হয়ে গেলে, আমরা Get-Job
বিদ্যমান সমস্ত কাজের জন্য অবজেক্ট টানতে পারি Receive-Job
, এসপিডিউটের সমতুল্য (যেমন, তারা কী আউটপুট দেয়) সমেত টানবে এমন পাইপ, -join
ফলাফলগুলি একসাথে +
, এবং এটিতে পাইপ iex
( Invoke-Expression
এবং অনুরূপ eval
)। এটি ফলাফলের ঘুমের সময় ওভারহেড আউটপুট দেবে।
চূড়ান্ত লাইনটি একই রকম, এটি একটি নতুন তারিখ পায়, মূল তারিখের স্ট্যাম্পটি বিয়োগ করে $d
, পায় .Ticks
, এবং 1e7
নির্বাহের মোট সময়কে ভাগ করে দেয়।
বিশেষ দ্রষ্টব্য
ঠিক আছে, সুতরাং এটি নিয়মগুলির সামান্য বাঁকানো । স্পষ্টতই প্রথম সম্পাদনের সময়, পাওয়ারশেলকে বিভিন্ন থ্রেড ক্রিয়াকলাপের জন্য ডিস্ক থেকে .NET অ্যাসেম্বলিগুলির একটি গুচ্ছ লোড করতে হবে কারণ সেগুলি ডিফল্ট শেল প্রোফাইলের সাথে লোড হয় না। পরবর্তী মৃত্যুদণ্ড কার্যকর করা, কারণ সমাবেশগুলি ইতিমধ্যে স্মৃতিতে রয়েছে, ঠিক আছে। যদি আপনি শেল উইন্ডোটি দীর্ঘসময় অলসভাবে ফেলে রাখেন, আপনি পাওয়ারশেলের অন্তর্নির্মিত আবর্জনা সংগ্রহ বরাবর আসবেন এবং সেগুলি অ্যাসেমসিলগুলি আনলোড করুন , পরবর্তী ক্রিয়াকলাপটি পুনরায় লোড হওয়ার সাথে সাথে পরবর্তী কার্যনির্বাহীটিকে দীর্ঘ সময় দিতে হবে। আমি এই কাছাকাছি উপায় সম্পর্কে নিশ্চিত নই।
আপনি এটি নীচের রানগুলিতে কার্যকর সময়ে দেখতে পাবেন। আমি একটি নতুন শেল শুরু করেছি, আমার গল্ফ ডিরেক্টরিতে নেভিগেট করেছি এবং স্ক্রিপ্টটি সম্পাদন করেছি। প্রথম রানটি ভয়াবহ ছিল, তবে দ্বিতীয়টি (অবিলম্বে মৃত্যুদন্ড কার্যকর করা) ভাল কাজ করেছিল। আমি আবর্জনা সংগ্রহের জন্য কয়েক মিনিটের জন্য শেল নিষ্ক্রিয় রেখে দিয়েছিলাম এবং তারপরে সেই রান আবার দীর্ঘ হয় তবে পরবর্তী রানগুলি আবার ঠিকঠাক কাজ করে।
উদাহরণ রান
Windows PowerShell
Copyright (C) 2014 Microsoft Corporation. All rights reserved.
PS H:\> c:
PS C:\> cd C:\Tools\Scripts\golfing
PS C:\Tools\Scripts\golfing> .\wait-a-minute.ps1
63.232359
67.8403415
PS C:\Tools\Scripts\golfing> .\wait-a-minute.ps1
61.0809705
8.8991164
PS C:\Tools\Scripts\golfing> .\wait-a-minute.ps1
62.5791712
67.3228933
PS C:\Tools\Scripts\golfing> .\wait-a-minute.ps1
61.1303589
8.5939405
PS C:\Tools\Scripts\golfing> .\wait-a-minute.ps1
61.3210352
8.6386886
PS C:\Tools\Scripts\golfing>