Skip to content

Instantly share code, notes, and snippets.

@ethanjurman
Last active December 14, 2015 03:29
Show Gist options
  • Save ethanjurman/5021885 to your computer and use it in GitHub Desktop.
Save ethanjurman/5021885 to your computer and use it in GitHub Desktop.
words = []
charsHash = Hash.new(0)
string = gets().chop!.to_s.split("")
string.each do |char|
charsHash[char] = charsHash[char] + 1
end
parseString = "\\A"
charsHash.each do |char, num|
parseString << "[#{char}]{0,#{num}}"
end
parseString << "\\z"
regex = Regexp.new(parseString)
puts regex
filename = 'dictionary.txt'
File.open(filename, 'r').each_line do |line|
line = line.upcase || line
line = line.split("\n")[0]
if line.scan(regex).join("") == line
words << line
end
end
puts "\nWORD LIST"
puts words.sort {|a,b| a.length <=> b.length}
puts "done"
words = []
string = gets().chop!.to_s.split("")
parseString = "["
string.each do |char|
parseString << "#{char.upcase},"
end
parseString.chop!
parseString << "]"
regex = Regexp.new(parseString)
puts regex
def anagram?(word, chars)
w1 = word.split("").sort.join("")
w2 = chars.split("").sort.join("")
w1 = w1.upcase || w1
w2 = w2.upcase || w2
print "#{w1}, #{w2}"
w1.split("").each do |char|
if !(w2.count(char) >= w1.count(char))
return false
end
end
return true
end
filename = 'dictionary.txt'
File.open(filename, 'r').each_line do |line|
line = line.upcase || line
line = line.split("\n")[0]
if (line.scan(regex).join("") == line) && (anagram?(line, string.join("")))
words << line
end
end
puts "\nWORD LIST"
puts words.sort {|a,b| a.length <=> b.length}
puts "done"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment