Determine if a string is squeezable
func squeeze(str, c) {
str.gsub(Regex("(" + c.escape + ")" + '\1+'), {|s1| s1 })
}
var strings = ["",
'"If I were two-faced, would I be wearing this one?" --- Abraham Lincoln ',
"..1111111111111111111111111111111111111111111111111111111111111117777888",
"I never give 'em hell, I just tell the truth, and they think it's hell. ",
" --- Harry S Truman ",
"😍😀🙌💃😍😍😍🙌"]
var squeeze_these = ["", "-", "7", ".", " -r", "😍"]
[strings, squeeze_these].zip {|str,st|
say " original: «««#{str}»»» (length: #{str.len})"
st.each {|c|
var ssq = squeeze(str, c)
say "'#{c}'-squeezed: «««#{ssq}»»» (length: #{ssq.len})"
}
say ''
}
Output:
original: «««»»» (length: 0)
original: «««"If I were two-faced, would I be wearing this one?" --- Abraham Lincoln »»» (length: 72)
'-'-squeezed: «««"If I were two-faced, would I be wearing this one?" - Abraham Lincoln »»» (length: 70)
original: «««..1111111111111111111111111111111111111111111111111111111111111117777888»»» (length: 72)
'7'-squeezed: «««..1111111111111111111111111111111111111111111111111111111111111117888»»» (length: 69)
original: «««I never give 'em hell, I just tell the truth, and they think it's hell. »»» (length: 72)
'.'-squeezed: «««I never give 'em hell, I just tell the truth, and they think it's hell. »»» (length: 72)
original: ««« --- Harry S Truman »»» (length: 72)
' '-squeezed: ««« --- Harry S Truman »»» (length: 20)
'-'-squeezed: ««« - Harry S Truman »»» (length: 70)
'r'-squeezed: ««« --- Hary S Truman »»» (length: 71)
original: «««😍😀🙌💃😍😍😍🙌»»» (length: 8)
'😍'-squeezed: «««😍😀🙌💃😍🙌»»» (length: 6)
Last updated