//Program 1a
//Professor Pattis, ICS-23 Lab 1
//Programmers: Cameron Ruatta, Derek Elder
import edu.uci.ics.pattis.ics23.collections.*;
import edu.uci.ics.pattis.introlib.*;
import java.util.StringTokenizer;
import java.io.EOFException;
import java.util.Arrays;
public class Sentence
{
private static String randomWord(List<String> l)
{
return l.get((int)(l.size()*Math.random()));
}
public static void main(String[] args)
{
Map<String,List<String>> sentenceMap = new ArrayMap<String,List<String>>();
TypedBufferReader tbr = new TypedBufferReader("Enter Category Word file name");
//Repeatedly read lines from a file until the EOFException is thrown.
for(;;)
{
try
{
String line = tbr.readLine();
StringTokenizer st = new StringTokenizer(line, ";");
String categoryWord = st.nextToken();
while(st.hasMoreTokens())
{
String token = st.nextToken();
//Update Map
List<String> sentenceArray = sentenceMap.get(categoryWord);
if(sentenceArray == null)
{
sentenceArray = new ArrayList<String>();
sentenceMap.put(categoryWord,sentenceArray);
}
sentenceArray.add(token);
Collections.sort(sentenceArray); //Sort the exemplar words in each list
}
} catch(EOFException e) {break;}
}
List<String> sentenceList = new ArrayList<String>(sentenceMap.keys());
Collections.sort(sentenceList); //Sort the keys in the list
System.out.println("\nMap sorted alphabetically by Category and Word");
for(String c : sentenceList)
{
List<String> sentenceArray = sentenceMap.get(c);
System.out.println(c + " can be replaced by " + sentenceArray);
}
tbr = new TypedBufferReader("\nEnter sentence generation file name");
List<String> sentenceFromFileList = new ArrayList<String>();
String pattern = null;
for(;;)
{
try
{
String line = tbr.readLine();
pattern = line;
StringTokenizer st = new StringTokenizer(line, ";");
while(st.hasMoreTokens())
{
String token = st.nextToken();
sentenceFromFileList.add(token);
}
} catch(EOFException e) {break;}
}
List<String> randomList = new ArrayList<String>();
System.out.println("\nGenerated Sentence using the pattern: " + pattern);
for(String c : sentenceFromFileList)
{
randomList.add(randomWord(sentenceMap.get(c)));
}
System.out.println(randomList);
}
}