From: "Sebastjan H." Date: 2012-05-17T21:14:29+09:00 Subject: Re: array of strings - finding letter combinations Sebastjan H. wrote in post #1059386: > Thank you all for your kind help. I'll try to complete this task and > when I am done, I'll post back if maybe someone else can benefit from > it. > > regards, > seba Hello again, It seems I'm stuck:) After rethinking what I actually need, I've come with the script below. For some reason, it only works when there are 26 or more strings in the array. I've been looking like crazy, but I can't find the error. Also any optimisation or pointing out additional errors is most welcome. Keep in mind, I am a complete beginner:) Note: I only need a list of unused characters, which may be used for assignments. ----------------------------------------------------- # 1. Import strings from a file and add them to the array; # if there are more than 26 strings imported from the file, # an alert is given and user decision is required # User may decide to continue since there may still be a char # unused if others ore used more than once. file = ARGV[0] strings = [] used_chars = [] duplicates = [] all = ["&a", "&b", "&c", "&d", "&e", "&f", "&g", "&h", "&i", "&j", "&k", "&l", "&m", "&n", "&o", "&p", "&r", "&s", "&t", "&u", "&v", "&w", "&x", "&y", "&z"] input_file = File.open(file, "a+") input_file.each_line do |line| strings << line end strings.map!{|c| c.downcase.strip} # Eliminates the whole upcase issue. if strings.length >= 26 puts "There are more than 26 strings, unique assignments are not possible." puts "Do you still want to continue with the process? Enter y or n" print ">" answer = STDIN.gets.chomp() if answer == "n" puts "Process aborted by user." exit else # 2. Finds the ampersand combinations; adds them to used and duplicates; # checks for number of occurences ---- still under consideration if needed strings.each do|str| char = str[/&[a-z]/] duplicates << char if used_chars.include? char used_chars << char end # 3. Compares the all and used arrays and adds the list of unused # chars to the file unused = [(all)-(used_chars)] input_file.write("Here are the unused characters:" "\n") unused.each do |char| input_file.write(char) input_file.write("\n") end end end input_file.close() # ToDo: # 1. The automatic suggestion would only be possible if the unused characters # would be compared with the characters in the strings with duplicates. # If the unused character exists in the string, suggest the character from the # unused array, otherwise move on to the next. If no match is found, move to # the next string with duplicates. # 2. use Shoes for GUI. ---------------------------------------------------------------------- thx kind regards seba -- Posted via http://www.ruby-forum.com/.