Skip to content

Instantly share code, notes, and snippets.

@FerPerales
Last active December 13, 2015 16:39
Show Gist options
  • Save FerPerales/4942006 to your computer and use it in GitHub Desktop.
Save FerPerales/4942006 to your computer and use it in GitHub Desktop.
Palindromes
68
oyncbgymhkrgfoosnxrlzmbxxdvyfclg
zqcolemtoatzmvypy
matebobomacbmmegcgbtu
ermcvdvpmyfmrumgywffaguyauuchqpuuhdayewfaq
ynhehazomiqkxqiajevzmxykvnjrxyttowrxakaymkwm
cteonyxcelmaohxgqpslmbzq
djfohodetjbngtfqxjrbjhxdvdngvnenqr
kmntddnpyognls
mjgvquobosirhpoeaqigczyerafadhiiqmkgfadudwlssdrns
qnnjeccqe
mbbqpwrmnzpbwebrimbbmhjnzkwijbhbqbrmkewmr
brtevyjxgrtbityqbksvjnvpbxnwqhnpasniwhtvqkaeq
oalxafblxbllirnlffxicewxayhiumncudqxxpqzttzaalwj
qptferpftufoervlcmz
diylyebqqniudbmnuylfmbewjwjyfjiuiju
omb
awngganw
ukftkdodwtddwhtsetsodecfuhcdbb
dvysjmgxuvncjonauhrkwafkvsdgdqyvfecs
iwifuduokejdenntarjtatktimomoiwrmiomffpjijpfo
mudzueajvzkfslvi
pcakdjjkdrqputgxuvetnsmeadqlvvo
yytqktfbrtkxbftaaxrq
nnspeyhcvbyyhahwsnwyegacopmpphvpbpmosgsns
ikjlaz
vnswwsvlnkwvlwhkyhvtythh
nlufazeoqpjlnujwjcxfoiswlqxwzxxqstokvln
gmlquegdxeyxmhspomoyhadwnijuzbxshkehbfv
hzbhrxfemhbibhfbrewenibfmbnbbzbbefw
rogqwidkeqmgrmcbwcbfyf
hprjhjxpxgglubtybuhjlgthcfbfawcgjtbygwgtdrdah
hgcpdzlenzzbvezqwavypbzpuluhvcbelrpvwvvqyzugelnuabr
aqywmngwgipgiqraqqwaqgrmyivvrpginwnrnaq
dmmdzjjkzk
ygovcdifiilkpdanj
ypawpwhnjxdrsvaibpiuoqdpgivounwixgpdcwgfpshi
iqpqlqqixpl
rierviiynmfaonkabbwtvokuyiphdbqmajqwzeggbmcu
dlpfgabkwhpsryzkwshicov
pzchwvopwxxgnmwfkavh
afxwxaawafyy
bcengudfrizahwypxdzrjfdtmsbwwowzh
qzapobigtiizkdzecifevtzzggdpcuovokmmwhzojet
grzurjavplptgfntbblskgcpaaysmzejiyatynya
broquzlbdmbtunannuqnj
liliagpalaadzzlgdp
etelteetqlzuuetqez
tyqqddnztrxlfqxwjkosxxfomxax
tmecjmihatku
jzojuzenjwhejfkjojtkaxjuieqrjlsbvbfuaroqkjltma
kskcjnjxklkiukrkqecuxenwgyklwkqiksygk
bkhyykyfniekweefqykixunoehjovujqfkvkfxjbj
icblnxwgbcmrkdjsvbpwxwvwhsnwpgnbspilghfu
oaluufelamwwsuefullaamsmzmzo
akpzifvrwtkhoijqzpmrckkfrklznwzzgvvoe
vqngjawpblaoflsietmxj
okgmrvghvfbjgpvqbtvfgdqncxknyinrybfsafbxsmupss
qitzdsqonrqadouruyr
iejfkmphtmollzmjedyusgchmjdyxxcwngwqxwwzbfu
dyyapadpp
auhpoxgtwdkiiifeubmbzv
hpgeppvvggerprg
unnornlpcayekapknbefbnnrukqonqbklacqfbaqny
wuqugipzcxrohdrgaphz
nttivynodletqbsxvxjdzpwty
yhhoigzdzpaiycvosyelenvvynsealpcrpprdvyyvev
ejqbgngktitiqcjqbykgbqigxbxityecnt
kmlalyqevfftxsjwxufteychuscbwnptuupq
-1
-1
abbcegmmotuutommgecbba
aacdeffghmmpqruuuvwyyyywvuuurqpmmhgffedcaa
aaehijkkmmnoqrtvwxxyyzzyyxxwvtrqonmmkkjiheaa
-1
bddefghjjnnoqrtvxxvtrqonnjjhgfeddb
-1
-1
cenqjjqnec
ehijkmmmnpqrrwwzbbbbbbbbbbbbbbbbbbzwwrrqpnmmmkjihe
abbehijknnpqqrsttvvwxyggyxwvvttsrqqpnnkjihebba
-1
-1
defiijjlmnquuwyybbbbbbyywuuqnmljjiifed
-1
agnwwnga
bcdddefhkosttuwwuttsokhfedddcb
-1
adeffiiijjkmmnprttuwoooooooooowuttrpnmmkjjiiiffeda
-1
-1
abfkqrttxyyxttrqkfba
abceghhmnnopppvwyyssssssssssyywvppponnmhhgecba
-1
hhklnstvvwwyywwvvtsnlkhh
-1
-1
bbbbbeeffhhimnrwzxxzwrnmihhffeebbbbb
-1
abbcdfgggjjlprttuwxyhhhhhhhhhhyxwuttrpljjgggfdcbba
abbceeghllnppqruuvvvwyzzzddzzzywvvvuurqppnllhgeecbba
aaiimnnpqqqrrvwwyggggggggggywwvrrqqqpnnmiiaa
djkmzzmkjd
-1
-1
ilpqqxxqqpli
-1
-1
-1
aafwxyyxwfaa
-1
-1
-1
-1
aadgillpzzplligdaa
eeelqttuzzuttqleee
-1
-1
-1
cegijkkkkklnqsuwxyrryxwusqnlkkkkkjigec
beeffhijjkkknoquvxyywwyyxvuqonkkkjjihffeeb
-1
aaefllmmosuuwzzwuusommllfeaa
-1
-1
-1
-1
-1
adyppppppyda
-1
eggpprvhhvrppgge
aabbcefkklnnnnopqqruyyurqqponnnnlkkfecbbaa
-1
-1
acdeehilnopprsvvvyyyzggzyyyvvvsrpponliheedca
bbceggiijknqqttxyyxttqqnkjiiggecbb
-1
=begin
Given a file name input.txt with the following structure:
The first line is a positive number that indicates the number of lines in the file.
Each of these lines represents a string
Write a program that determines if a palindrome can be generated by rearranging the letters
in the string and write the output in a new text file called output.txt with the next format:
If the word cannot be rearranged to form a palindrome, write -1 otherwise generate a palindrome
using the letters in the string. If there is more than one palindrome that can be generated, only
write one
=end
NOT_A_PALINDROME = "-1"
def get_palindrome
file = File.new "input.txt", "r"
output = File.new "output.txt", "w"
entries = file.gets.to_i
entries.times do
word_hash = Hash.new(0)
line = file.gets.chars.sort.join
line.each_char {|element| word_hash[element] += 1}
word_hash.delete "\n"
output.puts is_palindrome?(word_hash) ? generate_palindrome(word_hash) : NOT_A_PALINDROME
end
output.close
file.close
end
def generate_palindrome hash
palindrome = ""
palindrome_center = ""
hash.each_key do |item|
value = hash[item].to_i
if value.even?
palindrome << item.to_str * (value/2)
else
palindrome_center << item.to_str * value
end
end
palindrome = palindrome << palindrome_center << palindrome.reverse
end
def is_palindrome? value
counter = 0
value.each_key {|index| counter += 1 unless value[index].even?}
counter <= 1
end
get_palindrome
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment