Solution
Karthi answered on
Oct 20 2021
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"deletable": false,
"editable": false,
"nbgrader": {
"cell_type": "markdown",
"checksum": "931008c90a6d73bd6743697dc1533e95",
"grade": false,
"grade_id": "cell-6d8cdb4d261f4009",
"locked": true,
"schema_version": 3,
"solution": false
}
},
"source": [
"## Week 6 Assignment - W200 Introduction to Data Science Programming, UC Berkeley MIDS\n",
"\n",
"Write code in this Jupyter Notebook to solve each of the following problems. Each problem should have its solution in a separate cell. Please upload this **notebook**, your **scra
le.py** file, the **sowpods.txt** file, and your **score_word** module to your GitHub repository in your SUBMISSIONS/week_06 folder by 11:59PM PST the night before class."
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": false,
"editable": false,
"nbgrader": {
"cell_type": "markdown",
"checksum": "264b353c2fc9950602495e0bea1f3a2d",
"grade": false,
"grade_id": "cell-1ce5f6472d951780",
"locked": true,
"schema_version": 3,
"solution": false
}
},
"source": [
"## Objectives:\n",
"\n",
"- Read and understand PEP 8 standards\n",
"- Use all of your previously gained knowledge together on a single program\n",
"- Demonstrate how to import a user made module and function into python from another .py file\n",
"- Demonstrate how to input command line arguments into a .py file"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": false,
"editable": false,
"nbgrader": {
"cell_type": "markdown",
"checksum": "b35ef
1a
71594c805886b92f4a0b2",
"grade": false,
"grade_id": "cell-00008b61981ee041",
"locked": true,
"schema_version": 3,
"solution": false
}
},
"source": [
"## 6-1. PEP 8 Style Guide (reading and response) (10 points)\n",
"\n",
"Your first task for this week is to write a **250 word reading response** to the article referenced below. In addition, please list **3 questions** that you have from the article (the questions do not count towards the 250 word requirement). Please write your response in the markdown cell below.\n",
"\n",
"The writing response is a free response, so you may write about your reactions, such as an interesting thing that you saw in the article, something that really stuck out to you, etc.\n",
"\n",
"**Article**: [The PEP 8 Style Guide](https:
www.python.org/dev/peps/pep-0008). This document is really important for Python coders because it describes best practices and customs.\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": false,
"nbgrader": {
"cell_type": "markdown",
"checksum": "8cf1e0fcb247eddcaad7b239e9152c6d",
"grade": true,
"grade_id": "cell-eaae902b022d20da",
"locked": false,
"points": 10,
"schema_version": 3,
"solution": true
}
},
"source": [
"YOUR ANSWER HERE"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true,
"deletable": false,
"editable": false,
"nbgrader": {
"cell_type": "markdown",
"checksum": "18851fd7f85
32743556a5b5a005291",
"grade": false,
"grade_id": "cell-b8aa7fa341f74332",
"locked": true,
"schema_version": 3,
"solution": false
}
},
"source": [
"## 6-2. Cheating at Scra
le (90 points + 10 Extra Credit Points)\n",
"\n",
"Write a Python program that takes a Scra
le rack as a command-line argument and prints all \"valid Scra
le English\" words that can be constructed from that rack, along with their Scra
le scores, sorted by score. \"valid Scra
le English\" words are provided in the data source below. A Scra
le rack is made up of 2 to 7 characters.\n",
"\n",
"Below are the requirements for the program:\n",
"- This needs to be able to be run as a command line tool as shown below (not an input statement!)\n",
"- Name the python file: `scra
le.py`\n",
"- Make a separate module named `wordscore` which contains at a minimum a function called `score_word`. This `score_word` function will take each word and return the score (scoring dictionary is described below). Import this function into your main `scra
le.py` program. \n",
"- Allow anywhere from 2-7 character tiles (letters A-Z) to be inputted. \n",
"- Do not restrict the number of same tiles (e.g., a user is allowed to input ZZZZZQQ).\n",
"- Output the **total** list of valid Scra
le words that can be constructed from the rack as (score, word) tuples, sorted by the score and then by the word alphabetically as shown in the first example below.\n",
"- Then output 'Total number of words:' and the total number.\n",
"- You need to handle input e
ors from the user and suggest what that e
or might be caused by and how to fix it (i.e., a helpful e
or message)\n",
"- Implement wildcards as either `*` or `?`. There can be a total of **only** two wild cards in any user input (that is, one of each character: one `*` and one `?`). Only use the `*` and `?` as wildcard characters. A wildcard character can take any value A-Z. Replace the wildcard symbol with the letter in your answer (see the second example below). \n",
"- Wildcard characters are scored as 0 points, just like in the real Scra
le game. A two wildcard word can be made, should be outputted and scored as 0 points. \n",
" - In a wildcard case where the same word can be made with or without the wildcard, display the highest score. For example: given the input 'I?F', the word 'if' can be made with the wildcard '?F' as well as the letters 'IF'. Since using the letters 'IF' scores higher, display that score.\n",
"- For partial credit, your program should take less than one minute to run with 2 wildcards in the input. For full credit, the program needs to run with 2 wildcards in less than 30 seconds.\n",
"- Write docstrings for the functions and puts comments in your code.\n",
"- You may only use the Python standard li
ary in this assignment. However, any function in the standard li
ary is allowed.\n",
"\n",
"An example invocation and output:\n",
"```\n",
"$ python scra
le.py \"ZAEFIEE\"\n",
"(17, feaze)\n",
"(17, feeze)\n",
"(16, faze)\n",
"(15, fez)\n",
"(15, fiz)\n",
"(12, zea)\n",
"(12, zee)\n",
"(11, za)\n",
"(6, fae)\n",
"(6, fee)\n",
"(6, fie)\n",
"(5, ef)\n",
"(5, fa)\n",
"(5, fe)\n",
"(5, if)\n",
"(2, ae)\n",
"(2, ai)\n",
"(2, ea)\n",
"(2, ee)\n",
"Total number of words: 19\n",
"```\n",
"\n",
"An example wildcard invocation and output:\n",
"```\n",
"$ python scra
le.py \"?F\"\n",
"(4, ef)\n",
"(4, fa)\n",
"(4, fe)\n",
"(4, fy)\n",
"(4, if)\n",
"(4, of)\n",
"Total number of words: 6\n",
"```\n",
"\n",
"#### Extra Credit (+10 points):\n",
"Requirements:\n",
"- Allow a user to specify that a certain letter has to be at a certain location. For the extra credit, locations of certain letters must be specified at the command line, and may not be some sort of user prompt. How you do this is up to you!\n",
"- This needs to be included and called from your regular scra
le.py file and work with the base requirements above. That is, your program must work with or without the extra credit portion and the extra credit cannot be in a different .py file. \n",
"- Please put comments, any assumptions you made, and a sample of how to run your extra credit in the extra credit cell of this notebook below - it is the last cell. If there is not an example of how to run the extra credit in this cell we will assume that you did not do the extra credit part!\n",
"\n",
"#### The Data\n",
"The file: http:
courses.cms.caltech.edu/cs11/material/advjava/lab1/sowpods.zip or https:
drive.google.com/file/d/1ewUiZL_4HanCDsaYB5pcKEgqjMFVgGnh/view?usp=sharing contains all \"valid Scra
le English\" words in the official words list, one word per line. You should download the word file and keep it in your repository so that the program is standalone (instead of accessing it over the web from Python).\n",
"\n",
"You can read data from a text file with the following code:\n",
"```\n",
"with open(\"sowpods.txt\",\"r\") as infile:\n",
" raw_input = infile.readlines()\n",
" data = [datum.strip('\\n') for datum in raw_input]\n",
"```\n",
"\n",
"This will show the first 6 words:\n",
"```\n",
"print(data[0:6])\n",
"```\n",
"Please use the dictionary below containing the letters and their Scra
le values:\n",
"```\n",
"scores = {\"a\": 1, \"c\": 3, \"b\": 3, \"e\": 1, \"d\": 2, \"g\": 2,\n",
" \"f\": 4, \"i\": 1, \"h\": 4, \"k\": 5, \"j\": 8, \"m\": 3,\n",
" \"l\": 1, \"o\": 1, \"n\": 1, \"q\": 10, \"p\": 3, \"s\": 1,\n",
" \"r\": 1, \"u\": 1, \"t\": 1, \"w\": 4, \"v\": 4, \"y\": 4,\n",
" \"x\": 8, \"z\": 10}\n",
"```\n",
"\n",
"#### Tips:\n",
"- If you don't know what \"scra
le\" is or the basic background of the game please look it up online!\n",
"- We recommend that you try to
eak down the problem into steps on your own before writing any code. Once you've scoped generally what you want to do, then start writing some code. If you get stuck, go back to thinking about the problem rather than trying to fix lots of e
ors at the code level.\n",
"- If you have questions on getting arguments from the command line, please review async video 6.17 and Drill 6.18.\n",
"- If you keep getting stuck, then check out: https:
wiki.openhatch.org/wiki/Scra
le_challenge or https:
drive.google.com/file/d/1g3yz5ljkzaAeQ-AgQR1Hofy8ZJ0jo25x/view?usp=sharing. This is where we got the idea for this assignment and it provides some helpful tips for guiding you along the way. However, we would recommend that you try to implement this first before looking at the hints on the website.\n",
"\n",
"Good luck!"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": false,
"editable": false,
"nbgrader": {
"cell_type": "markdown",
"checksum": "3491807f5936ee993d0a6f7ea761e2fe",
"grade": false,
"grade_id": "cell-d5a08eb52a6c9895",
"locked": true,
"schema_version": 3,
"solution": false
}
},
"source": [
"### The code below will test your command line implementation of the scra
le.py code. We've made some of these tests available for you to try!"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"deletable": false,
"editable": false,
"nbgrader": {
"cell_type": "code",
"checksum": "5bc2edfe9c69d0d266287d7754a5d763",
"grade": false,
"grade_id": "cell-f28d35b358dd64d9",
"locked": true,
"schema_version": 3,
"solution": false
}
},
"outputs": [],
"source": [
"# Code for the testing\n",
"\n",
"import subprocess\n",
"from nose.tools import assert_equal \n",
"from nose.tools import assert_true\n",
"from nose.tools import assert_greater\n",
"from nose.tools import assert_less"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"deletable": false,
"editable": false,
"nbgrader": {
"cell_type": "code",
"checksum": "aeb5b5c9be0b7da46cc28b2e9cf40188",
"grade": true,
"grade_id": "cell-afe085b138053602",
"locked": true,
"points": 3,
"schema_version": 3,
"solution": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"An e
or has occu
ed: Please provide either one or three inputs.\n"
]
}
],
"source": [
"\"\"\" Code runs and can produce at least one e
or message \"\"\"\n",
"# Autograde cell - do not erase/delete\n",
"\n",
"# no rack e
or\n",
"!python scra
le.py "
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"deletable": false,
"editable": false,
"nbgrader": {
"cell_type": "code",
"checksum": "d8a0b5ba3bae4fda30e7106e5e533714",
"grade": true,
"grade_id": "cell-75530651c7f494f0",
"locked": true,
"points": 3,
"schema_version": 3,
"solution": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(10, penguin)\n",
"(9, pening)\n",
"(8, unpeg)\n",
"(8, genip)\n",
"(7, unpin)\n",
"(7, unpen)\n",
"(7, pung)\n",
"(7, ping)\n",
"(7, penni)\n",
"(7, ingenu)\n",
"(6, pug)\n",
"(6, pine)\n",
"(6, pig)\n",
"(6, peni)\n",
"(6, pein)\n",
"(6, peg)\n",
"(6, gup)\n",
"(6, gip)\n",
"(5, pun)\n",
"(5, piu)\n",
"(5, pin)\n",
"(5, pie)\n",
"(5, pen)\n",
"(5, nip)\n",
"(5, nep)\n",
"(5, ginn)\n",
"(5, gien)\n",
"(5, genu)\n",
"(5, ennui)\n",
"(4, up)\n",
"(4, pi)\n",
"(4, pe)\n",
"(4, nine)\n",
"(4, neg)\n",
"(4, gun)\n",
"(4, gue)\n",
"(4, gnu)\n",
"(4, gin)\n",
"(4, gie)\n",
"(4, gen)\n",
"(4, eng)\n",
"(3, uni)\n",
"(3, ug)\n",
"(3, nun)\n",
"(3, nie)\n",
"(3, inn)\n",
"(3, gu)\n",
"(3, gi)\n",
"(2, un)\n",
"(2, nu)\n",
"(2, ne)\n",
"(2, in)\n",
"(2, en)\n",
"Total number of words: 53\n"
]
}
],
"source": [
"\"\"\" Does not fail due to trivial mistakes and takes co
ect wildcard characters \"\"\"\n",
"# Autograde cell - do not erase/delete\n",
"\n",
"# does not fail due to case\n",
"!python scra
le.py \"PENguin\""
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"deletable": false,
"editable": false,
"nbgrader": {
"cell_type": "code",
"checksum": "11e7c05d7003e6c6cb92accb4b2aaff8",
"grade": true,
"grade_id": "cell-70e47257819da62a",
"locked": true,
"points": 0,
"schema_version": 3,
"solution": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(15, pizes)\n",
"(15, pized)\n",
"(15, pique)\n",
"(15, piezo)\n",
"(15, peize)\n",
"(15, equip)\n",
"(14, zips)\n",
"(14, zeps)\n",
"(14, quip)\n",
"(14, quep)\n",
"(14, enzian)\n",
"(13, zinke)\n",
"(13, zines)\n",
"(13, zineb)\n",
"(13, zeins)\n",
"(13, zap)\n",
"(13, quine)\n",
"(13, pixie)\n",
"(13, pixes)\n",
"(13, pixel)\n",
"(12, zone)\n",
"(12, zite)\n",
"(12, zins)\n",
"(12, zing)\n",
"(12, zinc)\n",
"(12, quin)\n",
"(12, pixy)\n",
"(12, pinkens)\n",
"(12, jupe)\n",
"(12, jinnee)\n",
"(12, jimp)\n",
"(12, jeep)\n",
"(12, jape)\n",
"(12, expo)\n",
"(12, enjoin)\n",
"(11, ziz)\n",
"(11, zit)\n",
"(11, zig)\n",
"(11, zex)\n",
"(11, zel)\n",
"(11, zek)\n",
"(11, zee)\n",
"(11, zed)\n",
"(11, zea)\n",
"(11, xenon)\n",
"(11, xenic)\n",
"(11, xenia)\n",
"(11, qis)\n",
"(11, pinkie)\n",
"(11, pinkey)\n",
"(11, pinker)\n",
"(11, pinked)\n",
"(11, pfennig)\n",
"(11, pekins)\n",
"(11, nixie)\n",
"(11, nixes)\n",
"(11, nixer)\n",
"(11, nixed)\n",
"(11, ninja)\n",
"(11, kippen)\n",
"(11, jinns)\n",
"(11, jinni)\n",
"(11, jenny)\n",
"(11, jap)\n",
"(11, exing)\n",
"(11, exine)\n",
"(10, zo)\n",
"(10, za)\n",
"(10, wippen)\n",
"(10, pyning)\n",
"(10, pyeing)\n",
"(10, pinyon)\n",
"(10, pinyin)\n",
"(10, pinky)\n",
"(10, pinks)\n",
"(10, pinko)\n",
"(10, pinbone)\n",
"(10, pikey)\n",
"(10, pikes)\n",
"(10, piker)\n",
"(10, piked)\n",
"(10, phenix)\n",
"(10, phenic)\n",
"(10, penks)\n",
"(10, pekan)\n",
"(10, nixy)\n",
"(10, next)\n",
"(10, kipes)\n",
"(10, kepis)\n",
"(10, join)\n",
"(10, jive)\n",
"(10, jinx)\n",
"(10, jins)\n",
"(10, jink)\n",
"(10, jibe)\n",
"(10, jeon)\n",
"(10, jedi)\n",
"(10, jean)\n",
"(10, jann)\n",
"(10, jane)\n",
"(10, hippen)\n",
"(10, exon)\n",
"(10, exit)\n",
"(9, yipes)\n",
"(9, xis)\n",
"(9, wipes)\n",
"(9, wiper)\n",
"(9, wiped)\n",
"(9, viper)\n",
"(9, pyxie)\n",
"(9, pynes)\n",
"(9, pyned)\n",
"(9, pyins)\n",
"(9, pincer)\n",
"(9, piment)\n",
"(9, piki)\n",
"(9, pika)\n",
"(9, piemen)\n",
"(9, pieman)\n",
"(9, piecen)\n",
"(9, picine)\n",
"(9, picene)\n",
"(9, phone)\n",
"(9, pheon)\n",
"(9, phene)\n",
"(9, pewit)\n",
"(9, pepsin)\n",
"(9, pepino)\n",
"(9, penmen)\n",
"(9, penman)\n",
"(9, penguin)\n",
"(9, pending)\n",
"(9, pencil)\n",
"(9, peke)\n",
"(9, peinct)\n",
"(9, pectin)\n",
"(9, nipple)\n",
"(9, nipper)\n",
"(9, nipped)\n",
"(9, mispen)\n",
"(9, kype)\n",
"(9, knop)\n",
"(9, knap)\n",
"(9, kips)\n",
"(9, kipp)\n",
"(9, kinone)\n",
"(9, kilp)\n",
"(9, kept)\n",
"(9, keps)\n",
"(9, kemp)\n",
"(9, kelp)\n",
"(9, keep)\n",
"(9, jun)\n",
"(9, joe)\n",
"(9, jiz)\n",
"(9, jig)\n",
"(9, jib)\n",
"(9, jew)\n",
"(9, jeu)\n",
"(9, jet)\n",
"(9, jee)\n",
"(9, jai)\n",
"(9, incept)\n",
"(9, impone)\n",
"(9, impend)\n",
"(9, exo)\n",
"(8, yonnie)\n",
"(8, ympe)\n",
"(8, yips)\n",
"(8, yeps)\n",
"(8, yelp)\n",
"(8, xu)\n",
"(8, wisp)\n",
"(8, winnle)\n",
"(8, winner)\n",
"(8, winned)\n",
"(8, wimp)\n",
"(8, whip)\n",
"(8, wept)\n",
"(8, weep)\n",
"(8, venins)\n",
"(8, venine)\n",
"(8, veep)\n",
"(8, tenpins)\n",
"(8, spinone)\n",
"(8, spinney)\n",
"(8, spinnet)\n",
"(8, spinner)\n",
"(8, pyre)\n",
"(8, pyic)\n",
"(8, pyet)\n",
"(8, pyes)\n",
"(8, punnier)\n",
"(8, pontine)\n",
"(8, pipet)\n",
"(8, pipes)\n",
"(8, piper)\n",
"(8, piped)\n",
"(8, pinones)\n",
"(8, pinnule)\n",
"(8, pinnoed)\n",
"(8, pinnies)\n",
"(8, pinnets)\n",
"(8, pinners)\n",
"(8, pinnate)\n",
"(8, pinnace)\n",
"(8, pingle)\n",
"(8, pinger)\n",
"(8, pinged)\n",
"(8, pinenes)\n",
"(8, pinder)\n",
"(8, pindan)\n",
"(8, pinch)\n",
"(8, pigpen)\n",
"(8, pigeon)\n",
"(8, piends)\n",
"(8, piece)\n",
"(8, phon)\n",
"(8, phiz)\n",
"(8, phis)\n",
"(8, phew)\n",
"(8, pfui)\n",
"(8, pews)\n",
"(8, pension)\n",
"(8, penning)\n",
"(8, pennine)\n",
"(8, pennill)\n",
"(8, pennies)\n",
"(8, pennied)\n",
"(8, pence)\n",
"(8, peining)\n",
"(8, pehs)\n",
"(8, peening)\n",
"(8, pecan)\n",
"(8, peaning)\n",
"(8, pantine)\n",
"(8, pannier)\n",
"(8, opening)\n",
"(8, nippy)\n",
"(8, ninepin)\n",
"(8, nimps)\n",
"(8, newing)\n",
"(8, nempt)\n",
"(8, neaping)\n",
"(8, kop)\n",
"(8, koine)\n",
"(8, knive)\n",
"(8, knife)\n",
"(8, kinin)\n",
"(8, kines)\n",
"(8, jo)\n",
"(8, ja)\n",
"(8, ippon)\n",
"(8, invent)\n",
"(8, inkle)\n",
"(8, inker)\n",
"(8, inked)\n",
"(8, impel)\n",
"(8, imped)\n",
"(8, hype)\n",
"(8, hope)\n",
"(8, hipt)\n",
"(8, hips)\n",
"(8, hesp)\n",
"(8, hept)\n",
"(8, heps)\n",
"(8, hennin)\n",
"(8, hemp)\n",
"(8, help)\n",
"(8, heap)\n",
"(8, gipsen)\n",
"(8, genips)\n",
"(8, flip)\n",
"(8, finner)\n",
"(8, finned)\n",
"(8, fainne)\n",
"(8, epigon)\n",
"(8, epics)\n",
"(8, epha)\n",
"(8, enwind)\n",
"(8, enprint)\n",
"(8, eking)\n",
"(8, eikon)\n",
"(8, dipnet)\n",
"(8, cripe)\n",
"(8, copen)\n",
"(8, clipe)\n",
"(8, biped)\n",
"(8, bicep)\n",
"(7, yup)\n",
"(7, yince)\n",
"(7, yap)\n",
"(7, wop)\n",
"(7, wizen)\n",
"(7, winze)\n",
"(7, winns)\n",
"(7, winna)\n",
"(7, winge)\n",
"(7, winey)\n",
"(7, wines)\n",
"(7, wined)\n",
"(7, wince)\n",
"(7, widen)\n",
"(7, whine)\n",
"(7, wenny)\n",
"(7, wap)\n",
"(7, vixen)\n",
"(7, visne)\n",
"(7, vinew)\n",
"(7, vines)\n",
"(7, viner)\n",
"(7, vined)\n",
"(7, vimen)\n",
"(7, veiny)\n",
"(7, veins)\n",
"(7, unripe)\n",
"(7, unpins)\n",
"(7, unpile)\n",
"(7, unpent)\n",
"(7, unpens)\n",
"(7, unopen)\n",
"(7, uniped)\n",
"(7, tiepin)\n",
"(7, tenpin)\n",
"(7, supine)\n",
"(7, spline)\n",
"(7, spinny)\n",
"(7, spinet)\n",
"(7, spines)\n",
"(7, spinel)\n",
"(7, spined)\n",
"(7, spinae)\n",
"(7, snipes)\n",
"(7, sniper)\n",
"(7, sniped)\n",
"(7, ripens)\n",
"(7, repins)\n",
"(7, repine)\n",
"(7, rapine)\n",
"(7, pyx)\n",
"(7, pya)\n",
"(7, purine)\n",
"(7, punnet)\n",
"(7, punner)\n",
"(7, punned)\n",
"(7, punkin)\n",
"(7, punkie)\n",
"(7, punier)\n",
"(7, puisne)\n",
"(7, pterin)\n",
"(7, pruine)\n",
"(7, proine)\n",
"(7, prince)\n",
"(7, pownie)\n",
"(7, pontie)\n",
"(7, ponies)\n",
"(7, ponied)\n",
"(7, ponent)\n",
"(7, pointe)\n",
"(7, pitten)\n",
"(7, pitmen)\n",
"(7, pirnie)\n",
"(7, pipy)\n",
"(7, pips)\n",
"(7, pipi)\n",
"(7, pipa)\n",
"(7, pioney)\n",
"(7, pioner)\n",
"(7, pioned)\n",
"(7, pintle)\n",
"(7, pinons)\n",
"(7, pinole)\n",
"(7, pinnie)\n",
"(7, pinnet)\n",
"(7, pinner)\n",
"(7, pinned)\n",
"(7, pinnas)\n",
"(7, pinnal)\n",
"(7, pinnae)\n",
"(7, pinken)\n",
"(7, pinite)\n",
"(7, pinion)\n",
"(7, pining)\n",
"(7, pinies)\n",
"(7, pinier)\n",
"(7, pings)\n",
"(7, pingo)\n",
"(7, pineta)\n",
"(7, pinery)\n",
"(7, pinene)\n",
"(7, pineal)\n",
"(7, pinang)\n",
"(7, pimp)\n",
"(7, pima)\n",
"(7, pieing)\n",
"(7, pics)\n",
"(7, pick)\n",
"(7, pica)\n",
"(7, pht)\n",
"(7, pho)\n",
"(7, pernio)\n",
"(7, perkin)\n",
"(7, perfin)\n",
"(7, peps)\n",
"(7, pepo)\n",
"(7, pensil)\n",
"(7, pennon)\n",
"(7, pennis)\n",
"(7, pennia)\n",
"(7, penni)\n",
"(7, pennes)\n",
"(7, penner)\n",
"(7, penned)\n",
"(7, pennal)\n",
"(7, pennae)\n",
"(7, pening)\n",
"(7, penill)\n",
"(7, penile)\n",
"(7, penies)\n",
"(7, penial)\n",
"(7, pengo)\n",
"(7, pendu)\n",
"(7, pends)\n",
"(7, penang)\n",
"(7, peined)\n",
"(7, peeing)\n",
"(7, pecs)\n",
"(7, peck)\n",
"(7, pech)\n",
"(7, peba)\n",
"(7, patine)\n",
"(7, pantie)\n",
"(7, pannes)\n",
"(7, panner)\n",
"(7, panned)\n",
"(7, panino)\n",
"(7, panini)\n",
"(7, paning)\n",
"(7, panier)\n",
"(7, pangen)\n",
"(7, pained)\n",
"(7, orpine)\n",
"(7, opines)\n",
"(7, opined)\n",
"(7, nying)\n",
"(7, nipter)\n",
"(7, nifes)\n",
"(7, nieve)\n",
"(7, niefs)\n",
"(7, newie)\n",
"(7, nepits)\n",
"(7, neks)\n",
"(7, neive)\n",
"(7, neifs)\n",
"(7, nappie)\n",
"(7, napkin)\n",
"(7, naping)\n",
"(7, mope)\n",
"(7, mips)\n",
"(7, minnie)\n",
"(7, meninx)\n",
"(7, mening)\n",
"(7, lupine)\n",
"(7, loipen)\n",
"(7, lippen)\n",
"(7, lineup)\n",
"(7, leptin)\n",
"(7, kyne)\n",
"(7, kune)\n",
"(7, knit)\n",
"(7, knew)\n",
"(7, knee)\n",
"(7, kite)\n",
"(7, kirn)\n",
"(7, kins)\n",
"(7, kino)\n",
"(7,...