string[int] mods = file_to_array("data/tcrs numeric modifiers.txt"); string[int] items_with_mod; string[string] names_of_mods; string[int][int] files; for i from 1 to 6{ files[i] = file_to_array("data/TCRS_"+(i.to_class().replace_string(" ","_"))+"_Mongoose.txt"); files[i+6] = file_to_array("data/TCRS_"+(i.to_class().replace_string(" ","_"))+"_Wallaby.txt"); files[i+12] = file_to_array("data/TCRS_"+(i.to_class().replace_string(" ","_"))+"_Vole.txt"); files[i+18] = file_to_array("data/TCRS_"+(i.to_class().replace_string(" ","_"))+"_Platypus.txt"); files[i+24] = file_to_array("data/TCRS_"+(i.to_class().replace_string(" ","_"))+"_Marmot.txt"); files[i+30] = file_to_array("data/TCRS_"+(i.to_class().replace_string(" ","_"))+"_Opossum.txt"); } int county_thing; slot some_buffer_item_slot; boolean see_above; string intersection; string[int] intersection_words; boolean[int] intersection_boolean; foreach i in mods{ clear(items_with_mod); county_thing = 0; //make a big list of item tcrsnames containing that modifier's name. We don't need all of them, just a bunch. for j from 1 to 36{ foreach k in files[j]{ //select lines where item's string modifier is precisely the current modifier. if(files[j][k].group_string("\\t([^\\t]*)$")[0][1] == mods[i] ){ //reduce that to lines corresponding to equipment that goes into non-bullshit slots some_buffer_item_slot = files[j][k].group_string("^(\\d)+\\t")[0][1].to_int().to_item().to_slot(); see_above = false; foreach asdf in $slots[acc1,weapon,pants]{ if(asdf == some_buffer_item_slot){ see_above = true; } } if(see_above){ //if modifiers contains a comma, we should probably exclude the item. //you know, for reasons. if(!(files[j][k].group_string("^(\\d)+\\t")[0][1].to_int().to_item().string_modifier("Modifiers").contains_text(","))){ county_thing++; //grab item's tcrsname. items_with_mod[county_thing] = files[j][k].group_string("^\\d+\\t([^\\t]*)\\t")[0][1]; } } } } } //arbitrarily choose an item name from list to be the start of our intersection. intersection_words = items_with_mod[1].split_string(" "); //print(intersection_words[1]); int[string][int] counting_words; foreach j in items_with_mod{ foreach k in items_with_mod[j].split_string(" "){ foreach asdf in intersection_words{ if( intersection_words[asdf] == items_with_mod[j].split_string(" ")[k] ){ counting_words[intersection_words[asdf]][asdf]++; } } } } clear(intersection_words); county_thing = 0; foreach j,k in counting_words{ if(counting_words[j][k] * 2 > count(items_with_mod)){ intersection_words[county_thing] = j; county_thing++; } } //get rid of all duplicate words foreach j in intersection_words{ foreach k in intersection_words{ if(intersection_words[j].length() > 0 && j < k && intersection_words[j] == intersection_words[k]){ intersection_words[k] = ""; } } } //put the words together. intersection = ""; foreach j in intersection_words{ if(intersection_words[j].length() > 0){ intersection += intersection_words[j] +" "; } } //trim single trailing whitespace guaranteed to result from above process intersection = intersection.group_string("^(.*)\\s$")[0][1]; names_of_mods[mods[i]] = intersection; print(intersection); } map_to_file(names_of_mods, "tcrs modifier name correspondence");