बाइट गिनती आईएसओ 8859-1 एन्कोडिंग मानती है।
10$*
1
,1$`
,1+
$_¶
(?<=(¶?.+)+)1
$#1$*
1{10}1?
,(1*)
$.1
इसे ऑनलाइन आज़माएं!
व्याख्या
एक और कार्यान्वयन ...% 11% 10 एल्गोरिथ्म। रेगेक्स के साथ करने का मज़ेदार हिस्सा यह है कि हम एक ही बार में दोनों मोडुलो कंप्यूटेशन का ध्यान रख सकते हैं।
10$*
स्ट्रिंग को प्रारंभिक रूप से दस 1
एस।
1
,1$`
उनमें से प्रत्येक को अल्पविराम, एक, और उपसर्ग को उस एक के सामने बदलें। यह देता है ,1,11,...,1111111111
, यानी एक unary रेंज।
,1+
$_¶
अब प्रत्येक रेंज तत्वों को एक लाइनफीड द्वारा पूरे स्ट्रिंग के साथ बदलें। यह हमें वर्तमान कॉलम को इंगित करने वाली संख्याओं का 10x10 ग्रिड देता है।
(?<=(¶?.+)+)1
$#1$*
प्रत्येक को मिलाएं 1
और निर्धारित करें कि समूह एक को दोहराते हुए वह किस पंक्ति पर है। इसके 1
साथ कई 1
एस बदलें । यह पंक्ति के 1-आधारित सूचकांक द्वारा प्रत्येक पंक्ति में मूल्यों को गुणा करता है।
1{10}1?
अब करते हैं mod 11, mod 10 एक स्टेप में। मॉड 11 करने के लिए , हम आम तौर 1{11}
पर स्ट्रिंग से बचे रहने के लिए स्ट्रिंग से सभी को हटा देंगे । और फिर हम उसके 1{10}
बाद निकाल देंगे । लेकिन अगर हम 1
संभव हो तो दस एस प्लस को हटा दें , रेगेक्स इंजन का लालच हमारे लिए संभव के रूप में लंबे समय तक मॉड 11 करेगा , और यदि नहीं, तो यह कम से कम 10 मॉड की कोशिश करेगा ।
,(1*)
$.1
अंत में, हम प्रत्येक संख्या को दशमलव में बदलकर उसकी लंबाई के साथ बदल देते हैं।