Skip to content

Instantly share code, notes, and snippets.

@jescalan
Created January 24, 2012 16:44
Show Gist options
  • Save jescalan/1671052 to your computer and use it in GitHub Desktop.
Save jescalan/1671052 to your computer and use it in GitHub Desktop.
numbas
str = "iirytroyppytpeppowuiyoiuypipiyuyotyoiwiytorouqyiepyirueuiprpptwyiroqwtuyipourrrourorwipowiorutpwtwruuioquteorioriyutwqyyprptuqqquuituyywyuoewtrppqwrtiiruirpwyptpuoyyoeyerpqiotuieripurouwuwyuwrworowitoepoypeipeypiireeorrwripuuteoitpuutturruwiyryeetyrioweytueqrrrtotrpiqetoyepoipiwrwpppiritupwipruooiepoweypiuwrqywuuwyiroqpqpruioopuiuerputpwwuuiqwpiroewrtwiqerteoyeqtutwoeoipioiuqiiiouuoqtuuwtuwiiqwppqitywuqpuutrqiyoeuuutwrwtoqrqyoeyoiporuuioiwryoeruypreprqroiyuqwtuyoytoerwqryeeripryieypiwqirtriurueypiuyuypriuiwptywppupoioyrewooytreteeriiwroietuwypieeeeeqpiiiwrirtppoeyiwpooyyporpruwuoriiyowuytiwpwpryeywotoyirqypyypoeptiuwwoyprquoetepptorwiewprpiywwtuieeiweytrrwiqtwotioryoiptyyyuriiqiyroeeiqepwteuwptpruuypipieuoiiuuweeuryuuowporrooyywyyrryriqyirooitirueruptotpryoqtipippyptiurwyiryooywtryyuurtrutwqiqiiiqwouyeooueoturuowiuwrtruwwiupwopwweoo"
key_map = %w[q w e r t y u i o p]
number_map, result = [], []
# map to keyboard character
str.split('').each do |letter|
key_map.each_with_index do |key,index|
number_map << index if letter == key
end
end
# split to pairs
number_pairs = number_map.each_slice(2).to_a
# remove dupes
uniques = number_pairs - number_pairs.inject({}) {|h,v| h[v]=h[v].to_i+1; h}.reject{|k,v| v==1}.keys
# add the remaining pairs
uniques.each { |v| result << v[0] + v[1] }
# great success!
puts result.join
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment