-- 把一个字符串中1存在的位置区间表现出来,例如“00101111110111101110 => 3, 5-10, 12-15, 17-19”
-- mark digit 1 position in a binary string
import Data.List
main = do
print $ digit1Length
"00101111110111101110"
LS0g5oqK5LiA5Liq5a2X56ym5Liy5LitMeWtmOWcqOeahOS9jee9ruWMuumXtOihqOeOsOWHuuadpe+8jOS+i+WmguKAnDAwMTAxMTExMTEwMTExMTAxMTEwID0+IDMsIDUtMTAsIDEyLTE1LCAxNy0xOeKAnQotLSBtYXJrIGRpZ2l0IDEgcG9zaXRpb24gaW4gYSBiaW5hcnkgc3RyaW5nCgppbXBvcnQgRGF0YS5MaXN0CmRpZ2l0MUxlbmd0aCBzdHIgPSBmaWx0ZXIgKFxlIC0+IChmc3QgZSk+MCkgLiAgdGFpbCAuIHNjYW5sIChceiBlIC0+IChpZiAnMSc9PWhlYWQgZSB0aGVuIHNuZCB6ICsgMSBlbHNlIDAsIHNuZCB6ICsgKGxlbmd0aCBlKSkgKSAoMCwwKSAkIGdyb3VwIHN0cgoKbWFpbiA9IGRvCiAgICBwcmludCAkIGRpZ2l0MUxlbmd0aCAiMDAxMDExMTExMTAxMTExMDExMTAiCiAgICBwcmludCAkIG1hcCAoXGUgLT4gaWYgZnN0IGUgPT0gc25kIGUgdGhlbiBzaG93ICQgZnN0IGUgZWxzZSBzaG93IChmc3QgZSkgKysgIi0iICsrIHNob3cgKHNuZCBlKSkgJCBkaWdpdDFMZW5ndGggIjAwMTAxMTExMTEwMTExMTAxMTEwIgoK
[(3,3),(5,10),(12,15),(17,19)]
["3","5-10","12-15","17-19"]