Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

There is one part in this programming project. You may work by yourself, or in g

ID: 3763982 • Letter: T

Question

There is one part in this programming project. You may work by yourself, or in groups of two. Both partners in each group are expected to contribute equally to each part, and will get equal scores.

To make telephone numbers easier to remember, we usually map each digit to a letter of the alphabet, with a choice of 3 or 4 letters:

            2          a, b, c

            3          d, e, f

            4          g, h, i

            5          j, k, l

            6          m, n, o

            7          p, q, r, s

            8          t, u, v

            9          w, x, y, z

For example, 2232327 spells “bad bear”.

For this project, we’ll make these simplifying restrictions when we map a 7-digit telephone number to words: the first word always has three letters, the second word always has four letters, and there are no 0’s or 1’s in the telephone number.

Obviously, the “words” are only interesting if they are real words, i.e., they can be found in a dictionary. For this project, your code will read a dictionary file, and match its entries with a telephone number.

You will need to set up String arrays to store words from the dictionary file. See Chapter 9 Slide 13 for arrays of Strings.

The project is divided into two parts, to help you organize your work. You must follow the design and the instructions laid out in the handout, or points will be deducted. If you prefer to use a different design or organization for your program, you must first get permission from the instructor.

Part a: due 5pm Monday 5/14/2012

(40/100 correctness + 10/100 documentation)

Solution will be posted Monday night, no late submissions

What your program should do:

            Prompt the user to enter the name of the dictionary file to use (a text file)

            Set up two arrays of Strings, w3[] and w4[]

            Read all words from the file

                        store all 3-letter words from the file into w3[]

                        store all 4-letter words from the file into w4[]

            Write w3[] into a file called shorts3

            Write w4[] into a file called shorts4

You must create and fill the arrays w3[] and w4[] correctly; otherwise points will be deducted.

You will need to know how to read and write a text file; see Chapter 9 Slides 36-46 for details. (Hint: this is very similar to the exercise on Slide 46.) The dictionary file should be in the same directory as your executable. You should use the files on unixlab ~whsu/csc210/Projects/P10/words6752 or ~whsu/csc210/Projects/P10/words10683 as your dictionary files. (There’s also a very short file, ~whsu/csc210/Projects/P10/words5, for initial testing.) All these files are also accessible through your browser at

            http://userwww.sfsu.edu/~whsu/csc210/Projects/P10

A sample run:

unixlab% ls

ProcFile.class    words10683 words5      words6752

unixlab% cat words5

cat

intolerable

curd

daft

dog

unixlab% java ProcFile

Enter name of dictionary file: words5

unixlab% ls

procFile    shorts3     shorts4     words10683 words5      words6752

unixlab% cat shorts3

cat

dog

unixlab% cat shorts4

curd

daft

unixlab%

In more detail, suppose words5 is used to test ProcFile. ProcFile starts reading words5, line by line.

The first word read is cat. This is stored in w3[0].

The next word read is intolerable. This is not stored.

The next word read is dog. This is stored in w3[1].

The next word read is curd. This is stored in w4[0]. Finally, daft is read and stored in w4[1].

The contents of w3[] are written to the file shorts3. The contents of w4[] are written to the file shorts4.

Part b: due 5pm Friday 5/18/2012

(40/100 correctness + 10/100 documentation)

no late submissions

You will write a program that prompts the user to enter a 7-digit phone numbers, and finds the 3- and 4-letter words that map to the phone number, according to the restrictions outlined earlier. A sample run:

unixlab% java MapNumbers

Enter name of dictionary file: words10683

Enter a test word (3 letters): cat

Test word maps to 228

Enter telephone number (7 digits, no 0's or 1's, negative to quit): 2282273

Options for first 3 digits:

act

cat

bat

Options for next 4 digits:

base

card

care

case

bare

Enter telephone number (7 digits, no 0's or 1's, negative to quit): 2232243

Options for first 3 digits:

bad

ace

Options for next 4 digits:

acid

cage

Enter telephone number (7 digits, no 0's or 1's, negative to quit): -1

unixlab%

More formally, your program should do this:

            Prompt the user for the name of a dictionary file

            Set up the PhoneMapper class and methods (see details below)

            Prompt the user to enter a 3-letter test word (mostly for testing early versions)

            Display the number that maps to that word

            Prompt the user to enter a 7-digit telephone number

                        (quit when negative number is read)

            Use the PhoneMapper class to map 3-letter and 4-letter words to the number

            Display all 3-letter words that map to the first 3 digits of the number

            Display all 4-letter words that map to the last 4 digits of the number

            Prompt the user to enter another 7-digit telephone number

                        (quit when negative number is read)

A skeleton program is provided on unixlab in

~whsu/csc210/Projects/P10/MapNumbersSkeleton.java or

http://userwww.sfsu.edu/~whsu/csc210/Projects/P10/MapNumbersSkeleton.java

Let’s look at the skeleton file. Note the PhoneMapper class that does most of the useful work. The main method of the public class prompts the user for the name of the dictionary file, and telephone numbers. A PhoneMapper object myMap3 (for 3-digit numbers) is created. For each telephone number entered by the user, the method myMap3.findWords() is called; it returns an array of Strings, with all the words that map to the first three digits of the number.

Right now, the PhoneMapper class and methods don’t do very much. Follow the steps to fill out the design. If you wish to make significant changes to the overall program, you must check with the instructor first; otherwise points will be deducted.

Step 1: Fill in the constructor for the PhoneMapper class. There’s only one constructor:

PhoneMapper(String fileName, int wordLength) throws Exception

filename is the name of the dictionary file to be used, wordLength is the length of the words to be extracted from the dictionary file. All words of length wordLength are added to the wordList[] array of Strings. (Note: this part uses code from Part A!)

An example: suppose we instantiate a PhoneMapper object:

     PhoneMapper smallMap = new PhoneMapper(“words5”, 3);

words5 is the short test file we looked at in Part A. After the PhoneMapper constructor returns, smallMap.wordList[0] = “cat”, smallMap.wordList[1] = “dog”, and smallMap.numWords = 2.

Step 2: Fill in the method findTelNum():

int findTelNum(String inStr)

findTelNum() maps each character of inStr to a numeric digit according to the rule described earlier for telephone numbers, assembles the digits into a 3 or 4-digit integer, and returns the integer corresponding to the string.

An example:

     String str = “bad”;

     int x = findTelNum(str); // x = 223

Note that there’s some code in the main method of the public class for testing findTelNum().

Step 3: Fill in the method findWords():

     String [] findWords(int num)

num is the 3 or 4-digit integer from the telephone number. findWords() checks every word in wordList[], by calling findTelNum(); if a word in wordList[] maps to num, that word is added to a list of mapped words. After all words in wordList[] that map to num have been copied to the list of mapped words, the list of mapped words is returned. Make sure the array returned has the correct length. (Hint: add the mapped words to a very large array first. After you are done adding mapped words, copy the very large array to a smaller array, with the correct length.)

An example: suppose we use words10683 as the dictionary file. The number 223 maps to two words in the file: bad and ace. When we run these lines of code:

     PhoneMapper bigMap = new PhoneMapper(“words10683”, 3);

     String [] s = bigMap.findWords(223);

s[0] = “bad”, s[1] = “ace”, and s.length = 2.

Step 4: Fill in the rest of the main loop in the main method in the public class, to find and report the 4-letter words that map to the last 4 digits of the telephone number entered by the user.

SECOND PART

There is one part in this programming project. You may work by yourself, or in groups of two. Both partners in each group are expected to contribute equally to each part, and will get equal scores.

To make telephone numbers easier to remember, we usually map each digit to a letter of the alphabet, with a choice of 3 or 4 letters:

            2          a, b, c

            3          d, e, f

            4          g, h, i

            5          j, k, l

            6          m, n, o

            7          p, q, r, s

            8          t, u, v

            9          w, x, y, z

For example, 2232327 spells “bad bear”.

For this project, we’ll make these simplifying restrictions when we map a 7-digit telephone number to words: the first word always has three letters, the second word always has four letters, and there are no 0’s or 1’s in the telephone number.

Obviously, the “words” are only interesting if they are real words, i.e., they can be found in a dictionary. For this project, your code will read a dictionary file, and match its entries with a telephone number.

You will need to set up String arrays to store words from the dictionary file. See Chapter 9 Slide 13 for arrays of Strings.

The project is divided into two parts, to help you organize your work. You must follow the design and the instructions laid out in the handout, or points will be deducted. If you prefer to use a different design or organization for your program, you must first get permission from the instructor.

Part a: due 5pm Monday 5/14/2012

(40/100 correctness + 10/100 documentation)

Solution will be posted Monday night, no late submissions

What your program should do:

            Prompt the user to enter the name of the dictionary file to use (a text file)

            Set up two arrays of Strings, w3[] and w4[]

            Read all words from the file

                        store all 3-letter words from the file into w3[]

                        store all 4-letter words from the file into w4[]

            Write w3[] into a file called shorts3

            Write w4[] into a file called shorts4

You must create and fill the arrays w3[] and w4[] correctly; otherwise points will be deducted.

You will need to know how to read and write a text file; see Chapter 9 Slides 36-46 for details. (Hint: this is very similar to the exercise on Slide 46.) The dictionary file should be in the same directory as your executable. You should use the files on unixlab ~whsu/csc210/Projects/P10/words6752 or ~whsu/csc210/Projects/P10/words10683 as your dictionary files. (There’s also a very short file, ~whsu/csc210/Projects/P10/words5, for initial testing.) All these files are also accessible through your browser at

            http://userwww.sfsu.edu/~whsu/csc210/Projects/P10

A sample run:

unixlab% ls

ProcFile.class    words10683 words5      words6752

unixlab% cat words5

cat

intolerable

curd

daft

dog

unixlab% java ProcFile

Enter name of dictionary file: words5

unixlab% ls

procFile    shorts3     shorts4     words10683 words5      words6752

unixlab% cat shorts3

cat

dog

unixlab% cat shorts4

curd

daft

unixlab%

In more detail, suppose words5 is used to test ProcFile. ProcFile starts reading words5, line by line.

The first word read is cat. This is stored in w3[0].

The next word read is intolerable. This is not stored.

The next word read is dog. This is stored in w3[1].

The next word read is curd. This is stored in w4[0]. Finally, daft is read and stored in w4[1].

The contents of w3[] are written to the file shorts3. The contents of w4[] are written to the file shorts4.

Part b: due 5pm Friday 5/18/2012

(40/100 correctness + 10/100 documentation)

no late submissions

You will write a program that prompts the user to enter a 7-digit phone numbers, and finds the 3- and 4-letter words that map to the phone number, according to the restrictions outlined earlier. A sample run:

unixlab% java MapNumbers

Enter name of dictionary file: words10683

Enter a test word (3 letters): cat

Test word maps to 228

Enter telephone number (7 digits, no 0's or 1's, negative to quit): 2282273

Options for first 3 digits:

act

cat

bat

Options for next 4 digits:

base

card

care

case

bare

Enter telephone number (7 digits, no 0's or 1's, negative to quit): 2232243

Options for first 3 digits:

bad

ace

Options for next 4 digits:

acid

cage

Enter telephone number (7 digits, no 0's or 1's, negative to quit): -1

unixlab%

More formally, your program should do this:

            Prompt the user for the name of a dictionary file

            Set up the PhoneMapper class and methods (see details below)

            Prompt the user to enter a 3-letter test word (mostly for testing early versions)

            Display the number that maps to that word

            Prompt the user to enter a 7-digit telephone number

                        (quit when negative number is read)

            Use the PhoneMapper class to map 3-letter and 4-letter words to the number

            Display all 3-letter words that map to the first 3 digits of the number

            Display all 4-letter words that map to the last 4 digits of the number

            Prompt the user to enter another 7-digit telephone number

                        (quit when negative number is read)

A skeleton program is provided on unixlab in

~whsu/csc210/Projects/P10/MapNumbersSkeleton.java or

http://userwww.sfsu.edu/~whsu/csc210/Projects/P10/MapNumbersSkeleton.java

Let’s look at the skeleton file. Note the PhoneMapper class that does most of the useful work. The main method of the public class prompts the user for the name of the dictionary file, and telephone numbers. A PhoneMapper object myMap3 (for 3-digit numbers) is created. For each telephone number entered by the user, the method myMap3.findWords() is called; it returns an array of Strings, with all the words that map to the first three digits of the number.

Right now, the PhoneMapper class and methods don’t do very much. Follow the steps to fill out the design. If you wish to make significant changes to the overall program, you must check with the instructor first; otherwise points will be deducted.

Step 1: Fill in the constructor for the PhoneMapper class. There’s only one constructor:

PhoneMapper(String fileName, int wordLength) throws Exception

filename is the name of the dictionary file to be used, wordLength is the length of the words to be extracted from the dictionary file. All words of length wordLength are added to the wordList[] array of Strings. (Note: this part uses code from Part A!)

An example: suppose we instantiate a PhoneMapper object:

     PhoneMapper smallMap = new PhoneMapper(“words5”, 3);

words5 is the short test file we looked at in Part A. After the PhoneMapper constructor returns, smallMap.wordList[0] = “cat”, smallMap.wordList[1] = “dog”, and smallMap.numWords = 2.

Step 2: Fill in the method findTelNum():

int findTelNum(String inStr)

findTelNum() maps each character of inStr to a numeric digit according to the rule described earlier for telephone numbers, assembles the digits into a 3 or 4-digit integer, and returns the integer corresponding to the string.

An example:

     String str = “bad”;

     int x = findTelNum(str); // x = 223

Note that there’s some code in the main method of the public class for testing findTelNum().

Step 3: Fill in the method findWords():

     String [] findWords(int num)

num is the 3 or 4-digit integer from the telephone number. findWords() checks every word in wordList[], by calling findTelNum(); if a word in wordList[] maps to num, that word is added to a list of mapped words. After all words in wordList[] that map to num have been copied to the list of mapped words, the list of mapped words is returned. Make sure the array returned has the correct length. (Hint: add the mapped words to a very large array first. After you are done adding mapped words, copy the very large array to a smaller array, with the correct length.)

An example: suppose we use words10683 as the dictionary file. The number 223 maps to two words in the file: bad and ace. When we run these lines of code:

     PhoneMapper bigMap = new PhoneMapper(“words10683”, 3);

     String [] s = bigMap.findWords(223);

s[0] = “bad”, s[1] = “ace”, and s.length = 2.

Step 4: Fill in the rest of the main loop in the main method in the public class, to find and report the 4-letter words that map to the last 4 digits of the telephone number entered by the user.

Explanation / Answer

package phonemapper;
import java.util.Scanner;
import java.io.File.*;
import java.io.FileReader;
import java.io.*;   // will include file reader, filewriter, etc

public class PhoneMapper {

    public static void main(String[] args) throws FileNotFoundException, IOException {

        //FileInputStream fis = new FileInputStream("E:/Files/dict1.txt");
        //FileOutputStream fop3 = new FileOutputStream("E:/Files/shorts3.txt");
        //FileOutputStream fop4 = new FileOutputStream("E:/Files/shorts4.txt");
        //int c1;
      
        //while ( ( c1 = fis.read() ) != -1 ) {
        //    fop3.write(c1);
        //} // end while
      
        String s1 = null ;
        FileReader fr = new FileReader("E:/Files/dict1.txt");
        BufferedReader br = new BufferedReader(fr);
        FileWriter fw3 = new FileWriter("E:/Files/shorts3. txt");
        FileWriter fw4 = new FileWriter("E:/Files/shorts4.txt");      
        BufferedWriter bw3 = new BufferedWriter(fw3);
        BufferedWriter bw4 = new BufferedWriter(fw4);      
        while( ( s1 = br.readLine()) != null ) {
            //fop4.write(s1);
            if ( s1.length() == 3 ) //System.out.println("Writing " + s1 + " to shorts3");
                bw3.write(s1);
            if ( s1.length() == 4 ) //System.out.println("Writing " + s1 + " to shorts4");          
                bw4.write(s1);
            //System.out.print(s1 + " , ");
        } // end while
      
      
  
    }
  
}

run:
Writing ace to shorts3
Writing acid to shorts4
Writing aged to shorts4
Writing aids to shorts4
Writing akin to shorts4
Writing alas to shorts4
Writing ally to shorts4
Writing amp to shorts3
Writing apt to shorts3
Writing arc to shorts3
Writing arch to shorts4
Writing arms to shorts4
Writing arts to shorts4
Writing ash to shorts3
Writing atom to shorts4
Writing aunt to shorts4
Writing axes to shorts4
Writing axis to shorts4
Writing baby to shorts4
Writing bag to shorts3
Writing bags to shorts4
Writing bake to shorts4
Writing bang to shorts4
Writing bans to shorts4
Writing bare to shorts4
Writing bark to shorts4
Writing bash to shorts4
Writing bass to shorts4
Writing bat to shorts3
Writing bath to shorts4
Writing baud to shorts4
Writing bay to shorts3
Writing beam to shorts4
Writing bean to shorts4
Writing beat to shorts4
Writing beds to shorts4
Writing beef to shorts4
Writing beer to shorts4
Writing beg to shorts3
Writing bell to shorts4
Writing belt to shorts4
Writing bend to shorts4
Writing bent to shorts4
Writing beta to shorts4
Writing bias to shorts4
Writing bin to shorts3
Writing bird to shorts4
Writing blew to shorts4
Writing blob to shorts4
Writing bob to shorts3
Writing bobs to shorts4
Writing bog to shorts3
Writing bogs to shorts4
Writing boil to shorts4
Writing bold to shorts4
Writing bolt to shorts4
Writing bomb to shorts4
Writing bond to shorts4
Writing bone to shorts4
Writing boom to shorts4
Writing born to shorts4
Writing boss to shorts4
Writing bout to shorts4
Writing bow to shorts3
Writing bowl to shorts4
Writing boys to shorts4
Writing bred to shorts4
Writing buck to shorts4
Writing bulb to shorts4
Writing bull to shorts4
Writing bump to shorts4
Writing burn to shorts4
Writing bush to shorts4
Writing buss to shorts4
Writing bust to shorts4
Writing bye to shorts3
Writing cafe to shorts4
Writing cage to shorts4
Writing cake to shorts4
Writing calm to shorts4
Writing cam to shorts3
Writing camp to shorts4
Writing cans to shorts4
Writing cant to shorts4
Writing cap to shorts3
Writing caps to shorts4
Writing cars to shorts4
Writing cash to shorts4
Writing cast to shorts4
Writing cats to shorts4
Writing cave to shorts4
Writing chap to shorts4
Writing chat to shorts4
Writing chew to shorts4
Writing chop to shorts4
Writing cite to shorts4
Writing clip to shorts4
Writing clog to shorts4
Writing coal to shorts4
Writing coat to shorts4
Writing coin to shorts4
Writing coke to shorts4
Writing con to shorts3
Writing cook to shorts4
Writing cool to shorts4
Writing corn to shorts4
Writing cow to shorts3
Writing cows to shorts4
Writing crap to shorts4
Writing crew to shorts4
Writing crop to shorts4
Writing cube to shorts4
Writing cue to shorts3
Writing cult to shorts4
Writing cups to shorts4
Writing cute to shorts4
Writing daft to shorts4
Writing damn to shorts4
Writing damp to shorts4
Writing dash to shorts4
Writing dawn to shorts4
Writing deaf to shorts4
Writing debt to shorts4
Writing deck to shorts4
Writing deed to shorts4
Writing defy to shorts4
Writing deny to shorts4
Writing dial to shorts4
Writing dice to shorts4
Writing diet to shorts4
Writing dig to shorts3
Writing digs to shorts4
Writing dim to shorts3
Writing dine to shorts4
Writing dip to shorts3
Writing dire to shorts4
Writing dirt to shorts4
Writing dish to shorts4
Writing dive to shorts4
Writing dogs to shorts4
Writing dole to shorts4
Writing don to shorts3
Writing dons to shorts4
Writing doom to shorts4
Writing dose to shorts4
Writing dot to shorts3
Writing dots to shorts4
Writing drag to shorts4
Writing drip to shorts4
Writing drug to shorts4
Writing drum to shorts4
Writing dual to shorts4
Writing duck to shorts4
Writing duff to shorts4
Writing dug to shorts3
Writing dull to shorts4
Writing duly to shorts4
Writing dust to shorts4
Writing ear to shorts3
Writing earn to shorts4
Writing ears to shorts4
Writing echo to shorts4
Writing egg to shorts3
Writing eggs to shorts4
Writing ego to shorts3
Writing egos to shorts4
Writing emit to shorts4
Writing envy to shorts4
Writing epic to shorts4
Writing era to shorts3
Writing ergo to shorts4
Writing evil to shorts4
Writing exam to shorts4
Writing exit to shorts4
Writing fake to shorts4
Writing fame to shorts4
Writing fans to shorts4
Writing fare to shorts4
Writing fat to shorts3
Writing feat to shorts4
Writing fee to shorts3
Writing fees to shorts4
Writing flaw to shorts4
Writing flip to shorts4
Writing foam to shorts4
Writing fog to shorts3
Writing fold to shorts4
Writing fond to shorts4
Writing font to shorts4
Writing fool to shorts4
Writing fork to shorts4
Writing foul to shorts4
Writing frog to shorts4
Writing fuel to shorts4
Writing fume to shorts4
Writing fur to shorts3
Writing fuse to shorts4
Writing fuss to shorts4
Writing gang to shorts4
Writing gaps to shorts4
Writing gasp to shorts4
Writing gate to shorts4
Writing gay to shorts3
Writing gear to shorts4
Writing gene to shorts4
Writing gift to shorts4
Writing gig to shorts3
Writing gin to shorts3
Writing glow to shorts4
Writing glue to shorts4
Writing goal to shorts4
Writing goat to shorts4
Writing god to shorts3
Writing gods to shorts4
Writing gold to shorts4
Writing golf to shorts4
Writing gown to shorts4
Writing grab to shorts4
Writing grid to shorts4
Writing grim to shorts4
Writing grip to shorts4
Writing gulf to shorts4
Writing gum to shorts3
Writing guns to shorts4
Writing gut to shorts3
Writing guts to shorts4
Writing guys to shorts4
Writing hail to shorts4
Writing halt to shorts4
Writing ham to shorts3
Writing hash to shorts4
Writing hats to shorts4
Writing hay to shorts3
Writing hazy to shorts4
Writing heap to shorts4
Writing heel to shorts4
Writing herd to shorts4
Writing hero to shorts4
Writing hey to shorts3
Writing hip to shorts3
Writing hire to shorts4
Writing hog to shorts3
Writing holy to shorts4
Writing hook to shorts4
Writing horn to shorts4
Writing huh to shorts3
Writing hum to shorts3
Writing hurt to shorts4
Writing hut to shorts3
Writing icon to shorts4
Writing idle to shorts4
Writing ink to shorts3
Writing ion to shorts3
Writing iron to shorts4
Writing jack to shorts4
Writing jail to shorts4
Writing jam to shorts3
Writing jams to shorts4
Writing jazz to shorts4
Writing jerk to shorts4
Writing jest to shorts4
Writing jet to shorts3
Writing jury to shorts4
Writing ken to shorts3
Writing kick to shorts4
Writing kids to shorts4
Writing kiss to shorts4
Writing kit to shorts3
Writing kits to shorts4
Writing knee to shorts4
Writing lab to shorts3
Writing labs to shorts4
Writing lad to shorts3
Writing lag to shorts3
Writing laid to shorts4
Writing lake to shorts4
Writing lamp to shorts4
Writing lane to shorts4
Writing lark to shorts4
Writing lawn to shorts4
Writing lays to shorts4
Writing leak to shorts4
Writing lean to shorts4
Writing leap to shorts4
Writing lens to shorts4
Writing lent to shorts4
Writing lest to shorts4
Writing lid to shorts3
Writing limb to shorts4
Writing lion to shorts4
Writing lip to shorts3
Writing lips to shorts4
Writing lisp to shorts4
Writing lit to shorts3
Writing logo to shorts4
Writing lord to shorts4
Writing loud to shorts4
Writing lump to shorts4
Writing lung to shorts4
Writing lurk to shorts4
Writing lust to shorts4
Writing male to shorts4
Writing mans to shorts4
Writing maps to shorts4
Writing mask to shorts4
Writing mate to shorts4
Writing maze to shorts4
Writing meal to shorts4
Writing meat to shorts4
Writing melt to shorts4
Writing mend to shorts4
Writing menu to shorts4
Writing mice to shorts4
Writing mild to shorts4
Writing milk to shorts4
Writing mill to shorts4
Writing mint to shorts4
Writing mist to shorts4
Writing moan to shorts4
Writing mob to shorts3
Writing mock to shorts4
Writing mole to shorts4
Writing mood to shorts4
Writing moon to shorts4
Writing muck to shorts4
Writing mud to shorts3
Writing mug to shorts3
Writing mugs to shorts4
Writing mum to shorts3
Writing myth to shorts4
Writing nail to shorts4
Writing nay to shorts3
Writing neat to shorts4
Writing nest to shorts4
Writing nets to shorts4
Writing nick to shorts4
Writing nil to shorts3
Writing node to shorts4
Writing noon to shorts4
Writing norm to shorts4
Writing nose to shorts4
Writing noun to shorts4
Writing null to shorts4
Writing nun to shorts3
Writing nuns to shorts4
Writing nut to shorts3
Writing nuts to shorts4
Writing oar to shorts3
Writing onus to shorts4
Writing opt to shorts3
Writing opts to shorts4
Writing opus to shorts4
Writing oral to shorts4
Writing owns to shorts4
Writing pace to shorts4
Writing pad to shorts3
Writing pads to shorts4
Writing pale to shorts4
Writing pan to shorts3
Writing pant to shorts4
Writing par to shorts3
Writing pat to shorts3
Writing peer to shorts4
Writing pens to shorts4
Writing pet to shorts3
Writing pie to shorts3
Writing pig to shorts3
Writing pigs to shorts4
Writing pill to shorts4
Writing pin to shorts3
Writing pink to shorts4
Writing pins to shorts4
Writing pit to shorts3
Writing pity to shorts4
Writing ploy to shorts4
Writing poke to shorts4
Writing pole to shorts4
Writing pope to shorts4
Writing pops to shorts4
Writing pork to shorts4
Writing pose to shorts4
Writing pot to shorts3
Writing pour to shorts4
Writing pray to shorts4
Writing pro to shorts3
Writing pub to shorts3
Writing pulp to shorts4
Writing pump to shorts4
Writing pun to shorts3
Writing puns to shorts4
Writing punt to shorts4
Writing quiz to shorts4
Writing rack to shorts4
Writing rag to shorts3
Writing rage to shorts4
Writing raid to shorts4
Writing rail to shorts4
Writing ram to shorts3
Writing rang to shorts4
Writing rank to shorts4
Writing rant to shorts4
Writing rape to shorts4
Writing rash to shorts4
Writing rat to shorts3
Writing rats to shorts4
Writing rave to shorts4
Writing ray to shorts3
Writing rear to shorts4
Writing rend to shorts4
Writing rent to shorts4
Writing rice to shorts4
Writing rich to shorts4
Writing riot to shorts4
Writing rip to shorts3
Writing rips to shorts4
Writing rock to shorts4
Writing rod to shorts3
Writing rode to shorts4
Writing roof to shorts4
Writing rope to shorts4
Writing rose to shorts4
Writing rot to shorts3
Writing rout to shorts4
Writing rows to shorts4
Writing rub to shorts3
Writing rude to shorts4
Writing ruin to shorts4
Writing rung to shorts4
Writing sack to shorts4
Writing saga to shorts4
Writing sail to shorts4
Writing salt to shorts4
Writing sand to shorts4
Writing sane to shorts4
Writing sang to shorts4
Writing sank to shorts4
Writing scum to shorts4
Writing sea to shorts3
Writing seal to shorts4
Writing seat to shorts4
Writing sect to shorts4
Writing seed to shorts4
Writing sexy to shorts4
Writing shed to shorts4
Writing shoe to shorts4
Writing shot to shorts4
Writing shy to shorts3
Writing sic to shorts3
Writing sick to shorts4
Writing sigh to shorts4
Writing sin to shorts3
Writing sine to shorts4
Writing sing to shorts4
Writing sink to shorts4
Writing sins to shorts4
Writing sir to shorts3
Writing skin to shorts4
Writing skip to shorts4
Writing sky to shorts3
Writing slag to shorts4
Writing slid to shorts4
Writing slim to shorts4
Writing slot to shorts4
Writing smug to shorts4
Writing snag to shorts4
Writing snow to shorts4
Writing soap to shorts4
Writing sock to shorts4
Writing sod to shorts3
Writing soil to shorts4
Writing sole to shorts4
Writing solo to shorts4
Writing song to shorts4
Writing sons to shorts4
Writing sore to shorts4
Writing soul to shorts4
Writing soup to shorts4
Writing span to shorts4
Writing sped to shorts4
Writing spin to shorts4
Writing spit to shorts4
Writing spur to shorts4
Writing spy to shorts3
Writing star to shorts4
Writing stem to shorts4
Writing stir to shorts4
Writing stun to shorts4
Writing sue to shorts3
Writing sued to shorts4
Writing sues to shorts4
Writing sums to shorts4
Writing sung to shorts4
Writing sunk to shorts4
Writing swam to shorts4
Writing swap to shorts4
Writing swim to shorts4
Writing swum to shorts4
Writing tab to shorts3
Writing tabs to shorts4
Writing tack to shorts4
Writing tag to shorts3
Writing tail to shorts4
Writing tale to shorts4
Writing tall to shorts4
Writing tame to shorts4
Writing tap to shorts3
Writing taxi to shorts4
Writing tear to shorts4
Writing tens to shorts4
Writing thee to shorts4
Writing thou to shorts4
Writing thy to shorts3
Writing tick to shorts4
Writing tidy to shorts4
Writing tile to shorts4
Writing tins to shorts4
Writing tiny to shorts4
Writing tip to shorts3
Writing tips to shorts4
Writing toad to shorts4
Writing toe to shorts3
Writing toes to shorts4
Writing toll to shorts4
Writing tome to shorts4
Writing ton to shorts3
Writing tone to shorts4
Writing tons to shorts4
Writing tool to shorts4
Writing tops to shorts4
Writing tore to shorts4
Writing torn to shorts4
Writing toss to shorts4
Writing tour to shorts4
Writing toy to shorts3
Writing toys to shorts4
Writing tray to shorts4
Writing trek to shorts4
Writing tube to shorts4
Writing twin to shorts4
Writing ugh to shorts3
Writing undo to shorts4
Writing unto to shorts4
Writing ups to shorts3
Writing urge to shorts4
Writing vain to shorts4
Writing vans to shorts4
Writing vat to shorts3
Writing vein to shorts4
Writing vend to shorts4
Writing verb to shorts4
Writing vet to shorts3
Writing vile to shorts4
Writing void to shorts4
Writing wade to shorts4
Writing wage to shorts4
Writing wake to shorts4
Writing ward to shorts4
Writing warp to shorts4
Writing wars to shorts4
Writing wary to shorts4
Writing wave to shorts4
Writing weak to shorts4
Writing wed to shorts3
Writing weds to shorts4
Writing wee to shorts3
Writing wet to shorts3
Writing wets to shorts4
Writing whim to shorts4
Writing wing to shorts4
Writing wipe to shorts4
Writing wit to shorts3
Writing wive to shorts4
Writing woke to shorts4
Writing wolf to shorts4
Writing wont to shorts4
Writing wood to shorts4
Writing worm to shorts4
Writing wow to shorts3
Writing wrap to shorts4
Writing wren to shorts4
Writing yard to shorts4
Writing yawn to shorts4
Writing yeti to shorts4
Writing zone to shorts4
Writing zoom to shorts4
BUILD SUCCESSFUL (total time: 3 seconds)

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote