/* vim: set expandtab tabstop=4 shiftwidth=4 : */ public class Outcast { private WordNet wordNet; // constructor takes a WordNet object public Outcast(WordNet wordnet) { wordNet = wordnet; } // given an array of WordNet nouns, return an outcast public String outcast(String[] nouns) { int maxTotal = -1; String outcast = null; for (int i = 0; i < nouns.length; i++) { int total = 0; for (int j = 0; j < nouns.length; j++) { total = total + wordNet.distance(nouns[i], nouns[j]); } if (total > maxTotal) { maxTotal = total; outcast = nouns[i]; } } return outcast; } // for unit testing of this class (such as the one below) public static void main(String[] args) { WordNet wordnet = new WordNet("./data/synsets.txt", "./data/hypernyms.txt"); Outcast outcast = new Outcast(wordnet); String[] nouns; Stopwatch st = new Stopwatch(); double t0, t1 = 0; nouns = new In("./data/outcast5.txt").readAllStrings(); t0 = st.elapsedTime(); StdOut.println(outcast.outcast(nouns)+" " + (t0 - t1)); t1 = t0; nouns = new In("./data/outcast8.txt").readAllStrings(); t0 = st.elapsedTime(); StdOut.println(outcast.outcast(nouns)+" " + (t0 - t1)); t1 = t0; nouns = new In("./data/outcast11.txt").readAllStrings(); t0 = st.elapsedTime(); StdOut.println(outcast.outcast(nouns)+" " + (t0 - t1)); t1 = t0; nouns = new In("./data/outcast29.txt").readAllStrings(); t0 = st.elapsedTime(); StdOut.println(outcast.outcast(nouns)+" " + (t0 - t1)); t1 = t0; } }