Powershell, 89 byte
"$args"-notmatch'(.)(.*)(.)'-or(($m=$Matches).1-ge$m.3-and(.\g(''+(+$m.1+$m.3)%10+$m.2)))
Quan trọng! Kịch bản gọi chính nó đệ quy. Vì vậy, tiết kiệm kịch bản như g.ps1
tập tin trong thư mục hiện hành. Ngoài ra, bạn có thể gọi một biến khối tập lệnh thay vì tập tin tập lệnh (xem tập lệnh kiểm tra bên dưới). Các cuộc gọi đó có cùng độ dài.
Lưu ý 1: Kịch bản sử dụng đánh giá lười biếng các toán tử logic -or
và -and
. Nếu "$args"-notmatch'(.)(.*)(.)'
là True
thì sự phụ thuộc đúng của -or
không được đánh giá. Ngoài ra nếu ($m=$Matches).1-ge$m.3
là False
thì sự phụ thuộc đúng của -and
không được đánh giá quá. Vì vậy, chúng tôi tránh đệ quy vô hạn.
Lưu ý 2: Biểu thức chính quy '(.)(.*)(.)'
không chứa neo bắt đầu và kết thúc vì biểu thức (.*)
mặc định là tham lam.
Kịch bản kiểm tra
$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"
}
Đầu ra:
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
Powershell, 90 byte
Không đệ quy. Không phụ thuộc tên tệp và không phụ thuộc tên khối tập lệnh.
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]
Một Powershell ngầm chuyển đổi một toán hạng bên phải thành một loại toán hạng bên trái. Do đó, $s-ge$s%10
tính toán toán hạng phải $s%10
như integer
và so sánh nó như một string
vì kiểu của toán hạng bên trái là string
. Và 2+$s[0]+$s
chuyển đổi một char $s[0]
và chuỗi $s
thành integer
bởi vì toán hạng bên trái 2
là số nguyên.
$s|% S*g 1($s.Length-2)
là một lối tắt đến$s.Substring(1,($s.Length-2))