จอตาติน่า 59 ไบต์
จำนวนไบต์ถือว่าการเข้ารหัส ISO 8859-1
10$*
1
,1$`
,1+
$_¶
(?<=(¶?.+)+)1
$#1$*
1{10}1?
,(1*)
$.1
ลองออนไลน์!
คำอธิบาย
การติดตั้งอัลกอริธึมอื่น... % 11% 10 ส่วนที่สนุกของการทำกับ regex คือเราสามารถดูแลการคำนวณแบบโมดูโลทั้งสองได้ในครั้งเดียว
10$*
เริ่มต้นสายถึงสิบ1
s
1
,1$`
แทนที่แต่ละรายการเหล่านั้นด้วยเครื่องหมายจุลภาคหนึ่งและคำนำหน้าหน้าหนึ่ง สิ่งนี้จะให้,1,11,...,1111111111
นั่นคือช่วงยูนารี
,1+
$_¶
ตอนนี้แทนที่องค์ประกอบแต่ละช่วงด้วยสตริงทั้งหมดตามด้วยตัวป้อนบรรทัด สิ่งนี้ทำให้เรามีตารางจำนวน 10x10 จำนวนของตัวเลขแบบยูนารีที่ระบุคอลัมน์ปัจจุบัน
(?<=(¶?.+)+)1
$#1$*
จับคู่แต่ละ1
แถวแล้วกำหนดว่าแถวใดที่เปิดอยู่โดยทำซ้ำกลุ่มที่มีหลายครั้ง แทนที่1
ด้วยที่หลาย1
s สิ่งนี้จะคูณค่าในแต่ละแถวด้วยดัชนีที่อิงกับ 1 ของแถว
1{10}1?
ทีนี้ลองทำmod 11, mod 10ในขั้นตอนเดียว ในการทำmod 11โดยปกติแล้วเราเพียงแค่ลบทั้งหมดออก1{11}
จากสตริงที่เหลือด้วยส่วนที่เหลือ แล้วเราจะลบ1{10}
หลังจากนั้น แต่ถ้าเราเพียง แต่เอาสิบ1
s บวกอีกถ้าเป็นไปได้ตะกละเครื่องยนต์ regex ที่จะทำmod 11สำหรับเราตราบใดที่เป็นไปได้และถ้าไม่เช่นนั้นก็จะพยายามอย่างน้อยmod 10
,(1*)
$.1
สุดท้ายเราก็แปลงตัวเลขแต่ละตัวให้เป็นทศนิยมโดยแทนที่ด้วยความยาว