def validate
(s
: String
): Boolean
= { val hand1
= s.
slice(0,
4).
reverse val hand2
= s.
slice(6,
10) !hand1.contains("01") && !hand2.contains("01")
}
}
def decode
(s
: String
): Int
= { def decodeInner
(s
: String
): Int
= (if (s.
head == '0') 0 else 5) + s.
tail.
filter(_ == '1').
size decodeInner(s.slice(0, 5).reverse) * 10 + decodeInner(s.slice(5, 10))
}
Seq("0111011100", "1010010000", "0011101110", "0000110000", "1111110001").foreach(s => println(s"$s -> ${if (validate(s)) decode(s) else "Invalid"}"))
}
b2JqZWN0IE1haW4gZXh0ZW5kcyBBcHAgewogIGRlZiB2YWxpZGF0ZShzOiBTdHJpbmcpOiBCb29sZWFuID0gewogICAgaWYgKHMubGVuZ3RoICE9IDEwKSBmYWxzZQogICAgZWxzZSB7CiAgICAgIHZhbCBoYW5kMSA9IHMuc2xpY2UoMCwgNCkucmV2ZXJzZQogICAgICB2YWwgaGFuZDIgPSBzLnNsaWNlKDYsIDEwKQogICAgICAhaGFuZDEuY29udGFpbnMoIjAxIikgJiYgIWhhbmQyLmNvbnRhaW5zKCIwMSIpCiAgICB9CiAgfQoJCiAgZGVmIGRlY29kZShzOiBTdHJpbmcpOiBJbnQgPSB7CiAgICBkZWYgZGVjb2RlSW5uZXIoczogU3RyaW5nKTogSW50ID0gKGlmIChzLmhlYWQgPT0gJzAnKSAwIGVsc2UgNSkgKyBzLnRhaWwuZmlsdGVyKF8gPT0gJzEnKS5zaXplCiAgICBkZWNvZGVJbm5lcihzLnNsaWNlKDAsIDUpLnJldmVyc2UpICogMTAgKyBkZWNvZGVJbm5lcihzLnNsaWNlKDUsIDEwKSkKICB9CgkKICBTZXEoIjAxMTEwMTExMDAiLCAiMTAxMDAxMDAwMCIsICIwMDExMTAxMTEwIiwgIjAwMDAxMTAwMDAiLCAiMTExMTExMDAwMSIpLmZvcmVhY2gocyA9PiBwcmludGxuKHMiJHMgLT4gJHtpZiAodmFsaWRhdGUocykpIGRlY29kZShzKSBlbHNlICJJbnZhbGlkIn0iKSkKfQ==