- #1
d33bo
- 2
- 0
Hey I'm new to this java stuff, I am taking my first class in it at the university of pittsburgh, and for my homework I need to write code to make a thing that will generate 10 random insults from a list of words. I have this outline to it and I was wondering if someone could help me fill in the blanks (i.e. I know i need to make a while/for loop that says something along the lines of while x < 10 blah blah x++). Here's the outline:
import java.util.Random ;
public class Generator {
////////////////////////////////////////////////////////////////////
//
// Generate 10 sentences.
//
public static void main(String[] args) {
for (int n = 0 ; n < 10 ; n++) {
System.out.println( generate("S") ) ;
}
}
////////////////////////////////////////////////////////////////////
//
// Completely expand category (usually S).
//
public static String generate(String category) {
... YOUR DEFINITION OF GENERATE() HERE ...
}
... YOUR OTHER FUNCTIONS HERE ...
////////////////////////////////////////////////////////////////////
//
// Select_Expansion(Category) will randomly expand Category
// according to the following grammar. Returns "error" if there is
// no expansion.
//
static String[] Grammar = {
"S -> NAME VP",
"VP -> V NP",
"NP -> ART NN",
"NN -> ADJ NN",
"NN -> N",
"ART -> a",
"V -> is",
"V -> looks like",
"V -> acts like",
"NAME -> dr aronis",
"NAME -> mr aronis",
"NAME -> john",
"ADJ -> nice",
"ADJ -> mean",
"ADJ -> smart",
"ADJ -> stupid",
"ADJ -> hip",
"ADJ -> geeky",
"ADJ -> normal",
"ADJ -> strange",
"ADJ -> great",
"ADJ -> terrible",
"N -> person",
"N -> teacher",
"N -> fool"
} ;
static Random generator = new Random() ;
public static String Select_Expansion(String Category) {
// Variables:
String This_Rule = "", Rule_LHS = "", Rule_RHS = "" ;
int Number_of_Expansions = 0, Expansion_to_Use = 0 ;
// Count expansions for Category:
for (int n = 0 ; n < Grammar.length ; n++) {
This_Rule = Grammar[n] ;
Rule_LHS = This_Rule.substring(0,This_Rule.indexOf( " -> ")) ;
if ( Rule_LHS.equals(Category) ) Number_of_Expansions++ ;
}
// Return error if no expansions:
if ( Number_of_Expansions == 0 ) return "error" ;
// Randomly select which expansion to use:
Expansion_to_Use = Math.abs(generator.nextInt() % Number_of_Expansions) ;
// Go through rules while counting down through expansions of Category,
// and break with selected expansion:
for (int n = 0 ; n < Grammar.length ; n++) {
This_Rule = Grammar[n] ;
Rule_LHS = This_Rule.substring(0,This_Rule.indexOf( " -> ")) ;
Rule_RHS = This_Rule.substring(This_Rule.indexOf(" -> ") + 4) ;
if ( Rule_LHS.equals(Category) && (Expansion_to_Use == 0) ) break ;
if ( Rule_LHS.equals(Category) ) Expansion_to_Use-- ;
}
return Rule_RHS ;
}
////////////////////////////////////////////////////////////////////
}
// End-of-File