Skip to content

Instantly share code, notes, and snippets.

@stevenyxu
Created February 7, 2012 23:33
Show Gist options
  • Save stevenyxu/1762982 to your computer and use it in GitHub Desktop.
Save stevenyxu/1762982 to your computer and use it in GitHub Desktop.
# STEP 1
string = "iirytroyppytpeppowuiyoiuypipiyuyotyoiwiytorouqyiepyirueuiprpptwyiroqwtuyipourrrourorwipowiorutpwtwruuioquteorioriyutwqyyprptuqqquuituyywyuoewtrppqwrtiiruirpwyptpuoyyoeyerpqiotuieripurouwuwyuwrworowitoepoypeipeypiireeorrwripuuteoitpuutturruwiyryeetyrioweytueqrrrtotrpiqetoyepoipiwrwpppiritupwipruooiepoweypiuwrqywuuwyiroqpqpruioopuiuerputpwwuuiqwpiroewrtwiqerteoyeqtutwoeoipioiuqiiiouuoqtuuwtuwiiqwppqitywuqpuutrqiyoeuuutwrwtoqrqyoeyoiporuuioiwryoeruypreprqroiyuqwtuyoytoerwqryeeripryieypiwqirtriurueypiuyuypriuiwptywppupoioyrewooytreteeriiwroietuwypieeeeeqpiiiwrirtppoeyiwpooyyporpruwuoriiyowuytiwpwpryeywotoyirqypyypoeptiuwwoyprquoetepptorwiewprpiywwtuieeiweytrrwiqtwotioryoiptyyyuriiqiyroeeiqepwteuwptpruuypipieuoiiuuweeuryuuowporrooyywyyrryriqyirooitirueruptotpryoqtipippyptiurwyiryooywtryyuurtrutwqiqiiiqwouyeooueoturuowiuwrtruwwiupwopwweoo"
letters = %w(q w e r t y u i o p)
map = {}
letters.each_with_index { |letter, index| map[letter] = index }
numbers = string.split('').map {|letter| map[letter] }
# STEP 2
number_pairs = []
pair_buffer = []
numbers.each do |number|
if pair_buffer.length == 2
number_pairs << pair_buffer
pair_buffer = []
end
pair_buffer << number
end
counts = {}
number_pairs.each {|pair| counts[pair] = counts[pair] ? counts[pair]+1 : 1 }
unique_pairs = counts.select {|k,v| v == 1 }.map {|k| k[0] }
# STEP 3-ish
string = ''
number_pairs.each do |pair|
if unique_pairs.include?(pair)
string << (pair[0] + pair[1]).to_s
unique_pairs = unique_pairs - pair
end
end
puts string
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment