Answer To: { "cells": [ { "cell_type": "markdown", "metadata": { "deletable": false, "editable": false,...
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 **scrabble.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": "b35efbb1abb71594c805886b92f4a0b2",
"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": "18851fd7f85bb32743556a5b5a005291",
"grade": false,
"grade_id": "cell-b8aa7fa341f74332",
"locked": true,
"schema_version": 3,
"solution": false
}
},
"source": [
"## 6-2. Cheating at Scrabble (90 points + 10 Extra Credit Points)\n",
"\n",
"Write a Python program that takes a Scrabble rack as a command-line argument and prints all \"valid Scrabble English\" words that can be constructed from that rack, along with their Scrabble scores, sorted by score. \"valid Scrabble English\" words are provided in the data source below. A Scrabble 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: `scrabble.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 `scrabble.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 Scrabble 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 errors from the user and suggest what that error might be caused by and how to fix it (i.e., a helpful error 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 Scrabble 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 library in this assignment. However, any function in the standard library is allowed.\n",
"\n",
"An example invocation and output:\n",
"```\n",
"$ python scrabble.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 scrabble.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 scrabble.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 Scrabble 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 Scrabble 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 \"scrabble\" is or the basic background of the game please look it up online!\n",
"- We recommend that you try to break 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 errors 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/Scrabble_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 scrabble.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 error has occurred: Please provide either one or three inputs.\n"
]
}
],
"source": [
"\"\"\" Code runs and can produce at least one error message \"\"\"\n",
"# Autograde cell - do not erase/delete\n",
"\n",
"# no rack error\n",
"!python scrabble.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 correct wildcard characters \"\"\"\n",
"# Autograde cell - do not erase/delete\n",
"\n",
"# does not fail due to case\n",
"!python scrabble.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,...