পাওয়ারশেল, 89 বাইট
"$args"-notmatch'(.)(.*)(.)'-or(($m=$Matches).1-ge$m.3-and(.\g(''+(+$m.1+$m.3)%10+$m.2)))
গুরুত্বপূর্ণ! স্ক্রিপ্ট নিজেকে পুনরাবৃত্তি বলে। সুতরাং স্ক্রিপ্ট হিসাবে সংরক্ষণ করুনg.ps1
বর্তমান ডিরেক্টরিতে ফাইল । এছাড়াও আপনি স্ক্রিপ্ট ফাইল পরিবর্তে স্ক্রিপ্ট ব্লক পরিবর্তনশীল কল করতে পারেন (নীচের পরীক্ষার স্ক্রিপ্ট দেখুন)। এই কলগুলির দৈর্ঘ্য একই।
দ্রষ্টব্য 1: স্ক্রিপ্টটি লজিক অপারেটরগুলির অলস মূল্যায়ন -or
এবং ব্যবহার করে -and
। যদি "$args"-notmatch'(.)(.*)(.)'
হয় True
তবে এর সঠিক subexpression -or
মূল্যায়ন করা হয় না। এছাড়াও যদি ($m=$Matches).1-ge$m.3
হয় False
তবে এর ডান subexpression -and
খুব মূল্যায়ন করা হয় না। সুতরাং আমরা অসীম পুনরাবৃত্তি এড়াতে।
দ্রষ্টব্য 2: নিয়মিত এক্সপ্রেশনটিতে '(.)(.*)(.)'
সূচনা এবং শেষ অ্যাঙ্কর থাকে না কারণ অভিব্যক্তিটি(.*)
ডিফল্টরূপে লোভী।
পরীক্ষার স্ক্রিপ্ট
$g={
"$args"-notmatch'(.)(.*)(.)'-or(($m=$Matches).1-ge$m.3-and(&$g(''+(+$m.1+$m.3)%10+$m.2)))
}
@(
,(2632, $true)
,(92258, $true)
,(60282, $true)
,(38410, $true)
,(3210, $true)
,(2302, $true)
,(2742, $true)
,(8628, $true)
,(6793, $true)
,(1, $true)
,(2, $true)
,(10, $true)
,(100, $true)
,(55, $true)
,(121, $true)
,(6724, $false)
,(47, $false)
,(472, $false)
,(60247, $false)
,(33265, $false)
,(79350, $false)
,(83147, $false)
,(93101, $false)
,(57088, $false)
,(69513, $false)
,(62738, $false)
,(54754, $false)
,(23931, $false)
,(7164, $false)
,(5289, $false)
,(3435, $false)
,(3949, $false)
,(8630, $false)
,(5018, $false)
,(6715, $false)
,(340, $false)
,(2194, $false)
) | %{
$n,$expected = $_
#$result = .\g $n # uncomment this line to call a script file g.ps1
$result = &$g $n # uncomment this line to call a script block variable $g
# the script block call and the script file call has same length
"$($result-eq-$expected): $result <- $n"
}
আউটপুট:
True: True <- 2632
True: True <- 92258
True: True <- 60282
True: True <- 38410
True: True <- 3210
True: True <- 2302
True: True <- 2742
True: True <- 8628
True: True <- 6793
True: True <- 1
True: True <- 2
True: True <- 10
True: True <- 100
True: True <- 55
True: True <- 121
True: False <- 6724
True: False <- 47
True: False <- 472
True: False <- 60247
True: False <- 33265
True: False <- 79350
True: False <- 83147
True: False <- 93101
True: False <- 57088
True: False <- 69513
True: False <- 62738
True: False <- 54754
True: False <- 23931
True: False <- 7164
True: False <- 5289
True: False <- 3435
True: False <- 3949
True: False <- 8630
True: False <- 5018
True: False <- 6715
True: False <- 340
True: False <- 2194
পাওয়ারশেল, 90 বাইট
কোন পুনরাবৃত্তি। কোনও ফাইলের নাম নির্ভরতা এবং কোনও স্ক্রিপ্ট ব্লকের নাম নির্ভরতা নেই।
for($s="$args";$s[1]-and$s-ge$s%10){$s=''+(2+$s[0]+$s)%10+($s|% S*g 1($s.Length-2))}!$s[1]
একটি পাওয়ারশেল সুস্পষ্টভাবে ডান অপরেন্ডকে এক প্রকারের বাম অপারেণ্ডে রূপান্তর করে। সুতরাং, $s-ge$s%10
ডান অপরেন্ড $s%10
হিসাবে গণনা করে integer
এবং এটির তুলনা করুন string
কারণ বাম অপারেন্ডের ধরণ string
। এবং 2+$s[0]+$s
একটি চর $s[0]
এবং স্ট্রিংকে রূপান্তর $s
করে integer
কারণ বাম অপারেন্ডটি 2
পূর্ণসংখ্যা।
$s|% S*g 1($s.Length-2)
একটি হল শর্টকাট থেকে$s.Substring(1,($s.Length-2))