diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml deleted file mode 100644 index a3f677c..0000000 --- a/.github/workflows/tests.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: tests - -on: - push: - branches: [v3] - pull_request: - schedule: - # Run on the first of every month - - cron: "0 0 1 * *" - workflow_dispatch: - -jobs: - tests: - name: Tests (${{ matrix.os }}, Python ${{ matrix.python-version }}) - runs-on: ${{ matrix.os }} - strategy: - matrix: - # don't test on windows - os: [ubuntu-latest, macos-latest] - python-version: ["3.10"] - - steps: - - uses: actions/checkout@v2 - - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 - with: - python-version: ${{ matrix.python-version }} - - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -r requirements-dev.txt - - - name: Run tests - run: | - make tests diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 3581c29..0000000 --- a/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2024 Allen Downey - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/Makefile b/Makefile deleted file mode 100644 index 91e1691..0000000 --- a/Makefile +++ /dev/null @@ -1,20 +0,0 @@ -PROJECT_NAME = ThinkPythonSolutions -PYTHON_VERSION = 3.10 -PYTHON_INTERPRETER = python - -## Set up the environment -create_environment: - conda create --name $(PROJECT_NAME) python=$(PYTHON_VERSION) -y - @echo ">>> conda env created. Activate with:\nconda activate $(PROJECT_NAME)" - -## Install Python Dependencies -requirements: - $(PYTHON_INTERPRETER) -m pip install -U pip setuptools wheel - $(PYTHON_INTERPRETER) -m pip install -r requirements.txt - - -tests: - # testing notebook 04 takes too long - cd soln; pytest --nbmake chap0[12356789]*.ipynb - # testing notebook 12 fails on windows (unicode!) - cd soln; pytest --nbmake chap1[1345678]*.ipynb diff --git a/ProjectHome.md b/ProjectHome.md new file mode 100644 index 0000000..83850c9 --- /dev/null +++ b/ProjectHome.md @@ -0,0 +1 @@ +Solutions for exercises from Think Python, by Allen Downey, available from thinkpython.com \ No newline at end of file diff --git a/README.md b/README.md deleted file mode 100644 index 8c35b46..0000000 --- a/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Think Python, 3rd Edition - -This directory contains the source notebooks for the 3rd edition of [Think Python](https://greenteapress.com/wp/think-python-3rd-edition/), which contain solutions to the exercises. - -If you are making a translation or other modified version of the book, this is the repo to fork. diff --git a/ThinkPythonSolutions.md b/ThinkPythonSolutions.md new file mode 100644 index 0000000..dcbdb14 --- /dev/null +++ b/ThinkPythonSolutions.md @@ -0,0 +1,44 @@ +# Think Python Solutions # + +Use this page to keep track of which exercises are done. + + +### Chapter 1 ### + +1.1: + +### Chapter 2 ### + +### Chapter 3 ### + +### Chapter 4 ### + +### Chapter 5 ### + +### Chapter 6 ### + +### Chapter 7 ### + +### Chapter 8 ### + +### Chapter 9 ### + +### Chapter 10 ### + +### Chapter 11 ### + +### Chapter 12 ### + +### Chapter 13 ### + +### Chapter 14 ### + +### Chapter 15 ### + +### Chapter 16 ### + +### Chapter 17 ### + +### Chapter 18 ### + +### Chapter 19 ### \ No newline at end of file diff --git a/latex/Makefile b/latex/Makefile deleted file mode 100644 index 370e6df..0000000 --- a/latex/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -.PHONY: compile_book convert_book - -compile_book: - pdflatex main.tex && evince main.pdf - -convert_book: - cp ../soln/chap*.ipynb . - sh build.sh chap*.ipynb \ No newline at end of file diff --git a/latex/add_header.py b/latex/add_header.py deleted file mode 100644 index a87c417..0000000 --- a/latex/add_header.py +++ /dev/null @@ -1,13 +0,0 @@ -import sys -import nbformat as nbf - -header_filename = sys.argv[1] -notebook_filename = sys.argv[2] - -header = nbf.read(header_filename, nbf.NO_CONVERT) -notebook = nbf.read(notebook_filename, nbf.NO_CONVERT) - -notebook.cells = header.cells + notebook.cells - -print('Adding', header_filename, 'to', notebook_filename) -nbf.write(notebook, notebook_filename) diff --git a/latex/back_matter.tex b/latex/back_matter.tex deleted file mode 100644 index aa26e20..0000000 --- a/latex/back_matter.tex +++ /dev/null @@ -1,4 +0,0 @@ -\nocite{*} -\bibliographystyle{plain} - -\printindex diff --git a/latex/build.sh b/latex/build.sh deleted file mode 100644 index c3db4d1..0000000 --- a/latex/build.sh +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/bash -# Build the LaTex book version - -# copy the python modules -rsync -a ../soln/thinkpython.py . -rsync -a ../soln/diagram.py . -rsync -a ../soln/structshape.py . - -for NOTEBOOK in $@ -do - # remove image files generated by previous runs - FIGS=${NOTEBOOK%.ipynb}_files - echo "rm -f $FIGS/*" - rm -f $FIGS/* - - # copy the notebook - echo "cp ../soln/$NOTEBOOK ." - cp ../soln/$NOTEBOOK . - - # add the header that generates LaTeX tables - echo "python add_header.py header_latex.ipynb $NOTEBOOK" - python add_header.py header_latex.ipynb $NOTEBOOK - - # run pytest to execute and overwrite the notebook - # pytest --nbmake --overwrite $NOTEBOOK - - # use nbconvert to execute and overwrite the notebook - echo "jupyter nbconvert --to markdown $NOTEBOOK" - jupyter nbconvert --to notebook --execute $NOTEBOOK - - # remove cells with solutions - echo "python remove_soln.py $NOTEBOOK" - python remove_soln.py $NOTEBOOK - - # remove cells with remove-cell tag - # (actually remove just the source and outputs) - # We have to keep the cell; - # otherwise it throws off the figure numbering - echo "python remove_cells.py $NOTEBOOK" - python remove_cells.py $NOTEBOOK - - # convert notebooks to markdown - echo "jupyter nbconvert --to markdown $NOTEBOOK" - jupyter nbconvert --to markdown $NOTEBOOK - - # convert markdown to LaTeX - FLAGS="--listings --top-level-division=chapter" - MDFILE=${NOTEBOOK%.ipynb}.md - TEXFILE=${NOTEBOOK%.ipynb}.tex - echo "pandoc $FLAGS -s $MDFILE -o $TEXFILE" - pandoc $FLAGS -s $MDFILE -o $TEXFILE - - # remove front and backmatter from the chapters - # (and make a few text substitutions) - echo "python split.py $TEXFILE" - python split.py $TEXFILE -done diff --git a/latex/front_matter.tex b/latex/front_matter.tex deleted file mode 100644 index c4b455b..0000000 --- a/latex/front_matter.tex +++ /dev/null @@ -1,96 +0,0 @@ - -%-half title-------------------------------------------------- -%\thispagestyle{empty} -% -%\begin{flushright} -%\vspace*{2.0in} -% -%\begin{spacing}{3} -%{\huge \thetitle} -%\end{spacing} -% -%\vspace{0.25in} -% -%Version \theversion -% -%\vfill -% -%\end{flushright} - -%--verso------------------------------------------------------ - -%\afterpage{\blankpage} - -%\newpage -%\newpage -%\clearemptydoublepage -%\pagebreak -%\thispagestyle{empty} -%\vspace*{6in} - -%--title page-------------------------------------------------- - -\pagebreak -\thispagestyle{empty} - -\begin{flushright} -\vspace*{2.0in} - -\begin{spacing}{3} -{\huge \thetitle} -\end{spacing} - -\vspace{0.25in} - -Version \theversion - -\vspace{1in} - - -{\Large -\theauthors \\ -} - - -\vspace{0.5in} - -{\Large Green Tea Press} - -{\small Needham, Massachusetts} - -%\includegraphics[width=1in]{figs/logo1.eps} -\vfill - -\end{flushright} - - - -%--copyright-------------------------------------------------- -\pagebreak -\thispagestyle{empty} - -Copyright \copyright ~2024 \theauthors. - - - -\vspace{0.2in} - -\begin{flushleft} -Green Tea Press \\ -9 Washburn Ave \\ -Needham MA 02492 -\end{flushleft} - -Permission is granted to copy, distribute, transmit and adapt this work -under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 -International License: \url{https://creativecommons.org/licenses/by-nc-sa/4.0}. - -If you are interested in distributing a commercial version of this -work, please contact the author. - - -%--table of contents------------------------------------------ - -\cleardoublepage -\setcounter{tocdepth}{1} -\tableofcontents diff --git a/latex/main.tex b/latex/main.tex deleted file mode 100644 index 8b47eac..0000000 --- a/latex/main.tex +++ /dev/null @@ -1,68 +0,0 @@ -% LaTeX source for ``Think Python 3e'' -% Copyright 2024 Allen B. Downey. - -% License: Creative Commons Attribution-NonCommercial 4.0 Unported License. -% https://creativecommons.org/licenses/by-nc/4.0/ -% - -\documentclass{book} - -\input{settings} - -\begin{document} - -% add row colors to tables -% https://tex.stackexchange.com/questions/5363/how-to-create-alternating-rows-in-a-table -\rowcolors{2}{white}{gray!10} - -\frontmatter - -\input{front_matter} - -% \input{chap00} - -\mainmatter - -\input{chap01} - -\input{chap02} - -\input{chap03} - -\input{chap04} - -\input{chap05} - -\input{chap06} - -\input{chap07} - -\input{chap08} - -\input{chap09} - -\input{chap10} - -\input{chap11} - -\input{chap12} - -\input{chap13} - -\input{chap14} - -\input{chap15} - -\input{chap16} - -\input{chap17} - -\input{chap18} - -\input{chap19} - -\backmatter - -\input{back_matter} - -\end{document} diff --git a/latex/remove_cells.py b/latex/remove_cells.py deleted file mode 100644 index 4421200..0000000 --- a/latex/remove_cells.py +++ /dev/null @@ -1,78 +0,0 @@ -import sys -import nbformat as nbf - -filename = sys.argv[1] -print('Clearing cells from', filename) -ntbk = nbf.read(filename, nbf.NO_CONVERT) - - -def remove_input(cell): - cell['source'] = '' - - -def remove_output(cell): - if hasattr(cell, 'outputs'): - cell['outputs'] = [] - if hasattr(cell, 'execution_count'): - cell['execution_count'] = 0 - - -def remove_both(cell): - cell['source'] = '' - if hasattr(cell, 'outputs'): - del cell['outputs'] - if hasattr(cell, 'execution_count'): - del cell['execution_count'] - - -def clip_output(cell): - """Clip each lines of the output to the first 80 characters. - - This has not been tested. - """ - for output in cell.get('outputs', []): - data = output.get('data', {}) - if 'text/plain' in data: - lines = [line[:80] for line in data['text/plain'].split('\n')] - data['text/plain'] = '\n'.join(lines) - - -def truncate_output(cell): - """Remove all but the first lines. - """ - for output in cell.get('outputs', []): - data = output.get('data', {}) - if 'text/plain' in data: - lines = data['text/plain'].split('\n') - data['text/plain'] = '\n'.join(lines[:6]) - #print(cell['outputs']) - - -for cell in ntbk.cells: - - # if a cell has a remove-cell tag, remove the source and outputs - cell_tags = cell.get('metadata', {}).get('tags', []) - #print(cell_tags) - if ('remove-input' in cell_tags or - 'hide-input' in cell_tags ): - remove_input(cell) - - if ('remove-output' in cell_tags or - 'hide-output' in cell_tags ): - remove_output(cell) - - if ('clip-output' in cell_tags): - clip_output(cell) - - if ('truncate-output' in cell_tags): - truncate_output(cell) - - if ('remove-cell' in cell_tags or - 'hide-cell' in cell_tags or - 'remove-print' in cell_tags): - remove_both(cell) - cell['cell_type'] = 'raw' - - - -nbf.write(ntbk, filename) diff --git a/latex/remove_soln.py b/latex/remove_soln.py deleted file mode 100644 index 4b6779b..0000000 --- a/latex/remove_soln.py +++ /dev/null @@ -1,24 +0,0 @@ -import sys -import nbformat as nbf - -filename = sys.argv[1] -ntbk = nbf.read(filename, nbf.NO_CONVERT) - -keep_cells = [] - -for cell in ntbk.cells: - # skip empty cells - source = cell['source'] - if len(source) == 0: - continue - - # skip solutions - if source.startswith('# Solution'): - continue - - keep_cells.append(cell) - -ntbk.cells = keep_cells - -print('Removing solutions from', filename) -nbf.write(ntbk, filename) diff --git a/latex/settings.tex b/latex/settings.tex deleted file mode 100644 index f589e0f..0000000 --- a/latex/settings.tex +++ /dev/null @@ -1,268 +0,0 @@ -\newcommand{\thetitle}{Think Python} -\newcommand{\thesubtitle}{How to Think Like a Computer Scientist} -\newcommand{\theauthors}{Allen B. Downey} -\newcommand{\theversion}{3.0.0} - -\title{\thetitle} -\author{\theauthors} - -\usepackage[T1]{fontenc} -\usepackage[utf8]{inputenc} -\usepackage{textcomp} % provide euro and other symbols -\usepackage{amssymb,amsmath} -\usepackage[table]{xcolor} - -\usepackage{roboto} - -\usepackage{setspace} -\usepackage{graphicx} - -\IfFileExists{microtype.sty}{% use microtype if available - \usepackage[]{microtype} - \UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts -}{} - -\makeatletter -\@ifundefined{KOMAClassName}{% if non-KOMA class - \IfFileExists{parskip.sty}{% - \usepackage{parskip} - }{% else - \setlength{\parindent}{0pt} - \setlength{\parskip}{6pt plus 2pt minus 1pt}} -}{% if KOMA class - \KOMAoptions{parskip=half}} -\makeatother - -\IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available - -\usepackage{bookmark} -\hypersetup{ - hidelinks, - pdfcreator={LaTeX via pandoc}} - - -% Set default figure placement to h! (here) -\makeatletter -\def\fps@figure{h!} -\makeatother - - -\usepackage{makeidx} -\usepackage{upquote} -\usepackage[listings]{tcolorbox} -\newcommand{\passthrough}[1]{#1} - - -% we need these because pandoc uses them -\usepackage{booktabs} -\usepackage{longtable} -\usepackage{calc} % https://github.com/jgm/pandoc/issues/8248 - - -% don't draw the top and bottom rules -\renewcommand{\toprule}{} -\renewcommand{\bottomrule}{} - -% don't put space around the midrule -% https://tex.stackexchange.com/questions/381718/how-to-remove-the-space-after-midrule-in-a-table/381720 -\newcommand{\midsepremove}{\aboverulesep = 0mm - \belowrulesep = 0mm} -\midsepremove - -\newcommand{\midsepdefault}{\aboverulesep = 0.605mm - \belowrulesep = 0.984mm} -%\midsepdefault - -% make tables smaller and sans serif -% https://en.wikibooks.org/wiki/LaTeX/Tables#Changing_font_size -\let\oldtabular\tabular -\renewcommand{\tabular}{\footnotesize\sffamily\oldtabular} - -% set the page size -\usepackage[twoside,centering]{geometry} - -% this is what Lulu calls crown quarto -\geometry{ - %showframe=true, - %showcrop=true, - % total document size - papersize={195mm,252mm}, - % book trim size - layoutsize={189mm,246mm}, - layoutoffset={3mm,3mm}, - % live area = 164mm x 220mm - % subtract 10 from width for the binding offset - % subtract 10 from both to improve the look - total={144mm,210mm}, - bindingoffset=10mm, - includeheadfoot=true, - centering=true, - nofoot=true, -} - -% paragraph spacing -\setlength{\parindent}{0pt} -\setlength{\parskip}{12pt plus 4pt minus 4pt} -\linespread{1.05} -\def\arraystretch{1.5} - -% list spacing -%\setlength{\topsep}{5pt plus 2pt minus 3pt} % 10.0pt plus 4.0pt minus 6.0pt -%\setlength{\partopsep}{-6pt plus 2pt minus 2pt} % 3.0pt plus 2.0pt minus 2.0pt -%\setlength{\itemsep}{0pt} % 5.0pt plus 2.5pt minus 1.0pt - -\providecommand{\tightlist}{% - \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} - -% these are copied from tex/latex/base/book.cls -% all I changed is afterskip -\makeatletter -\renewcommand{\section}{\@startsection{section}{1}{\z@}% - {-3.5ex \@plus -1ex \@minus -.2ex}% - {0.7ex \@plus.2ex}% - {\normalfont\Large\bfseries}} -\renewcommand\subsection{\@startsection{subsection}{2}{\z@}% - {-3.25ex\@plus -1ex \@minus -.2ex}% - {0.3ex \@plus .2ex}% - {\normalfont\large\bfseries}} -\renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}% - {-3.25ex\@plus -1ex \@minus -.2ex}% - {0.3ex \@plus .2ex}% - {\normalfont\normalsize\bfseries}} -\makeatother - -% table of contents vertical spacing -\usepackage{tocloft} -\setlength\cftparskip{8pt plus 4pt minus 4pt} - -% balanced index with TOC entry -\usepackage[totoc]{idxlayout} - -% The following line adds a little extra space to the column -% where the Section numbers appear in the table of contents -\makeatletter -\renewcommand{\l@section}{\@dottedtocline{1}{1.5em}{3.0em}} -\makeatother - -% customize page headers -\usepackage{fancyhdr} -\pagestyle{fancyplain} -\renewcommand{\chaptermark}[1]{\markboth{Chapter \thechapter ~~ #1}{}} -\renewcommand{\sectionmark}[1]{\markright{\thesection ~~ #1}} -\lhead[\fancyplain{}{\color{codepurple}\bfseries\thepage}]% - {\fancyplain{}{\color{codepurple}\bfseries\rightmark}} -\rhead[\fancyplain{}{\color{codepurple}\bfseries\leftmark}]% - {\fancyplain{}{\color{codepurple}\bfseries\thepage}} -\cfoot{} -\renewcommand{\headrulewidth}{0pt} -%\rfoot{\textcolor{gray}{\tiny Draft \today}} - -% tweak captions -% https://brushingupscience.com/2016/02/13/four-effortless-latex-packages-you-should-use/ -\usepackage[margin=15pt,font=small]{caption} - -%\usepackage{floatrow} - -% set headings in sans serif fonf -%\usepackage{sectsty} -%\allsectionsfont{\sffamily} - - -% colors for lstlistings -\definecolor{codeblue}{RGB}{8, 68, 136} % Bl30 -\definecolor{codegreen}{RGB}{0, 109, 44} % Gr40 -\definecolor{codered}{RGB}{126, 6, 16} % Rd30 -\definecolor{codeorange}{RGB}{127, 39, 4} % Or30 -\definecolor{codepurple}{RGB}{83, 38, 143} % Pu30 - - -\definecolor{outputgray}{gray}{0.3} -\definecolor{rulecolor}{gray}{0.7} -\definecolor{lightgray}{gray}{0.9} -\definecolor{gray95}{gray}{0.95} - -% settings for all listings -\lstdefinestyle{codestyle}{ - belowskip=\parskip, - basicstyle=\ttfamily, - columns=fullflexible, - keepspaces=true, - showstringspaces=false, - upquote=true, - xleftmargin=0pt, - commentstyle=\color{codepurple}, - identifierstyle=\color{codeblue}, - stringstyle=\color{codered}, - keywordstyle=\color{codegreen}, -} - -\lstset{style=codestyle} - -% style for source -\lstdefinestyle{source}{ - aboveskip=\parskip, - belowskip=0pt, - backgroundcolor=\color{gray95}, - rulecolor=\color{rulecolor}, - basicstyle=\ttfamily\color{outputgray}, - frame=tblr, - frameround=ffff, - framerule=0.5pt, - framexleftmargin=1pt, - morekeywords={as}, -} - -% settings for output -\lstdefinestyle{output}{ - aboveskip=3pt, - backgroundcolor=\color{gray95}, - rulecolor=\color{gray95}, - basicstyle=\ttfamily\color{outputgray}, - %frame=none, - frame=tblr, - frameround=ffff, - framexleftmargin=1pt, - keywordstyle=\color{outputgray}, - commentstyle=\color{outputgray}, - identifierstyle=\color{outputgray}, - stringstyle=\color{outputgray}, -} - -% pdf hyperlinks, table of contents, and document properties -\usepackage{hyperref} -\hypersetup{% - pdftitle={\thetitle: \thesubtitle}, - pdfauthor={\theauthors}, - pdfsubject={Version \theversion}, - pdfkeywords={}, - bookmarksopen=false, - colorlinks=true, - citecolor=black, - filecolor=black, - linkcolor=black, - urlcolor=codeblue -} - - -% TODO: the left and right double quotes are not quite correct, -% if anyone cares - -\lstset{literate= - {á}{{\'a}}1 {é}{{\'e}}1 {í}{{\'i}}1 {ó}{{\'o}}1 {ú}{{\'u}}1 - {Á}{{\'A}}1 {É}{{\'E}}1 {Í}{{\'I}}1 {Ó}{{\'O}}1 {Ú}{{\'U}}1 - {à}{{\`a}}1 {è}{{\`e}}1 {ì}{{\`i}}1 {ò}{{\`o}}1 {ù}{{\`u}}1 - {À}{{\`A}}1 {È}{{\'E}}1 {Ì}{{\`I}}1 {Ò}{{\`O}}1 {Ù}{{\`U}}1 - {ä}{{\"a}}1 {ë}{{\"e}}1 {ï}{{\"i}}1 {ö}{{\"o}}1 {ü}{{\"u}}1 - {Ä}{{\"A}}1 {Ë}{{\"E}}1 {Ï}{{\"I}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1 - {â}{{\^a}}1 {ê}{{\^e}}1 {î}{{\^i}}1 {ô}{{\^o}}1 {û}{{\^u}}1 - {Â}{{\^A}}1 {Ê}{{\^E}}1 {Î}{{\^I}}1 {Ô}{{\^O}}1 {Û}{{\^U}}1 - {Ã}{{\~A}}1 {ã}{{\~a}}1 {Õ}{{\~O}}1 {õ}{{\~o}}1 - {œ}{{\oe}}1 {Œ}{{\OE}}1 {æ}{{\ae}}1 {Æ}{{\AE}}1 {ß}{{\ss}}1 - {ű}{{\H{u}}}1 {Ű}{{\H{U}}}1 {ő}{{\H{o}}}1 {Ő}{{\H{O}}}1 - {ç}{{\c c}}1 {Ç}{{\c C}}1 {ø}{{\o}}1 {å}{{\r a}}1 {Å}{{\r A}}1 - {€}{{\euro}}1 {£}{{\pounds}}1 {«}{{\guillemotleft}}1 - {»}{{\guillemotright}}1 {ñ}{{\~n}}1 {Ñ}{{\~N}}1 {¿}{{?`}}1 - {°}{{\textdegree}}1 {θ}{{$\theta$}}1 - {’}{{\lq}}1 {“}{{\lq\lq}}1 {‘}{{\rq}}1 {”}{{\rq\rq}}1 - {—}{{\textemdash}}1 -} diff --git a/latex/split.py b/latex/split.py deleted file mode 100644 index ab00205..0000000 --- a/latex/split.py +++ /dev/null @@ -1,75 +0,0 @@ -import sys -import re - -# replace figure URLs with references to local files -# for source listings in Python, add `style=source` -# for output listings, add `style=output` - -subs = { -r'\\includegraphics(.*){https://.*/([^/]*)}': r'\\includegraphics\1{figs/\2}', -r'\\includegraphics(.*){figs/([^/]*)}': r'\\includegraphics\1{figs/\2}', -r'language=Python': r'language=Python,style=source', -r'begin{lstlisting}$': r'begin{lstlisting}[style=output]', -'\ufeff': '', -r'\\tightlist': '', -r'\\toprule': r'\\midrule', -r'\\bottomrule': r'\\midrule', -} - -def write_line(fout, line): - for pattern, repl in subs.items(): - line = re.sub(pattern, repl, line) - - fout.write(line + '\n') - -def write_chapter(t): - fout = open(filename, 'w') - i = 0 - - while i < len(t): - line = t[i] - if line.startswith('\\backmatter'): - fout.close() - return i - - write_line(fout, line) - i += 1 - - fout.close() - return i - -filename = sys.argv[1] - -lines = open(filename).read() - -# remove an input cell if it's totally empty -pattern = r""" -\\begin{lstlisting}\[language=Python\] -\\end{lstlisting}""" - -repl = r'' - -lines = re.sub(pattern, repl, lines) - -# replace figure environments with center environments -pattern = r"""\\begin{figure} -\\centering -\\includegraphics{(.*)} -\\caption{.*} -\\end{figure}""" - -repl = r"""\\begin{center} -\\includegraphics[]{\1} -\\end{center}""" - -lines = re.sub(pattern, repl, lines) - -t = lines.split('\n') - -i = 0 -while i < len(t): - line = t[i] - if line.startswith('\\chapter'): - i = write_chapter(t[i:]) - else: - i += 1 diff --git a/requirements-dev.txt b/requirements-dev.txt deleted file mode 100644 index c6a0838..0000000 --- a/requirements-dev.txt +++ /dev/null @@ -1,7 +0,0 @@ --r requirements.txt -black -flake8 -nbformat -nbmake -pytest - diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 54bcedf..0000000 --- a/requirements.txt +++ /dev/null @@ -1,2 +0,0 @@ -jupyter -matplotlib diff --git a/soln/ThinkPythonQuizzesBrightspace.csv b/soln/ThinkPythonQuizzesBrightspace.csv deleted file mode 100644 index e843789..0000000 --- a/soln/ThinkPythonQuizzesBrightspace.csv +++ /dev/null @@ -1,1063 +0,0 @@ -NewQuestion,MC, -Title,, -QuestionText,1.1. Which of these types is used to represent a number with a fraction part?, -Points,1, -Difficulty,1, -Option,0,a) int -Option,0,b) real -Option,0,c) string -Option,100,d) float -Feedback,"float values represent floating-point numbers, which can have a fraction part.", -NewQuestion,MC, -Title,, -QuestionText,1.2. Which of these is a legal expression?, -Points,1, -Difficulty,1, -Option,0,a) '1' / '2' -Option,0,b) '1' '2' -Option,0,c) '1' / 2 -Option,100,d) '1' 2 -Feedback,"When the first operator is a string, the multiplication operator repeats the string, so the result is '11'.", -NewQuestion,MC, -Title,, -QuestionText,1.3. Which of these is the general word for any value used in a mathematical operation like addition or multiplication?, -Points,1, -Difficulty,1, -Option,0,a) term -Option,0,b) factor -Option,0,c) divisor -Option,100,d) operand -Feedback,"An operand"" is a value used in an operation.""", -NewQuestion,MC, -Title,, -QuestionText,"1.4. On the internet, people sometimes argue about the value of an ambiguous mathematical expression like 8÷2(2+2). How do we write this expression in Python?", -Points,1, -Difficulty,1, -Option,0,a) 8 ÷ 2 (2 + 2) -Option,0,b) 8 / 2 (2 + 2) -Option,0,c) 8 ÷ 2 (2 + 2) -Option,100,d) 8 / 2 (2 + 2) -Feedback,An alternative is to put 8 / 2 in parentheses so the order of operations is clear., -NewQuestion,MC, -Title,, -QuestionText,2.1. Which of these is a legal variable name?, -Points,1, -Difficulty,1, -Option,0,a) 2pi -Option,0,b) ? -Option,0,c) import -Option,100,d) is_even -Feedback,"is_even is a legal variable name because letters, numbers, and the underscore character, _, are allowed.", -NewQuestion,MC, -Title,, -QuestionText,2.2. Which of these is NOT a correct way to raise 2 to the third power?, -Points,1, -Difficulty,1, -Option,0,a) 2 2 2 -Option,0,b) 2 * 3 -Option,0,"c) math.pow(2, 3" -Option,100,d) 2 ^ 3 -Feedback,"In some languages, the ^ operator is used for exponentiation, but in Python it means something else.", -NewQuestion,MC, -Title,, -QuestionText,"2.3. When you call a function, what are the values that appear in parentheses?", -Points,1, -Difficulty,1, -Option,0,a) assignments -Option,0,b) comments -Option,0,c) exceptions -Option,100,d) arguments -Feedback,The values you pass to a function are called arguments., -NewQuestion,MC, -Title,, -QuestionText,"2.4. If a program runs without producing an error message, but it does not do the right thing, what kind of error is that?", -Points,1, -Difficulty,1, -Option,0,a) syntax error -Option,0,b) runtime error -Option,0,c) exception -Option,100,d) semantic error -Feedback,"A semantic error is when a program runs, but does the wrong thing.", -NewQuestion,MC, -Title,, -QuestionText,"3.1. When you define a function, what are the variables that appear in parentheses?", -Points,1, -Difficulty,1, -Option,0,a) arguments -Option,0,b) local variables -Option,0,c) function objects -Option,100,d) parameters -Feedback,A parameter is a variable that gets a value when the function is called., -NewQuestion,MC, -Title,, -QuestionText,3.2. Which kind of statement can be used to run a line of code more than once?, -Points,1, -Difficulty,1, -Option,0,a) assignment statement -Option,0,b) import statement -Option,0,c) print statement -Option,100,d) for statement -Feedback,"A for statement can run a line of code, or multiple lines, more than once.", -NewQuestion,MC, -Title,, -QuestionText,"3.3. What is wrong with this function, if anything? -def bottle_line(n, suffix): - print(n) - print('bottles of beer') - print(suffix)", -Points,1, -Difficulty,1, -Option,0,"a) Instead of def, the first word should be define." -Option,0,b) You can't have more than one parameter in parentheses. -Option,0,c) Only the first statement of the body should be indented. -Option,100,d) There are no errors in this function. -Feedback,There is nothing wrong with this function., -NewQuestion,MC, -Title,, -QuestionText,"4.1. What is wrong with this function, if anything? -def square(length): - for i in range(4): - forward(50) - left(90)", -Points,1, -Difficulty,1, -Option,0,a) The indentation of the statements in the for loop is incorrect. -Option,0,b) It does not bring the Turtle back to where it started. -Option,0,c) There are no errors in this function. -Option,100,"d) It always draws the same size square, regardless of length." -Option,0,The indentation in this function is correct. -Option,0,"The Turtle ends where it started, facing in the same direction." -Option,0,There is an error! -Option,0,The size is always 50 -- the value of length is never used. -NewQuestion,MC, -Title,, -QuestionText,4.2. What is it called when you put working statements into a new function definition?, -Points,1, -Difficulty,1, -Option,0,a) generalization -Option,0,b) indentation -Option,0,c) debugging -Option,100,d) encapsulation -Feedback,Encapsulation is the process of transforming a sequence of statements into a function definition., -NewQuestion,MC, -Title,, -QuestionText,"4.3. Here are two versions of the circle function. -def circle(radius): - circumference = 2 math.pi radius - n = 30 - length = circumference / n - polygon(n, length) - -def circle(radius): - arc(radius, 360) - -What can we say about these functions?", -Points,1, -Difficulty,1, -Option,0,"a) They have the same implementation, but different interfaces." -Option,0,b) They have the same interface and the same implementation. -Option,0,c) They have neither the same interface nor the same implementation. -Option,100,"d) They have the same interface, but different implementations." -Feedback,"They take the same parameter and have the same effect, so they have the same interface -- but they accomplish the effect in different ways, so they have different implementations.", -NewQuestion,MC, -Title,, -QuestionText,"5.1. What is the result of these assignment statements? -a = 25 // 10 -b = 25 % 10", -Points,1, -Difficulty,1, -Option,0,a) a is 2.5 and b is 5 -Option,0,b) a is 2 and b is 250 -Option,0,c) a is 2.5 and b is 250 -Option,100,d) a is 2 and b is 5 -Feedback,The // operator does integer division and the % operator computes the remainder after division., -NewQuestion,MC, -Title,, -QuestionText,"5.2. What is the result of these statements? -x = 5 -print(x > 5) -print(x <= 5)", -Points,1, -Difficulty,1, -Option,0,a) They print the values True and True -Option,0,b) They print the values True and False -Option,0,c) They print the values False and False -Option,100,d) They print the values False and True -Feedback,"If x is 5, x > 5 is False and x <= 5 is True.", -NewQuestion,MC, -Title,, -QuestionText,"5.3. What is the result of calling this function? -def hello(): - print('hello') - hello()", -Points,1, -Difficulty,1, -Option,0,a) It prints hello once. -Option,0,b) It prints hello forever. -Option,0,c) It causes an error the first time hello tries to call itself. -Option,100,d) It prints hello many times and then causes an error. -Feedback,"After printing hello many times, it causes a RecursionError.", -NewQuestion,MC, -Title,, -QuestionText,5.4. What kind of operator is or?, -Points,1, -Difficulty,1, -Option,0,a) arithmetic -Option,0,b) bitwise -Option,0,c) relational -Option,100,d) logical -Feedback,"or is a logical operator, along with and and not.", -NewQuestion,MC, -Title,, -QuestionText,"6.1. What is the return value if we call this function with the value 3? -def collatz(x): - if x % 2 == 0: - return x // 2 - else: - return x 3 + 1", -Points,1, -Difficulty,1, -Option,0,a) 1 -Option,0,b) 1.5 -Option,0,c) It causes an error. -Option,100,d) 10 -Feedback,"Because 3 % 2 is 1, the second branch of the conditional runs, and the result is 3 3 + 1, which is 10.", -NewQuestion,MC, -Title,, -QuestionText,6.2. What do we call a function that does not print anything or have any effect other than a return value?, -Points,1, -Difficulty,1, -Option,0,a) recursive -Option,0,b) dead code -Option,0,c) incremental -Option,100,d) pure function -Feedback,A pure function does not print anything or have any effect other than a return value., -NewQuestion,MC, -Title,, -QuestionText,"6.3. What is the result of calling this function with the values x=1.5 and y=1.6? -def is_close(x, y): - return abs(x - y) < 0.2", -Points,1, -Difficulty,1, -Option,0,a) There is a syntax error. -Option,0,b) There is a runtime error. -Option,0,c) False -Option,100,d) True -Feedback,"The absolute difference between 1.5 and 1.6 is 0.1, which is less than 0.2.", -NewQuestion,MC, -Title,, -QuestionText,"7.1. This function is supposed to return True if word contains with 'A' or 'a', and False otherwise. But it doesn't work -- What's wrong? -def has_a(wor**d): - for letter in word.lower(): - if letter == 'a': - return True - else: - return False - return False", -Points,1, -Difficulty,1, -Option,0,a) The first line of the for statement has a syntax error. -Option,0,"b) It only checks for lowercase 'a', not uppercase 'A'." -Option,0,c) It causes a runtime error if word is an empty string. -Option,100,d) It only checks the first letter of word. -Feedback,"Both branches of the conditional have return statements, so this function ends after checking the first letter.", -NewQuestion,MC, -Title,, -QuestionText,"7.2. Which of these is a legal way to increment x, assuming it has already been assigned a value.", -Points,1, -Difficulty,1, -Option,0,a) x++ -Option,0,b) x + 1 = x -Option,0,c) x = +1 -Option,100,d) x = x + 1 -Feedback,This is a legal way to update the value of x., -NewQuestion,MC, -Title,, -QuestionText,"7.3. What does this function do? -def check(word, letters): - for letter in word.lower(): - if letter in letters.lower(): - return False - return True", -Points,1, -Difficulty,1, -Option,0,a) Returns True if any of the letters in letters appear in word. -Option,0,b) Returns True if any of the letters in word appear in letter. -Option,0,c) Returns True if none of the letters in word appear in letter. -Option,100,d) Returns True if none of the letters in letters appear in word. -Feedback,It returns True if it gets to the end of word and exits the loop having found none of the letters in letters., -NewQuestion,MC, -Title,, -QuestionText,8.1. What is the result of this comparison: 'Orange' < 'apple'?, -Points,1, -Difficulty,1, -Option,0,a) False -Option,0,b) Syntax error -Option,0,"c) Runtime error, because you can't compare apples and oranges." -Option,100,d) True -Feedback,Because when we compare characters the uppercase 'O' comes before the lowercase 'a'., -NewQuestion,MC, -Title,, -QuestionText,8.2. Which of these is the correct way to invoke the lower method on a string called s?, -Points,1, -Difficulty,1, -Option,0,a) lower(s) -Option,0,b) string.lower(s) -Option,0,c) s.lower(string) -Option,100,d) s.lower() -Feedback,This is the correct syntax for invoking a method on an object., -NewQuestion,MC, -Title,, -QuestionText,"8.3. If we use the search function in the re module, which of the following strings matches this pattern: r'ab?c$'?", -Points,1, -Difficulty,1, -Option,0,a) 'ab?c$' -Option,0,b) 'abcd' -Option,0,c) 'abbc' -Option,100,d) 'zac' -Feedback,"It's OK to have extra letters at the beginning, and the b is not required.", -NewQuestion,MC, -Title,, -QuestionText,"9.1. What is the value of t after running these statements? -t = [1, 2, 3] -t.pop(1) -t.append(2) -t.remove(3)", -Points,1, -Difficulty,1, -Option,0,"a) [2, 2]" -Option,0,"b) [1, 3]" -Option,0,"c) [1, 2, 3]" -Option,100,"d) [1, 2]" -Feedback,"t.pop(1) removes the second element, which is 2. t.append(2) adds 2 to the end of the list, and t.remove(3) removes 3.", -NewQuestion,MC, -Title,, -QuestionText,"9.2. What is the value of b after running these statements? -a = [1, 2, 3] -b = a -a.remove(2)", -Points,1, -Difficulty,1, -Option,0,"a) [1, 2]" -Option,0,"b) [1, 2, 3]" -Option,0,c) Runtime error -Option,100,"d) [1, 3]" -Feedback,"a and b refer to the same object, so when we modify a, the value of b also changes.", -NewQuestion,MC, -Title,, -QuestionText,"9.3. What can we say about two lists created like this: -a = [1, 2, 3] -b = [1, 2, 3]", -Points,1, -Difficulty,1, -Option,0,"a = [1, 2, 3]" -Option,0,"b = [1, 2, 3]" -Option,0,a) They are equivalent and identical. -Option,0,b) They are identical but not equivalent. -Option,0,c) They are not equivalent and not identical. -Option,100,d) They are equivalent but not identical. -Feedback,"a and b refer to lists with the same value, so they are equivalent, but they refer to different lists, so they are not identical.", -NewQuestion,MC, -Title,, -QuestionText,"10.1. What is the value of the dictionary d after these statements run? -d = {'a': 1, 'b': 2} -d['a'] = 3", -Points,1, -Difficulty,1, -Option,0,"a) {'a': 1, 'b': 2, 'a': 3}" -Option,0,"b) {'a': 1, 'b': 2}" -Option,0,c) These statements cause a runtime error -Option,100,"d) {'a': 3, 'b': 2}" -Feedback,The second assignment statement updates the value associated with the key 'a'., -NewQuestion,MC, -Title,, -QuestionText,"10.2. What is the value of the dictionary d after running these statements? -d = {'a': 1, 'b': 2} -d['c'] += 1", -Points,1, -Difficulty,1, -Option,0,"a) {'a': 1, 'b': 2}" -Option,0,"b) {'a': 1, 'b': 2, 'c': 1}" -Option,0,"c) {'a': 1, 'b': 2, 'c': 3}" -Option,100,d) These statements cause a runtime error. -Feedback,"Because c does not appear as a key in the dictionary, the second statement causes a KeyError.", -NewQuestion,MC, -Title,, -QuestionText,"10.3. What happens when the following statements run? -d1 = {'a': 1, 'b': 2} -d2 = {d1: 3}", -Points,1, -Difficulty,1, -Option,0,a) They add d1 as a key in d3. -Option,0,b) They cause a KeyError because d1 is not in d2. -Option,0,c) They cause a ValueError because 3 cannot appear as a value in a dictionary. -Option,100,d) They cause a TypeError because a dictionary cannot appear as a key in a dictionary. -Feedback,"Dictionaries are mutable, so they are not hashable, so they cannot appear as a key in a dictionary.", -NewQuestion,MC, -Title,, -QuestionText,11.1. Which one of these expressions is NOT a tuple?, -Points,1, -Difficulty,1, -Option,0,a) tuple('abc') -Option,0,"b) 'abc'," -Option,0,"c) ('abc',)" -Option,100,d) ('abc') -Feedback,"The parentheses alone do not make a tuple, so the value of this expression is just the string 'abc'.", -NewQuestion,MC, -Title,, -QuestionText,"11.2. What is the result of these statements? -t = tuple('abc') -s = [1, 2, 3] -d = {t: s}", -Points,1, -Difficulty,1, -Option,0,a) A TypeError because a tuple can't appear as a key in a dictionary. -Option,0,b) A TypeError because a list can't appear as a value in a dictionary. -Option,0,c) A syntax error because there should be a comma before the closing brace on the third line. -Option,100,d) A dictionary with one item that maps from a tuple to a list. -Feedback,These statements create a dictionary with one item that maps from a tuple to a list., -NewQuestion,MC, -Title,, -QuestionText,"11.3. What does this function do? -def printall(*args): - for value in reversed(args): - print(value)", -Points,1, -Difficulty,1, -Option,0,a) It has a syntax error because the operator is not legal before a parameter. -Option,0,"b) It causes a TypeError because args is a tuple, which is immutable and cannot be reversed." -Option,0,c) It takes a single list or tuple and prints the values in reversed order. -Option,100,d) It takes any number of arguments and prints them in reversed order. -Feedback,"It takes any number of arguments and packs"" them into a tuple"," then loops through the tuple in reverse order and prints the elements.""" -NewQuestion,MC, -Title,, -QuestionText,"11.4. What is the value of this expression? -('a', 3) < ('b', 1)", -Points,1, -Option,0,"('a', 3) < ('b', 1)" -Option,0,a) False because 3 is greater than 1. -Option,0,"b) These values can't be compared because 'a' is less than 'b', but 3 is greater than 1." -Option,0,c) A TypeError because the < operator doesn't work with tuples. -Option,100,d) True because 'a' is less than 'b'. -Feedback,"When tuples are compared, the first elements are compared first.", -NewQuestion,MC, -Title,, -QuestionText,"12.1. Assuming that t is a list of strings, what does the following line of code do? -sorted(t, key=len)", -Points,1, -Difficulty,1, -Option,0,a) Modifies t and sorts the elements in alphabetical order. -Option,0,b) Makes a new list that contains the elements in alphabetical order. -Option,0,c) Modifies t and sorts the elements from shortest to longest -Option,100,d) Makes a new list that contains the elements in order from shortest to longest. -Feedback,"sorted makes a new list, and key=len sorts the elements from shortest to longest.", -NewQuestion,MC, -Title,, -QuestionText,"12.2. What is the effect of running this program? -word_counter = {} -for line in open(filename): - for word in split_line(line): - word_counter[word] += 1", -Points,1, -Difficulty,1, -Option,0,a) It makes a dictionary that maps from each word to the number of times it appears. -Option,0,b) It has a syntax error because the indentation is not correct. -Option,0,c) It has a semantic error because all the keys in word_counter map to the value 1. -Option,100,d) It causes a KeyError when it tries to increment a value in word_counter. -Feedback,"Because word_counter is initially empty, the program causes a KeyError when it tries to increment a value in word_counter.", -NewQuestion,MC, -Title,, -QuestionText,"12.3. If we run the following lines of code, what is the probability that the result is 'a'? -letters = ['a', 'b', 'c'] -weights = [1, 2, 3] -random.choices(letters, weights=weights)", -Points,1, -Difficulty,1, -Option,0,a) 1/3 -Option,0,b) 1/4 -Option,0,c) 1/5 -Option,100,d) 1/6 -Feedback,"The weight associated with 'a' is 1 and the total of the weights is 6, so the probability of choosing 'a' is 1/6.", -NewQuestion,MC, -Title,, -QuestionText,"13.1. If the current working directory is /home/dinsdale/photos and you open a file using the relative path mar-2023/photo1.jpg, which of these expressions computes the absolute path of the file that gets opened?", -Points,1, -Difficulty,1, -Option,0,"a) ''.join('/home/dinsdale/photos', 'mar-2023/photo1.jpg')" -Option,0,b) 'mar-2023/photo1.jpg' + '/home/dinsdale/photos' -Option,0,c) '/home/dinsdale/photos' + 'mar-2023/photo1.jpg' -Option,100,"d) os.path.join('/home/dinsdale/photos', 'mar-2023/photo1.jpg')" -Feedback,"The os.path.join function joins the two paths with either a forward or backward slash, depending on which operating system is running.", -NewQuestion,MC, -Title,, -QuestionText,"13.2. After these statements run, what is the value of s? -x = 1 -t = 1, -s = f'x is an int, {x}. t is a tuple, {t}'", -Points,1, -Difficulty,1, -Option,0,a) This is an error because {x} and {t} are not valid dictionaries. -Option,0,b) This is an error because a tuple can't be used as a value in an f-string. -Option,0,"c) 'x is an int, {x}. t is a tuple, {t}'" -Option,100,"d) 'x is an int, 1. t is a tuple, (1,)'" -Feedback,"Inside the f-string, the expressions in curly braces are replaced with string representations of their values.", -NewQuestion,MC, -Title,, -QuestionText,"13.3. After these statements run, what is the value of db[key]? -db = shelve.open('anagram_map', 'n') -key = 'opst' -db[key] = [] -db[key].append('stop')", -Points,1, -Difficulty,1, -Option,0,a) ['stop'] -Option,0,b) 'stop' -Option,0,"c) [], 'stop'" -Option,100,d) [] -Feedback,"The append method does not work as intended here because it modifies only the list in memory, not the one in the database.", -NewQuestion,MC, -Title,, -QuestionText,"14.1. To create an instance of a programmer-defined type, what is the correct order for these steps?", -Points,1, -Difficulty,1, -Option,0,"a) Assign values to attributes, define a class, instantiate an object." -Option,0,"b) Instantiate an object, define a class, assign values to attributes." -Option,0,"c) Define a class, assign values to attributes, instantiate an object." -Option,100,"d) Define a class, instantiate an object, assign values to attributes." -Feedback,"You have to define a class, instantiate an object, and assign values to attributes, in that order.", -NewQuestion,MC, -Title,, -QuestionText,"14.2. These statements are intended to define a Date class and create a Date object. What is wrong with them? -def Date: - """"""Represents a day of the year."""""" - -date = Date() -date.year = 2024 -date.month = 'January' -date.day = 11", -Points,1, -Difficulty,1, -Option,0,a) You can't have a class named Date and a variable named date. -Option,0,b) All of the attributes have to have the same type. -Option,0,c) The syntax is not correct for adding attributes to the object. -Option,100,"d) A class definition has to start with class, not def." -Feedback,A class definition has to start with class. A function definition starts with def., -NewQuestion,MC, -Title,, -QuestionText,"14.3. Which of these is a correct description of this function? You can assume that date is a Date object that has a day attribute. - -def increment_day(date): - date.day += 1 - return date", -Points,1, -Difficulty,1, -Option,0,a) It is a pure function that returns None. -Option,0,b) It is an impure function that returns None. -Option,0,c) It is a pure function that returns a Date object. -Option,100,d) It is an impure function that returns a Date object. -Feedback,"This function modifies an attribute of the Date object it gets as a parameter, so it is an impure function -- and it returns a reference to the same Date object.", -NewQuestion,MC, -Title,, -QuestionText,"15.1. Suppose time is a Time object, and increment is an instance method defined in the Time class. What happens when we invoke increment like this? - -time.increment(42)", -Points,1, -Difficulty,1, -Option,0,"a) 42 is assigned to the first parameter of the method, and time is assigned to the second." -Option,0,b) This is an error because increment requires one arguments and two are provided. -Option,0,c) This is an error because increment requires two argument and only one is provided. -Option,100,d) time is assigned to the first parameter of the method and 42 is assigned to the second. -Feedback,"time is assigned to the first parameter of the method, which is conventionally called self, and 42 is assigned to the second.", -NewQuestion,MC, -Title,, -QuestionText,"15.2. Suppose time is a Time object, and int_to_time is a static method defined in the Time class. What happens when we invoke int_to_time like this? - -start = Time.int_to_time(34800)", -Points,1, -Difficulty,1, -Option,0,a) This is an error because int_to_time requires one argument and two are provided. -Option,0,b) The Time class object is assigned to the first parameter of the method and 34800 is assigned to the second. -Option,0,c) 34800 is assigned to the first parameter of the method and the Time class object is assigned to the second. -Option,100,d) 34800 is assigned to the first parameter of int_to_time. -Feedback,"34800 is assigned to the first parameter of int_to_time. Because Time is a class, it is not passed as an argument.", -NewQuestion,MC, -Title,, -QuestionText,15.3. Which of the following statements is NOT correct?, -Points,1, -Difficulty,1, -Option,0,"a) When we instantiate an object, its __init__ method is invoked." -Option,0,"b) When we use the + operator with an object, its __add__ method is invoked." -Option,0,"c) When we print an object, its __str__ method is invoked." -Option,100,"d) When we define a new class, its __init__ method is invoked." -Feedback,Defining a new class does not invoke its __init__ method., -NewQuestion,MC, -Title,, -QuestionText,16.1. Which of these is the term for a function or method that works with more than one type of object?, -Points,1, -Difficulty,1, -Option,0,a) pure -Option,0,b) equivalent -Option,0,c) static -Option,100,d) polymorphic -Feedback,A function that works with more than one type is polymorphic., -NewQuestion,MC, -Title,, -QuestionText,"16.2. What is wrong with this class definition? -class Point: - """"""Represents a point in 2-D space."""""" - - def __init__(self, x, y): - x = self.x - y = self.y", -Points,1, -Difficulty,1, -Option,0,a) __init__ is not a legal name for a method because it does not start with a letter. -Option,0,b) The triple-quoted string has to be inside a method definition. -Option,0,"c) The first parameter of the method should be called point, not self." -Option,100,"d) The assignment statements should be the other way around, as in self.x = x and self.y = y." -Feedback,"The assignment statements should be the other way around, as in self.x = x and self.y = y.", -NewQuestion,MC, -Title,, -QuestionText,"16.3. Suppose we define a Line class so that each Line object has two attributes that refer to Point objects. - -class Line: - def __init__(self, p1, p2): - self.p1 = p1 - self.p2 = p2 - -If we import the copy function from the copy module and use it to make a copy of a Line object, which of these statements is true?", -Points,1, -Difficulty,1, -Option,0,a) The result is a deep copy that copies the Line object and the Point objects it contains. -Option,0,b) The result is a deep copy that copies the Line object but not the Point objects it contains. -Option,0,c) The result is a shallow copy that copies the Line object and the Point objects it contains. -Option,100,d) The result is a shallow copy that copies the Line object but not the Point objects it contains. -Feedback,"The copy function makes a shallow copy, which copies the Line object but not the Point objects it contains.", -NewQuestion,MC, -Title,, -QuestionText,17.1. Which of the following is NOT a correct statement about class variables., -Points,1, -Difficulty,1, -Option,0,"a) They are defined inside a class definition, but not inside a method definition." -Option,0,b) They can be accessed using a class object. -Option,0,c) They can have any type. -Option,100,d) They are immutable. -Feedback,"This statement is false -- that is, class variables are mutable.", -NewQuestion,MC, -Title,, -QuestionText,"17.2. Suppose we define a Card class like this: -class Card: - - def __init__(self, suit, rank): - self.suit = suit - self.rank = rank - -If this class does not provide an __eq__ method, what happens if we compare two cards using the == operator.", -Points,1, -Difficulty,1, -Option,0,a) That's an error. -Option,0,"b) By default, only the first attribute is compared." -Option,0,"c) By default, all of the attributes are compared as if they were in a tuple." -Option,100,"d) By default, the objects are equal only if they are identical." -Feedback,"If a class provides no __eq__, the == operator checks whether objects are identical.", -NewQuestion,MC, -Title,, -QuestionText,"17.3. Which of the following statements is true when one class inherits from another, like this: - -class Hand(Deck): - ""Represents a hand of playing cards.""""""""", -Points,1, -Difficulty,1, -Option,0,a) Hand is a parent class and Deck is a child class. -Option,0,b) Every function that works with Hand should also work with Deck. -Option,0,"c) Every Hand object has the same attributes as every Deck object, no more or less." -Option,100,d) Every method defined in the Deck class can also be invoked on a Hand object. -Feedback,"If Hand inherits from Deck, every method defined in the Deck class should work with a Hand object.", -NewQuestion,MC, -Title,, -QuestionText,17.4. What do we call it when one method invokes another to do most or all of the work?, -Points,1, -Difficulty,1, -Option,0,a) inheritance -Option,0,b) generalization -Option,0,c) specialization -Option,100,d) delegation -Feedback,Delegation is when one method passes responsibility to another method to do most or all of the work., -NewQuestion,MC, -Title,, -QuestionText,"18.1. What is the result of this operation? -set('abba') <= set('abc')", -Points,1, -Difficulty,1, -Option,0,a) False because 'abba' is longer than 'abc'. -Option,0,"b) A runtime error because 'abba' contains duplicate elements, so it is not a set." -Option,0,"c) A runtime error because a string is immutable, so it cannot be transformed into a set." -Option,100,d) True because the elements of 'abba' are a subset of the elements of 'abc'. -Feedback,"With set objects, the <= operator checks whether one set is a subset of another -- including the possibility that they are equal.", -NewQuestion,MC, -Title,, -QuestionText,"18.2. What is the value of counter after these statements run? -from collections import Counter - -t = (1, 1, 1, 2, 2, 3) -counter = Counter(t)", -Points,1, -Difficulty,1, -Option,0,"a) (1, 1, 1, 2, 2, 3)" -Option,0,"b) {1: 3, 2: 2, 3: 1}" -Option,0,"c) Counter(1, 1, 1, 2, 2, 3)" -Option,100,"d) Counter({1: 3, 2: 2, 3: 1})" -Feedback,The result is a Counter object that contains the elements of the list and the number of times each one appears., -NewQuestion,MC, -Title,, -QuestionText,"18.3. Which comment about this class definition is correct? - -class Game: - """"""Represents a game with a dictionary that maps from teams to scores."""""" - \n - def __init__(self, scores={}): - self.scores = score", -Points,1, -Difficulty,1, -Option,0,a) All Game objects refer to different dictionaries. -Option,0,b) All Game objects refer to the same dictionary. -Option,0,c) All Game objects created with the default value of scores refer to an empty dictionary. -Option,100,d) All Game objects created with the default value of scores refer to the same dictionary. -Feedback,"All Game objects created with the default value get a reference to the same dictionary -- so if any of them modify it, they all see the change.", -NewQuestion,MC, -Title,, -QuestionText,"18.4. What is the value of this expression? -all(number < 10 for number in [2, 4, 6, 8])", -Points,1, -Difficulty,1, -Option,0,"a) [2, 4, 6, 8], which contains all numbers in the list less than 10." -Option,0,b) An error because the list comprehension has to be in square brackets. -Option,0,c) False because there are not any numbers in the list that are not less than 10. -Option,100,d) True because all numbers in the list are less than 10. -Feedback,"The values produced by the generator expression are all True, so the result from the all function is True.", -NewQuestion,MC, -Title,, -QuestionText,"18.5. What is the value of d[key] after these statements run, or is there an error? -from collections import defaultdict - -d = defaultdict(list) -key = ('into', 'the') -d[key].append('woods')", -Points,1, -Difficulty,1, -Option,0,a) An error because a tuple cannot be used as a key in a defaultdict. -Option,0,b) An error because we have to add the key to the defaultdict before we can look it up. -Option,0,c) 'woods' -Option,100,d) ['woods'] -Feedback,"When the key is added to the defaultdict, the corresponding value is an empty list. After the append method is invoked, the list contains a single element, the string 'woods'.", -NewQuestion,MC, -Title,, -QuestionText,"18.6. What value is printed when this function runs? -def pack_and_print(**kwargs): - print(kwargs) - -pack_and_print(a=1, b=2)", -Points,1, -Difficulty,1, -Option,0,a) This is an error because the exponentiation operator * can't appear in a list of parameters. -Option,0,"b) [(a, 1), (b, 2)]" -Option,0,"c) {'a', 'b'}, [1, 2]" -Option,100,"d) {'a': 1, 'b': 2}" -Feedback,"The pack operator, *, packs the keyword arguments into a dictionary that maps from keyword names to values.", -NewQuestion,MC, -Title,, -QuestionText,"S.1. What is the output of this program? -s = '3' -str(s) * int(s)", -Points,1, -Difficulty,1, -Option,0,a) The integer 9 -Option,0,b) The string '9' -Option,0,c) The integer 333 -Option,100,d) The string '333' -Feedback,Multiplying a string by the integer 3 repeats the string three times. See Chapter 1., -NewQuestion,MC, -Title,, -QuestionText,"S.2. For this function to work without causing an error, what are the preconditions for n? - -def countdown(n): - if n == 0: - print('Blastoff!') - else: - print(n) - countdown(n-1)", -Points,1, -Difficulty,1, -Option,0,a) n must be a float. -Option,0,b) n must be negative. -Option,0,"c) n must be strictly positive, not 0." -Option,100,d) n must be a positive integer or 0. -Feedback,"n must be non-negative -- that is, positive or 0. See Chapter 5.", -NewQuestion,MC, -Title,, -QuestionText,"S.3. What is wrong with the following program? - -def compare(x, y): - if x < y: - return -1 - else: - return 1 - return 0", -Points,1, -Difficulty,1, -Option,0,a) It has a syntax error because the last line is not indented. -Option,0,b) It has a runtime error because the return value cannot be negative. -Option,0,c) It has a syntax error because it has more than one return statement. -Option,100,d) It has a logic error because the last line is dead code. -Feedback,"There is a return statement in both branches of the if statement, so the last line can never run -- it is dead code. See Chapter 6.", -NewQuestion,MC, -Title,, -QuestionText,"S.4. What is the output of this program, or is there an error? -def rectangle_area(length, width): - return length width - -area = rectangle_area(3, 5) -print(length)", -Points,1, -Difficulty,1, -Option,0,a) because the first argument gets assigned to length. -Option,0,b) because the second argument gets assigned to length. -Option,0,c) Syntax error because there are two variables in the return statement. -Option,100,d) Runtime error because the parameter length does not exist outside the function. -Feedback,Parameters and local variables only exist inside the functions where they are defined. See Chapter 6., -NewQuestion,MC, -Title,, -QuestionText,"S.5. What is wrong with the following program? - -s = int('123') -for digit in s: - print(digit)", -Points,1, -Difficulty,1, -Option,0,a) There is nothing wrong -- the program is correct. -Option,0,b) digit is not a legal name for a loop variable. -Option,0,"c) int is a type, not a function." -Option,100,"d) s is not a sequence, so we can't loop through its elements." -Feedback,"s is an integer, which is not a sequence, so it can't be looped over. See Chapter 7.", -NewQuestion,MC, -Title,, -QuestionText,S.6. Which of these is a correct way to convert a string to lowercase?, -Points,1, -Difficulty,1, -Option,0,a) lower(str) -Option,0,b) str = lower(str) -Option,0,c) str.lower() -Option,100,d) str = str.lower() -Feedback,"str.lower() creates a new string -- if we assign it back to str, the new string replaces the old one. See Chapter 7.", -NewQuestion,MC, -Title,, -QuestionText,"S.7. The following function takes two strings as parameters and returns a string. Which of the following docstrings is a correct description of what this function does? - -def compute(word1, word2): - t = [] - for letter in word1: - if letter in word2: - t.append(letter) - return ''.join(t)", -Points,1, -Difficulty,1, -Option,0,a) Returns the letters that appear in either word1 or word2 or both. -Option,0,b) Returns the letters that appear in either word1 or word2 but not both. -Option,0,c) Returns the letters that appear in word1 but not word2. -Option,100,d) Returns the letters that appear in both word1 and word2. -Feedback,This function returns a string that contains the letters that appear in both word1 and word2. See Chapter 7., -NewQuestion,MC, -Title,, -QuestionText,"S.8. This function is intended to convert the first letter of a word to lowercase and the rest of the letters to uppercase. - -def lower_upper(wor**d): - first = word[0] - rest = word[1:] - word = first.lower() + rest.upper() - -What is the value of word if we call this function like this -- or is there an error? -word = lower_upper('Python')", -Points,1, -Difficulty,1, -Option,0,a) The result is a syntax error because a : character cannot appear inside the bracket operator. -Option,0,b) The result is a runtime error because 0 is not a valid index. -Option,0,c) The program is correct -- the value of word is 'pYTHON'. -Option,100,d) The program contains a logic error -- the value of word is None. -Feedback,"The function has no return statement, so it returns None. Assigning a new value to the parameter word has no effect outside the function. See Chapter 9.", -NewQuestion,MC, -Title,, -QuestionText,"S.9. If we use the search function in the re module, which of the following strings matches this pattern: r'^a(bc|de)f$'?", -Points,1, -Difficulty,1, -Option,0,a) 'abcdef' -Option,0,b) 'zadef' -Option,0,c) 'abc' -Option,100,d) 'adef' -Feedback,"This string has 'a' at the beginning 'f' at the end, and 'de' in the middle. See Chapter 8.", -NewQuestion,MC, -Title,, -QuestionText,"S.10. What is the result of this program? -t = [1, 2, 3, 4] -t[1:-1]", -Points,1, -Difficulty,1, -Option,0,a) An IndexError because -1 is not a legal index. -Option,0,"b) [1, 2, 3]" -Option,0,"c) [2, 3, 4]" -Option,100,"d) [2, 3]" -Feedback,"The slice index 1:-1 selects elements from the second to the second-to-last, including both. See Chapter 9.", -NewQuestion,MC, -Title,, -QuestionText,"S.11. After these statements run, what are the values of a and b, or is there an error? -a, b = 1, 2 -a, b = b, a", -Points,1, -Difficulty,1, -Option,0,a) There is a runtime error because the values on the right are tuples. -Option,0,b) There is a syntax error because the assignment statement has more than one variable. -Option,0,c) a is 1 and b is 2. -Option,100,d) a is 2 and b is 1. -Feedback,"After the first assignment a is 1 and b is 2, and then the second assignment swaps the values. See Chapter 11.", -NewQuestion,MC, -Title,, -QuestionText,S.12. Why can't a list appear as a key in a dictionary?, -Points,1, -Difficulty,1, -Option,0,a) The elements in a list might not be totally ordered. -Option,0,b) The elements in a list can be different types. -Option,0,c) Lists can contain any number of elements. -Option,100,"d) Lists are mutable, which makes them unhashable." -Feedback,"If an object is mutable, it isn't hashable, which means it can't be used as a key in a dictionary. See Chapter 10, chaptertitle"" and Chapter 11.""", -NewQuestion,MC, -Title,, -QuestionText,S.13. What is the primary difference between a list and a tuple?, -Points,1, -Difficulty,1, -Option,0,a) A list can contain any type; a tuple can only contain hashable types. -Option,0,b) A tuple can contain any type; a list can only contain hashable types. -Option,0,c) A tuple is mutable; a list is immutable. -Option,100,d) A list is mutable; a tuple is immutable. -Feedback,A tuple is immutable. See Chapter 11., -NewQuestion,MC, -Title,, -QuestionText,"S.14. Which of these is a correct way to reverse the elements of a list in place -- that is, by modifying an existing list without creating a new list?", -Points,1, -Difficulty,1, -Option,0,a) t = reversed(t) -Option,0,b) reversed(t) -Option,0,c) t = t.reverse() -Option,100,d) t.reverse() -Feedback,t.reverse() reverses the elements of t without creating a new list. See Chapter 11., -NewQuestion,MC, -Title,, -QuestionText,"S.15. What is the result of this program? -s = ['bbb', 'aa', 'c'] -sorted(s, key=len, reverse=True)", -Points,1, -Difficulty,1, -Option,0,"a) ['aa', 'bbb', 'c']" -Option,0,"b) ['c', 'aa', 'bbb']" -Option,0,"c) ['c', 'bbb', 'aa']" -Option,100,"d) ['bbb', 'aa', 'c']" -Feedback,"key=len sorts by length, rather than alphabetical order, and reverse=True sorts in descending order, so the result is ['bbb', 'aa', 'c']. See Chapter 12.", -NewQuestion,MC, -Title,, -QuestionText,"S.16. What does the following function do? -def compute(d1, d2): - res = {} - for key in d1: - res[key] = d1[key] - for key in d2: - res[key] = d2[key] - return res", -Points,1, -Difficulty,1, -Option,0,a) Adds the keys from d1 to d2. -Option,0,b) Adds the keys from d2 to d1. -Option,0,c) Makes a new dictionary with all keys that are in both d1 and d2. -Option,100,d) Makes a new dictionary with all keys that are in either d1 or d2. -Feedback,"The new dictionary has all keys from either dictionary. If the same key appears in both, it gets the value from d2. See Chapter 12.", -NewQuestion,MC, -Title,, -QuestionText,"S.17. Suppose we run the following program to get the current working directory: -import os - -os.getcwd() -And the result is /home/dinsdale/photos. Now suppose we run the following program to check for the existence of a file: -os.path.exists('apr-2023/photo1.jpg') -What is the absolute path of the file that gets checked?", -Points,1, -Difficulty,1, -Option,0,a) 'photo1.jpg' -Option,0,b) 'apr-2023/photo1.jpg' -Option,0,c) '/home/dinsdale/photo1.jpg' -Option,100,d) '/home/dinsdale/photos/apr-2023/photo1.jpg' -Feedback,"Because 'apr-2023/photo1.jpg' is a relative path, it gets joined to the current working directory. See Chapter 13.", -NewQuestion,MC, -Title,, -QuestionText,"What is the result of this program? -class Day: - def __init__(self, day): - self.day = day - - def __str__(date): - return f'Today is {date.day}' - -print(Day('Wednesday'))", -Points,1, -Difficulty,1, -Option,0,a) f'Today is Wednesday' -Option,0,b) 'Today is {Wednesday}' -Option,0,c) f'Today is {date.day}' -Option,100,d) 'Today is Wednesday' -Feedback,"In a format string, the expression in curly braces gets replaced by its value. See Chapter 15.", -NewQuestion,MC, -Title,, -QuestionText,"S.19. Assuming that the Animal class exists, what is the output of this program? -class Cat(Animal): - """"""Represents a cat."""""" - \n -cat = Cat() -isinstance(cat, Animal)", -Points,1, -Difficulty,1, -Option,0,a) False because an instance of a parent class is not an instance of the child class. -Option,0,b) False because an instance of a child class is not an instance of the parent class. -Option,0,c) True because every instance of a parent class is also an instance of the child class. -Option,100,d) True because every instance of a child class is also an instance of the parent class. -Feedback,"In this example, Cat is a child class of Animal, so every Cat object is also an instance of Animal. See Chapter 17.", -NewQuestion,MC, -Title,, -QuestionText,"S.20. What is the result of this program? -from collections import namedtuple -\n -Point = namedtuple('Point', ['x', 'y']) -p = Point(3, 4) -p[1]", -Points,1, -Difficulty,1, -Option,0,a) AttributeError because the attributes of p are x and y. -Option,0,b) IndexError because the attributes of p are x and y. -Option,0,c) because p is a namedtuple and the element with index 1 is 3. -Option,100,d) 4 because p is a namedtuple and the element with index 1 is 4. -Feedback,In a named tuple -- as in a tuple -- the index of the second element is 1. See Chapter 18., -NewQuestion,MC, -Title,, -QuestionText,"S.21. We can call the built-in function round like this: -import math - -round(math.pi, ndigits=3) -The result is the value of math.pi round off to three decimal places. - -Now suppose we have the positional argument in a tuple and the keyword argument in a dictionary, like this: -args = (math.pi,) -kwargs = {""ndigits"": 3} - -Which of these is a correct way to call round and get the same result?", -Points,1, -Difficulty,1, -Option,0,"a) round(args, kwargs)" -Option,0,"b) round(*args, kwargs)" -Option,0,"c) round(**args, *kwargs)" -Option,100,"d) round(*args, *kwargs)" -Feedback,The operator unpacks the elements of args and the * operator unpacks the items in kwargs. See Chapter 18., \ No newline at end of file diff --git a/soln/chap00.ipynb b/soln/chap00.ipynb deleted file mode 100644 index b42d9c0..0000000 --- a/soln/chap00.ipynb +++ /dev/null @@ -1,259 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "1331faa1", - "metadata": {}, - "source": [ - "You can order print and ebook versions of *Think Python 3e* from\n", - "[Bookshop.org](https://bookshop.org/a/98697/9781098155438) and\n", - "[Amazon](https://www.amazon.com/_/dp/1098155432?smid=ATVPDKIKX0DER&_encoding=UTF8&tag=oreilly20-20&_encoding=UTF8&tag=greenteapre01-20&linkCode=ur2&linkId=e2a529f94920295d27ec8a06e757dc7c&camp=1789&creative=9325)." - ] - }, - { - "cell_type": "markdown", - "id": "d9724920", - "metadata": {}, - "source": [ - "# Preface\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "id": "b76f38c6", - "metadata": {}, - "source": [ - "## Who Is This Book For?\n", - "\n", - "If you want to learn to program, you have come to the right place.\n", - "Python is one of the best programming languages for beginners -- and it is also one of the most in-demand skills.\n", - "\n", - "You have also come at the right time, because learning to program now is probably easier than ever.\n", - "With virtual assistants like ChatGPT, you don't have to learn alone.\n", - "Throughout this book, I'll suggest ways you can use these tools to accelerate your learning.\n", - "\n", - "This book is primarily for people who have never programmed before and people who have some experience in another programming language.\n", - "If you have substantial experience in Python, you might find the first few chapters too slow.\n", - "\n", - "One of the challenges of learning to program is that you have to learn *two* languages: one is the programming language itself; the other is the vocabulary we use to talk about programs.\n", - "If you learn only the programming language, you are likely to have problems when you need to interpret an error message, read documentation, talk to another person, or use virtual assistants.\n", - "If you have done some programming, but you have not also learned this second language, I hope you find this book helpful." - ] - }, - { - "cell_type": "markdown", - "id": "b4dd57bc", - "metadata": {}, - "source": [ - "## Goals of the Book\n", - "\n", - "Writing this book, I tried to be careful with the vocabulary.\n", - "I define each term when it first appears.\n", - "And there is a glossary that the end of each chapter that reviews the terms that were introduced.\n", - "\n", - "I also tried to be concise.\n", - "The less mental effort it takes to read the book, the more capacity you will have for programming.\n", - "\n", - "But you can't learn to program just by reading a book -- you have to practice.\n", - "For that reason, this book includes exercises at the end of every chapter where you can practice what you have learned.\n", - "\n", - "If you read carefully and work on exercises consistently, you will make progress.\n", - "But I'll warn you now -- learning to program is not easy, and even for experienced programmers it can be frustrating.\n", - "As we go, I will suggest strategies to help you write correct programs and fix incorrect ones." - ] - }, - { - "cell_type": "markdown", - "id": "6516d914", - "metadata": {}, - "source": [ - "## Navigating the Book\n", - "\n", - "Each chapter in this book builds on the previous ones, so you should read them in order and take time to work on the exercises before you move on.\n", - "\n", - "The first six chapters introduce basic elements like arithmetic, conditionals, and loops.\n", - "They also introduce the most important concept in programming, functions, and a powerful way to use them, recursion.\n", - "\n", - "Chapters 7 and 8 introduce strings -- which can represent letter, words, and sentences -- and algorithms for working with them.\n", - "\n", - "Chapters 9 through 12 introduce Python's core data structures -- lists, dictionaries, and tuples -- which are powerful tools for writing efficient programs.\n", - "Chapter 12 presents algorithms for analyzing text and randomly generating new text.\n", - "Algorithms like these are at the core of large language models (LLMs), so this chapter will give you an idea of how tools like ChatGPT work.\n", - "\n", - "Chapter 13 is about ways to store data in long-term storage -- files and databases.\n", - "As an exercise, you can write a program that searches a file system and finds duplicate files.\n", - "\n", - "Chapters 14 through 17 introduce object-oriented programming (OOP), which is a way to organize programs and the data they work with.\n", - "Many Python libraries are written in object-oriented style, so these chapters will help you understand their design -- and define your own objects.\n", - "\n", - "The goal of this book is not to cover the entire Python language.\n", - "Rather, I focus on a subset of the language that provides the greatest capability with the fewest concepts.\n", - "Nevertheless, Python has a lot of features you can use to solve common problems efficiently.\n", - "Chapter 18 presents some of these features.\n", - "\n", - "Finally, Chapter 19 presents my parting thoughts and suggestions for continuing your programming journey." - ] - }, - { - "cell_type": "markdown", - "id": "23013838", - "metadata": {}, - "source": [ - "## What's new in the third edition?\n", - "\n", - "The biggest changes in this edition were driven by two new technologies -- Jupyter notebooks and virtual assistants.\n", - "\n", - "Each chapter of this book is a Jupyter notebook, which is a document that contains both ordinary text and code.\n", - "For me, that makes it easier to write the code, test it, and keep it consistent with the text.\n", - "For you, it means you can run the code, modify it, and work on the exercises, all in one place.\n", - "Instructions for working with the notebooks are in the first chapter.\n", - "\n", - "The other big change is that I've added advice for working with virtual assistants like ChatGPT and using them to accelerate your learning.\n", - "When the previous edition of this book was published in 2016, the predecessors of these tools were far less useful and most people were unaware of them. \n", - "Now they are a standard tool for software engineering, and I think they will be a transformational tool for learning to program -- and learning a lot of other things, too.\n", - "\n", - "The other changes in the book were motivated by my regrets about the second edition.\n", - "\n", - "The first is that I did not emphasize software testing.\n", - "That was already a regrettable omission in 2016, but with the advent of virtual assistants, automated testing has become even more important.\n", - "So this edition presents Python's most widely-used testing tools, `doctest` and `unittest`, and includes several exercises where you can practice working with them.\n", - "\n", - "My other regret is that the exercises in the second edition were uneven -- some were more interesting than others and some were too hard.\n", - "Moving to Jupyter notebooks helped me develop and test a more engaging and effective sequence of exercises.\n", - "\n", - "In this revision, the sequence of topics is almost the same, but I rearranged a few of the chapters and compressed two short chapters into one.\n", - "Also, I expanded the coverage of strings to include regular expressions.\n", - "\n", - "A few chapters use turtle graphics.\n", - "In previous editions, I used Python's `turtle` module, but unfortunately it doesn't work in Jupyter notebooks.\n", - "So I replaced it with a new turtle module that should be easier to use.\n", - "\n", - "Finally, I rewrote a substantial fraction of the text, clarifying places that needed it and cutting back in places where I was not as concise as I could be.\n", - "\n", - "I am very proud of this new edition -- I hope you like it!" - ] - }, - { - "cell_type": "markdown", - "id": "bfb779bb", - "metadata": {}, - "source": [ - "## Getting started\n", - "\n", - "For most programming languages, including Python, there are many tools you can use to write and run programs. \n", - "These tools are called integrated development environments (IDEs).\n", - "In general, there are two kinds of IDEs:\n", - "\n", - "* Some work with files that contain code, so they provide tools for editing and running these files.\n", - "\n", - "* Others work primarily with notebooks, which are documents that contain text and code.\n", - "\n", - "For beginners, I recommend starting with a notebook development environment like Jupyter.\n", - "\n", - "The notebooks for this book are available from an online repository at .\n", - "\n", - "There are two ways to use them:\n", - "\n", - "* You can download the notebooks and run them on your own computer. In that case, you have to install Python and Jupyter, which is not hard, but if you want to learn Python, it can be frustrating to spend a lot of time installing software.\n", - "\n", - "* An alternative is to run the notebooks on Colab, which is a Jupyter environment that runs in a web browser, so you don't have to install anything. Colab is operated by Google, and it is free to use.\n", - "\n", - "If you are just getting started, I strongly recommend you start with Colab." - ] - }, - { - "cell_type": "markdown", - "id": "2ebd2412", - "metadata": {}, - "source": [ - "## Resources for Teachers\n", - "\n", - "If you are teaching with this book, here are some resources you might find useful.\n", - "\n", - "* You can find notebooks with solutions to the exercises at , along with links to the additional resources below.\n", - "\n", - "* Quizzes for each chapter, and a summative quiz for the whole book, are available on request.\n", - "\n", - "* *Teaching and Learning with Jupyter* is an online book with suggestions for using Jupyter effectively in the classroom. You can read the book at \n", - "\n", - "* One of the best ways to use notebooks is live coding, where an instructor writes code and students follow along in their own notebooks. To learn about live coding -- and get other great advice about teaching programming -- I recommend the instructor training provided by The Carpentries, at " - ] - }, - { - "cell_type": "markdown", - "id": "28e7de55", - "metadata": {}, - "source": [ - "## Acknowledgments\n", - "\n", - "Many thanks to Jeff Elkner, who translated my Java book into Python,\n", - "which got this project started and introduced me to what has turned out\n", - "to be my favorite language.\n", - "Thanks also to Chris Meyers, who contributed several sections to *How to Think Like a Computer Scientist*.\n", - "\n", - "Thanks to the Free Software Foundation for developing the GNU Free Documentation License, which helped make my collaboration with Jeff and Chris possible, and thanks to the Creative Commons for the license I am using now.\n", - "\n", - "Thanks to the developers and maintainers of the Python language and the libraries I used, including the Turtle graphics module; the tools I used to develop the book, including Jupyter and JupyterBook; and the services I used, including ChatGPT, Copilot, Colab and GitHub.\n", - "\n", - "Thanks to the editors at Lulu who worked on *How to Think Like a Computer Scientist* and the editors at O'Reilly Media who worked on *Think Python*.\n", - "\n", - "Special thanks to the technical reviewers for the second edition, Melissa Lewis and Luciano Ramalho, and for the third edition, Sam Lau and Luciano Ramalho (again!).\n", - "I am also grateful to Luciano for developing the turtle graphics module I use in several chapters, called `jupyturtle`.\n", - "\n", - "Thanks to all the students who worked with earlier versions of this book and all the contributors who sent in corrections and suggestions.\n", - "More than 100 sharp-eyed and thoughtful readers have sent in suggestions and corrections over the past few years. Their contributions, and enthusiasm for this project, have been a huge help.\n", - "\n", - "If you have a suggestion or correction, please send email to `feedback@thinkpython.com`.\n", - "If you include at least part of the sentence the error appears in, that\n", - "makes it easy for me to search. Page and section numbers are fine, too,\n", - "but not quite as easy to work with. Thanks!" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "4e31cebe", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "id": "a7f4edf8", - "metadata": { - "tags": [] - }, - "source": [ - "[Think Python: 3rd Edition](https://allendowney.github.io/ThinkPython/index.html)\n", - "\n", - "Copyright 2024 [Allen B. Downey](https://allendowney.com)\n", - "\n", - "Code license: [MIT License](https://mit-license.org/)\n", - "\n", - "Text license: [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-nc-sa/4.0/)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.11" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/soln/chap01.ipynb b/soln/chap01.ipynb deleted file mode 100644 index 46c9a41..0000000 --- a/soln/chap01.ipynb +++ /dev/null @@ -1,1861 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "1331faa1", - "metadata": {}, - "source": [ - "You can order print and ebook versions of *Think Python 3e* from\n", - "[Bookshop.org](https://bookshop.org/a/98697/9781098155438) and\n", - "[Amazon](https://www.amazon.com/_/dp/1098155432?smid=ATVPDKIKX0DER&_encoding=UTF8&tag=oreilly20-20&_encoding=UTF8&tag=greenteapre01-20&linkCode=ur2&linkId=e2a529f94920295d27ec8a06e757dc7c&camp=1789&creative=9325)." - ] - }, - { - "cell_type": "markdown", - "id": "a14edb7e", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "# Welcome\n", - "\n", - "This is the Jupyter notebook for Chapter 1 of [*Think Python*, 3rd edition](https://greenteapress.com/wp/think-python-3rd-edition), by Allen B. Downey.\n", - "\n", - "If you are not familiar with Jupyter notebooks,\n", - "[click here for a short introduction](https://colab.research.google.com/github/AllenDowney/ThinkPython/blob/v3/chapters/jupyter_intro.ipynb).\n", - "\n", - "Then, if you are not already running this notebook on Colab, [click here to run this notebook on Colab](https://colab.research.google.com/github/AllenDowney/ThinkPython/blob/v3/chapters/chap01.ipynb)." - ] - }, - { - "cell_type": "markdown", - "id": "3b4a1f57", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "The following cell downloads a file and runs some code that is used specifically for this book.\n", - "You don't have to understand this code yet, but you should run it before you do anything else in this notebook.\n", - "Remember that you can run the code by selecting the cell and pressing the play button (a triangle in a circle) or hold down `Shift` and press `Enter`." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "213f9d96", - "metadata": { - "tags": [ - "remove-cell", - "keep" - ] - }, - "outputs": [], - "source": [ - "from os.path import basename, exists\n", - "\n", - "def download(url):\n", - " filename = basename(url)\n", - " if not exists(filename):\n", - " from urllib.request import urlretrieve\n", - "\n", - " local, _ = urlretrieve(url, filename)\n", - " print(\"Downloaded \" + str(local))\n", - " return filename\n", - "\n", - "download('https://github.com/AllenDowney/ThinkPython/raw/v3/thinkpython.py');\n", - "\n", - "import thinkpython" - ] - }, - { - "cell_type": "markdown", - "id": "333a6fc9", - "metadata": { - "tags": [ - "chapter_programming" - ] - }, - "source": [ - "# Programming as a way of thinking\n", - "\n", - "The first goal of this book is to teach you how to program in Python.\n", - "But learning to program means learning a new way to think, so the second goal of this book is to help you think like a computer scientist.\n", - "This way of thinking combines some of the best features of mathematics, engineering, and natural science.\n", - "Like mathematicians, computer scientists use formal languages to denote ideas -- specifically computations.\n", - "Like engineers, they design things, assembling components into systems and evaluating trade-offs among alternatives.\n", - "Like scientists, they observe the behavior of complex systems, form hypotheses, and test predictions.\n", - "\n", - "We will start with the most basic elements of programming and work our way up.\n", - "In this chapter, we'll see how Python represents numbers, letters, and words.\n", - "And you'll learn to perform arithmetic operations.\n", - "\n", - "You will also start to learn the vocabulary of programming, including terms like operator, expression, value, and type.\n", - "This vocabulary is important -- you will need it to understand the rest of the book, to communicate with other programmers, and to use and understand virtual assistants." - ] - }, - { - "cell_type": "markdown", - "id": "a371aea3", - "metadata": {}, - "source": [ - "## Arithmetic operators\n", - "\n", - "An **arithmetic operator** is a symbol that represents an arithmetic computation. For example, the plus sign, `+`, performs addition." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "2568ec84", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "42" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "30 + 12" - ] - }, - { - "cell_type": "markdown", - "id": "fc0e7ce8", - "metadata": {}, - "source": [ - "The minus sign, `-`, is the operator that performs subtraction." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "c4e75456", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "42" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "43 - 1" - ] - }, - { - "cell_type": "markdown", - "id": "63e4e780", - "metadata": {}, - "source": [ - "The asterisk, `*`, performs multiplication." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "022a7b16", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "42" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "6 * 7" - ] - }, - { - "cell_type": "markdown", - "id": "a6192d13", - "metadata": {}, - "source": [ - "And the forward slash, `/`, performs division:" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "05ae1098", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "42.0" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "84 / 2" - ] - }, - { - "cell_type": "markdown", - "id": "641ad233", - "metadata": {}, - "source": [ - "Notice that the result of the division is `42.0` rather than `42`. That's because there are two types of numbers in Python: \n", - "\n", - "* **integers**, which represent numbers with no fractional or decimal part, and \n", - "\n", - "* **floating-point numbers**, which represent integers and numbers with a decimal point.\n", - "\n", - "If you add, subtract, or multiply two integers, the result is an integer.\n", - "But if you divide two integers, the result is a floating-point number.\n", - "Python provides another operator, `//`, that performs **integer division**.\n", - "The result of integer division is always an integer." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "4df5bcaa", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "42" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "84 // 2" - ] - }, - { - "cell_type": "markdown", - "id": "b2a620ab", - "metadata": {}, - "source": [ - "Integer division is also called \"floor division\" because it always rounds down (toward the \"floor\"). " - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "ef08d549", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "42" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "85 // 2" - ] - }, - { - "cell_type": "markdown", - "id": "41e2886a", - "metadata": {}, - "source": [ - "Finally, the operator `**` performs exponentiation; that is, it raises a\n", - "number to a power:" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "df933e80", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "49" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "7 ** 2" - ] - }, - { - "cell_type": "markdown", - "id": "b2502fb6", - "metadata": {}, - "source": [ - "In some other languages, the caret, `^`, is used for exponentiation, but in Python\n", - "it is a bitwise operator called XOR.\n", - "If you are not familiar with bitwise operators, the result might be unexpected:" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "306b6b88", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "5" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "7 ^ 2" - ] - }, - { - "cell_type": "markdown", - "id": "30078370", - "metadata": {}, - "source": [ - "I won't cover bitwise operators in this book, but you can read about\n", - "them at ." - ] - }, - { - "cell_type": "markdown", - "id": "0f5b7e97", - "metadata": {}, - "source": [ - "## Expressions\n", - "\n", - "A collection of operators and numbers is called an **expression**.\n", - "An expression can contain any number of operators and numbers.\n", - "For example, here's an expression that contains two operators." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "6e68101d", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "42" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "6 + 6 ** 2" - ] - }, - { - "cell_type": "markdown", - "id": "8e95039c", - "metadata": {}, - "source": [ - "Notice that exponentiation happens before addition.\n", - "Python follows the order of operations you might have learned in a math class: exponentiation happens before multiplication and division, which happen before addition and subtraction.\n", - "\n", - "In the following example, multiplication happens before addition." - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "ffc25598", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "42" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "12 + 5 * 6" - ] - }, - { - "cell_type": "markdown", - "id": "914a60d8", - "metadata": {}, - "source": [ - "If you want the addition to happen first, you can use parentheses." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "8dd1bd9a", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "102" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "(12 + 5) * 6" - ] - }, - { - "cell_type": "markdown", - "id": "67ae0ae9", - "metadata": {}, - "source": [ - "Every expression has a **value**.\n", - "For example, the expression `6 * 7` has the value `42`." - ] - }, - { - "cell_type": "markdown", - "id": "caebaa51", - "metadata": {}, - "source": [ - "## Arithmetic functions\n", - "\n", - "In addition to the arithmetic operators, Python provides a few **functions** that work with numbers.\n", - "For example, the `round` function takes a floating-point number and rounds it off to the nearest integer." - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "1e3d5e01", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "42" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "round(42.4)" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "d1b220b9", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "43" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "round(42.6)" - ] - }, - { - "cell_type": "markdown", - "id": "f5738b4b", - "metadata": {}, - "source": [ - "The `abs` function computes the absolute value of a number.\n", - "For a positive number, the absolute value is the number itself." - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "ff742476", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "42" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "abs(42)" - ] - }, - { - "cell_type": "markdown", - "id": "e518494a", - "metadata": {}, - "source": [ - "For a negative number, the absolute value is positive." - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "9247c1a3", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "42" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "abs(-42)" - ] - }, - { - "cell_type": "markdown", - "id": "6969ce45", - "metadata": {}, - "source": [ - "When we use a function like this, we say we're **calling** the function.\n", - "An expression that calls a function is a **function call**.\n", - "\n", - "When you call a function, the parentheses are required.\n", - "If you leave them out, you get an error message." - ] - }, - { - "cell_type": "markdown", - "id": "5a73bfd5", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "NOTE: The following cell uses `%%expect`, which is a Jupyter \"magic command\" that means we expect the code in this cell to produce an error. For more on this topic, see the\n", - "[Jupyter notebook introduction](https://colab.research.google.com/github/AllenDowney/ThinkPython/blob/v3/chapters/jupyter_intro.ipynb)." - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "4674b7ca", - "metadata": { - "tags": [ - "raises-exception" - ] - }, - "outputs": [ - { - "ename": "SyntaxError", - "evalue": "invalid syntax (3827346253.py, line 1)", - "output_type": "error", - "traceback": [ - "\u001b[0;36m Cell \u001b[0;32mIn[17], line 1\u001b[0;36m\u001b[0m\n\u001b[0;31m abs 42\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n" - ] - } - ], - "source": [ - "%%expect SyntaxError\n", - "\n", - "abs 42" - ] - }, - { - "cell_type": "markdown", - "id": "7d356f1b", - "metadata": {}, - "source": [ - "You can ignore the first line of this message; it doesn't contain any information we need to understand right now.\n", - "The second line is the code that contains the error, with a caret (`^`) beneath it to indicate where the error was discovered.\n", - "\n", - "The last line indicates that this is a **syntax error**, which means that there is something wrong with the structure of the expression.\n", - "In this example, the problem is that a function call requires parentheses.\n", - "\n", - "Let's see what happens if you leave out the parentheses *and* the value." - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "7d3e8127", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "abs" - ] - }, - { - "cell_type": "markdown", - "id": "94478885", - "metadata": {}, - "source": [ - "A function name all by itself is a legal expression that has a value.\n", - "When it's displayed, the value indicates that `abs` is a function, and it includes some additional information I'll explain later." - ] - }, - { - "cell_type": "markdown", - "id": "31a85d17", - "metadata": {}, - "source": [ - "## Strings\n", - "\n", - "In addition to numbers, Python can also represent sequences of letters, which are called **strings** because the letters are strung together like beads on a necklace.\n", - "To write a string, we can put a sequence of letters inside straight quotation marks." - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "bd8ae45f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'Hello'" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "'Hello'" - ] - }, - { - "cell_type": "markdown", - "id": "d20050d8", - "metadata": {}, - "source": [ - "It is also legal to use double quotation marks." - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "01d0055e", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'world'" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "\"world\"" - ] - }, - { - "cell_type": "markdown", - "id": "76f5edb7", - "metadata": {}, - "source": [ - "Double quotes make it easy to write a string that contains an apostrophe, which is the same symbol as a straight quote." - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "0295acab", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "\"it's a small \"" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "\"it's a small \"" - ] - }, - { - "cell_type": "markdown", - "id": "d62d4b1c", - "metadata": {}, - "source": [ - "Strings can also contain spaces, punctuation, and digits." - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "cf918917", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'Well, '" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "'Well, '" - ] - }, - { - "cell_type": "markdown", - "id": "9ad47f7a", - "metadata": {}, - "source": [ - "The `+` operator works with strings; it joins two strings into a single string, which is called **concatenation**" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "aefe6af1", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "\"Well, it's a small world.\"" - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "'Well, ' + \"it's a small \" + 'world.'" - ] - }, - { - "cell_type": "markdown", - "id": "0ad969a3", - "metadata": {}, - "source": [ - "The `*` operator also works with strings; it makes multiple copies of a string and concatenates them." - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "42e9e4e2", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'Spam, Spam, Spam, Spam, '" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "'Spam, ' * 4" - ] - }, - { - "cell_type": "markdown", - "id": "dfba16a5", - "metadata": {}, - "source": [ - "The other arithmetic operators don't work with strings.\n", - "\n", - "Python provides a function called `len` that computes the length of a string." - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "a5e837db", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "4" - ] - }, - "execution_count": 25, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len('Spam')" - ] - }, - { - "cell_type": "markdown", - "id": "d91e00b3", - "metadata": {}, - "source": [ - "Notice that `len` counts the letters between the quotes, but not the quotes.\n", - "\n", - "When you create a string, be sure to use straight quotes.\n", - "The back quote, also known as a backtick, causes a syntax error." - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "e3f65f19", - "metadata": { - "tags": [ - "raises-exception" - ] - }, - "outputs": [ - { - "ename": "SyntaxError", - "evalue": "invalid syntax (1580190030.py, line 1)", - "output_type": "error", - "traceback": [ - "\u001b[0;36m Cell \u001b[0;32mIn[26], line 1\u001b[0;36m\u001b[0m\n\u001b[0;31m `Hello`\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n" - ] - } - ], - "source": [ - "%%expect SyntaxError\n", - "\n", - "`Hello`" - ] - }, - { - "cell_type": "markdown", - "id": "40d893d1", - "metadata": {}, - "source": [ - "Smart quotes, also known as curly quotes, are also illegal." - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "a705b980", - "metadata": { - "tags": [ - "raises-exception", - "remove-cell" - ] - }, - "outputs": [ - { - "ename": "SyntaxError", - "evalue": "invalid character '‘' (U+2018) (232449189.py, line 1)", - "output_type": "error", - "traceback": [ - "\u001b[0;36m Cell \u001b[0;32mIn[27], line 1\u001b[0;36m\u001b[0m\n\u001b[0;31m ‘Hello’\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid character '‘' (U+2018)\n" - ] - } - ], - "source": [ - "%%expect SyntaxError\n", - "\n", - "‘Hello’" - ] - }, - { - "cell_type": "markdown", - "id": "5471d4f8", - "metadata": {}, - "source": [ - "## Values and types\n", - "\n", - "So far we've seen three kinds of values:\n", - "\n", - "* `2` is an integer,\n", - "\n", - "* `42.0` is a floating-point number, and \n", - "\n", - "* `'Hello'` is a string.\n", - "\n", - "A kind of value is called a **type**.\n", - "Every value has a type -- or we sometimes say it \"belongs to\" a type.\n", - "\n", - "Python provides a function called `type` that tells you the type of any value.\n", - "The type of an integer is `int`." - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "3df8e2c5", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "int" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "type(2)" - ] - }, - { - "cell_type": "markdown", - "id": "b137814c", - "metadata": {}, - "source": [ - "The type of a floating-point number is `float`." - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "c4732c8d", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "float" - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "type(42.0)" - ] - }, - { - "cell_type": "markdown", - "id": "266dea4e", - "metadata": {}, - "source": [ - "And the type of a string is `str`." - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "id": "8f65ac45", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "str" - ] - }, - "execution_count": 30, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "type('Hello, World!')" - ] - }, - { - "cell_type": "markdown", - "id": "76d216ed", - "metadata": {}, - "source": [ - "The types `int`, `float`, and `str` can be used as functions.\n", - "For example, `int` can take a floating-point number and convert it to an integer (always rounding down)." - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "id": "84b22f2f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "42" - ] - }, - "execution_count": 31, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "int(42.9)" - ] - }, - { - "cell_type": "markdown", - "id": "dcd8d114", - "metadata": {}, - "source": [ - "And `float` can convert an integer to a floating-point value." - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "id": "9b66ee21", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "42.0" - ] - }, - "execution_count": 32, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "float(42)" - ] - }, - { - "cell_type": "markdown", - "id": "eda70b61", - "metadata": {}, - "source": [ - "Now, here's something that can be confusing.\n", - "What do you get if you put a sequence of digits in quotes?" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "id": "f64e107c", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'126'" - ] - }, - "execution_count": 33, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "'126'" - ] - }, - { - "cell_type": "markdown", - "id": "fdded653", - "metadata": {}, - "source": [ - "It looks like a number, but it is actually a string." - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "id": "609a8153", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "str" - ] - }, - "execution_count": 34, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "type('126')" - ] - }, - { - "cell_type": "markdown", - "id": "2683ac35", - "metadata": {}, - "source": [ - "If you try to use it like a number, you might get an error." - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "id": "1cf21da4", - "metadata": { - "tags": [ - "raises-exception" - ] - }, - "outputs": [ - { - "ename": "TypeError", - "evalue": "unsupported operand type(s) for /: 'str' and 'int'", - "output_type": "error", - "traceback": [ - "\u001b[0;31mTypeError\u001b[0m\u001b[0;31m:\u001b[0m unsupported operand type(s) for /: 'str' and 'int'\n" - ] - } - ], - "source": [ - "%%expect TypeError\n", - "\n", - "'126' / 3" - ] - }, - { - "cell_type": "markdown", - "id": "32c11cc4", - "metadata": {}, - "source": [ - "This example generates a `TypeError`, which means that the values in the expression, which are called **operands**, have the wrong type.\n", - "The error message indicates that the `/` operator does not support the types of these values, which are `str` and `int`.\n", - "\n", - "If you have a string that contains digits, you can use `int` to convert it to an integer." - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "id": "d45e6a60", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "42.0" - ] - }, - "execution_count": 36, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "int('126') / 3" - ] - }, - { - "cell_type": "markdown", - "id": "86935d56", - "metadata": {}, - "source": [ - "If you have a string that contains digits and a decimal point, you can use `float` to convert it to a floating-point number." - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "id": "db30b719", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "12.6" - ] - }, - "execution_count": 37, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "float('12.6')" - ] - }, - { - "cell_type": "markdown", - "id": "03103ef4", - "metadata": {}, - "source": [ - "When you write a large integer, you might be tempted to use commas\n", - "between groups of digits, as in `1,000,000`.\n", - "This is a legal expression in Python, but the result is not an integer." - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "id": "d72b6af1", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(1, 0, 0)" - ] - }, - "execution_count": 38, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "1,000,000" - ] - }, - { - "cell_type": "markdown", - "id": "3d24af71", - "metadata": {}, - "source": [ - "Python interprets `1,000,000` as a comma-separated sequence of integers.\n", - "We'll learn more about this kind of sequence later.\n", - "\n", - "You can use underscores to make large numbers easier to read." - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "id": "e19bf7e7", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "1000000" - ] - }, - "execution_count": 39, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "1_000_000" - ] - }, - { - "cell_type": "markdown", - "id": "1761cbac", - "metadata": {}, - "source": [ - "## Formal and natural languages\n", - "\n", - "**Natural languages** are the languages people speak, like English, Spanish, and French. They were not designed by people; they evolved naturally.\n", - "\n", - "**Formal languages** are languages that are designed by people for specific applications. \n", - "For example, the notation that mathematicians use is a formal language that is particularly good at denoting relationships among numbers and symbols.\n", - "Similarly, programming languages are formal languages that have been designed to express computations." - ] - }, - { - "cell_type": "markdown", - "id": "1bf3d2dc", - "metadata": {}, - "source": [ - "Although formal and natural languages have some features in\n", - "common there are important differences:\n", - "\n", - "* Ambiguity: Natural languages are full of ambiguity, which people deal with by\n", - " using contextual clues and other information. Formal languages are\n", - " designed to be nearly or completely unambiguous, which means that\n", - " any program has exactly one meaning, regardless of context.\n", - "\n", - "* Redundancy: In order to make up for ambiguity and reduce misunderstandings,\n", - " natural languages use redundancy. As a result, they are\n", - " often verbose. Formal languages are less redundant and more concise.\n", - "\n", - "* Literalness: Natural languages are full of idiom and metaphor. Formal languages mean exactly what they say." - ] - }, - { - "cell_type": "markdown", - "id": "78a1cec8", - "metadata": {}, - "source": [ - "Because we all grow up speaking natural languages, it is sometimes hard to adjust to formal languages.\n", - "Formal languages are more dense than natural languages, so it takes longer to read them.\n", - "Also, the structure is important, so it is not always best to read from top to bottom, left to right.\n", - "Finally, the details matter. Small errors in spelling and\n", - "punctuation, which you can get away with in natural languages, can make\n", - "a big difference in a formal language." - ] - }, - { - "cell_type": "markdown", - "id": "4358fa9a", - "metadata": {}, - "source": [ - "## Debugging\n", - "\n", - "Programmers make mistakes. For whimsical reasons, programming errors are called **bugs** and the process of tracking them down is called **debugging**.\n", - "\n", - "Programming, and especially debugging, sometimes brings out strong emotions. If you are struggling with a difficult bug, you might feel angry, sad, or embarrassed.\n", - "\n", - "Preparing for these reactions might help you deal with them. One approach is to think of the computer as an employee with certain strengths, like speed and precision, and particular weaknesses, like lack of empathy and inability to grasp the big picture.\n", - "\n", - "Your job is to be a good manager: find ways to take advantage of the strengths and mitigate the weaknesses. And find ways to use your emotions to engage with the problem, without letting your reactions interfere with your ability to work effectively.\n", - "\n", - "Learning to debug can be frustrating, but it is a valuable skill that is useful for many activities beyond programming. At the end of each chapter there is a section, like this one, with my suggestions for debugging. I hope they help!" - ] - }, - { - "cell_type": "markdown", - "id": "33b8ad00", - "metadata": {}, - "source": [ - "## Glossary\n", - "\n", - "**arithmetic operator:**\n", - "A symbol, like `+` and `*`, that denotes an arithmetic operation like addition or multiplication.\n", - "\n", - "**integer:**\n", - "A type that represents numbers with no fractional or decimal part.\n", - "\n", - "**floating-point:**\n", - "A type that represents integers and numbers with decimal parts.\n", - "\n", - "**integer division:**\n", - "An operator, `//`, that divides two numbers and rounds down to an integer.\n", - "\n", - "**expression:**\n", - "A combination of variables, values, and operators.\n", - "\n", - "**value:**\n", - "An integer, floating-point number, or string -- or one of other kinds of values we will see later.\n", - "\n", - "**function:**\n", - "A named sequence of statements that performs some useful operation.\n", - "Functions may or may not take arguments and may or may not produce a result.\n", - "\n", - "**function call:**\n", - "An expression -- or part of an expression -- that runs a function.\n", - "It consists of the function name followed by an argument list in parentheses.\n", - "\n", - "**syntax error:**\n", - "An error in a program that makes it impossible to parse -- and therefore impossible to run.\n", - "\n", - "**string:**\n", - " A type that represents sequences of characters.\n", - "\n", - "**concatenation:**\n", - "Joining two strings end-to-end.\n", - "\n", - "**type:**\n", - "A category of values.\n", - "The types we have seen so far are integers (type `int`), floating-point numbers (type ` float`), and strings (type `str`).\n", - "\n", - "**operand:**\n", - "One of the values on which an operator operates.\n", - "\n", - "**natural language:**\n", - "Any of the languages that people speak that evolved naturally.\n", - "\n", - "**formal language:**\n", - "Any of the languages that people have designed for specific purposes, such as representing mathematical ideas or computer programs.\n", - "All programming languages are formal languages.\n", - "\n", - "**bug:**\n", - "An error in a program.\n", - "\n", - "**debugging:**\n", - "The process of finding and correcting errors." - ] - }, - { - "cell_type": "markdown", - "id": "ed4ec01b", - "metadata": {}, - "source": [ - "## Exercises" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "id": "06d3e72c", - "metadata": { - "tags": [ - "remove-print", - "keep" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Exception reporting mode: Verbose\n" - ] - } - ], - "source": [ - "# This cell tells Jupyter to provide detailed debugging information\n", - "# when a runtime error occurs. Run it before working on the exercises.\n", - "\n", - "%xmode Verbose" - ] - }, - { - "cell_type": "markdown", - "id": "23adf208", - "metadata": {}, - "source": [ - "### Ask a virtual assistant\n", - "\n", - "As you work through this book, there are several ways you can use a virtual assistant or chatbot to help you learn.\n", - "\n", - "* If you want to learn more about a topic in the chapter, or anything is unclear, you can ask for an explanation.\n", - "\n", - "* If you are having a hard time with any of the exercises, you can ask for help.\n", - "\n", - "In each chapter, I'll suggest exercises you can do with a virtual assistant, but I encourage you to try things on your own and see what works for you." - ] - }, - { - "cell_type": "markdown", - "id": "ebf1a451", - "metadata": {}, - "source": [ - "Here are some topics you could ask a virtual assistant about:\n", - "\n", - "* Earlier I mentioned bitwise operators but I didn't explain why the value of `7 ^ 2` is 5. Try asking \"What are the bitwise operators in Python?\" or \"What is the value of `7 XOR 2`?\"\n", - "\n", - "* I also mentioned the order of operations. For more details, ask \"What is the order of operations in Python?\"\n", - "\n", - "* The `round` function, which we used to round a floating-point number to the nearest integer, can take a second argument. Try asking \"What are the arguments of the round function?\" or \"How do I round pi off to three decimal places?\"\n", - "\n", - "* There's one more arithmetic operator I didn't mention; try asking \"What is the modulus operator in Python?\"" - ] - }, - { - "cell_type": "markdown", - "id": "9be3e1c7", - "metadata": {}, - "source": [ - "Most virtual assistants know about Python, so they answer questions like this pretty reliably.\n", - "But remember that these tools make mistakes.\n", - "If you get code from a chatbot, test it!" - ] - }, - { - "cell_type": "markdown", - "id": "03c1ef93", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "You might wonder what `round` does if a number ends in `0.5`.\n", - "The answer is that it sometimes rounds up and sometimes rounds down.\n", - "Try these examples and see if you can figure out what rule it follows." - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "id": "5d358f37", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "42" - ] - }, - "execution_count": 41, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "round(42.5)" - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "id": "12aa59a3", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "44" - ] - }, - "execution_count": 42, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "round(43.5)" - ] - }, - { - "cell_type": "markdown", - "id": "dd2f890e", - "metadata": {}, - "source": [ - "If you are curious, ask a virtual assistant, \"If a number ends in 0.5, does Python round up or down?\"" - ] - }, - { - "cell_type": "markdown", - "id": "2cd03bcb", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "When you learn about a new feature, you should try it out and make mistakes on purpose.\n", - "That way, you learn the error messages, and when you see them again, you will know what they mean.\n", - "It is better to make mistakes now and deliberately than later and accidentally.\n", - "\n", - "1. You can use a minus sign to make a negative number like `-2`. What happens if you put a plus sign before a number? What about `2++2`?\n", - "\n", - "2. What happens if you have two values with no operator between them, like `4 2`?\n", - "\n", - "3. If you call a function like `round(42.5)`, what happens if you leave out one or both parentheses?" - ] - }, - { - "cell_type": "markdown", - "id": "1fb0adfe", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "Recall that every expression has a value, every value has a type, and we can use the `type` function to find the type of any value.\n", - "\n", - "What is the type of the value of the following expressions? Make your best guess for each one, and then use `type` to find out.\n", - "\n", - "* `765`\n", - "\n", - "* `2.718`\n", - "\n", - "* `'2 pi'`\n", - "\n", - "* `abs(-7)`\n", - "\n", - "* `abs(-7.0)`\n", - "\n", - "* `abs`\n", - "\n", - "* `int`\n", - "\n", - "* `type`" - ] - }, - { - "cell_type": "markdown", - "id": "23762eec", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "The following questions give you a chance to practice writing arithmetic expressions.\n", - "\n", - "1. How many seconds are there in 42 minutes 42 seconds?\n", - "\n", - "2. How many miles are there in 10 kilometers? Hint: there are 1.61 kilometers in a mile.\n", - "\n", - "3. If you run a 10 kilometer race in 42 minutes 42 seconds, what is your average pace in seconds per mile? \n", - " \n", - "4. What is your average pace in minutes and seconds per mile?\n", - "\n", - "5. What is your average speed in miles per hour?\n", - "\n", - "If you already know about variables, you can use them for this exercise.\n", - "If you don't, you can do the exercise without them -- and then we'll see them in the next chapter." - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "id": "8fb50f30", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "2562" - ] - }, - "execution_count": 43, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Solution\n", - "# total seconds\n", - "42 * 60 + 42" - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "id": "5eceb4fb", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "6.211180124223602" - ] - }, - "execution_count": 44, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Solution\n", - "# number of miles\n", - "10 / 1.61" - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "id": "fee97d8d", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "412.48200824964016" - ] - }, - "execution_count": 45, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Solution\n", - "# seconds per mile\n", - "2562 / 6.21118" - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "id": "a998258c", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "6.0" - ] - }, - "execution_count": 46, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Solution\n", - "# minute part of pace\n", - "412.48 // 60" - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "id": "2e0fc7a9", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "52.48000000000002" - ] - }, - "execution_count": 47, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Solution\n", - "# seconds part of pace\n", - "412.48 % 60" - ] - }, - { - "cell_type": "code", - "execution_count": 48, - "id": "d25268d8", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0.7116666666666667" - ] - }, - "execution_count": 48, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Solution\n", - "# hours\n", - "2562 / 60 / 60" - ] - }, - { - "cell_type": "code", - "execution_count": 49, - "id": "523d9b0f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "8.727661571579926" - ] - }, - "execution_count": 49, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Solution\n", - "# miles per hour\n", - "6.21118 / 0.711666" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "ca083ccf", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "id": "a7f4edf8", - "metadata": { - "tags": [] - }, - "source": [ - "[Think Python: 3rd Edition](https://allendowney.github.io/ThinkPython/index.html)\n", - "\n", - "Copyright 2024 [Allen B. Downey](https://allendowney.com)\n", - "\n", - "Code license: [MIT License](https://mit-license.org/)\n", - "\n", - "Text license: [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-nc-sa/4.0/)" - ] - } - ], - "metadata": { - "celltoolbar": "Tags", - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.11" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/soln/chap02.ipynb b/soln/chap02.ipynb deleted file mode 100644 index 43f811c..0000000 --- a/soln/chap02.ipynb +++ /dev/null @@ -1,1664 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "1331faa1", - "metadata": {}, - "source": [ - "You can order print and ebook versions of *Think Python 3e* from\n", - "[Bookshop.org](https://bookshop.org/a/98697/9781098155438) and\n", - "[Amazon](https://www.amazon.com/_/dp/1098155432?smid=ATVPDKIKX0DER&_encoding=UTF8&tag=oreilly20-20&_encoding=UTF8&tag=greenteapre01-20&linkCode=ur2&linkId=e2a529f94920295d27ec8a06e757dc7c&camp=1789&creative=9325)." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "1a0a6ff4", - "metadata": { - "tags": [ - "remove-cell", - "keep" - ] - }, - "outputs": [], - "source": [ - "from os.path import basename, exists\n", - "\n", - "def download(url):\n", - " filename = basename(url)\n", - " if not exists(filename):\n", - " from urllib.request import urlretrieve\n", - "\n", - " local, _ = urlretrieve(url, filename)\n", - " print(\"Downloaded \" + str(local))\n", - " return filename\n", - "\n", - "download('https://github.com/AllenDowney/ThinkPython/raw/v3/thinkpython.py');\n", - "download('https://github.com/AllenDowney/ThinkPython/raw/v3/diagram.py');\n", - "\n", - "import thinkpython" - ] - }, - { - "cell_type": "markdown", - "id": "d0286422", - "metadata": {}, - "source": [ - "# Variables and Statements\n", - "\n", - "In the previous chapter, we used operators to write expressions that perform arithmetic computations.\n", - "\n", - "In this chapter, you'll learn about variables and statements, the `import` statement, and the `print` function.\n", - "And I'll introduce more of the vocabulary we use to talk about programs, including \"argument\" and \"module\".\n" - ] - }, - { - "cell_type": "markdown", - "id": "4ac44f0c", - "metadata": {}, - "source": [ - "## Variables\n", - "\n", - "A **variable** is a name that refers to a value.\n", - "To create a variable, we can write a **assignment statement** like this." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "59f6db42", - "metadata": {}, - "outputs": [], - "source": [ - "n = 17" - ] - }, - { - "cell_type": "markdown", - "id": "52f187f1", - "metadata": {}, - "source": [ - "An assignment statement has three parts: the name of the variable on the left, the equals operator, `=`, and an expression on the right.\n", - "In this example, the expression is an integer.\n", - "In the following example, the expression is a floating-point number." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "1301f6af", - "metadata": {}, - "outputs": [], - "source": [ - "pi = 3.141592653589793" - ] - }, - { - "cell_type": "markdown", - "id": "3e27e65c", - "metadata": {}, - "source": [ - "And in the following example, the expression is a string." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "f7adb732", - "metadata": {}, - "outputs": [], - "source": [ - "message = 'And now for something completely different'" - ] - }, - { - "cell_type": "markdown", - "id": "cb5916ea", - "metadata": {}, - "source": [ - "When you run an assignment statement, there is no output.\n", - "Python creates the variable and gives it a value, but the assignment statement has no visible effect.\n", - "However, after creating a variable, you can use it as an expression.\n", - "So we can display the value of `message` like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "6bcc0a66", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'And now for something completely different'" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "message" - ] - }, - { - "cell_type": "markdown", - "id": "e3fd81de", - "metadata": {}, - "source": [ - "You can also use a variable as part of an expression with arithmetic operators." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "3f11f497", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "42" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "n + 25" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "6b2dafea", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "6.283185307179586" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "2 * pi" - ] - }, - { - "cell_type": "markdown", - "id": "97396e7d", - "metadata": {}, - "source": [ - "And you can use a variable when you call a function." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "72c45ac5", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "3" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "round(pi)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "6bf81c52", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "42" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(message)" - ] - }, - { - "cell_type": "markdown", - "id": "397d9da3", - "metadata": {}, - "source": [ - "## State diagrams\n", - "\n", - "A common way to represent variables on paper is to write the name with\n", - "an arrow pointing to its value. " - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "2c25e84e", - "metadata": { - "tags": [ - "remove-cell", - "keep" - ] - }, - "outputs": [], - "source": [ - "import math\n", - "\n", - "from diagram import make_binding, Frame\n", - "\n", - "binding = make_binding(\"message\", 'And now for something completely different')\n", - "binding2 = make_binding(\"n\", 17)\n", - "binding3 = make_binding(\"pi\", 3.141592653589793)\n", - "\n", - "frame = Frame([binding2, binding3, binding])" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "5b27a635", - "metadata": { - "tags": [ - "remove-input", - "keep" - ] - }, - "outputs": [ - { - "data": { - "image/png": "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Qj+H1/7MnTtXTZgwodo8qqu/Y8aMUZ6enurs2bMqPz9f3XnnnSo0NFSdO3dO5eTkKCcnJ5Wamlrv/OnUqZNKTk5u0PgtW7ZMDRs2rEHnq127dio9PV1pmqamT59e6/maMWOGCgkJUXl5eVXeIzfq2P38/JTZbFbnzp1Tv//+u+rTp49atWpVtfMXERGhli9frjRNU4WFhWrcuHFqzpw51cppmqZWrVqlxo8fr86fP680TVMrVqxQQ4YM0cfv6aefVpqmqUWLFqmHH35Yr+fu7q4SExOrjUF8fLxydXVVv/zyiyosLFTh4eGqU6dOStM09d133yl7e/sa59y1v2dnZ6vevXvr75MzZ86ojh07qh9//FF99913CtCPsSHzYuLEiXo7dnZ26scff6yxD9f701A37dGLDz30EAB9+vShuLhY/71v376cPn0aqFjFnT59mvvvv1+vZ2lpyc8//4zJZOLf//43xcXFmEwmgoKCADCbzUyfPp0RI0YwYMAAfcV47NgxFixYQEFBAVZWVqSnp3P58mUyMjKwsrIiICAAgICAAO68804AiouL2bdvH3l5efr+L168SHp6erXjOXz4ML/99tuNHqZaubi4cP78eRITE9m9ezdhYWE4OzvXWj4+Pp5Bgwbh4OCAg4MDbdu21a+mAO666y48PT0B6N+/P4sWLQJg3759DB48WG/7iSee4N133611P4MGDdKvNPr3709aWhpQcZtp7Nix2NjYABAREcEHH3zA1KlTCQwMZO/eveTn5zNgwABOnjzJ999/z969ewkNDa13LL755ht69uypX26PGjWKl156ST8fXbp0wc/Pr8a6np6eLF26lJkzZ2IymfTVW139BRg2bBj/+Mc/AOjZsycDBw7E2toaa2trXF1dycjIoFOnTg2eP/WN37XqOl+DBg2iXbt2er/feuutGttITEwkOjpaP8Y2bdrcsGN3c3MDYPTo0fq28PBwkpKSCA8Pr9KPhIQEDh8+rF9NXr58mSZNmtTY523btvHtt9/q79erV6/WWG7UqFG8+eabnD17loyMDCwsLPD19a1Wbt++fYwcOVJfNT/++OOkpKTU2GZdUlNTyczM1HOsUnp6Ol26dMHa2prRo0cDDcuVsLAwoOKqvUuXLmRlZdGhQ4fr7tdfddOCv3JSVZ7gyonUpEkT/R6YUoqgoCDWrFlTrf7d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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from diagram import diagram, adjust\n", - "\n", - "\n", - "width, height, x, y = [3.62, 1.01, 0.6, 0.76]\n", - "ax = diagram(width, height)\n", - "bbox = frame.draw(ax, x, y, dy=-0.25)\n", - "# adjust(x, y, bbox)" - ] - }, - { - "cell_type": "markdown", - "id": "6f40da93", - "metadata": {}, - "source": [ - "This kind of figure is called a **state diagram** because it shows what state each of the variables is in (think of it as the variable's state of mind).\n", - "We'll use state diagrams throughout the book to represent a model of how Python stores variables and their values." - ] - }, - { - "cell_type": "markdown", - "id": "ba252c85", - "metadata": {}, - "source": [ - "## Variable names\n", - "\n", - "Variable names can be as long as you like. They can contain both letters and numbers, but they can't begin with a number. \n", - "It is legal to use uppercase letters, but it is conventional to use only lower case for\n", - "variable names.\n", - "\n", - "The only punctuation that can appear in a variable name is the underscore character, `_`. It is often used in names with multiple words, such as `your_name` or `airspeed_of_unladen_swallow`.\n", - "\n", - "If you give a variable an illegal name, you get a syntax error.\n", - "The name `million!` is illegal because it contains punctuation." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "ac2620ef", - "metadata": { - "tags": [ - "raises-exception" - ] - }, - "outputs": [ - { - "ename": "SyntaxError", - "evalue": "invalid syntax (4061783710.py, line 1)", - "output_type": "error", - "traceback": [ - "\u001b[0;36m Cell \u001b[0;32mIn[12], line 1\u001b[0;36m\u001b[0m\n\u001b[0;31m million! = 1000000\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n" - ] - } - ], - "source": [ - "%%expect SyntaxError\n", - "\n", - "million! = 1000000" - ] - }, - { - "cell_type": "markdown", - "id": "a1cefe3e", - "metadata": {}, - "source": [ - "`76trombones` is illegal because it starts with a number." - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "1a8b8382", - "metadata": { - "tags": [ - "raises-exception" - ] - }, - "outputs": [ - { - "ename": "SyntaxError", - "evalue": "invalid decimal literal (3636686625.py, line 1)", - "output_type": "error", - "traceback": [ - "\u001b[0;36m Cell \u001b[0;32mIn[13], line 1\u001b[0;36m\u001b[0m\n\u001b[0;31m 76trombones = 'big parade'\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid decimal literal\n" - ] - } - ], - "source": [ - "%%expect SyntaxError\n", - "\n", - "76trombones = 'big parade'" - ] - }, - { - "cell_type": "markdown", - "id": "94aa7e60", - "metadata": {}, - "source": [ - "`class` is also illegal, but it might not be obvious why." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "b6938851", - "metadata": { - "tags": [ - "raises-exception" - ] - }, - "outputs": [ - { - "ename": "SyntaxError", - "evalue": "invalid syntax (3285659805.py, line 1)", - "output_type": "error", - "traceback": [ - "\u001b[0;36m Cell \u001b[0;32mIn[14], line 1\u001b[0;36m\u001b[0m\n\u001b[0;31m class = 'Self-Defence Against Fresh Fruit'\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n" - ] - } - ], - "source": [ - "%%expect SyntaxError\n", - "\n", - "class = 'Self-Defence Against Fresh Fruit'" - ] - }, - { - "cell_type": "markdown", - "id": "784cfb5c", - "metadata": {}, - "source": [ - "It turns out that `class` is a **keyword**, which is a special word used to specify the structure of a program.\n", - "Keywords can't be used as variable names.\n", - "\n", - "Here's a complete list of Python's keywords:" - ] - }, - { - "cell_type": "markdown", - "id": "127c07e8", - "metadata": {}, - "source": [ - "```\n", - "False await else import pass\n", - "None break except in raise\n", - "True class finally is return\n", - "and continue for lambda try\n", - "as def from nonlocal while\n", - "assert del global not with\n", - "async elif if or yield\n", - "```" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "4a8f4b3e", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "35" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from keyword import kwlist\n", - "\n", - "len(kwlist)" - ] - }, - { - "cell_type": "markdown", - "id": "6f14d301", - "metadata": {}, - "source": [ - "You don't have to memorize this list. In most development environments,\n", - "keywords are displayed in a different color; if you try to use one as a\n", - "variable name, you'll know." - ] - }, - { - "cell_type": "markdown", - "id": "c954a3b0", - "metadata": {}, - "source": [ - "## The import statement\n", - "\n", - "In order to use some Python features, you have to **import** them.\n", - "For example, the following statement imports the `math` module." - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "98c268e9", - "metadata": {}, - "outputs": [], - "source": [ - "import math" - ] - }, - { - "cell_type": "markdown", - "id": "ea4f75ec", - "metadata": {}, - "source": [ - "A **module** is a collection of variables and functions.\n", - "The math module provides a variable called `pi` that contains the value of the mathematical constant denoted $\\pi$.\n", - "We can display its value like this." - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "47bc17c9", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "3.141592653589793" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "math.pi" - ] - }, - { - "cell_type": "markdown", - "id": "c96106e4", - "metadata": {}, - "source": [ - "To use a variable in a module, you have to use the **dot operator** (`.`) between the name of the module and the name of the variable.\n", - "\n", - "The math module also contains functions.\n", - "For example, `sqrt` computes square roots." - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "fd1cec63", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "5.0" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "math.sqrt(25)" - ] - }, - { - "cell_type": "markdown", - "id": "185e94a3", - "metadata": {}, - "source": [ - "And `pow` raises one number to the power of a second number." - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "87316ddd", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "25.0" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "math.pow(5, 2)" - ] - }, - { - "cell_type": "markdown", - "id": "5df25a9a", - "metadata": {}, - "source": [ - "At this point we've seen two ways to raise a number to a power: we can use the `math.pow` function or the exponentiation operator, `**`.\n", - "Either one is fine, but the operator is used more often than the function." - ] - }, - { - "cell_type": "markdown", - "id": "6538f22b", - "metadata": {}, - "source": [ - "## Expressions and statements\n", - "\n", - "So far, we've seen a few kinds of expressions.\n", - "An expression can be a single value, like an integer, floating-point number, or string.\n", - "It can also be a collection of values and operators.\n", - "And it can include variable names and function calls.\n", - "Here's an expression that includes several of these elements." - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "7f0b92df", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "42" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "19 + n + round(math.pi) * 2" - ] - }, - { - "cell_type": "markdown", - "id": "000dd2ba", - "metadata": {}, - "source": [ - "We have also seen a few kind of statements.\n", - "A **statement** is a unit of code that has an effect, but no value.\n", - "For example, an assignment statement creates a variable and gives it a value, but the statement itself has no value." - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "b882c340", - "metadata": {}, - "outputs": [], - "source": [ - "n = 17" - ] - }, - { - "cell_type": "markdown", - "id": "cff0414b", - "metadata": {}, - "source": [ - "Similarly, an import statement has an effect -- it imports a module so we can use the variables and functions it contains -- but it has no visible effect." - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "299817d8", - "metadata": {}, - "outputs": [], - "source": [ - "import math" - ] - }, - { - "cell_type": "markdown", - "id": "2aeb1000", - "metadata": {}, - "source": [ - "Computing the value of an expression is called **evaluation**.\n", - "Running a statement is called **execution**." - ] - }, - { - "cell_type": "markdown", - "id": "f61601e4", - "metadata": {}, - "source": [ - "## The print function\n", - "\n", - "When you evaluate an expression, the result is displayed." - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "805977c6", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "18" - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "n + 1" - ] - }, - { - "cell_type": "markdown", - "id": "efacf0fa", - "metadata": {}, - "source": [ - "But if you evaluate more than one expression, only the value of the last one is displayed." - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "962e08ab", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "20" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "n + 2\n", - "n + 3" - ] - }, - { - "cell_type": "markdown", - "id": "cf2b991d", - "metadata": {}, - "source": [ - "To display more than one value, you can use the `print` function." - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "a797e44d", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "19\n", - "20\n" - ] - } - ], - "source": [ - "print(n+2)\n", - "print(n+3)" - ] - }, - { - "cell_type": "markdown", - "id": "29af1f89", - "metadata": {}, - "source": [ - "It also works with floating-point numbers and strings." - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "73428520", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "The value of pi is approximately\n", - "3.141592653589793\n" - ] - } - ], - "source": [ - "print('The value of pi is approximately')\n", - "print(math.pi)" - ] - }, - { - "cell_type": "markdown", - "id": "8b4d7f4a", - "metadata": {}, - "source": [ - "You can also use a sequence of expressions separated by commas." - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "9ad5bddd", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "The value of pi is approximately 3.141592653589793\n" - ] - } - ], - "source": [ - "print('The value of pi is approximately', math.pi)" - ] - }, - { - "cell_type": "markdown", - "id": "af447ec4", - "metadata": {}, - "source": [ - "Notice that the `print` function puts a space between the values." - ] - }, - { - "cell_type": "markdown", - "id": "7c73a2fa", - "metadata": {}, - "source": [ - "## Arguments\n", - "\n", - "When you call a function, the expression in parenthesis is called an **argument**.\n", - "Normally I would explain why, but in this case the technical meaning of a term has almost nothing to do with the common meaning of the word, so I won't even try.\n", - "\n", - "Some of the functions we've seen so far take only one argument, like `int`." - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "060c60cf", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "101" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "int('101')" - ] - }, - { - "cell_type": "markdown", - "id": "c4ad4f2c", - "metadata": {}, - "source": [ - "Some take two, like `math.pow`." - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "2875d9e0", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "25.0" - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "math.pow(5, 2)" - ] - }, - { - "cell_type": "markdown", - "id": "17293749", - "metadata": {}, - "source": [ - "Some can take additional arguments that are optional. \n", - "For example, `int` can take a second argument that specifies the base of the number." - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "id": "43b9cf38", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "5" - ] - }, - "execution_count": 30, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "int('101', 2)" - ] - }, - { - "cell_type": "markdown", - "id": "c95589a1", - "metadata": {}, - "source": [ - "The sequence of digits `101` in base 2 represents the number 5 in base 10.\n", - "\n", - "`round` also takes an optional second argument, which is the number of decimal places to round off to." - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "id": "e8a21d05", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "3.142" - ] - }, - "execution_count": 31, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "round(math.pi, 3)" - ] - }, - { - "cell_type": "markdown", - "id": "21e4a448", - "metadata": {}, - "source": [ - "Some functions can take any number of arguments, like `print`." - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "id": "724128f4", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Any number of arguments\n" - ] - } - ], - "source": [ - "print('Any', 'number', 'of', 'arguments')" - ] - }, - { - "cell_type": "markdown", - "id": "667cff14", - "metadata": {}, - "source": [ - "If you call a function and provide too many arguments, that's a `TypeError`." - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "id": "69295e52", - "metadata": { - "tags": [ - "raises-exception" - ] - }, - "outputs": [ - { - "ename": "TypeError", - "evalue": "float expected at most 1 argument, got 2", - "output_type": "error", - "traceback": [ - "\u001b[0;31mTypeError\u001b[0m\u001b[0;31m:\u001b[0m float expected at most 1 argument, got 2\n" - ] - } - ], - "source": [ - "%%expect TypeError\n", - "\n", - "float('123.0', 2)" - ] - }, - { - "cell_type": "markdown", - "id": "5103368e", - "metadata": {}, - "source": [ - "If you provide too few arguments, that's also a `TypeError`." - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "id": "edec7064", - "metadata": { - "tags": [ - "raises-exception" - ] - }, - "outputs": [ - { - "ename": "TypeError", - "evalue": "pow expected 2 arguments, got 1", - "output_type": "error", - "traceback": [ - "\u001b[0;31mTypeError\u001b[0m\u001b[0;31m:\u001b[0m pow expected 2 arguments, got 1\n" - ] - } - ], - "source": [ - "%%expect TypeError\n", - "\n", - "math.pow(2)" - ] - }, - { - "cell_type": "markdown", - "id": "5333c416", - "metadata": {}, - "source": [ - "And if you provide an argument with a type the function can't handle, that's a `TypeError`, too." - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "id": "f86b2896", - "metadata": { - "tags": [ - "raises-exception" - ] - }, - "outputs": [ - { - "ename": "TypeError", - "evalue": "must be real number, not str", - "output_type": "error", - "traceback": [ - "\u001b[0;31mTypeError\u001b[0m\u001b[0;31m:\u001b[0m must be real number, not str\n" - ] - } - ], - "source": [ - "%%expect TypeError\n", - "\n", - "math.sqrt('123')" - ] - }, - { - "cell_type": "markdown", - "id": "548828af", - "metadata": {}, - "source": [ - "This kind of checking can be annoying when you are getting started, but it helps you detect and correct errors." - ] - }, - { - "cell_type": "markdown", - "id": "be2b6a9b", - "metadata": {}, - "source": [ - "## Comments\n", - "\n", - "As programs get bigger and more complicated, they get more difficult to read.\n", - "Formal languages are dense, and it is often difficult to look at a piece of code and figure out what it is doing and why.\n", - "\n", - "For this reason, it is a good idea to add notes to your programs to explain in natural language what the program is doing. \n", - "These notes are called **comments**, and they start with the `#` symbol." - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "id": "607893a6", - "metadata": {}, - "outputs": [], - "source": [ - "# number of seconds in 42:42\n", - "seconds = 42 * 60 + 42" - ] - }, - { - "cell_type": "markdown", - "id": "519c83a9", - "metadata": {}, - "source": [ - "In this case, the comment appears on a line by itself. You can also put\n", - "comments at the end of a line:" - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "id": "615a11e7", - "metadata": {}, - "outputs": [], - "source": [ - "miles = 10 / 1.61 # 10 kilometers in miles" - ] - }, - { - "cell_type": "markdown", - "id": "87c8d10c", - "metadata": {}, - "source": [ - "Everything from the `#` to the end of the line is ignored---it has no\n", - "effect on the execution of the program.\n", - "\n", - "Comments are most useful when they document non-obvious features of the code.\n", - "It is reasonable to assume that the reader can figure out *what* the code does; it is more useful to explain *why*.\n", - "\n", - "This comment is redundant with the code and useless:" - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "id": "cc7fe2e6", - "metadata": {}, - "outputs": [], - "source": [ - "v = 8 # assign 8 to v" - ] - }, - { - "cell_type": "markdown", - "id": "eb83b14a", - "metadata": {}, - "source": [ - "This comment contains useful information that is not in the code:" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "id": "7c93a00d", - "metadata": {}, - "outputs": [], - "source": [ - "v = 8 # velocity in miles per hour " - ] - }, - { - "cell_type": "markdown", - "id": "6cd60d4f", - "metadata": {}, - "source": [ - "Good variable names can reduce the need for comments, but long names can\n", - "make complex expressions hard to read, so there is a tradeoff." - ] - }, - { - "cell_type": "markdown", - "id": "7d61e416", - "metadata": {}, - "source": [ - "## Debugging\n", - "\n", - "Three kinds of errors can occur in a program: syntax errors, runtime errors, and semantic errors.\n", - "It is useful to distinguish between them in order to track them down more quickly.\n", - "\n", - "* **Syntax error**: \"Syntax\" refers to the structure of a program and the rules about that structure. If there is a syntax error anywhere in your program, Python does not run the program. It displays an error message immediately.\n", - "\n", - "* **Runtime error**: If there are no syntax errors in your program, it can start running. But if something goes wrong, Python displays an error message and stops. This type of error is called a runtime error. It is also called an **exception** because it indicates that something exceptional has happened.\n", - "\n", - "* **Semantic error**: The third type of error is \"semantic\", which means related to meaning. If there is a semantic error in your program, it runs without generating error messages, but it does not do what you intended. Identifying semantic errors can be tricky because it requires you to work backward by looking at the output of the program and trying to figure out what it is doing." - ] - }, - { - "cell_type": "markdown", - "id": "6cd52721", - "metadata": {}, - "source": [ - "As we've seen, an illegal variable name is a syntax error." - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "id": "86f07f6e", - "metadata": { - "tags": [ - "raises-exception" - ] - }, - "outputs": [ - { - "ename": "SyntaxError", - "evalue": "invalid syntax (4061783710.py, line 1)", - "output_type": "error", - "traceback": [ - "\u001b[0;36m Cell \u001b[0;32mIn[40], line 1\u001b[0;36m\u001b[0m\n\u001b[0;31m million! = 1000000\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n" - ] - } - ], - "source": [ - "%%expect SyntaxError\n", - "\n", - "million! = 1000000" - ] - }, - { - "cell_type": "markdown", - "id": "b8971d33", - "metadata": {}, - "source": [ - "If you use an operator with a type it doesn't support, that's a runtime error. " - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "id": "682395ea", - "metadata": { - "tags": [ - "raises-exception" - ] - }, - "outputs": [ - { - "ename": "TypeError", - "evalue": "unsupported operand type(s) for /: 'str' and 'int'", - "output_type": "error", - "traceback": [ - "\u001b[0;31mTypeError\u001b[0m\u001b[0;31m:\u001b[0m unsupported operand type(s) for /: 'str' and 'int'\n" - ] - } - ], - "source": [ - "%%expect TypeError\n", - "\n", - "'126' / 3" - ] - }, - { - "cell_type": "markdown", - "id": "e51fa6e2", - "metadata": {}, - "source": [ - "Finally, here's an example of a semantic error.\n", - "Suppose we want to compute the average of `1` and `3`, but we forget about the order of operations and write this:" - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "id": "2ff25bda", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "2.5" - ] - }, - "execution_count": 42, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "1 + 3 / 2" - ] - }, - { - "cell_type": "markdown", - "id": "0828afc0", - "metadata": {}, - "source": [ - "When this expression is evaluated, it does not produce an error message, so there is no syntax error or runtime error.\n", - "But the result is not the average of `1` and `3`, so the program is not correct.\n", - "This is a semantic error because the program runs but it doesn't do what's intended." - ] - }, - { - "cell_type": "markdown", - "id": "07396f3d", - "metadata": {}, - "source": [ - "## Glossary\n", - "\n", - "**variable:**\n", - "A name that refers to a value.\n", - "\n", - "**assignment statement:**\n", - "A statement that assigns a value to a variable.\n", - "\n", - "**state diagram:**\n", - "A graphical representation of a set of variables and the values they refer to.\n", - "\n", - "**keyword:**\n", - "A special word used to specify the structure of a program.\n", - "\n", - "**import statement:**\n", - "A statement that reads a module file so we can use the variables and functions it contains.\n", - "\n", - "**module:**\n", - "A file that contains Python code, including function definitions and sometimes other statements.\n", - "\n", - "**dot operator:**\n", - "The operator, `.`, used to access a function in another module by specifying the module name followed by a dot and the function name.\n", - "\n", - "**evaluate:**\n", - "Perform the operations in an expression in order to compute a value.\n", - "\n", - "**statement:**\n", - "One or more lines of code that represent a command or action.\n", - "\n", - "**execute:**\n", - "Run a statement and do what it says.\n", - "\n", - "**argument:**\n", - "A value provided to a function when the function is called.\n", - "\n", - "**comment:**\n", - "Text included in a program that provides information about the program but has no effect on its execution.\n", - "\n", - "**runtime error:**\n", - "An error that causes a program to display an error message and exit.\n", - "\n", - "**exception:**\n", - "An error that is detected while the program is running.\n", - "\n", - "**semantic error:**\n", - "An error that causes a program to do the wrong thing, but not to display an error message." - ] - }, - { - "cell_type": "markdown", - "id": "70ee273d", - "metadata": {}, - "source": [ - "## Exercises" - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "id": "c9e6cab4", - "metadata": { - "tags": [ - "remove-print", - "keep" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Exception reporting mode: Verbose\n" - ] - } - ], - "source": [ - "# This cell tells Jupyter to provide detailed debugging information\n", - "# when a runtime error occurs. Run it before working on the exercises.\n", - "\n", - "%xmode Verbose" - ] - }, - { - "cell_type": "markdown", - "id": "7256a9b2", - "metadata": {}, - "source": [ - "### Ask a virtual assistant\n", - "\n", - "Again, I encourage you to use a virtual assistant to learn more about any of the topics in this chapter.\n", - "\n", - "If you are curious about any of keywords I listed, you could ask \"Why is class a keyword?\" or \"Why can't variable names be keywords?\"\n", - "\n", - "You might have noticed that `int`, `float`, and `str` are not Python keywords.\n", - "They are variables that represent types, and they can be used as functions.\n", - "So it is *legal* to have a variable or function with one of those names, but it is strongly discouraged. Ask an assistant \"Why is it bad to use int, float, and str as variable names?\"\n", - "\n", - "Also ask, \"What are the built-in functions in Python?\"\n", - "If you are curious about any of them, ask for more information.\n", - "\n", - "In this chapter we imported the `math` module and used some of the variable and functions it provides. Ask an assistant, \"What variables and functions are in the math module?\" and \"Other than math, what modules are considered core Python?\"" - ] - }, - { - "cell_type": "markdown", - "id": "f92afde0", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "Repeating my advice from the previous chapter, whenever you learn a new feature, you should make errors on purpose to see what goes wrong.\n", - "\n", - "- We've seen that `n = 17` is legal. What about `17 = n`?\n", - "\n", - "- How about `x = y = 1`?\n", - "\n", - "- In some languages every statement ends with a semi-colon (`;`). What\n", - " happens if you put a semi-colon at the end of a Python statement?\n", - "\n", - "- What if you put a period at the end of a statement?\n", - "\n", - "- What happens if you spell the name of a module wrong and try to import `maath`?" - ] - }, - { - "cell_type": "markdown", - "id": "9d562609", - "metadata": {}, - "source": [ - "### Exercise\n", - "Practice using the Python interpreter as a calculator:\n", - "\n", - "**Part 1.** The volume of a sphere with radius $r$ is $\\frac{4}{3} \\pi r^3$.\n", - "What is the volume of a sphere with radius 5? Start with a variable named `radius` and then assign the result to a variable named `volume`. Display the result. Add comments to indicate that `radius` is in centimeters and `volume` in cubic centimeters." - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "id": "18de7d96", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "523.5987755982989" - ] - }, - "execution_count": 44, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Solution\n", - "\n", - "radius = 5 # in cm\n", - "volume = 4 / 3 * math.pi * radius**3 # in cubic cm\n", - "volume" - ] - }, - { - "cell_type": "markdown", - "id": "6449b12b", - "metadata": {}, - "source": [ - "**Part 2.** A rule of trigonometry says that for any value of $x$, $(\\cos x)^2 + (\\sin x)^2 = 1$. Let's see if it's true for a specific value of $x$ like 42.\n", - "\n", - "Create a variable named `x` with this value.\n", - "Then use `math.cos` and `math.sin` to compute the sine and cosine of $x$, and the sum of their squared.\n", - "\n", - "The result should be close to 1. It might not be exactly 1 because floating-point arithmetic is not exact---it is only approximately correct." - ] - }, - { - "cell_type": "code", - "execution_count": 52, - "id": "de812cff", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "1.0" - ] - }, - "execution_count": 52, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Solution\n", - "\n", - "x = 42\n", - "math.cos(x)**2 + math.sin(x)**2" - ] - }, - { - "cell_type": "markdown", - "id": "4986801f", - "metadata": {}, - "source": [ - "**Part 3.** In addition to `pi`, the other variable defined in the `math` module is `e`, which represents the base of the natural logarithm, written in math notation as $e$. If you are not familiar with this value, ask a virtual assistant \"What is `math.e`?\" Now let's compute $e^2$ three ways:\n", - "\n", - "* Use `math.e` and the exponentiation operator (`**`).\n", - "\n", - "* Use `math.pow` to raise `math.e` to the power `2`.\n", - "\n", - "* Use `math.exp`, which takes as an argument a value, $x$, and computes $e^x$.\n", - "\n", - "You might notice that the last result is slightly different from the other two.\n", - "See if you can find out which is correct." - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "id": "b4ada618", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "7.3890560989306495" - ] - }, - "execution_count": 46, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Solution\n", - "\n", - "math.e ** 2" - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "id": "4424940f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "7.3890560989306495" - ] - }, - "execution_count": 47, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Solution\n", - "\n", - "math.pow(math.e, 2)" - ] - }, - { - "cell_type": "code", - "execution_count": 48, - "id": "50e8393a", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "7.38905609893065" - ] - }, - "execution_count": 48, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Solution\n", - "\n", - "math.exp(2)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "91e5a869", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "id": "a7f4edf8", - "metadata": { - "tags": [] - }, - "source": [ - "[Think Python: 3rd Edition](https://allendowney.github.io/ThinkPython/index.html)\n", - "\n", - "Copyright 2024 [Allen B. Downey](https://allendowney.com)\n", - "\n", - "Code license: [MIT License](https://mit-license.org/)\n", - "\n", - "Text license: [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-nc-sa/4.0/)" - ] - } - ], - "metadata": { - "celltoolbar": "Tags", - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.11" - }, - "vscode": { - "interpreter": { - "hash": "357b915890fbc73e00b3ee3cc7035b34e6189554c2854644fe780ff20c2fdfc0" - } - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/soln/chap03.ipynb b/soln/chap03.ipynb deleted file mode 100644 index 9ded6fa..0000000 --- a/soln/chap03.ipynb +++ /dev/null @@ -1,1893 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "1331faa1", - "metadata": {}, - "source": [ - "You can order print and ebook versions of *Think Python 3e* from\n", - "[Bookshop.org](https://bookshop.org/a/98697/9781098155438) and\n", - "[Amazon](https://www.amazon.com/_/dp/1098155432?smid=ATVPDKIKX0DER&_encoding=UTF8&tag=oreilly20-20&_encoding=UTF8&tag=greenteapre01-20&linkCode=ur2&linkId=e2a529f94920295d27ec8a06e757dc7c&camp=1789&creative=9325)." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "103cbe3c", - "metadata": { - "tags": [ - "remove-cell", - "keep" - ] - }, - "outputs": [], - "source": [ - "from os.path import basename, exists\n", - "\n", - "def download(url):\n", - " filename = basename(url)\n", - " if not exists(filename):\n", - " from urllib.request import urlretrieve\n", - "\n", - " local, _ = urlretrieve(url, filename)\n", - " print(\"Downloaded \" + str(local))\n", - " return filename\n", - "\n", - "download('https://github.com/AllenDowney/ThinkPython/raw/v3/thinkpython.py');\n", - "download('https://github.com/AllenDowney/ThinkPython/raw/v3/diagram.py');\n", - "\n", - "import thinkpython" - ] - }, - { - "cell_type": "markdown", - "id": "6bd858a8", - "metadata": {}, - "source": [ - "# Functions\n", - "\n", - "In the previous chapter we used several functions provided by Python, like `int` and `float`, and a few provided by the `math` module, like `sqrt` and `pow`.\n", - "In this chapter, you will learn how to create your own functions and run them.\n", - "And we'll see how one function can call another.\n", - "As examples, we'll display lyrics from Monty Python songs.\n", - "These silly examples demonstrate an important feature -- the ability to write your own functions is the foundation of programming.\n", - "\n", - "This chapter also introduces a new statement, the `for` loop, which is used to repeat a computation." - ] - }, - { - "cell_type": "markdown", - "id": "b4ea99c5", - "metadata": {}, - "source": [ - "## Defining new functions\n", - "\n", - "A **function definition** specifies the name of a new function and the sequence of statements that run when the function is called. Here's an example:" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "d28f5c1a", - "metadata": {}, - "outputs": [], - "source": [ - "def print_lyrics():\n", - " print(\"I'm a lumberjack, and I'm okay.\")\n", - " print(\"I sleep all night and I work all day.\")" - ] - }, - { - "cell_type": "markdown", - "id": "0174fc41", - "metadata": {}, - "source": [ - "`def` is a keyword that indicates that this is a function definition.\n", - "The name of the function is `print_lyrics`.\n", - "Anything that's a legal variable name is also a legal function name.\n", - "\n", - "The empty parentheses after the name indicate that this function doesn't take any arguments.\n", - "\n", - "The first line of the function definition is called the **header** -- the rest is called the **body**.\n", - "The header has to end with a colon and the body has to be indented. By convention, indentation is always four spaces. \n", - "The body of this function is two print statements; in general, the body of a function can contain any number of statements of any kind.\n", - "\n", - "Defining a function creates a **function object**, which we can display like this." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "2850a402", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "print_lyrics" - ] - }, - { - "cell_type": "markdown", - "id": "12bd0879", - "metadata": {}, - "source": [ - "The output indicates that `print_lyrics` is a function that takes no arguments.\n", - "`__main__` is the name of the module that contains `print_lyrics`.\n", - "\n", - "Now that we've defined a function, we can call it the same way we call built-in functions." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "9a048657", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "I'm a lumberjack, and I'm okay.\n", - "I sleep all night and I work all day.\n" - ] - } - ], - "source": [ - "print_lyrics()" - ] - }, - { - "cell_type": "markdown", - "id": "8f0fc45d", - "metadata": {}, - "source": [ - "When the function runs, it executes the statements in the body, which display the first two lines of \"The Lumberjack Song\"." - ] - }, - { - "cell_type": "markdown", - "id": "6d35193e", - "metadata": {}, - "source": [ - "## Parameters\n", - "\n", - "Some of the functions we have seen require arguments; for example, when you call `abs` you pass a number as an argument.\n", - "Some functions take more than one argument; for example, `math.pow` takes two, the base and the exponent.\n", - "\n", - "Here is a definition for a function that takes an argument." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "e5d00488", - "metadata": {}, - "outputs": [], - "source": [ - "def print_twice(string):\n", - " print(string)\n", - " print(string)" - ] - }, - { - "cell_type": "markdown", - "id": "1716e3dc", - "metadata": {}, - "source": [ - "The variable name in parentheses is a **parameter**.\n", - "When the function is called, the value of the argument is assigned to the parameter.\n", - "For example, we can call `print_twice` like this." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "a3ad5f46", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Dennis Moore, \n", - "Dennis Moore, \n" - ] - } - ], - "source": [ - "print_twice('Dennis Moore, ')" - ] - }, - { - "cell_type": "markdown", - "id": "f02be6d2", - "metadata": {}, - "source": [ - "Running this function has the same effect as assigning the argument to the parameter and then executing the body of the function, like this." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "042dfec1", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Dennis Moore, \n", - "Dennis Moore, \n" - ] - } - ], - "source": [ - "string = 'Dennis Moore, '\n", - "print(string)\n", - "print(string)" - ] - }, - { - "cell_type": "markdown", - "id": "ea8b8b6e", - "metadata": {}, - "source": [ - "You can also use a variable as an argument." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "8f078ad0", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Dennis Moore, \n", - "Dennis Moore, \n" - ] - } - ], - "source": [ - "line = 'Dennis Moore, '\n", - "print_twice(line)" - ] - }, - { - "cell_type": "markdown", - "id": "5c1884ad", - "metadata": {}, - "source": [ - "In this example, the value of `line` gets assigned to the parameter `string`." - ] - }, - { - "cell_type": "markdown", - "id": "a3e5a790", - "metadata": {}, - "source": [ - "## Calling functions\n", - "\n", - "Once you have defined a function, you can use it inside another function.\n", - "To demonstrate, we'll write functions that print the lyrics of \"The Spam Song\" ().\n", - "\n", - "> Spam, Spam, Spam, Spam, \n", - "> Spam, Spam, Spam, Spam, \n", - "> Spam, Spam, \n", - "> (Lovely Spam, Wonderful Spam!) \n", - "> Spam, Spam,\n", - "\n", - "We'll start with the following function, which takes two parameters.\n" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "e86bb32c", - "metadata": {}, - "outputs": [], - "source": [ - "def repeat(word, n):\n", - " print(word * n)" - ] - }, - { - "cell_type": "markdown", - "id": "bdd4daa4", - "metadata": {}, - "source": [ - "We can use this function to print the first line of the song, like this." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "ec117999", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Spam, Spam, Spam, Spam, \n" - ] - } - ], - "source": [ - "spam = 'Spam, '\n", - "repeat(spam, 4)" - ] - }, - { - "cell_type": "markdown", - "id": "c6f81e09", - "metadata": {}, - "source": [ - "To display the first two lines, we can define a new function that uses `repeat`." - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "3731ffd8", - "metadata": {}, - "outputs": [], - "source": [ - "def first_two_lines():\n", - " repeat(spam, 4)\n", - " repeat(spam, 4)" - ] - }, - { - "cell_type": "markdown", - "id": "8058ffe4", - "metadata": {}, - "source": [ - "And then call it like this." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "6792e63b", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Spam, Spam, Spam, Spam, \n", - "Spam, Spam, Spam, Spam, \n" - ] - } - ], - "source": [ - "first_two_lines()" - ] - }, - { - "cell_type": "markdown", - "id": "07ca432a", - "metadata": {}, - "source": [ - "To display the last three lines, we can define another function, which also uses `repeat`." - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "2dcb020a", - "metadata": {}, - "outputs": [], - "source": [ - "def last_three_lines():\n", - " repeat(spam, 2)\n", - " print('(Lovely Spam, Wonderful Spam!)')\n", - " repeat(spam, 2)" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "9ff8c60e", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Spam, Spam, \n", - "(Lovely Spam, Wonderful Spam!)\n", - "Spam, Spam, \n" - ] - } - ], - "source": [ - "last_three_lines()" - ] - }, - { - "cell_type": "markdown", - "id": "d6456a19", - "metadata": {}, - "source": [ - "Finally, we can bring it all together with one function that prints the whole verse." - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "78bf3a7b", - "metadata": {}, - "outputs": [], - "source": [ - "def print_verse():\n", - " first_two_lines()\n", - " last_three_lines()" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "ba5da431", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Spam, Spam, Spam, Spam, \n", - "Spam, Spam, Spam, Spam, \n", - "Spam, Spam, \n", - "(Lovely Spam, Wonderful Spam!)\n", - "Spam, Spam, \n" - ] - } - ], - "source": [ - "print_verse()" - ] - }, - { - "cell_type": "markdown", - "id": "d088fe68", - "metadata": {}, - "source": [ - "When we run `print_verse`, it calls `first_two_lines`, which calls `repeat`, which calls `print`.\n", - "That's a lot of functions.\n", - "\n", - "Of course, we could have done the same thing with fewer functions, but the point of this example is to show how functions can work together." - ] - }, - { - "cell_type": "markdown", - "id": "c3b16e3f", - "metadata": {}, - "source": [ - "## Repetition\n", - "\n", - "If we want to display more than one verse, we can use a `for` statement.\n", - "Here's a simple example." - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "29b7eff3", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "1\n" - ] - } - ], - "source": [ - "for i in range(2):\n", - " print(i)" - ] - }, - { - "cell_type": "markdown", - "id": "bf320549", - "metadata": {}, - "source": [ - "The first line is a header that ends with a colon.\n", - "The second line is the body, which has to be indented.\n", - "\n", - "The header starts with the keyword `for`, a new variable named `i`, and another keyword, `in`. \n", - "It uses the `range` function to create a sequence of two values, which are `0` and `1`.\n", - "In Python, when we start counting, we usually start from `0`.\n", - "\n", - "When the `for` statement runs, it assigns the first value from `range` to `i` and then runs the `print` function in the body, which displays `0`.\n", - "\n", - "When it gets to the end of the body, it loops back around to the header, which is why this statement is called a **loop**.\n", - "The second time through the loop, it assigns the next value from `range` to `i`, and displays it.\n", - "Then, because that's the last value from `range`, the loop ends.\n", - "\n", - "Here's how we can use a `for` loop to print two verses of the song." - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "038ad592", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Verse 0\n", - "Spam, Spam, Spam, Spam, \n", - "Spam, Spam, Spam, Spam, \n", - "Spam, Spam, \n", - "(Lovely Spam, Wonderful Spam!)\n", - "Spam, Spam, \n", - "\n", - "Verse 1\n", - "Spam, Spam, Spam, Spam, \n", - "Spam, Spam, Spam, Spam, \n", - "Spam, Spam, \n", - "(Lovely Spam, Wonderful Spam!)\n", - "Spam, Spam, \n", - "\n" - ] - } - ], - "source": [ - "for i in range(2):\n", - " print(\"Verse\", i)\n", - " print_verse()\n", - " print()" - ] - }, - { - "cell_type": "markdown", - "id": "88a46733", - "metadata": {}, - "source": [ - "You can put a `for` loop inside a function.\n", - "For example, `print_n_verses` takes a parameter named `n`, which has to be an integer, and displays the given number of verses. " - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "8887637a", - "metadata": {}, - "outputs": [], - "source": [ - "def print_n_verses(n):\n", - " for i in range(n):\n", - " print_verse()\n", - " print()" - ] - }, - { - "cell_type": "markdown", - "id": "ad8060fe", - "metadata": {}, - "source": [ - "In this example, we don't use `i` in the body of the loop, but there has to be a variable name in the header anyway." - ] - }, - { - "cell_type": "markdown", - "id": "b320ec90", - "metadata": {}, - "source": [ - "## Variables and parameters are local\n", - "\n", - "When you create a variable inside a function, it is **local**, which\n", - "means that it only exists inside the function.\n", - "For example, the following function takes two arguments, concatenates them, and prints the result twice." - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "0db8408e", - "metadata": {}, - "outputs": [], - "source": [ - "def cat_twice(part1, part2):\n", - " cat = part1 + part2\n", - " print_twice(cat)" - ] - }, - { - "cell_type": "markdown", - "id": "3a35a6d0", - "metadata": {}, - "source": [ - "Here's an example that uses it:" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "1c556e48", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Always look on the bright side of life.\n", - "Always look on the bright side of life.\n" - ] - } - ], - "source": [ - "line1 = 'Always look on the '\n", - "line2 = 'bright side of life.'\n", - "cat_twice(line1, line2)" - ] - }, - { - "cell_type": "markdown", - "id": "4ab4e008", - "metadata": {}, - "source": [ - "When `cat_twice` runs, it creates a local variable named `cat`, which is destroyed when the function ends.\n", - "If we try to display it, we get a `NameError`:" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "73f03eea", - "metadata": { - "tags": [ - "raises-exception" - ] - }, - "outputs": [ - { - "ename": "NameError", - "evalue": "name 'cat' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[0;31mNameError\u001b[0m\u001b[0;31m:\u001b[0m name 'cat' is not defined\n" - ] - } - ], - "source": [ - "%%expect NameError\n", - "\n", - "print(cat)" - ] - }, - { - "cell_type": "markdown", - "id": "3ae36c29", - "metadata": {}, - "source": [ - "Outside of the function, `cat` is not defined. \n", - "\n", - "Parameters are also local.\n", - "For example, outside `cat_twice`, there is no such thing as `part1` or `part2`." - ] - }, - { - "cell_type": "markdown", - "id": "eabac8a6", - "metadata": {}, - "source": [ - "## Stack diagrams\n", - "\n", - "To keep track of which variables can be used where, it is sometimes useful to draw a **stack diagram**. \n", - "Like state diagrams, stack diagrams show the value of each variable, but they also show the function each variable belongs to.\n", - "\n", - "Each function is represented by a **frame**.\n", - "A frame is a box with the name of a function on the outside and the parameters and local variables of the function on the inside.\n", - "\n", - "Here's the stack diagram for the previous example." - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "83df4e32", - "metadata": { - "tags": [ - "remove-cell", - "keep" - ] - }, - "outputs": [], - "source": [ - "from diagram import make_frame, Stack\n", - "\n", - "d1 = dict(line1=line1, line2=line2)\n", - "frame1 = make_frame(d1, name='__main__', dy=-0.3, loc='left')\n", - "\n", - "d2 = dict(part1=line1, part2=line2, cat=line1+line2)\n", - "frame2 = make_frame(d2, name='cat_twice', dy=-0.3, \n", - " offsetx=0.03, loc='left')\n", - "\n", - "d3 = dict(string=line1+line2)\n", - "frame3 = make_frame(d3, name='print_twice', \n", - " offsetx=0.04, offsety=-0.3, loc='left')\n", - "\n", - "d4 = {\"?\": line1+line2}\n", - "frame4 = make_frame(d4, name='print', \n", - " offsetx=-0.22, offsety=0, loc='left')\n", - "\n", - "stack = Stack([frame1, frame2, frame3, frame4], dy=-0.8)" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "bcd5e1df", - "metadata": { - "tags": [ - "remove-input", - "keep" - ] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from diagram import diagram, adjust\n", - "\n", - "\n", - "width, height, x, y = [3.77, 2.9, 1.1, 2.65]\n", - "ax = diagram(width, height)\n", - "bbox = stack.draw(ax, x, y)\n", - "# adjust(x, y, bbox)\n", - "\n", - "import matplotlib.pyplot as plt\n", - "plt.savefig('chap03_stack_diagram.png', dpi=300)" - ] - }, - { - "cell_type": "markdown", - "id": "854fee12", - "metadata": {}, - "source": [ - "The frames are arranged in a stack that indicates which function called\n", - "which, and so on. Reading from the bottom, `print` was called by `print_twice`, which was called by `cat_twice`, which was called by `__main__` -- which is a special name for the topmost frame.\n", - "When you create a variable outside of any function, it belongs to `__main__`.\n", - "\n", - "In the frame for `print`, the question mark indicates that we don't know the name of the parameter.\n", - "If you are curious, ask a virtual assistant, \"What are the parameters of the Python print function?\"" - ] - }, - { - "cell_type": "markdown", - "id": "5690cfc0", - "metadata": {}, - "source": [ - "## Tracebacks\n", - "\n", - "When a runtime error occurs in a function, Python displays the name of the function that was running, the name of the function that called it, and so on, up the stack.\n", - "To see an example, I'll define a version of `print_twice` that contains an error -- it tries to print `cat`, which is a local variable in another function." - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "886519cf", - "metadata": {}, - "outputs": [], - "source": [ - "def print_twice(string):\n", - " print(cat) # NameError\n", - " print(cat)" - ] - }, - { - "cell_type": "markdown", - "id": "d7c0713b", - "metadata": {}, - "source": [ - "Now here's what happens when we run `cat_twice`." - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "1fe8ee82", - "metadata": { - "tags": [ - "remove-print", - "keep" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Exception reporting mode: Verbose\n" - ] - } - ], - "source": [ - "# This cell tells Jupyter to provide detailed debugging information\n", - "# when a runtime error occurs, including a traceback.\n", - "\n", - "%xmode Verbose" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "d9082f88", - "metadata": { - "tags": [ - "raises-exception" - ] - }, - "outputs": [ - { - "ename": "NameError", - "evalue": "name 'cat' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[27], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mcat_twice\u001b[49m\u001b[43m(\u001b[49m\u001b[43mline1\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mline2\u001b[49m\u001b[43m)\u001b[49m\n line1 \u001b[0;34m= 'Always look on the '\u001b[0m\u001b[0;34m\n \u001b[0mline2 \u001b[0;34m= 'bright side of life.'\u001b[0m\n", - "Cell \u001b[0;32mIn[20], line 3\u001b[0m, in \u001b[0;36mcat_twice\u001b[0;34m(part1='Always look on the ', part2='bright side of life.')\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mcat_twice\u001b[39m(part1, part2):\n\u001b[1;32m 2\u001b[0m cat \u001b[38;5;241m=\u001b[39m part1 \u001b[38;5;241m+\u001b[39m part2\n\u001b[0;32m----> 3\u001b[0m \u001b[43mprint_twice\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcat\u001b[49m\u001b[43m)\u001b[49m\n cat \u001b[0;34m= 'Always look on the bright side of life.'\u001b[0m\n", - "Cell \u001b[0;32mIn[25], line 2\u001b[0m, in \u001b[0;36mprint_twice\u001b[0;34m(string='Always look on the bright side of life.')\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mprint_twice\u001b[39m(string):\n\u001b[0;32m----> 2\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[43mcat\u001b[49m) \u001b[38;5;66;03m# NameError\u001b[39;00m\n\u001b[1;32m 3\u001b[0m \u001b[38;5;28mprint\u001b[39m(cat)\n", - "\u001b[0;31mNameError\u001b[0m: name 'cat' is not defined" - ] - } - ], - "source": [ - "%%expect NameError\n", - "\n", - "cat_twice(line1, line2)" - ] - }, - { - "cell_type": "markdown", - "id": "2f4defcf", - "metadata": {}, - "source": [ - "The error message includes a **traceback**, which shows the function that was running when the error occurred, the function that called it, and so on.\n", - "In this example, it shows that `cat_twice` called `print_twice`, and the error occurred in a `print_twice`.\n", - "\n", - "The order of the functions in the traceback is the same as the order of the frames in the stack diagram.\n", - "The function that was running is at the bottom." - ] - }, - { - "cell_type": "markdown", - "id": "374b4696", - "metadata": {}, - "source": [ - "## Why functions?\n", - "\n", - "It may not be clear yet why it is worth the trouble to divide a program into\n", - "functions.\n", - "There are several reasons:\n", - "\n", - "- Creating a new function gives you an opportunity to name a group of\n", - " statements, which makes your program easier to read and debug.\n", - "\n", - "- Functions can make a program smaller by eliminating repetitive code.\n", - " Later, if you make a change, you only have to make it in one place.\n", - "\n", - "- Dividing a long program into functions allows you to debug the parts\n", - " one at a time and then assemble them into a working whole.\n", - "\n", - "- Well-designed functions are often useful for many programs. Once you\n", - " write and debug one, you can reuse it." - ] - }, - { - "cell_type": "markdown", - "id": "c6dd486e", - "metadata": {}, - "source": [ - "## Debugging\n", - "\n", - "Debugging can be frustrating, but it is also challenging, interesting, and sometimes even fun.\n", - "And it is one of the most important skills you can learn.\n", - "\n", - "In some ways debugging is like detective work.\n", - "You are given clues and you have to infer the events that led to the\n", - "results you see.\n", - "\n", - "Debugging is also like experimental science.\n", - "Once you have an idea about what is going wrong, you modify your program and try again.\n", - "If your hypothesis was correct, you can predict the result of the modification, and you take a step closer to a working program.\n", - "If your hypothesis was wrong, you have to come up with a new one.\n", - "\n", - "For some people, programming and debugging are the same thing; that is, programming is the process of gradually debugging a program until it does what you want.\n", - "The idea is that you should start with a working program and make small modifications, debugging them as you go.\n", - "\n", - "If you find yourself spending a lot of time debugging, that is often a sign that you are writing too much code before you start tests.\n", - "If you take smaller steps, you might find that you can move faster." - ] - }, - { - "cell_type": "markdown", - "id": "d4e95e63", - "metadata": {}, - "source": [ - "## Glossary\n", - "\n", - "**function definition:**\n", - "A statement that creates a function.\n", - "\n", - "**header:**\n", - " The first line of a function definition.\n", - "\n", - "**body:**\n", - " The sequence of statements inside a function definition.\n", - "\n", - "**function object:**\n", - "A value created by a function definition.\n", - "The name of the function is a variable that refers to a function object.\n", - "\n", - "**parameter:**\n", - " A name used inside a function to refer to the value passed as an argument.\n", - "\n", - "**loop:**\n", - " A statement that runs one or more statements, often repeatedly.\n", - "\n", - "**local variable:**\n", - "A variable defined inside a function, and which can only be accessed inside the function.\n", - "\n", - "**stack diagram:**\n", - "A graphical representation of a stack of functions, their variables, and the values they refer to.\n", - "\n", - "**frame:**\n", - " A box in a stack diagram that represents a function call.\n", - " It contains the local variables and parameters of the function.\n", - "\n", - "**traceback:**\n", - " A list of the functions that are executing, printed when an exception occurs." - ] - }, - { - "cell_type": "markdown", - "id": "eca485f2", - "metadata": {}, - "source": [ - "## Exercises" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "3f77b428", - "metadata": { - "tags": [ - "remove-print", - "keep" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Exception reporting mode: Verbose\n" - ] - } - ], - "source": [ - "# This cell tells Jupyter to provide detailed debugging information\n", - "# when a runtime error occurs. Run it before working on the exercises.\n", - "\n", - "%xmode Verbose" - ] - }, - { - "cell_type": "markdown", - "id": "82951027", - "metadata": {}, - "source": [ - "### Ask a virtual assistant\n", - "\n", - "The statements in a function or a `for` loop are indented by four spaces, by convention.\n", - "But not everyone agrees with that convention.\n", - "If you are curious about the history of this great debate, ask a virtual assistant to \"tell me about spaces and tabs in Python\".\n", - "\n", - "Virtual assistant are pretty good at writing small functions.\n", - "\n", - "1. Ask your favorite VA to \"Write a function called repeat that takes a string and an integer and prints the string the given number of times.\" \n", - "\n", - "2. If the result uses a `for` loop, you could ask, \"Can you do it without a for loop?\"\n", - "\n", - "3. Pick any other function in this chapter and ask a VA to write it. The challenge is to describe the function precisely enough to get what you want. Use the vocabulary you have learned so far in this book.\n", - "\n", - "Virtual assistants are also pretty good at debugging functions.\n", - "\n", - "1. Ask a VA what's wrong with this version of `print_twice`.\n", - "\n", - " ```\n", - " def print_twice(string):\n", - " print(cat)\n", - " print(cat)\n", - " ```\n", - " \n", - "And if you get stuck on any of the exercises below, consider asking a VA for help." - ] - }, - { - "cell_type": "markdown", - "id": "b7157b09", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "Write a function named `print_right` that takes a string named `text` as a parameter and prints the string with enough leading spaces that the last letter of the string is in the 40th column of the display." - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "a6004271", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def print_right(text):\n", - " \"\"\"Print the text so the last letter is in column 70. \n", - " \n", - " text: string\n", - " \"\"\"\n", - " columns = 40\n", - " space = ' '\n", - " num_spaces = columns - len(text)\n", - " print(space * num_spaces + text)" - ] - }, - { - "cell_type": "markdown", - "id": "428fbee5", - "metadata": {}, - "source": [ - "Hint: Use the `len` function, the string concatenation operator (`+`) and the string repetition operator (`*`).\n", - "\n", - "Here's an example that shows how it should work." - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "id": "f142ce6a", - "metadata": { - "tags": [ - "keep" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " Monty\n", - " Python's\n", - " Flying Circus\n" - ] - } - ], - "source": [ - "print_right(\"Monty\")\n", - "print_right(\"Python's\")\n", - "print_right(\"Flying Circus\")" - ] - }, - { - "cell_type": "markdown", - "id": "b47467fa", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "Write a function called `triangle` that takes a string and an integer and draws a pyramid with the given height, made up using copies of the string. Here's an example of a pyramid with `5` levels, using the string `'L'`." - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "id": "7aa95014", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def triangle(string, height):\n", - " \"\"\"Make a triangle shape by printing a string repeatedly.\n", - " \n", - " string: characters to be repeated\n", - " height: number of lines in the triangle\n", - " \"\"\"\n", - " for i in range(height+1):\n", - " print(string * i)" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "id": "b8146a0d", - "metadata": { - "scrolled": true, - "tags": [ - "keep" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "L\n", - "LL\n", - "LLL\n", - "LLLL\n", - "LLLLL\n" - ] - } - ], - "source": [ - "triangle('L', 5)" - ] - }, - { - "cell_type": "markdown", - "id": "4a28f635", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "Write a function called `rectangle` that takes a string and two integers and draws a rectangle with the given width and height, made up using copies of the string. Here's an example of a rectangle with width `5` and height `4`, made up of the string `'H'`." - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "id": "bcedab79", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def rectangle(string, width, height):\n", - " \"\"\"Make a rectangle by printing a string repeatedly.\n", - " \n", - " string: characters to be repeated\n", - " width: number of repetitions on each line\n", - " height: number of lines\n", - " \"\"\"\n", - " for i in range(height):\n", - " print(string * width)" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "id": "73b0c0f6", - "metadata": { - "scrolled": true, - "tags": [ - "keep" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "HHHHH\n", - "HHHHH\n", - "HHHHH\n", - "HHHHH\n" - ] - } - ], - "source": [ - "rectangle('H', 5, 4)" - ] - }, - { - "cell_type": "markdown", - "id": "44a5de6f", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "The song \"99 Bottles of Beer\" starts with this verse:\n", - "\n", - "> 99 bottles of beer on the wall \n", - "> 99 bottles of beer \n", - "> Take one down, pass it around \n", - "> 98 bottles of beer on the wall \n", - "\n", - "Then the second verse is the same, except that it starts with 98 bottles and ends with 97. The song continues -- for a very long time -- until there are 0 bottles of beer.\n", - "\n", - "Write a function called `bottle_verse` that takes a number as a parameter and displays the verse that starts with the given number of bottles.\n", - "\n", - "Hint: Consider starting with a function that can print the first, second, or last line of the verse, and then use it to write `bottle_verse`." - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "id": "53424b43", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def bottle_line(n, suffix):\n", - " \"\"\"Display a line from 99 Bottles of Beer.\n", - " \n", - " n: integer\n", - " suffix: string\n", - " \"\"\"\n", - " print(n, 'bottles of beer', suffix)" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "id": "61010ffb", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def bottle_verse(n):\n", - " \"\"\"Display a verse from 99 Bottles of Beer.\n", - " \n", - " n: integer\n", - " \"\"\"\n", - " bottle_line(n, 'on the wall')\n", - " bottle_line(n, '')\n", - " print('Take one down, pass it around')\n", - " bottle_line(n-1, 'on the wall')" - ] - }, - { - "cell_type": "markdown", - "id": "ee0076dd", - "metadata": { - "tags": [ - "keep" - ] - }, - "source": [ - "Use this function call to display the first verse." - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "id": "47a91c7d", - "metadata": { - "tags": [ - "keep" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "99 bottles of beer on the wall\n", - "99 bottles of beer \n", - "Take one down, pass it around\n", - "98 bottles of beer on the wall\n" - ] - } - ], - "source": [ - "bottle_verse(99)" - ] - }, - { - "cell_type": "markdown", - "id": "42c237c6", - "metadata": { - "tags": [ - "keep" - ] - }, - "source": [ - "If you want to print the whole song, you can use this `for` loop, which counts down from `99` to `1`.\n", - "You don't have to completely understand this example---we'll learn more about `for` loops and the `range` function later." - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "id": "336cdfa2", - "metadata": { - "tags": [ - "remove-output", - "keep" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "99 bottles of beer on the wall\n", - "99 bottles of beer \n", - "Take one down, pass it around\n", - "98 bottles of beer on the wall\n", - "\n", - "98 bottles of beer on the wall\n", - "98 bottles of beer \n", - "Take one down, pass it around\n", - "97 bottles of beer on the wall\n", - "\n", - "97 bottles of beer on the wall\n", - "97 bottles of beer \n", - "Take one down, pass it around\n", - "96 bottles of beer on the wall\n", - "\n", - "96 bottles of beer on the wall\n", - "96 bottles of beer \n", - "Take one down, pass it around\n", - "95 bottles of beer on the wall\n", - "\n", - "95 bottles of beer on the wall\n", - "95 bottles of beer \n", - "Take one down, pass it around\n", - "94 bottles of beer on the wall\n", - "\n", - "94 bottles of beer on the wall\n", - "94 bottles of beer \n", - "Take one down, pass it around\n", - "93 bottles of beer on the wall\n", - "\n", - "93 bottles of beer on the wall\n", - "93 bottles of beer \n", - "Take one down, pass it around\n", - "92 bottles of beer on the wall\n", - "\n", - "92 bottles of beer on the wall\n", - "92 bottles of beer \n", - "Take one down, pass it around\n", - "91 bottles of beer on the wall\n", - "\n", - "91 bottles of beer on the wall\n", - "91 bottles of beer \n", - "Take one down, pass it around\n", - "90 bottles of beer on the wall\n", - "\n", - "90 bottles of beer on the wall\n", - "90 bottles of beer \n", - "Take one down, pass it around\n", - "89 bottles of beer on the wall\n", - "\n", - "89 bottles of beer on the wall\n", - "89 bottles of beer \n", - "Take one down, pass it around\n", - "88 bottles of beer on the wall\n", - "\n", - "88 bottles of beer on the wall\n", - "88 bottles of beer \n", - "Take one down, pass it around\n", - "87 bottles of beer on the wall\n", - "\n", - "87 bottles of beer on the wall\n", - "87 bottles of beer \n", - "Take one down, pass it around\n", - "86 bottles of beer on the wall\n", - "\n", - "86 bottles of beer on the wall\n", - "86 bottles of beer \n", - "Take one down, pass it around\n", - "85 bottles of beer on the wall\n", - "\n", - "85 bottles of beer on the wall\n", - "85 bottles of beer \n", - "Take one down, pass it around\n", - "84 bottles of beer on the wall\n", - "\n", - "84 bottles of beer on the wall\n", - "84 bottles of beer \n", - "Take one down, pass it around\n", - "83 bottles of beer on the wall\n", - "\n", - "83 bottles of beer on the wall\n", - "83 bottles of beer \n", - "Take one down, pass it around\n", - "82 bottles of beer on the wall\n", - "\n", - "82 bottles of beer on the wall\n", - "82 bottles of beer \n", - "Take one down, pass it around\n", - "81 bottles of beer on the wall\n", - "\n", - "81 bottles of beer on the wall\n", - "81 bottles of beer \n", - "Take one down, pass it around\n", - "80 bottles of beer on the wall\n", - "\n", - "80 bottles of beer on the wall\n", - "80 bottles of beer \n", - "Take one down, pass it around\n", - "79 bottles of beer on the wall\n", - "\n", - "79 bottles of beer on the wall\n", - "79 bottles of beer \n", - "Take one down, pass it around\n", - "78 bottles of beer on the wall\n", - "\n", - "78 bottles of beer on the wall\n", - "78 bottles of beer \n", - "Take one down, pass it around\n", - "77 bottles of beer on the wall\n", - "\n", - "77 bottles of beer on the wall\n", - "77 bottles of beer \n", - "Take one down, pass it around\n", - "76 bottles of beer on the wall\n", - "\n", - "76 bottles of beer on the wall\n", - "76 bottles of beer \n", - "Take one down, pass it around\n", - "75 bottles of beer on the wall\n", - "\n", - "75 bottles of beer on the wall\n", - "75 bottles of beer \n", - "Take one down, pass it around\n", - "74 bottles of beer on the wall\n", - "\n", - "74 bottles of beer on the wall\n", - "74 bottles of beer \n", - "Take one down, pass it around\n", - "73 bottles of beer on the wall\n", - "\n", - "73 bottles of beer on the wall\n", - "73 bottles of beer \n", - "Take one down, pass it around\n", - "72 bottles of beer on the wall\n", - "\n", - "72 bottles of beer on the wall\n", - "72 bottles of beer \n", - "Take one down, pass it around\n", - "71 bottles of beer on the wall\n", - "\n", - "71 bottles of beer on the wall\n", - "71 bottles of beer \n", - "Take one down, pass it around\n", - "70 bottles of beer on the wall\n", - "\n", - "70 bottles of beer on the wall\n", - "70 bottles of beer \n", - "Take one down, pass it around\n", - "69 bottles of beer on the wall\n", - "\n", - "69 bottles of beer on the wall\n", - "69 bottles of beer \n", - "Take one down, pass it around\n", - "68 bottles of beer on the wall\n", - "\n", - "68 bottles of beer on the wall\n", - "68 bottles of beer \n", - "Take one down, pass it around\n", - "67 bottles of beer on the wall\n", - "\n", - "67 bottles of beer on the wall\n", - "67 bottles of beer \n", - "Take one down, pass it around\n", - "66 bottles of beer on the wall\n", - "\n", - "66 bottles of beer on the wall\n", - "66 bottles of beer \n", - "Take one down, pass it around\n", - "65 bottles of beer on the wall\n", - "\n", - "65 bottles of beer on the wall\n", - "65 bottles of beer \n", - "Take one down, pass it around\n", - "64 bottles of beer on the wall\n", - "\n", - "64 bottles of beer on the wall\n", - "64 bottles of beer \n", - "Take one down, pass it around\n", - "63 bottles of beer on the wall\n", - "\n", - "63 bottles of beer on the wall\n", - "63 bottles of beer \n", - "Take one down, pass it around\n", - "62 bottles of beer on the wall\n", - "\n", - "62 bottles of beer on the wall\n", - "62 bottles of beer \n", - "Take one down, pass it around\n", - "61 bottles of beer on the wall\n", - "\n", - "61 bottles of beer on the wall\n", - "61 bottles of beer \n", - "Take one down, pass it around\n", - "60 bottles of beer on the wall\n", - "\n", - "60 bottles of beer on the wall\n", - "60 bottles of beer \n", - "Take one down, pass it around\n", - "59 bottles of beer on the wall\n", - "\n", - "59 bottles of beer on the wall\n", - "59 bottles of beer \n", - "Take one down, pass it around\n", - "58 bottles of beer on the wall\n", - "\n", - "58 bottles of beer on the wall\n", - "58 bottles of beer \n", - "Take one down, pass it around\n", - "57 bottles of beer on the wall\n", - "\n", - "57 bottles of beer on the wall\n", - "57 bottles of beer \n", - "Take one down, pass it around\n", - "56 bottles of beer on the wall\n", - "\n", - "56 bottles of beer on the wall\n", - "56 bottles of beer \n", - "Take one down, pass it around\n", - "55 bottles of beer on the wall\n", - "\n", - "55 bottles of beer on the wall\n", - "55 bottles of beer \n", - "Take one down, pass it around\n", - "54 bottles of beer on the wall\n", - "\n", - "54 bottles of beer on the wall\n", - "54 bottles of beer \n", - "Take one down, pass it around\n", - "53 bottles of beer on the wall\n", - "\n", - "53 bottles of beer on the wall\n", - "53 bottles of beer \n", - "Take one down, pass it around\n", - "52 bottles of beer on the wall\n", - "\n", - "52 bottles of beer on the wall\n", - "52 bottles of beer \n", - "Take one down, pass it around\n", - "51 bottles of beer on the wall\n", - "\n", - "51 bottles of beer on the wall\n", - "51 bottles of beer \n", - "Take one down, pass it around\n", - "50 bottles of beer on the wall\n", - "\n", - "50 bottles of beer on the wall\n", - "50 bottles of beer \n", - "Take one down, pass it around\n", - "49 bottles of beer on the wall\n", - "\n", - "49 bottles of beer on the wall\n", - "49 bottles of beer \n", - "Take one down, pass it around\n", - "48 bottles of beer on the wall\n", - "\n", - "48 bottles of beer on the wall\n", - "48 bottles of beer \n", - "Take one down, pass it around\n", - "47 bottles of beer on the wall\n", - "\n", - "47 bottles of beer on the wall\n", - "47 bottles of beer \n", - "Take one down, pass it around\n", - "46 bottles of beer on the wall\n", - "\n", - "46 bottles of beer on the wall\n", - "46 bottles of beer \n", - "Take one down, pass it around\n", - "45 bottles of beer on the wall\n", - "\n", - "45 bottles of beer on the wall\n", - "45 bottles of beer \n", - "Take one down, pass it around\n", - "44 bottles of beer on the wall\n", - "\n", - "44 bottles of beer on the wall\n", - "44 bottles of beer \n", - "Take one down, pass it around\n", - "43 bottles of beer on the wall\n", - "\n", - "43 bottles of beer on the wall\n", - "43 bottles of beer \n", - "Take one down, pass it around\n", - "42 bottles of beer on the wall\n", - "\n", - "42 bottles of beer on the wall\n", - "42 bottles of beer \n", - "Take one down, pass it around\n", - "41 bottles of beer on the wall\n", - "\n", - "41 bottles of beer on the wall\n", - "41 bottles of beer \n", - "Take one down, pass it around\n", - "40 bottles of beer on the wall\n", - "\n", - "40 bottles of beer on the wall\n", - "40 bottles of beer \n", - "Take one down, pass it around\n", - "39 bottles of beer on the wall\n", - "\n", - "39 bottles of beer on the wall\n", - "39 bottles of beer \n", - "Take one down, pass it around\n", - "38 bottles of beer on the wall\n", - "\n", - "38 bottles of beer on the wall\n", - "38 bottles of beer \n", - "Take one down, pass it around\n", - "37 bottles of beer on the wall\n", - "\n", - "37 bottles of beer on the wall\n", - "37 bottles of beer \n", - "Take one down, pass it around\n", - "36 bottles of beer on the wall\n", - "\n", - "36 bottles of beer on the wall\n", - "36 bottles of beer \n", - "Take one down, pass it around\n", - "35 bottles of beer on the wall\n", - "\n", - "35 bottles of beer on the wall\n", - "35 bottles of beer \n", - "Take one down, pass it around\n", - "34 bottles of beer on the wall\n", - "\n", - "34 bottles of beer on the wall\n", - "34 bottles of beer \n", - "Take one down, pass it around\n", - "33 bottles of beer on the wall\n", - "\n", - "33 bottles of beer on the wall\n", - "33 bottles of beer \n", - "Take one down, pass it around\n", - "32 bottles of beer on the wall\n", - "\n", - "32 bottles of beer on the wall\n", - "32 bottles of beer \n", - "Take one down, pass it around\n", - "31 bottles of beer on the wall\n", - "\n", - "31 bottles of beer on the wall\n", - "31 bottles of beer \n", - "Take one down, pass it around\n", - "30 bottles of beer on the wall\n", - "\n", - "30 bottles of beer on the wall\n", - "30 bottles of beer \n", - "Take one down, pass it around\n", - "29 bottles of beer on the wall\n", - "\n", - "29 bottles of beer on the wall\n", - "29 bottles of beer \n", - "Take one down, pass it around\n", - "28 bottles of beer on the wall\n", - "\n", - "28 bottles of beer on the wall\n", - "28 bottles of beer \n", - "Take one down, pass it around\n", - "27 bottles of beer on the wall\n", - "\n", - "27 bottles of beer on the wall\n", - "27 bottles of beer \n", - "Take one down, pass it around\n", - "26 bottles of beer on the wall\n", - "\n", - "26 bottles of beer on the wall\n", - "26 bottles of beer \n", - "Take one down, pass it around\n", - "25 bottles of beer on the wall\n", - "\n", - "25 bottles of beer on the wall\n", - "25 bottles of beer \n", - "Take one down, pass it around\n", - "24 bottles of beer on the wall\n", - "\n", - "24 bottles of beer on the wall\n", - "24 bottles of beer \n", - "Take one down, pass it around\n", - "23 bottles of beer on the wall\n", - "\n", - "23 bottles of beer on the wall\n", - "23 bottles of beer \n", - "Take one down, pass it around\n", - "22 bottles of beer on the wall\n", - "\n", - "22 bottles of beer on the wall\n", - "22 bottles of beer \n", - "Take one down, pass it around\n", - "21 bottles of beer on the wall\n", - "\n", - "21 bottles of beer on the wall\n", - "21 bottles of beer \n", - "Take one down, pass it around\n", - "20 bottles of beer on the wall\n", - "\n", - "20 bottles of beer on the wall\n", - "20 bottles of beer \n", - "Take one down, pass it around\n", - "19 bottles of beer on the wall\n", - "\n", - "19 bottles of beer on the wall\n", - "19 bottles of beer \n", - "Take one down, pass it around\n", - "18 bottles of beer on the wall\n", - "\n", - "18 bottles of beer on the wall\n", - "18 bottles of beer \n", - "Take one down, pass it around\n", - "17 bottles of beer on the wall\n", - "\n", - "17 bottles of beer on the wall\n", - "17 bottles of beer \n", - "Take one down, pass it around\n", - "16 bottles of beer on the wall\n", - "\n", - "16 bottles of beer on the wall\n", - "16 bottles of beer \n", - "Take one down, pass it around\n", - "15 bottles of beer on the wall\n", - "\n", - "15 bottles of beer on the wall\n", - "15 bottles of beer \n", - "Take one down, pass it around\n", - "14 bottles of beer on the wall\n", - "\n", - "14 bottles of beer on the wall\n", - "14 bottles of beer \n", - "Take one down, pass it around\n", - "13 bottles of beer on the wall\n", - "\n", - "13 bottles of beer on the wall\n", - "13 bottles of beer \n", - "Take one down, pass it around\n", - "12 bottles of beer on the wall\n", - "\n", - "12 bottles of beer on the wall\n", - "12 bottles of beer \n", - "Take one down, pass it around\n", - "11 bottles of beer on the wall\n", - "\n", - "11 bottles of beer on the wall\n", - "11 bottles of beer \n", - "Take one down, pass it around\n", - "10 bottles of beer on the wall\n", - "\n", - "10 bottles of beer on the wall\n", - "10 bottles of beer \n", - "Take one down, pass it around\n", - "9 bottles of beer on the wall\n", - "\n", - "9 bottles of beer on the wall\n", - "9 bottles of beer \n", - "Take one down, pass it around\n", - "8 bottles of beer on the wall\n", - "\n", - "8 bottles of beer on the wall\n", - "8 bottles of beer \n", - "Take one down, pass it around\n", - "7 bottles of beer on the wall\n", - "\n", - "7 bottles of beer on the wall\n", - "7 bottles of beer \n", - "Take one down, pass it around\n", - "6 bottles of beer on the wall\n", - "\n", - "6 bottles of beer on the wall\n", - "6 bottles of beer \n", - "Take one down, pass it around\n", - "5 bottles of beer on the wall\n", - "\n", - "5 bottles of beer on the wall\n", - "5 bottles of beer \n", - "Take one down, pass it around\n", - "4 bottles of beer on the wall\n", - "\n", - "4 bottles of beer on the wall\n", - "4 bottles of beer \n", - "Take one down, pass it around\n", - "3 bottles of beer on the wall\n", - "\n", - "3 bottles of beer on the wall\n", - "3 bottles of beer \n", - "Take one down, pass it around\n", - "2 bottles of beer on the wall\n", - "\n", - "2 bottles of beer on the wall\n", - "2 bottles of beer \n", - "Take one down, pass it around\n", - "1 bottles of beer on the wall\n", - "\n", - "1 bottles of beer on the wall\n", - "1 bottles of beer \n", - "Take one down, pass it around\n", - "0 bottles of beer on the wall\n", - "\n" - ] - } - ], - "source": [ - "for n in range(99, 0, -1):\n", - " bottle_verse(n)\n", - " print()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "4b02510c", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "id": "a7f4edf8", - "metadata": { - "tags": [] - }, - "source": [ - "[Think Python: 3rd Edition](https://allendowney.github.io/ThinkPython/index.html)\n", - "\n", - "Copyright 2024 [Allen B. Downey](https://allendowney.com)\n", - "\n", - "Code license: [MIT License](https://mit-license.org/)\n", - "\n", - "Text license: [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-nc-sa/4.0/)" - ] - } - ], - "metadata": { - "celltoolbar": "Tags", - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.11" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/soln/chap04.ipynb b/soln/chap04.ipynb deleted file mode 100644 index 2e528f7..0000000 --- a/soln/chap04.ipynb +++ /dev/null @@ -1,8092 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "1331faa1", - "metadata": {}, - "source": [ - "You can order print and ebook versions of *Think Python 3e* from\n", - "[Bookshop.org](https://bookshop.org/a/98697/9781098155438) and\n", - "[Amazon](https://www.amazon.com/_/dp/1098155432?smid=ATVPDKIKX0DER&_encoding=UTF8&tag=oreilly20-20&_encoding=UTF8&tag=greenteapre01-20&linkCode=ur2&linkId=e2a529f94920295d27ec8a06e757dc7c&camp=1789&creative=9325)." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "df64b7da", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "from os.path import basename, exists\n", - "\n", - "def download(url):\n", - " filename = basename(url)\n", - " if not exists(filename):\n", - " from urllib.request import urlretrieve\n", - "\n", - " local, _ = urlretrieve(url, filename)\n", - " print(\"Downloaded \" + str(local))\n", - " return filename\n", - "\n", - "download('https://github.com/AllenDowney/ThinkPython/raw/v3/thinkpython.py');\n", - "download('https://github.com/AllenDowney/ThinkPython/raw/v3/diagram.py');\n", - "download('https://github.com/ramalho/jupyturtle/releases/download/2024-03/jupyturtle.py');" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "320fc8bc", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "import thinkpython\n", - "\n", - "%load_ext autoreload\n", - "%autoreload 2" - ] - }, - { - "cell_type": "markdown", - "id": "fbb4d5a2", - "metadata": {}, - "source": [ - "# Functions and Interfaces\n", - "\n", - "This chapter introduces a module called `jupyturtle`, which allows you to create simple drawings by giving instructions to an imaginary turtle.\n", - "We will use this module to write functions that draw squares, polygons, and circles -- and to demonstrate **interface design**, which is a way of designing functions that work together." - ] - }, - { - "cell_type": "markdown", - "id": "0b0efa00", - "metadata": { - "tags": [ - "section_turtle_module" - ] - }, - "source": [ - "## The jupyturtle module\n", - "\n", - "To use the `jupyturtle` module, we can import it like this." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "8f5a8a45", - "metadata": {}, - "outputs": [], - "source": [ - "import jupyturtle" - ] - }, - { - "cell_type": "markdown", - "id": "8c801121", - "metadata": {}, - "source": [ - "Now we can use the functions defined in the module, like `make_turtle` and `forward`." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "b3f255cd", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - "\n", - "\n", - "\n", - "\n", - " \n", - " \n", - "\n", - "\n", - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "jupyturtle.make_turtle()\n", - "jupyturtle.forward(100)" - ] - }, - { - "cell_type": "markdown", - "id": "77a61cbb", - "metadata": {}, - "source": [ - "`make_turtle` creates a **canvas**, which is a space on the screen where we can draw, and a turtle, which is represented by a circular shell and a triangular head.\n", - "The circle shows the location of the turtle and the triangle indicates the direction it is facing.\n", - "\n", - "`forward` moves the turtle a given distance in the direction it's facing, drawing a line segment along the way.\n", - "The distance is in arbitrary units -- the actual size depends on your computer's screen.\n", - "\n", - "We will use functions defined in the `jupyturtle` module many times, so it would be nice if we did not have to write the name of the module every time.\n", - "That's possible if we import the module like this." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "234fde81", - "metadata": {}, - "outputs": [], - "source": [ - "from jupyturtle import make_turtle, forward" - ] - }, - { - "cell_type": "markdown", - "id": "c1322d31", - "metadata": {}, - "source": [ - "This version of the import statement imports `make_turtle` and `forward` from the `jupyturtle` module so we can call them like this." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "1e768880", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - "\n", - "\n", - "\n", - "\n", - " \n", - " \n", - "\n", - "\n", - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "make_turtle()\n", - "forward(100)" - ] - }, - { - "cell_type": "markdown", - "id": "bd319754", - "metadata": {}, - "source": [ - "`jupyturtle` provides two other functions we'll use, called `left` and `right`.\n", - "We'll import them like this." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "6d874b03", - "metadata": {}, - "outputs": [], - "source": [ - "from jupyturtle import left, right" - ] - }, - { - "cell_type": "markdown", - "id": "0da2a311", - "metadata": {}, - "source": [ - "`left` causes the turtle to turn left. It takes one argument, which is the angle of the turn in degrees.\n", - "For example, we can make a 90 degree left turn like this." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "1bb57a0c", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - " \n", - "\n", - "\n", - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "make_turtle()\n", - "forward(50)\n", - "left(90)\n", - "forward(50)" - ] - }, - { - "cell_type": "markdown", - "id": "cea2940f", - "metadata": {}, - "source": [ - "This program moves the turtle east and then north, leaving two line segments behind.\n", - "Before you go on, see if you can modify the previous program to make a square." - ] - }, - { - "cell_type": "markdown", - "id": "e20ea96c", - "metadata": {}, - "source": [ - "## Making a square\n", - "\n", - "Here's one way to make a square." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "9a9e455f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - " \n", - "\n", - "\n", - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "make_turtle()\n", - "\n", - "forward(50)\n", - "left(90)\n", - "\n", - "forward(50)\n", - "left(90)\n", - "\n", - "forward(50)\n", - "left(90)\n", - "\n", - "forward(50)\n", - "left(90)" - ] - }, - { - "cell_type": "markdown", - "id": "a7500957", - "metadata": {}, - "source": [ - "Because this program repeats the same pair of lines four times, we can do the same thing more concisely with a `for` loop." - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "cc27ad66", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - " \n", - "\n", - "\n", - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "make_turtle()\n", - "for i in range(4):\n", - " forward(50)\n", - " left(90)" - ] - }, - { - "cell_type": "markdown", - "id": "c072ea41", - "metadata": { - "tags": [ - "section_encapsulation" - ] - }, - "source": [ - "## Encapsulation and generalization\n", - "\n", - "Let's take the square-drawing code from the previous section and put it in a function called `square`." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "ad5f1128", - "metadata": {}, - "outputs": [], - "source": [ - "def square():\n", - " for i in range(4):\n", - " forward(50)\n", - " left(90)" - ] - }, - { - "cell_type": "markdown", - "id": "0789b5d9", - "metadata": {}, - "source": [ - "Now we can call the function like this." - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "193bbe5e", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - " \n", - "\n", - "\n", - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "make_turtle()\n", - "square()" - ] - }, - { - "cell_type": "markdown", - "id": "da905fc6", - "metadata": {}, - "source": [ - "Wrapping a piece of code up in a function is called **encapsulation**.\n", - "One of the benefits of encapsulation is that it attaches a name to the code, which serves as a kind of documentation. Another advantage is that if you re-use the code, it is more concise to call a function twice than to copy and paste the body!\n", - "\n", - "In the current version, the size of the square is always `50`.\n", - "If we want to draw squares with different sizes, we can take the length of the sides as a parameter. " - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "def8a5f1", - "metadata": {}, - "outputs": [], - "source": [ - "def square(length):\n", - " for i in range(4):\n", - " forward(length)\n", - " left(90)" - ] - }, - { - "cell_type": "markdown", - "id": "397fda4b", - "metadata": {}, - "source": [ - "Now we can draw squares with different sizes." - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "b283e795", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - " \n", - "\n", - "\n", - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "make_turtle()\n", - "square(30)\n", - "square(60)" - ] - }, - { - "cell_type": "markdown", - "id": "5a46bf64", - "metadata": {}, - "source": [ - "Adding a parameter to a function is called **generalization** because it makes the function more general: with the previous version, the square is always the same size; with this version it can be any size.\n", - "\n", - "If we add another parameter, we can make it even more general.\n", - "The following function draws regular polygons with a given number of sides." - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "171974ed", - "metadata": {}, - "outputs": [], - "source": [ - "def polygon(n, length):\n", - " angle = 360 / n\n", - " for i in range(n):\n", - " forward(length)\n", - " left(angle)" - ] - }, - { - "cell_type": "markdown", - "id": "286d3c77", - "metadata": {}, - "source": [ - "In a regular polygon with `n` sides, the angle between adjacent sides is `360 / n` degrees. \n", - "\n", - "The following example draws a `7`-sided polygon with side length `30`." - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "71f7d9d2", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - " \n", - "\n", - "\n", - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "make_turtle()\n", - "polygon(7, 30)" - ] - }, - { - "cell_type": "markdown", - "id": "dc0226db", - "metadata": {}, - "source": [ - "When a function has more than a few numeric arguments, it is easy to forget what they are, or what order they should be in. \n", - "It can be a good idea to include the names of the parameters in the argument list." - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "8ff2a5f4", - "metadata": { - "tags": [ - "remove-output" - ] - }, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - " \n", - "\n", - "\n", - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "make_turtle()\n", - "polygon(n=7, length=30)" - ] - }, - { - "cell_type": "markdown", - "id": "6aa28eba", - "metadata": {}, - "source": [ - "These are sometimes called \"named arguments\" because they include the parameter names.\n", - "But in Python they are more often called **keyword arguments** (not to be confused with Python keywords like `for` and `def`).\n", - "\n", - "This use of the assignment operator, `=`, is a reminder about how arguments and parameters work -- when you call a function, the arguments are assigned to the parameters." - ] - }, - { - "cell_type": "markdown", - "id": "b10184b4", - "metadata": {}, - "source": [ - "## Approximating a circle\n", - "\n", - "Now suppose we want to draw a circle.\n", - "We can do that, approximately, by drawing a polygon with a large number of sides, so each side is small enough that it's hard to see.\n", - "Here is a function that uses `polygon` to draw a `30`-sided polygon that approximates a circle." - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "7f2a5f28", - "metadata": {}, - "outputs": [], - "source": [ - "import math\n", - "\n", - "def circle(radius):\n", - " circumference = 2 * math.pi * radius\n", - " n = 30\n", - " length = circumference / n\n", - " polygon(n, length)" - ] - }, - { - "cell_type": "markdown", - "id": "39023314", - "metadata": {}, - "source": [ - "`circle` takes the radius of the the circle as a parameter.\n", - "It computes `circumference`, which is the circumference of a circle with the given radius.\n", - "`n` is the number of sides, so `circumference / n` is the length of each side.\n", - "\n", - "This function might take a long time to run.\n", - "We can speed it up by calling `make_turtle` with a keyword argument called `delay` that sets the time, in seconds, the turtle waits after each step.\n", - "The default value is `0.2` seconds -- if we set it to `0.02` it runs about 10 times faster." - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "75258056", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - " \n", - "\n", - "\n", - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "make_turtle(delay=0.02)\n", - "circle(30)" - ] - }, - { - "cell_type": "markdown", - "id": "701f9cf8", - "metadata": {}, - "source": [ - "A limitation of this solution is that `n` is a constant, which means\n", - "that for very big circles, the sides are too long, and for small\n", - "circles, we waste time drawing very short sides.\n", - "One option is to generalize the function by taking `n` as a parameter.\n", - "But let's keep it simple for now." - ] - }, - { - "cell_type": "markdown", - "id": "c48f262c", - "metadata": {}, - "source": [ - "## Refactoring\n", - "\n", - "Now let's write a more general version of `circle`, called `arc`, that takes a second parameter, `angle`, and draws an arc of a circle that spans the given angle.\n", - "For example, if `angle` is `360` degrees, it draws a complete circle. If `angle` is `180` degrees, it draws a half circle.\n", - "\n", - "To write `circle`, we were able to reuse `polygon`, because a many-sided polygon is a good approximation of a circle.\n", - "But we can't use `polygon` to write `arc`.\n", - "\n", - "Instead, we'll create the more general version of `polygon`, called `polyline`." - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "381edd23", - "metadata": {}, - "outputs": [], - "source": [ - "def polyline(n, length, angle):\n", - " for i in range(n):\n", - " forward(length)\n", - " left(angle)" - ] - }, - { - "cell_type": "markdown", - "id": "c2b2503e", - "metadata": {}, - "source": [ - "`polyline` takes as parameters the number of line segments to draw, `n`, the length of the segments, `length`, and the angle between them, `angle`.\n", - "\n", - "Now we can rewrite `polygon` to use `polyline`." - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "2f4eecc0", - "metadata": {}, - "outputs": [], - "source": [ - "def polygon(n, length):\n", - " angle = 360.0 / n\n", - " polyline(n, length, angle)" - ] - }, - { - "cell_type": "markdown", - "id": "2714a59e", - "metadata": {}, - "source": [ - "And we can use `polyline` to write `arc`." - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "539466f6", - "metadata": {}, - "outputs": [], - "source": [ - "def arc(radius, angle):\n", - " arc_length = 2 * math.pi * radius * angle / 360\n", - " n = 30\n", - " length = arc_length / n\n", - " step_angle = angle / n\n", - " polyline(n, length, step_angle)" - ] - }, - { - "cell_type": "markdown", - "id": "3c18773c", - "metadata": {}, - "source": [ - "`arc` is similar to `circle`, except that it computes `arc_length`, which is a fraction of the circumference of a circle.\n", - "\n", - "Finally, we can rewrite `circle` to use `arc`." - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "8e09f456", - "metadata": {}, - "outputs": [], - "source": [ - "def circle(radius):\n", - " arc(radius, 360)" - ] - }, - { - "cell_type": "markdown", - "id": "313a357c", - "metadata": {}, - "source": [ - "To check that these functions work as expected, we'll use them to draw something like a snail.\n", - "With `delay=0`, the turtle runs as fast as possible." - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "80d6eadd", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - " \n", - "\n", - "\n", - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "make_turtle(delay=0)\n", - "polygon(n=20, length=9)\n", - "arc(radius=70, angle=70)\n", - "circle(radius=10)" - ] - }, - { - "cell_type": "markdown", - "id": "a34da3d8", - "metadata": {}, - "source": [ - "In this example, we started with working code and reorganized it with different functions.\n", - "Changes like this, which improve the code without changing its behavior, are called **refactoring**.\n", - "\n", - "If we had planned ahead, we might have written `polyline` first and avoided refactoring, but often you don't know enough at the beginning of a project to design all the functions.\n", - "Once you start coding, you understand the problem better.\n", - "Sometimes refactoring is a sign that you have learned something." - ] - }, - { - "cell_type": "markdown", - "id": "d18c9d16", - "metadata": {}, - "source": [ - "## Stack diagram\n", - "\n", - "When we call `circle`, it calls `arc`, which calls `polyline`.\n", - "We can use a stack diagram to show this sequence of function calls and the parameters for each one." - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "1571ee71", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "from diagram import make_binding, make_frame, Frame, Stack\n", - "\n", - "frame1 = make_frame(dict(radius=30), name='circle', loc='left')\n", - "\n", - "frame2 = make_frame(dict(radius=30, angle=360), name='arc', loc='left', dx=1.1)\n", - "\n", - "frame3 = make_frame(dict(n=60, length=3.04, angle=5.8), \n", - " name='polyline', loc='left', dx=1.1, offsetx=-0.27)\n", - "\n", - "stack = Stack([frame1, frame2, frame3], dy=-0.4)" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "f4e37360", - "metadata": { - "tags": [ - "remove-input" - ] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from diagram import diagram, adjust\n", - "\n", - "width, height, x, y = [3.58, 1.31, 0.98, 1.06]\n", - "ax = diagram(width, height)\n", - "bbox = stack.draw(ax, x, y)\n", - "#adjust(x, y, bbox)" - ] - }, - { - "cell_type": "markdown", - "id": "3160bba1", - "metadata": {}, - "source": [ - "Notice that the value of `angle` in `polyline` is different from the value of `angle` in `arc`.\n", - "Parameters are local, which means you can use the same parameter name in different functions; it's a different variable in each function, and it can refer to a different value. " - ] - }, - { - "cell_type": "markdown", - "id": "c23552d3", - "metadata": {}, - "source": [ - "## A development plan\n", - "\n", - "A **development plan** is a process for writing programs.\n", - "The process we used in this chapter is \"encapsulation and generalization\".\n", - "The steps of this process are:\n", - "\n", - "1. Start by writing a small program with no function definitions.\n", - "\n", - "2. Once you get the program working, identify a coherent piece of it,\n", - " encapsulate the piece in a function and give it a name.\n", - "\n", - "3. Generalize the function by adding appropriate parameters.\n", - "\n", - "4. Repeat Steps 1 to 3 until you have a set of working functions.\n", - "\n", - "5. Look for opportunities to improve the program by refactoring. For\n", - " example, if you have similar code in several places, consider\n", - " factoring it into an appropriately general function.\n", - "\n", - "This process has some drawbacks -- we will see alternatives later -- but it can be useful if you don't know ahead of time how to divide the program into functions.\n", - "This approach lets you design as you go along." - ] - }, - { - "cell_type": "markdown", - "id": "a3b6b83d", - "metadata": {}, - "source": [ - "The design of a function has two parts:\n", - "\n", - "* The **interface** is how the function is used, including its name, the parameters it takes and what the function is supposed to do.\n", - "\n", - "* The **implementation** is how the function does what it's supposed to do.\n", - "\n", - "For example, here's the first version of `circle` we wrote, which uses `polygon`." - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "baf964ba", - "metadata": {}, - "outputs": [], - "source": [ - "def circle(radius):\n", - " circumference = 2 * math.pi * radius\n", - " n = 30\n", - " length = circumference / n\n", - " polygon(n, length)" - ] - }, - { - "cell_type": "markdown", - "id": "5d3d2e79", - "metadata": {}, - "source": [ - "And here's the refactored version that uses `arc`." - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "e2e006d5", - "metadata": {}, - "outputs": [], - "source": [ - "def circle(radius):\n", - " arc(radius, 360)" - ] - }, - { - "cell_type": "markdown", - "id": "b726f72c", - "metadata": {}, - "source": [ - "These two functions have the same interface -- they take the same parameters and do the same thing -- but they have different implementations." - ] - }, - { - "cell_type": "markdown", - "id": "3e3bae20", - "metadata": { - "tags": [ - "section_docstring" - ] - }, - "source": [ - "## Docstrings\n", - "\n", - "A **docstring** is a string at the beginning of a function that explains the interface (\"doc\" is short for \"documentation\").\n", - "Here is an example:" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "id": "b68f3682", - "metadata": {}, - "outputs": [], - "source": [ - "def polyline(n, length, angle):\n", - " \"\"\"Draws line segments with the given length and angle between them.\n", - " \n", - " n: integer number of line segments\n", - " length: length of the line segments\n", - " angle: angle between segments (in degrees)\n", - " \"\"\" \n", - " for i in range(n):\n", - " forward(length)\n", - " left(angle)" - ] - }, - { - "cell_type": "markdown", - "id": "55b60cbc", - "metadata": {}, - "source": [ - "By convention, docstrings are triple-quoted strings, also known as **multiline strings** because the triple quotes allow the string to span more than one line.\n", - "\n", - "A docstring should:\n", - "\n", - "* Explain concisely what the function does, without getting into the details of how it works,\n", - "\n", - "* Explain what effect each parameter has on the behavior of the function, and\n", - "\n", - "* Indicate what type each parameter should be, if it is not obvious.\n", - "\n", - "Writing this kind of documentation is an important part of interface design.\n", - "A well-designed interface should be simple to explain; if you have a hard time explaining one of your functions, maybe the interface could be improved." - ] - }, - { - "cell_type": "markdown", - "id": "f1115940", - "metadata": {}, - "source": [ - "## Debugging\n", - "\n", - "An interface is like a contract between a function and a caller. The\n", - "caller agrees to provide certain arguments and the function agrees to\n", - "do certain work.\n", - "\n", - "For example, `polyline` requires three arguments: `n` has to be an integer; `length` should be a positive number; and `angle` has to be a number, which is understood to be in degrees.\n", - "\n", - "These requirements are called **preconditions** because they are supposed to be true before the function starts executing. Conversely, conditions at the end of the function are **postconditions**.\n", - "Postconditions include the intended effect of the function (like drawing line segments) and any side effects (like moving the turtle or making other changes).\n", - "\n", - "Preconditions are the responsibility of the caller. If the caller violates a precondition and the function doesn't work correctly, the bug is in the caller, not the function.\n", - "\n", - "If the preconditions are satisfied and the postconditions are not, the bug is in the function. If your pre- and postconditions are clear, they can help with debugging." - ] - }, - { - "cell_type": "markdown", - "id": "a4d33a70", - "metadata": {}, - "source": [ - "## Glossary\n", - "\n", - "**interface design:**\n", - "A process for designing the interface of a function, which includes the parameters it should take.\n", - "\n", - "**canvas:**\n", - "A window used to display graphical elements including lines, circles, rectangles, and other shapes.\n", - "\n", - "**encapsulation:**\n", - " The process of transforming a sequence of statements into a function definition.\n", - "\n", - "**generalization:**\n", - " The process of replacing something unnecessarily specific (like a number) with something appropriately general (like a variable or parameter).\n", - "\n", - "**keyword argument:**\n", - "An argument that includes the name of the parameter.\n", - "\n", - "**refactoring:**\n", - " The process of modifying a working program to improve function interfaces and other qualities of the code.\n", - "\n", - "**development plan:**\n", - "A process for writing programs.\n", - "\n", - "**docstring:**\n", - " A string that appears at the top of a function definition to document the function's interface.\n", - "\n", - "**multiline string:**\n", - "A string enclosed in triple quotes that can span more than one line of a program.\n", - "\n", - "**precondition:**\n", - " A requirement that should be satisfied by the caller before a function starts.\n", - "\n", - "**postcondition:**\n", - " A requirement that should be satisfied by the function before it ends." - ] - }, - { - "cell_type": "markdown", - "id": "0bfe2e19", - "metadata": {}, - "source": [ - "## Exercises" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "id": "9f94061e", - "metadata": { - "tags": [ - "remove-print" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Exception reporting mode: Verbose\n" - ] - } - ], - "source": [ - "# This cell tells Jupyter to provide detailed debugging information\n", - "# when a runtime error occurs. Run it before working on the exercises.\n", - "\n", - "%xmode Verbose" - ] - }, - { - "cell_type": "markdown", - "id": "50ed5c38", - "metadata": {}, - "source": [ - "For the exercises below, there are a few more turtle functions you might want to use.\n", - "\n", - "* `penup` lifts the turtle's imaginary pen so it doesn't leave a trail when it moves.\n", - "\n", - "* `pendown` puts the pen back down.\n", - "\n", - "The following function uses `penup` and `pendown` to move the turtle without leaving a trail." - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "id": "6f9a0106", - "metadata": {}, - "outputs": [], - "source": [ - "from jupyturtle import penup, pendown\n", - "\n", - "def jump(length):\n", - " \"\"\"Move forward length units without leaving a trail.\n", - " \n", - " Postcondition: Leaves the pen down.\n", - " \"\"\"\n", - " penup()\n", - " forward(length)\n", - " pendown()" - ] - }, - { - "cell_type": "markdown", - "id": "c78c1e17", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "Write a function called `rectangle` that draws a rectangle with given side lengths.\n", - "For example, here's a rectangle that's `80` units wide and `40` units tall." - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "id": "c54ba660", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def rectangle(length1, length2):\n", - " \"\"\"Draw a rectangle with the given lengths.\n", - " \n", - " length1: length of the first side\n", - " length2: length of the second side\n", - " \"\"\"\n", - " for i in range(2):\n", - " forward(length1)\n", - " left(90)\n", - " forward(length2)\n", - " left(90)" - ] - }, - { - "cell_type": "markdown", - "id": "4b05078c", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "You can use the following code to test your function." - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "id": "1311ee08", - "metadata": { - "tags": [ - "remove-input" - ] - }, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - " \n", - "\n", - "\n", - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "make_turtle()\n", - "rectangle(80, 40)" - ] - }, - { - "cell_type": "markdown", - "id": "8b8faaf6", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "Write a function called `rhombus` that draws a rhombus with a given side length and a given interior angle. For example, here's a rhombus with side length `50` and an interior angle of `60` degrees." - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "id": "3db6f106", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def rhombus(length, angle):\n", - " for i in range(2):\n", - " forward(length)\n", - " left(angle)\n", - " forward(length)\n", - " left(180-angle)" - ] - }, - { - "cell_type": "markdown", - "id": "7917956b", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "You can use the following code to test your function." - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "id": "1d845de9", - "metadata": { - "tags": [ - "remove-input" - ] - }, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - " \n", - "\n", - "\n", - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "make_turtle()\n", - "rhombus(50, 60)" - ] - }, - { - "cell_type": "markdown", - "id": "a9175a90", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "Now write a more general function called `parallelogram` that draws a quadrilateral with parallel sides. Then rewrite `rectangle` and `rhombus` to use `parallelogram`." - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "id": "895005cb", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def parallelogram(length1, length2, angle):\n", - " for i in range(2):\n", - " forward(length1)\n", - " left(angle)\n", - " forward(length2)\n", - " left(180-angle)" - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "id": "7e7d34b0", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def rectangle(length1, length2):\n", - " \"\"\"Draw a rectangle with the given lengths.\n", - " \n", - " length1: length of the first side\n", - " length2: length of the second side\n", - " \"\"\"\n", - " parallelogram(length1, length2, 90)" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "id": "481396f9", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def rhombus(length, angle):\n", - " parallelogram(length, length, angle)" - ] - }, - { - "cell_type": "markdown", - "id": "c03bd4a2", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "You can use the following code to test your functions." - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "id": "c8dfebc9", - "metadata": { - "tags": [ - "remove-input" - ] - }, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - " \n", - "\n", - "\n", - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "make_turtle(width=400)\n", - "jump(-120)\n", - "\n", - "rectangle(80, 40)\n", - "jump(100)\n", - "rhombus(50, 60)\n", - "jump(80)\n", - "parallelogram(80, 50, 60)" - ] - }, - { - "cell_type": "markdown", - "id": "991ab59d", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "Write an appropriately general set of functions that can draw shapes like this.\n", - "\n", - "![](https://github.com/AllenDowney/ThinkPython/raw/v3/jupyturtle_pie.png)\n", - "\n", - "Hint: Write a function called `triangle` that draws one triangular segment, and then a function called `draw_pie` that uses `triangle`." - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "id": "8be6442e", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def triangle(radius, angle):\n", - " \"\"\"Draws an icosceles triangle.\n", - "\n", - " The turtle starts and ends at the peak, facing the middle of the base.\n", - "\n", - " radius: length of the equal legs\n", - " angle: half peak angle in degrees\n", - " \"\"\"\n", - " y = radius * math.sin(angle * math.pi / 180)\n", - "\n", - " right(angle)\n", - " forward(radius)\n", - " left(90+angle)\n", - " forward(2*y)\n", - " left(90+angle)\n", - " forward(radius)\n", - " left(180-angle)" - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "id": "be1b7ed8", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def draw_pie(n, radius):\n", - " \"\"\"Draws a pie divided into radial segments.\n", - "\n", - " n: number of segments\n", - " radius: length of the radial spokes\n", - " \"\"\"\n", - " angle = 360.0 / n\n", - " for i in range(n):\n", - " triangle(radius, angle/2)\n", - " left(angle)" - ] - }, - { - "cell_type": "markdown", - "id": "8702c0ad", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "You can use the following code to test your functions." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "c519ca39", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "turtle = make_turtle(delay=0)\n", - "jump(-80)\n", - "\n", - "size = 40\n", - "draw_pie(5, size)\n", - "jump(2*size)\n", - "draw_pie(6, size)\n", - "jump(2*size)\n", - "draw_pie(7, size)" - ] - }, - { - "cell_type": "code", - "execution_count": 51, - "id": "89ce198a", - "metadata": { - "tags": [ - "remove-cell", - "solution" - ] - }, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - " \n", - "\n", - "\n", - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "with open(\"jupyturtle_pie.svg\", \"w\") as svg_file:\n", - " svg_content = turtle.get_SVG()\n", - " svg_file.write(svg_content)" - ] - }, - { - "cell_type": "markdown", - "id": "9c78b76f", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "Write an appropriately general set of functions that can draw flowers like this.\n", - "\n", - "![](https://github.com/AllenDowney/ThinkPython/raw/v3/jupyturtle_flower.png)\n", - "\n", - "Hint: Use `arc` to write a function called `petal` that draws one flower petal." - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "id": "0f0e7498", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def petal(radius, angle):\n", - " \"\"\"Draws a petal using two arcs.\n", - "\n", - " radius: radius of the arcs\n", - " angle: angle (degrees) that subtends the arcs\n", - " \"\"\"\n", - " for i in range(2):\n", - " arc(radius, angle)\n", - " left(180-angle)" - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "id": "6c0d0bff", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def flower(n, radius, angle):\n", - " \"\"\"Draws a flower with n petals.\n", - "\n", - " n: number of petals\n", - " radius: radius of the arcs\n", - " angle: angle (degrees) that subtends the arcs\n", - " \"\"\"\n", - " for i in range(n):\n", - " petal(radius, angle)\n", - " left(360.0/n)" - ] - }, - { - "cell_type": "markdown", - "id": "8fe06dea", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "You can use the following code to test your functions.\n", - "\n", - "Because the solution draws a lot of small line segments, it tends to slow down as it runs.\n", - "To avoid that, you can add the keyword argument `auto_render=False` to avoid drawing after every step, and then call the `render` function at the end to show the result.\n", - "\n", - "While you are debugging, you might want to remove `auto_render=False`." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "04193da5", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "from jupyturtle import render\n", - "\n", - "turtle = make_turtle(auto_render=False)\n", - "\n", - "jump(-60)\n", - "n = 7\n", - "radius = 60\n", - "angle = 60\n", - "flower(n, radius, angle)\n", - "\n", - "jump(120)\n", - "n = 9\n", - "radius = 40\n", - "angle = 85\n", - "flower(n, radius, angle)\n", - "\n", - "render()" - ] - }, - { - "cell_type": "code", - "execution_count": 53, - "id": "4cfea3b0", - "metadata": { - "tags": [ - "remove-cell", - "solution" - ] - }, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - " \n", - "\n", - "\n", - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "with open(\"jupyturtle_flower.svg\", \"w\") as svg_file:\n", - " svg_content = turtle.get_SVG()\n", - " svg_file.write(svg_content)" - ] - }, - { - "cell_type": "markdown", - "id": "9d9f35d1", - "metadata": {}, - "source": [ - "### Ask a virtual assistant\n", - "\n", - "There are several modules like `jupyturtle` in Python, and the one we used in this chapter has been customized for this book.\n", - "So if you ask a virtual assistant for help, it won't know which module to use.\n", - "But if you give it a few examples to work with, it can probably figure it out.\n", - "For example, try this prompt and see if it can write a function that draws a spiral:\n", - "\n", - "```\n", - "The following program uses a turtle graphics module to draw a circle:\n", - "\n", - "from jupyturtle import make_turtle, forward, left\n", - "import math\n", - "\n", - "def polygon(n, length):\n", - " angle = 360 / n\n", - " for i in range(n):\n", - " forward(length)\n", - " left(angle)\n", - " \n", - "def circle(radius):\n", - " circumference = 2 * math.pi * radius\n", - " n = 30\n", - " length = circumference / n\n", - " polygon(n, length)\n", - " \n", - "make_turtle(delay=0)\n", - "circle(30)\n", - "\n", - "Write a function that draws a spiral.\n", - "```" - ] - }, - { - "cell_type": "markdown", - "id": "7beb2afe", - "metadata": {}, - "source": [ - "Keep in mind that the result might use features we have not seen yet, and it might have errors.\n", - "Copy the code from the VA and see if you can get it working.\n", - "If you didn't get what you wanted, try modifying the prompt.\n" - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "id": "46d3151c", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - " \n", - "\n", - "\n", - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Solution\n", - "\n", - "def spiral(length, angle):\n", - " turtle = make_turtle(delay=0)\n", - " for _ in range(100):\n", - " forward(length)\n", - " right(angle)\n", - " length += 1 # Increase the length for each segment\n", - "\n", - "spiral(5, 90)" - ] - }, - { - "cell_type": "code", - "execution_count": 48, - "id": "186c7fbc", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - " \n", - "\n", - "\n", - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Solution\n", - "\n", - "# With the additional prompt: \n", - "# make that a circular spiral, and don't change the name of the module\n", - "\n", - "import math\n", - "\n", - "def circular_spiral(radius, angle):\n", - " turtle = make_turtle(delay=0, width=500, height=500)\n", - " rotations = 5\n", - " distance = 2 * math.pi * radius / 360 # Calculate the distance for each degree of rotation\n", - " for _ in range(rotations * 360):\n", - " forward(distance)\n", - " left(angle)\n", - " radius += 0.1 # Increase the radius for each segment\n", - " distance = 2 * math.pi * radius / 360 # Recalculate the distance for the updated radius\n", - "\n", - "circular_spiral(50, 1)" - ] - }, - { - "cell_type": "markdown", - "id": "a7f4edf8", - "metadata": { - "tags": [] - }, - "source": [ - "[Think Python: 3rd Edition](https://allendowney.github.io/ThinkPython/index.html)\n", - "\n", - "Copyright 2024 [Allen B. Downey](https://allendowney.com)\n", - "\n", - "Code license: [MIT License](https://mit-license.org/)\n", - "\n", - "Text license: [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-nc-sa/4.0/)" - ] - } - ], - "metadata": { - "celltoolbar": "Tags", - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.11" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/soln/chap05.ipynb b/soln/chap05.ipynb deleted file mode 100644 index 749a414..0000000 --- a/soln/chap05.ipynb +++ /dev/null @@ -1,3596 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "1331faa1", - "metadata": {}, - "source": [ - "You can order print and ebook versions of *Think Python 3e* from\n", - "[Bookshop.org](https://bookshop.org/a/98697/9781098155438) and\n", - "[Amazon](https://www.amazon.com/_/dp/1098155432?smid=ATVPDKIKX0DER&_encoding=UTF8&tag=oreilly20-20&_encoding=UTF8&tag=greenteapre01-20&linkCode=ur2&linkId=e2a529f94920295d27ec8a06e757dc7c&camp=1789&creative=9325)." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "8119ba50", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "from os.path import basename, exists\n", - "\n", - "def download(url):\n", - " filename = basename(url)\n", - " if not exists(filename):\n", - " from urllib.request import urlretrieve\n", - "\n", - " local, _ = urlretrieve(url, filename)\n", - " print(\"Downloaded \" + str(local))\n", - " return filename\n", - "\n", - "download('https://github.com/AllenDowney/ThinkPython/raw/v3/thinkpython.py');\n", - "download('https://github.com/AllenDowney/ThinkPython/raw/v3/diagram.py');\n", - "download('https://github.com/ramalho/jupyturtle/releases/download/2024-03/jupyturtle.py');\n", - "\n", - "import thinkpython" - ] - }, - { - "cell_type": "markdown", - "id": "75b60d6c", - "metadata": {}, - "source": [ - "# Conditionals and Recursion\n", - "\n", - "The main topic of this chapter is the `if` statement, which executes different code depending on the state of the program.\n", - "And with the `if` statement we'll be able to explore one of the most powerful ideas in computing, **recursion**.\n", - "\n", - "But we'll start with three new features: the modulus operator, boolean expressions, and logical operators." - ] - }, - { - "cell_type": "markdown", - "id": "4ab7caf4", - "metadata": {}, - "source": [ - "## Integer division and modulus\n", - "\n", - "Recall that the integer division operator, `//`, divides two numbers and rounds\n", - "down to an integer.\n", - "For example, suppose the run time of a movie is 105 minutes. \n", - "You might want to know how long that is in hours.\n", - "Conventional division returns a floating-point number:" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "30bd0ba7", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "1.75" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "minutes = 105\n", - "minutes / 60" - ] - }, - { - "cell_type": "markdown", - "id": "3f224403", - "metadata": {}, - "source": [ - "But we don't normally write hours with decimal points.\n", - "Integer division returns the integer number of hours, rounding down:" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "451e3198", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "1" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "minutes = 105\n", - "hours = minutes // 60\n", - "hours" - ] - }, - { - "cell_type": "markdown", - "id": "bfa9b0cf", - "metadata": {}, - "source": [ - "To get the remainder, you could subtract off one hour in minutes:" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "64b92876", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "45" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "remainder = minutes - hours * 60\n", - "remainder" - ] - }, - { - "cell_type": "markdown", - "id": "05caf27f", - "metadata": {}, - "source": [ - "Or you could use the **modulus operator**, `%`, which divides two numbers and returns the remainder." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "0a593844", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "45" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "remainder = minutes % 60\n", - "remainder" - ] - }, - { - "cell_type": "markdown", - "id": "18c1e0d0", - "metadata": {}, - "source": [ - "The modulus operator is more useful than it might seem.\n", - "For example, it can check whether one number is divisible by another -- if `x % y` is zero, then `x` is divisible by `y`.\n", - "\n", - "Also, it can extract the right-most digit or digits from a number.\n", - "For example, `x % 10` yields the right-most digit of `x` (in base 10).\n", - "Similarly, `x % 100` yields the last two digits." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "5bd341f7", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "3" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "x = 123\n", - "x % 10" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "367fce0c", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "23" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "x % 100" - ] - }, - { - "cell_type": "markdown", - "id": "f2344fc0", - "metadata": {}, - "source": [ - "Finally, the modulus operator can do \"clock arithmetic\".\n", - "For example, if an event starts at 11 AM and lasts three hours, we can use the modulus operator to figure out what time it ends." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "db33a44d", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "2" - ] - }, - "execution_count": 1, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "start = 11\n", - "duration = 3\n", - "end = (start + duration) % 12\n", - "end" - ] - }, - { - "cell_type": "markdown", - "id": "351c30df", - "metadata": {}, - "source": [ - "The event would end at 2 PM." - ] - }, - { - "cell_type": "markdown", - "id": "5ed1b58b", - "metadata": {}, - "source": [ - "## Boolean Expressions\n", - "\n", - "A **boolean expression** is an expression that is either true or false.\n", - "For example, the following expressions use the equals operator, `==`, which compares two values and produces `True` if they are equal and `False` otherwise:" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "85589d38", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "5 == 5" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "3c9c8f61", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "5 == 7" - ] - }, - { - "cell_type": "markdown", - "id": "41fbc642", - "metadata": {}, - "source": [ - "A common error is to use a single equal sign (`=`) instead of a double equal sign (`==`).\n", - "Remember that `=` assigns a value to a variable and `==` compares two values. " - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "c0e51bcc", - "metadata": {}, - "outputs": [], - "source": [ - "x = 5\n", - "y = 7" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "a6be44db", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "x == y" - ] - }, - { - "cell_type": "markdown", - "id": "d3ec6b48", - "metadata": {}, - "source": [ - "`True` and `False` are special values that belong to the type `bool`;\n", - "they are not strings:" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "90fb1c9c", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "bool" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "type(True)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "c1cae572", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "bool" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "type(False)" - ] - }, - { - "cell_type": "markdown", - "id": "451b2e8d", - "metadata": {}, - "source": [ - "The `==` operator is one of the **relational operators**; the others are:" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "c901fe2b", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "x != y # x is not equal to y" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "1457949f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "x > y # x is greater than y" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "56bb7eed", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "x < y # x is less than to y" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "1cdcc7ab", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "x >= y # x is greater than or equal to y" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "df1a1287", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "x <= y # x is less than or equal to y" - ] - }, - { - "cell_type": "markdown", - "id": "db5a9477", - "metadata": {}, - "source": [ - "## Logical operators\n", - "\n", - "To combine boolean values into expressions, we can use **logical operators**.\n", - "The most common are `and`, ` or`, and `not`.\n", - "The meaning of these operators is similar to their meaning in English.\n", - "For example, the value of the following expression is `True` only if `x` is greater than `0` *and* less than `10`." - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "848c5f2c", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "x > 0 and x < 10" - ] - }, - { - "cell_type": "markdown", - "id": "e8c14026", - "metadata": {}, - "source": [ - "The following expression is `True` if *either or both* of the conditions is true, that is, if the number is divisible by 2 *or* 3:" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "eb66ee6a", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "x % 2 == 0 or x % 3 == 0" - ] - }, - { - "cell_type": "markdown", - "id": "3bd0ef52", - "metadata": {}, - "source": [ - "Finally, the `not` operator negates a boolean expression, so the following expression is `True` if `x > y` is `False`." - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "6de8b97c", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "not x > y" - ] - }, - { - "cell_type": "markdown", - "id": "fc6098c2", - "metadata": {}, - "source": [ - "Strictly speaking, the operands of a logical operator should be boolean expressions, but Python is not very strict.\n", - "Any nonzero number is interpreted as `True`:" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "add63275", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "42 and True" - ] - }, - { - "cell_type": "markdown", - "id": "102ceab9", - "metadata": {}, - "source": [ - "This flexibility can be useful, but there are some subtleties to it that can be confusing.\n", - "You might want to avoid it." - ] - }, - { - "cell_type": "markdown", - "id": "6b0f2dc1", - "metadata": {}, - "source": [ - "## if statements\n", - "\n", - "In order to write useful programs, we almost always need the ability to\n", - "check conditions and change the behavior of the program accordingly.\n", - "**Conditional statements** give us this ability. The simplest form is\n", - "the `if` statement:" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "80937bef", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "x is positive\n" - ] - } - ], - "source": [ - "if x > 0:\n", - " print('x is positive')" - ] - }, - { - "cell_type": "markdown", - "id": "973f705e", - "metadata": {}, - "source": [ - "`if` is a Python keyword.\n", - "`if` statements have the same structure as function definitions: a\n", - "header followed by an indented statement or sequence of statements called a **block**.\n", - "\n", - "The boolean expression after `if` is called the **condition**.\n", - "If it is true, the statements in the indented block run. If not, they don't.\n", - "\n", - "There is no limit to the number of statements that can appear in the block, but there has to be at least one.\n", - "Occasionally, it is useful to have a block that does nothing -- usually as a place keeper for code you haven't written yet.\n", - "In that case, you can use the `pass` statement, which does nothing." - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "bc74a318", - "metadata": {}, - "outputs": [], - "source": [ - "if x < 0:\n", - " pass # TODO: need to handle negative values!" - ] - }, - { - "cell_type": "markdown", - "id": "adf3f6c5", - "metadata": {}, - "source": [ - "The word `TODO` in a comment is a conventional reminder that there's something you need to do later." - ] - }, - { - "cell_type": "markdown", - "id": "eb39bcd9", - "metadata": {}, - "source": [ - "## The `else` clause\n", - "\n", - "An `if` statement can have a second part, called an `else` clause.\n", - "The syntax looks like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "d16f49f2", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "x is odd\n" - ] - } - ], - "source": [ - "if x % 2 == 0:\n", - " print('x is even')\n", - "else:\n", - " print('x is odd')" - ] - }, - { - "cell_type": "markdown", - "id": "e7dc8943", - "metadata": {}, - "source": [ - "If the condition is true, the first indented statement runs; otherwise, the second indented statement runs.\n", - "\n", - "In this example, if `x` is even, the remainder when `x` is divided by `2` is `0`, so the condition is true and the program displays `x is even`.\n", - "If `x` is odd, the remainder is `1`, so the condition\n", - "is false, and the program displays `x is odd`.\n", - "\n", - "Since the condition must be true or false, exactly one of the alternatives will run. \n", - "The alternatives are called **branches**." - ] - }, - { - "cell_type": "markdown", - "id": "20c8adb6", - "metadata": {}, - "source": [ - "## Chained conditionals\n", - "\n", - "Sometimes there are more than two possibilities and we need more than two branches.\n", - "One way to express a computation like that is a **chained conditional**, which includes an `elif` clause." - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "309fccb8", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "x is less than y\n" - ] - } - ], - "source": [ - "if x < y:\n", - " print('x is less than y')\n", - "elif x > y:\n", - " print('x is greater than y')\n", - "else:\n", - " print('x and y are equal')" - ] - }, - { - "cell_type": "markdown", - "id": "46916379", - "metadata": {}, - "source": [ - "`elif` is an abbreviation of \"else if\".\n", - "There is no limit on the number of `elif` clauses.\n", - "If there is an `else` clause, it has to be at the end, but there doesn't have to be\n", - "one.\n", - "\n", - "Each condition is checked in order.\n", - "If the first is false, the next is checked, and so on.\n", - "If one of them is true, the corresponding branch runs and the `if` statement ends.\n", - "Even if more than one condition is true, only the first true branch runs." - ] - }, - { - "cell_type": "markdown", - "id": "e0c0b9dd", - "metadata": {}, - "source": [ - "## Nested Conditionals\n", - "\n", - "One conditional can also be nested within another.\n", - "We could have written the example in the previous section like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "d77539cf", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "x is less than y\n" - ] - } - ], - "source": [ - "if x == y:\n", - " print('x and y are equal')\n", - "else:\n", - " if x < y:\n", - " print('x is less than y')\n", - " else:\n", - " print('x is greater than y')" - ] - }, - { - "cell_type": "markdown", - "id": "29f67a0a", - "metadata": {}, - "source": [ - "The outer `if` statement contains two branches. \n", - "The first branch contains a simple statement. The second branch contains another `if` statement, which has two branches of its own.\n", - "Those two branches are both simple statements, although they could have been conditional statements as well.\n", - "\n", - "Although the indentation of the statements makes the structure apparent, **nested conditionals** can be difficult to read.\n", - "I suggest you avoid them when you can.\n", - "\n", - "Logical operators often provide a way to simplify nested conditional statements.\n", - "Here's an example with a nested conditional." - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "91cac1a0", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "x is a positive single-digit number.\n" - ] - } - ], - "source": [ - "if 0 < x:\n", - " if x < 10:\n", - " print('x is a positive single-digit number.')" - ] - }, - { - "cell_type": "markdown", - "id": "5292eb11", - "metadata": {}, - "source": [ - "The `print` statement runs only if we make it past both conditionals, so we get the same effect with the `and` operator." - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "f8ba1724", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "x is a positive single-digit number.\n" - ] - } - ], - "source": [ - "if 0 < x and x < 10:\n", - " print('x is a positive single-digit number.')" - ] - }, - { - "cell_type": "markdown", - "id": "dd8e808a", - "metadata": {}, - "source": [ - "For this kind of condition, Python provides a more concise option:" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "id": "014cd6f4", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "x is a positive single-digit number.\n" - ] - } - ], - "source": [ - "if 0 < x < 10:\n", - " print('x is a positive single-digit number.')" - ] - }, - { - "cell_type": "markdown", - "id": "db583cd9", - "metadata": {}, - "source": [ - "## Recursion\n", - "\n", - "It is legal for a function to call itself.\n", - "It may not be obvious why that is a good thing, but it turns out to be one of the most magical things a program can do.\n", - "Here's an example." - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "id": "17904e98", - "metadata": {}, - "outputs": [], - "source": [ - "def countdown(n):\n", - " if n <= 0:\n", - " print('Blastoff!')\n", - " else:\n", - " print(n)\n", - " countdown(n-1)" - ] - }, - { - "cell_type": "markdown", - "id": "c88e0dc7", - "metadata": {}, - "source": [ - "If `n` is 0 or negative, `countdown` outputs the word, \"Blastoff!\" Otherwise, it\n", - "outputs `n` and then calls itself, passing `n-1` as an argument.\n", - "\n", - "Here's what happens when we call this function with the argument `3`." - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "id": "6c1e32e2", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "3\n", - "2\n", - "1\n", - "Blastoff!\n" - ] - } - ], - "source": [ - "countdown(3)" - ] - }, - { - "cell_type": "markdown", - "id": "3f3c87ec", - "metadata": {}, - "source": [ - "The execution of `countdown` begins with `n=3`, and since `n` is greater\n", - "than `0`, it displays `3`, and then calls itself\\...\n", - "\n", - "> The execution of `countdown` begins with `n=2`, and since `n` is\n", - "> greater than `0`, it displays `2`, and then calls itself\\...\n", - ">\n", - "> > The execution of `countdown` begins with `n=1`, and since `n` is\n", - "> > greater than `0`, it displays `1`, and then calls itself\\...\n", - "> >\n", - "> > > The execution of `countdown` begins with `n=0`, and since `n` is\n", - "> > > not greater than `0`, it displays \"Blastoff!\" and returns.\n", - "> >\n", - "> > The `countdown` that got `n=1` returns.\n", - ">\n", - "> The `countdown` that got `n=2` returns.\n", - "\n", - "The `countdown` that got `n=3` returns." - ] - }, - { - "cell_type": "markdown", - "id": "782e95bb", - "metadata": {}, - "source": [ - "A function that calls itself is **recursive**.\n", - "As another example, we can write a function that prints a string `n` times." - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "id": "1bb13f8e", - "metadata": {}, - "outputs": [], - "source": [ - "def print_n_times(string, n):\n", - " if n > 0:\n", - " print(string)\n", - " print_n_times(string, n-1)" - ] - }, - { - "cell_type": "markdown", - "id": "73d07c17", - "metadata": {}, - "source": [ - "If `n` is positive, `print_n_times` displays the value of `string` and then calls itself, passing along `string` and `n-1` as arguments.\n", - "\n", - "If `n` is `0` or negative, the condition is false and `print_n_times` does nothing.\n", - "\n", - "Here's how it works." - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "id": "e7b68c57", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Spam \n", - "Spam \n", - "Spam \n", - "Spam \n" - ] - } - ], - "source": [ - "print_n_times('Spam ', 4)" - ] - }, - { - "cell_type": "markdown", - "id": "1fb55a78", - "metadata": {}, - "source": [ - "For simple examples like this, it is probably easier to use a `for`\n", - "loop. But we will see examples later that are hard to write with a `for`\n", - "loop and easy to write with recursion, so it is good to start early." - ] - }, - { - "cell_type": "markdown", - "id": "c652c739", - "metadata": {}, - "source": [ - "## Stack diagrams for recursive functions\n", - "\n", - "Here's a stack diagram that shows the frames created when we called `countdown` with `n = 3`." - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "id": "643148da", - "metadata": { - "tags": [ - "remove-input" - ] - }, - "outputs": [], - "source": [ - "from diagram import make_frame, Stack\n", - "\n", - "frames = []\n", - "for n in [3,2,1,0]:\n", - " d = dict(n=n)\n", - " frame = make_frame(d, name='countdown', dy=-0.3, loc='left')\n", - " frames.append(frame)\n", - "\n", - "stack = Stack(frames, dy=-0.5)" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "id": "a8510119", - "metadata": { - "tags": [ - "remove-input" - ] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from diagram import diagram, adjust\n", - "\n", - "\n", - "width, height, x, y = [1.74, 2.04, 1.05, 1.77]\n", - "ax = diagram(width, height)\n", - "bbox = stack.draw(ax, x, y)\n", - "# adjust(x, y, bbox)" - ] - }, - { - "cell_type": "markdown", - "id": "9282331b", - "metadata": {}, - "source": [ - "The four `countdown` frames have different values for the parameter `n`.\n", - "The bottom of the stack, where `n=0`, is called the **base case**.\n", - "It does not make a recursive call, so there are no more frames." - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "id": "a2a376b3", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from diagram import make_frame, Stack\n", - "from diagram import diagram, adjust\n", - "\n", - "frames = []\n", - "for n in [2,1,0]:\n", - " d = dict(string='Hello', n=n)\n", - " frame = make_frame(d, name='print_n_times', dx=1.3, loc='left')\n", - " frames.append(frame)\n", - "\n", - "stack = Stack(frames, dy=-0.5)\n", - "\n", - "width, height, x, y = [3.53, 1.54, 1.54, 1.27]\n", - "ax = diagram(width, height)\n", - "bbox = stack.draw(ax, x, y)\n", - "# adjust(x, y, bbox)" - ] - }, - { - "cell_type": "markdown", - "id": "37bbc2b8", - "metadata": {}, - "source": [ - "## Infinite recursion\n", - "\n", - "If a recursion never reaches a base case, it goes on making recursive\n", - "calls forever, and the program never terminates. This is known as\n", - "**infinite recursion**, and it is generally not a good idea.\n", - "Here's a minimal function with an infinite recursion." - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "id": "af487feb", - "metadata": {}, - "outputs": [], - "source": [ - "def recurse():\n", - " recurse()" - ] - }, - { - "cell_type": "markdown", - "id": "450a20ac", - "metadata": {}, - "source": [ - "Every time `recurse` is called, it calls itself, which creates another frame.\n", - "In Python, there is a limit to the number of frames that can be on the stack at the same time.\n", - "If a program exceeds the limit, it causes a runtime error." - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "id": "e5d6c732", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Exception reporting mode: Context\n" - ] - } - ], - "source": [ - "%xmode Context" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "id": "22454b51", - "metadata": { - "tags": [ - "raises-exception" - ] - }, - "outputs": [ - { - "ename": "RecursionError", - "evalue": "maximum recursion depth exceeded", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mRecursionError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[40], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mrecurse\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n", - "Cell \u001b[0;32mIn[38], line 2\u001b[0m, in \u001b[0;36mrecurse\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mrecurse\u001b[39m():\n\u001b[0;32m----> 2\u001b[0m \u001b[43mrecurse\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n", - "Cell \u001b[0;32mIn[38], line 2\u001b[0m, in \u001b[0;36mrecurse\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mrecurse\u001b[39m():\n\u001b[0;32m----> 2\u001b[0m \u001b[43mrecurse\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n", - " \u001b[0;31m[... skipping similar frames: recurse at line 2 (2957 times)]\u001b[0m\n", - "Cell \u001b[0;32mIn[38], line 2\u001b[0m, in \u001b[0;36mrecurse\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mrecurse\u001b[39m():\n\u001b[0;32m----> 2\u001b[0m \u001b[43mrecurse\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n", - "\u001b[0;31mRecursionError\u001b[0m: maximum recursion depth exceeded" - ] - } - ], - "source": [ - "%%expect RecursionError\n", - "\n", - "recurse()" - ] - }, - { - "cell_type": "markdown", - "id": "39fc5c31", - "metadata": {}, - "source": [ - "The traceback indicates that there were almost 3000 frames on the stack when the error occurred.\n", - "\n", - "If you encounter an infinite recursion by accident, review your function to confirm that there is a base case that does not make a recursive call. And if there is a base case, check whether you are guaranteed to reach it." - ] - }, - { - "cell_type": "markdown", - "id": "45299414", - "metadata": {}, - "source": [ - "## Keyboard input\n", - "\n", - "The programs we have written so far accept no input from the user. They\n", - "just do the same thing every time.\n", - "\n", - "Python provides a built-in function called `input` that stops the\n", - "program and waits for the user to type something. When the user presses\n", - "*Return* or *Enter*, the program resumes and `input` returns what the user\n", - "typed as a string." - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "id": "ac0fb4a6", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "# This cell replaces the input function so the notebook runs without pausing\n", - "def input():\n", - " return" - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "id": "f6a2e4d6", - "metadata": {}, - "outputs": [], - "source": [ - "text = input()" - ] - }, - { - "cell_type": "markdown", - "id": "acf9ec53", - "metadata": {}, - "source": [ - "Before getting input from the user, you might want to display a prompt\n", - "telling the user what to type. `input` can take a prompt as an argument:" - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "id": "e0600e5e", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "# This cell replaces the input function so the notebook runs without pausing\n", - "def input(prompt):\n", - " print(prompt, end='')\n", - " reply = 'It is Arthur, King of the Britons'\n", - " print(reply)\n", - " return reply " - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "id": "964346f0", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "What...is your name?\n", - "It is Arthur, King of the Britons\n" - ] - }, - { - "data": { - "text/plain": [ - "'It is Arthur, King of the Britons'" - ] - }, - "execution_count": 44, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "name = input('What...is your name?\\n')\n", - "name" - ] - }, - { - "cell_type": "markdown", - "id": "1b754b39", - "metadata": {}, - "source": [ - "The sequence `\\n` at the end of the prompt represents a **newline**, which is a special character that causes a line break -- that way the user's input appears below the prompt.\n", - "\n", - "If you expect the user to type an integer, you can use the `int` function to convert the return value to `int`." - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "id": "590983cd", - "metadata": { - "tags": [ - "remove-cell", - "raises-exception" - ] - }, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "# This cell replaces the input function so the notebook runs without pausing\n", - "def input(prompt):\n", - " print(prompt, end='')\n", - " reply = 'What do you mean: an African or European swallow?'\n", - " print(reply)\n", - " return reply " - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "id": "60a484d7", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "What...is the airspeed velocity of an unladen swallow?\n", - "What do you mean: an African or European swallow?\n" - ] - }, - { - "data": { - "text/plain": [ - "'What do you mean: an African or European swallow?'" - ] - }, - "execution_count": 46, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "prompt = 'What...is the airspeed velocity of an unladen swallow?\\n'\n", - "speed = input(prompt)\n", - "speed" - ] - }, - { - "cell_type": "markdown", - "id": "0a65f2af", - "metadata": {}, - "source": [ - "But if they type something that's not an integer, you'll get a runtime error." - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "id": "8d3d6049", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Exception reporting mode: Minimal\n" - ] - } - ], - "source": [ - "%xmode Minimal" - ] - }, - { - "cell_type": "code", - "execution_count": 48, - "id": "a04e3016", - "metadata": { - "tags": [ - "raises-exception" - ] - }, - "outputs": [ - { - "ename": "ValueError", - "evalue": "invalid literal for int() with base 10: 'What do you mean: an African or European swallow?'", - "output_type": "error", - "traceback": [ - "\u001b[0;31mValueError\u001b[0m\u001b[0;31m:\u001b[0m invalid literal for int() with base 10: 'What do you mean: an African or European swallow?'\n" - ] - } - ], - "source": [ - "%%expect ValueError\n", - "\n", - "int(speed)" - ] - }, - { - "cell_type": "markdown", - "id": "a4ce3ed5", - "metadata": {}, - "source": [ - "We will see how to handle this kind of error later." - ] - }, - { - "cell_type": "markdown", - "id": "14c1d3dc", - "metadata": {}, - "source": [ - "## Debugging\n", - "\n", - "When a syntax or runtime error occurs, the error message contains a lot\n", - "of information, but it can be overwhelming. The most useful parts are\n", - "usually:\n", - "\n", - "- What kind of error it was, and\n", - "\n", - "- Where it occurred.\n", - "\n", - "Syntax errors are usually easy to find, but there are a few gotchas.\n", - "Errors related to spaces and tabs can be tricky because they are invisible\n", - "and we are used to ignoring them." - ] - }, - { - "cell_type": "code", - "execution_count": 49, - "id": "b82642f6", - "metadata": { - "tags": [ - "raises-exception" - ] - }, - "outputs": [ - { - "ename": "IndentationError", - "evalue": "unexpected indent (2365500740.py, line 2)", - "output_type": "error", - "traceback": [ - "\u001b[0;36m Cell \u001b[0;32mIn[49], line 2\u001b[0;36m\u001b[0m\n\u001b[0;31m y = 6\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mIndentationError\u001b[0m\u001b[0;31m:\u001b[0m unexpected indent\n" - ] - } - ], - "source": [ - "%%expect IndentationError\n", - "x = 5\n", - " y = 6" - ] - }, - { - "cell_type": "markdown", - "id": "d1d06263", - "metadata": {}, - "source": [ - "In this example, the problem is that the second line is indented by one space.\n", - "But the error message points to `y`, which is misleading.\n", - "Error messages indicate where the problem was discovered, but the actual error might be earlier in the code.\n", - "\n", - "The same is true of runtime errors. \n", - "For example, suppose you are trying to convert a ratio to decibels, like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "id": "583ef53c", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Exception reporting mode: Context\n" - ] - } - ], - "source": [ - "%xmode Context" - ] - }, - { - "cell_type": "code", - "execution_count": 51, - "id": "2f4b6082", - "metadata": { - "tags": [ - "raises-exception" - ] - }, - "outputs": [ - { - "ename": "ValueError", - "evalue": "math domain error", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[51], line 5\u001b[0m\n\u001b[1;32m 3\u001b[0m denominator \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m10\u001b[39m\n\u001b[1;32m 4\u001b[0m ratio \u001b[38;5;241m=\u001b[39m numerator \u001b[38;5;241m/\u001b[39m\u001b[38;5;241m/\u001b[39m denominator\n\u001b[0;32m----> 5\u001b[0m decibels \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m10\u001b[39m \u001b[38;5;241m*\u001b[39m \u001b[43mmath\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mlog10\u001b[49m\u001b[43m(\u001b[49m\u001b[43mratio\u001b[49m\u001b[43m)\u001b[49m\n", - "\u001b[0;31mValueError\u001b[0m: math domain error" - ] - } - ], - "source": [ - "%%expect ValueError\n", - "import math\n", - "numerator = 9\n", - "denominator = 10\n", - "ratio = numerator // denominator\n", - "decibels = 10 * math.log10(ratio)" - ] - }, - { - "cell_type": "markdown", - "id": "55914374", - "metadata": {}, - "source": [ - "The error message indicates line 5, but there is nothing wrong with that line.\n", - "The problem is in line 4, which uses integer division instead of floating-point division -- as a result, the value of `ratio` is `0`.\n", - "When we call `math.log10`, we get a `ValueError` with the message `math domain error`, because `0` is not in the \"domain\" of valid arguments for `math.log10`, because the logarithm of `0` is undefined.\n", - "\n", - "In general, you should take the time to read error messages carefully, but don't assume that everything they say is correct." - ] - }, - { - "cell_type": "markdown", - "id": "8ffe690e", - "metadata": {}, - "source": [ - "## Glossary\n", - "\n", - "**recursion:**\n", - "The process of calling the function that is currently executing.\n", - "\n", - "**modulus operator:**\n", - "An operator, `%`, that works on integers and returns the remainder when one number is divided by another.\n", - "\n", - "**boolean expression:**\n", - "An expression whose value is either `True` or `False`.\n", - "\n", - "**relational operator:**\n", - "One of the operators that compares its operands: `==`, `!=`, `>`, `<`, `>=`, and `<=`.\n", - "\n", - "**logical operator:**\n", - "One of the operators that combines boolean expressions, including `and`, `or`, and `not`.\n", - "\n", - "**conditional statement:**\n", - "A statement that controls the flow of execution depending on some condition.\n", - "\n", - "**condition:**\n", - "The boolean expression in a conditional statement that determines which branch runs.\n", - "\n", - "**block:**\n", - "One or more statements indented to indicate they are part of another statement.\n", - "\n", - "**branch:**\n", - "One of the alternative sequences of statements in a conditional statement.\n", - "\n", - "**chained conditional:**\n", - "A conditional statement with a series of alternative branches.\n", - "\n", - "**nested conditional:**\n", - "A conditional statement that appears in one of the branches of another conditional statement.\n", - "\n", - "**recursive:**\n", - "A function that calls itself is recursive.\n", - "\n", - "**base case:**\n", - "A conditional branch in a recursive function that does not make a recursive call.\n", - "\n", - "**infinite recursion:**\n", - "A recursion that doesn't have a base case, or never reaches it.\n", - "Eventually, an infinite recursion causes a runtime error.\n", - "\n", - "**newline:**\n", - "A character that creates a line break between two parts of a string." - ] - }, - { - "cell_type": "markdown", - "id": "8d783953", - "metadata": {}, - "source": [ - "## Exercises" - ] - }, - { - "cell_type": "code", - "execution_count": 52, - "id": "66aae3cb", - "metadata": { - "tags": [ - "remove-print" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Exception reporting mode: Verbose\n" - ] - } - ], - "source": [ - "# This cell tells Jupyter to provide detailed debugging information\n", - "# when a runtime error occurs. Run it before working on the exercises.\n", - "\n", - "%xmode Verbose" - ] - }, - { - "cell_type": "markdown", - "id": "02f9f1d7", - "metadata": {}, - "source": [ - "### Ask a virtual assistant\n", - "\n", - "* Ask a virtual assistant, \"What are some uses of the modulus operator?\"\n", - "\n", - "* Python provides operators to compute the logical operations `and`, `or`, and `not`, but it doesn't have an operator that computes the exclusive `or` operation, usually written `xor`. Ask an assistant \"What is the logical xor operation and how do I compute it in Python?\"\n", - "\n", - "In this chapter, we saw two ways to write an `if` statement with three branches, using a chained conditional or a nested conditional.\n", - "You can use a virtual assistant to convert from one to the other.\n", - "For example, ask a VA, \"Convert this statement to a chained conditional.\"" - ] - }, - { - "cell_type": "code", - "execution_count": 53, - "id": "ade1ecb4", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "x = 5\n", - "y = 7" - ] - }, - { - "cell_type": "code", - "execution_count": 54, - "id": "dc7026c2", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "x is less than y\n" - ] - } - ], - "source": [ - "if x == y:\n", - " print('x and y are equal')\n", - "else:\n", - " if x < y:\n", - " print('x is less than y')\n", - " else:\n", - " print('x is greater than y')" - ] - }, - { - "cell_type": "markdown", - "id": "9c2a8466", - "metadata": {}, - "source": [ - "Ask a VA, \"Rewrite this statement with a single conditional.\"" - ] - }, - { - "cell_type": "code", - "execution_count": 55, - "id": "1fd919ea", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "x is a positive single-digit number.\n" - ] - } - ], - "source": [ - "if 0 < x:\n", - " if x < 10:\n", - " print('x is a positive single-digit number.')" - ] - }, - { - "cell_type": "markdown", - "id": "e0fbed08", - "metadata": {}, - "source": [ - "See if a VA can simplify this unnecessary complexity." - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "id": "1e71702e", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "x is a positive single-digit number.\n" - ] - } - ], - "source": [ - "if not x <= 0 and not x >= 10:\n", - " print('x is a positive single-digit number.')" - ] - }, - { - "cell_type": "markdown", - "id": "74ef776d", - "metadata": {}, - "source": [ - "Here's an attempt at a recursive function that counts down by two." - ] - }, - { - "cell_type": "code", - "execution_count": 57, - "id": "84cbd5a4", - "metadata": {}, - "outputs": [], - "source": [ - "def countdown_by_two(n):\n", - " if n == 0:\n", - " print('Blastoff!')\n", - " else:\n", - " print(n)\n", - " countdown_by_two(n-2)" - ] - }, - { - "cell_type": "markdown", - "id": "77178e79", - "metadata": {}, - "source": [ - "It seems to work." - ] - }, - { - "cell_type": "code", - "execution_count": 58, - "id": "b0918789", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "6\n", - "4\n", - "2\n", - "Blastoff!\n" - ] - } - ], - "source": [ - "countdown_by_two(6)" - ] - }, - { - "cell_type": "markdown", - "id": "c9d3a8dc", - "metadata": {}, - "source": [ - "But it has an error. Ask a virtual assistant what's wrong and how to fix it.\n", - "Paste the solution it provides back here and test it." - ] - }, - { - "cell_type": "markdown", - "id": "240a3888", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "The `time` module provides a function, also called `time`, that returns\n", - "returns the number of seconds since the \"Unix epoch\", which is January 1, 1970, 00:00:00 UTC (Coordinated Universal Time)." - ] - }, - { - "cell_type": "code", - "execution_count": 59, - "id": "1e7a2c07", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "1716394001.8466134" - ] - }, - "execution_count": 59, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from time import time\n", - "\n", - "now = time()\n", - "now" - ] - }, - { - "cell_type": "markdown", - "id": "054c3197", - "metadata": {}, - "source": [ - "Use integer division and the modulus operator to compute the number of days since January 1, 1970 and the current time of day in hours, minutes, and seconds." - ] - }, - { - "cell_type": "markdown", - "id": "310196ba", - "metadata": { - "tags": [ - "remove-print" - ] - }, - "source": [ - "You can read more about the `time` module at ." - ] - }, - { - "cell_type": "code", - "execution_count": 60, - "id": "c5fa57b2", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "19865.0" - ] - }, - "execution_count": 60, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Solution\n", - "\n", - "seconds_per_day = 24 * 60 * 60\n", - "days = now // seconds_per_day\n", - "days" - ] - }, - { - "cell_type": "code", - "execution_count": 61, - "id": "322ddd0a", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "16.0" - ] - }, - "execution_count": 61, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Solution\n", - "\n", - "remainder = now % seconds_per_day\n", - "\n", - "hours = remainder // 3600\n", - "hours" - ] - }, - { - "cell_type": "code", - "execution_count": 62, - "id": "fc43df7d", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "6.0" - ] - }, - "execution_count": 62, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Solution\n", - "\n", - "remainder = remainder % 3600\n", - "\n", - "minutes = remainder // 60\n", - "minutes" - ] - }, - { - "cell_type": "code", - "execution_count": 63, - "id": "0184d21a", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "41.84661340713501" - ] - }, - "execution_count": 63, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Solution\n", - "\n", - "seconds = remainder % 60\n", - "seconds" - ] - }, - { - "cell_type": "markdown", - "id": "6b1fd514", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "If you are given three sticks, you may or may not be able to arrange\n", - "them in a triangle. For example, if one of the sticks is 12 inches long\n", - "and the other two are one inch long, you will not be able to get the\n", - "short sticks to meet in the middle. For any three lengths, there is a\n", - "test to see if it is possible to form a triangle:\n", - "\n", - "> If any of the three lengths is greater than the sum of the other two,\n", - "> then you cannot form a triangle. Otherwise, you can. (If the sum of\n", - "> two lengths equals the third, they form what is called a \"degenerate\"\n", - "> triangle.)\n", - "\n", - "Write a function named `is_triangle` that takes three integers as\n", - "arguments, and that prints either \"Yes\" or \"No\", depending on\n", - "whether you can or cannot form a triangle from sticks with the given\n", - "lengths. Hint: Use a chained conditional.\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 64, - "id": "06381639", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def is_triangle(a, b, c):\n", - " if a > b + c:\n", - " print('No')\n", - " elif b > a + c:\n", - " print('No')\n", - " elif c > a + b:\n", - " print('No')\n", - " else:\n", - " print('Yes')" - ] - }, - { - "cell_type": "markdown", - "id": "2842401c", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "Test your function with the following cases." - ] - }, - { - "cell_type": "code", - "execution_count": 65, - "id": "156273af", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Yes\n" - ] - } - ], - "source": [ - "is_triangle(4, 5, 6) # should be Yes" - ] - }, - { - "cell_type": "code", - "execution_count": 66, - "id": "e00793f4", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Yes\n" - ] - } - ], - "source": [ - "is_triangle(1, 2, 3) # should be Yes" - ] - }, - { - "cell_type": "code", - "execution_count": 67, - "id": "d2911c71", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No\n" - ] - } - ], - "source": [ - "is_triangle(6, 2, 3) # should be No" - ] - }, - { - "cell_type": "code", - "execution_count": 68, - "id": "2b05586e", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No\n" - ] - } - ], - "source": [ - "is_triangle(1, 1, 12) # should be No" - ] - }, - { - "cell_type": "markdown", - "id": "2ba42106", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "What is the output of the following program? Draw a stack diagram that\n", - "shows the state of the program when it prints the result." - ] - }, - { - "cell_type": "code", - "execution_count": 69, - "id": "dac374ad", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "6\n" - ] - } - ], - "source": [ - "def recurse(n, s):\n", - " if n == 0:\n", - " print(s)\n", - " else:\n", - " recurse(n-1, n+s)\n", - "\n", - "recurse(3, 0)" - ] - }, - { - "cell_type": "code", - "execution_count": 70, - "id": "a438cec5", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'Adds up the numbers from 1 to `n`\\n\\nn: integer\\ns: the sum of the numbers so far\\n'" - ] - }, - "execution_count": 70, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Solution\n", - "\n", - "\"\"\"Adds up the numbers from 1 to `n`\n", - "\n", - "n: integer\n", - "s: the sum of the numbers so far\n", - "\"\"\"" - ] - }, - { - "cell_type": "code", - "execution_count": 71, - "id": "2e3f56c7", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Solution\n", - "\n", - "from diagram import make_frame, Stack\n", - "from diagram import diagram, adjust\n", - "\n", - "frames = []\n", - "for n in [3,2,1,0]:\n", - " d = dict(n=n, s=6-sum(range(n+1)))\n", - " frame = make_frame(d, name='recurse', dx=1.0, loc='left')\n", - " frames.append(frame)\n", - "\n", - "stack = Stack(frames, dy=-0.5)\n", - "\n", - "width, height, x, y = [2.49, 2.04, 0.81, 1.77]\n", - "ax = diagram(width, height)\n", - "bbox = stack.draw(ax, x, y)\n", - "# adjust(x, y, bbox)" - ] - }, - { - "cell_type": "markdown", - "id": "bca9517d", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "The following exercises use the `jupyturtle` module, described in Chapter 4.\n", - "\n", - "Read the following function and see if you can figure out what it does.\n", - "Then run it and see if you got it right.\n", - "Adjust the values of `length`, `angle` and `factor` and see what effect they have on the result.\n", - "If you are not sure you understand how it works, try asking a virtual assistant." - ] - }, - { - "cell_type": "code", - "execution_count": 72, - "id": "2b0d60a1", - "metadata": {}, - "outputs": [], - "source": [ - "from jupyturtle import forward, left, right, back\n", - "\n", - "def draw(length):\n", - " angle = 50\n", - " factor = 0.6\n", - " \n", - " if length > 5:\n", - " forward(length)\n", - " left(angle)\n", - " draw(factor * length)\n", - " right(2 * angle)\n", - " draw(factor * length)\n", - " left(angle)\n", - " back(length)" - ] - }, - { - "cell_type": "code", - "execution_count": 73, - "id": "ef0256ee", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - " \n", - "\n", - "\n", - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Solution\n", - "\n", - "from jupyturtle import make_turtle\n", - "\n", - "make_turtle(delay=0)\n", - "draw(50)" - ] - }, - { - "cell_type": "markdown", - "id": "e525ba59", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "Ask a virtual assistant \"What is the Koch curve?\"\n", - "\n", - "To draw a Koch curve with length `x`, all you\n", - "have to do is\n", - "\n", - "1. Draw a Koch curve with length `x/3`.\n", - "\n", - "2. Turn left 60 degrees.\n", - "\n", - "3. Draw a Koch curve with length `x/3`.\n", - "\n", - "4. Turn right 120 degrees.\n", - "\n", - "5. Draw a Koch curve with length `x/3`.\n", - "\n", - "6. Turn left 60 degrees.\n", - "\n", - "7. Draw a Koch curve with length `x/3`.\n", - "\n", - "The exception is if `x` is less than `5` -- in that case, you can just draw a straight line with length `x`.\n", - "\n", - "Write a function called `koch` that takes `x` as an argument and draws a Koch curve with the given length.\n" - ] - }, - { - "cell_type": "code", - "execution_count": 74, - "id": "c1acc853", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def koch(x):\n", - " \"\"\"Draws a koch curve with length n.\"\"\"\n", - " if x < 5:\n", - " forward(x)\n", - " else:\n", - " koch(x / 3)\n", - " left(60)\n", - " koch(x / 3)\n", - " right(120)\n", - " koch(x / 3)\n", - " left(60)\n", - " koch(x / 3)" - ] - }, - { - "cell_type": "markdown", - "id": "2991143a", - "metadata": {}, - "source": [ - "The result should look like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 75, - "id": "55507716", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - " \n", - "\n", - "\n", - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "make_turtle(delay=0)\n", - "koch(120)" - ] - }, - { - "cell_type": "markdown", - "id": "b1c58420", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "Once you have koch working, you can use this loop to draw three Koch curves in the shape of a snowflake." - ] - }, - { - "cell_type": "code", - "execution_count": 76, - "id": "86d3123b", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - " \n", - "\n", - "\n", - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "make_turtle(delay=0, height=300)\n", - "for i in range(3):\n", - " koch(120)\n", - " right(120)" - ] - }, - { - "cell_type": "markdown", - "id": "4c964239", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "Virtual assistants know about the functions in the `jupyturtle` module, but there are many versions of these functions, with different names, so a VA might not know which one you are talking about.\n", - "\n", - "To solve this problem, you can provide additional information before you ask a question.\n", - "For example, you could start a prompt with \"Here's a program that uses the `jupyturtle` module,\" and then paste in one of the examples from this chapter.\n", - "After that, the VA should be able to generate code that uses this module.\n", - "\n", - "As an example, ask a VA for a program that draws a Sierpiński triangle.\n", - "The code you get should be a good starting place, but you might have to do some debugging.\n", - "If the first attempt doesn't work, you can tell the VA what happened and ask for help -- or you can debug it yourself." - ] - }, - { - "cell_type": "code", - "execution_count": 77, - "id": "68439acf", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "# Here's the code I got from ChatGPT in June 2023, with just a few corrections\n", - "\n", - "def draw_sierpinski(length, depth):\n", - " if depth == 0:\n", - " for _ in range(3):\n", - " forward(length)\n", - " left(120)\n", - " else:\n", - " draw_sierpinski(length / 2, depth - 1)\n", - " forward(length / 2)\n", - " draw_sierpinski(length / 2, depth - 1)\n", - " back(length / 2)\n", - " left(60)\n", - " forward(length / 2)\n", - " right(60)\n", - " draw_sierpinski(length / 2, depth - 1)\n", - " left(60)\n", - " back(length / 2)\n", - " right(60)" - ] - }, - { - "cell_type": "markdown", - "id": "6a95097a", - "metadata": {}, - "source": [ - "Here's what the result might look like, although the version you get might be different." - ] - }, - { - "cell_type": "code", - "execution_count": 78, - "id": "43470b3d", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - " \n", - "\n", - "\n", - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "make_turtle(delay=0, height=200)\n", - "\n", - "draw_sierpinski(100, 3)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "9d6969d4", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "id": "a7f4edf8", - "metadata": { - "tags": [] - }, - "source": [ - "[Think Python: 3rd Edition](https://allendowney.github.io/ThinkPython/index.html)\n", - "\n", - "Copyright 2024 [Allen B. Downey](https://allendowney.com)\n", - "\n", - "Code license: [MIT License](https://mit-license.org/)\n", - "\n", - "Text license: [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-nc-sa/4.0/)" - ] - } - ], - "metadata": { - "celltoolbar": "Tags", - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.11" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/soln/chap06.ipynb b/soln/chap06.ipynb deleted file mode 100644 index dea0fb3..0000000 --- a/soln/chap06.ipynb +++ /dev/null @@ -1,2686 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "1331faa1", - "metadata": {}, - "source": [ - "You can order print and ebook versions of *Think Python 3e* from\n", - "[Bookshop.org](https://bookshop.org/a/98697/9781098155438) and\n", - "[Amazon](https://www.amazon.com/_/dp/1098155432?smid=ATVPDKIKX0DER&_encoding=UTF8&tag=oreilly20-20&_encoding=UTF8&tag=greenteapre01-20&linkCode=ur2&linkId=e2a529f94920295d27ec8a06e757dc7c&camp=1789&creative=9325)." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "56b1c184", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "from os.path import basename, exists\n", - "\n", - "def download(url):\n", - " filename = basename(url)\n", - " if not exists(filename):\n", - " from urllib.request import urlretrieve\n", - "\n", - " local, _ = urlretrieve(url, filename)\n", - " print(\"Downloaded \" + str(local))\n", - " return filename\n", - "\n", - "download('https://github.com/AllenDowney/ThinkPython/raw/v3/thinkpython.py');\n", - "download('https://github.com/AllenDowney/ThinkPython/raw/v3/diagram.py');\n", - "\n", - "import thinkpython" - ] - }, - { - "cell_type": "markdown", - "id": "88ecc443", - "metadata": {}, - "source": [ - "# Return Values\n", - "\n", - "In previous chapters, we've used built-in functions -- like `abs` and `round` -- and functions in the math module -- like `sqrt` and `pow`.\n", - "When you call one of these functions, it returns a value you can assign to a variable or use as part of an expression.\n", - "\n", - "The functions we have written so far are different.\n", - "Some use the `print` function to display values, and some use turtle functions to draw figures.\n", - "But they don't return values we assign to variables or use in expressions.\n", - "\n", - "In this chapter, we'll see how to write functions that return values." - ] - }, - { - "cell_type": "markdown", - "id": "6cf2cf80", - "metadata": {}, - "source": [ - "## Some functions have return values\n", - "\n", - "When you call a function like `math.sqrt`, the result is called a **return value**.\n", - "If the function call appears at the end of a cell, Jupyter displays the return value immediately." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "e0e1dd91", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "3.656366395715726" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "import math\n", - "\n", - "math.sqrt(42 / math.pi)" - ] - }, - { - "cell_type": "markdown", - "id": "4b4885c2", - "metadata": {}, - "source": [ - "If you assign the return value to a variable, it doesn't get displayed." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "5aaf62d2", - "metadata": {}, - "outputs": [], - "source": [ - "radius = math.sqrt(42 / math.pi)" - ] - }, - { - "cell_type": "markdown", - "id": "196c692b", - "metadata": {}, - "source": [ - "But you can display it later." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "741f7386", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "3.656366395715726" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "radius" - ] - }, - { - "cell_type": "markdown", - "id": "257b28d5", - "metadata": {}, - "source": [ - "Or you can use the return value as part of an expression." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "e56d39c4", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "7.312732791431452" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "radius + math.sqrt(42 / math.pi)" - ] - }, - { - "cell_type": "markdown", - "id": "23ed47ab", - "metadata": {}, - "source": [ - "Here's an example of a function that returns a value." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "50a9a9be", - "metadata": {}, - "outputs": [], - "source": [ - "def circle_area(radius):\n", - " area = math.pi * radius**2\n", - " return area" - ] - }, - { - "cell_type": "markdown", - "id": "273acabc", - "metadata": {}, - "source": [ - "`circle_area` takes `radius` as a parameter and computes the area of a circle with that radius.\n", - "\n", - "The last line is a `return` statement that returns the value of `area`.\n", - "\n", - "If we call the function like this, Jupyter displays the return value.\n" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "d70fd9b5", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "42.00000000000001" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "circle_area(radius)" - ] - }, - { - "cell_type": "markdown", - "id": "4f28bfd6", - "metadata": {}, - "source": [ - "We can assign the return value to a variable." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "ef20ba8c", - "metadata": {}, - "outputs": [], - "source": [ - "a = circle_area(radius)" - ] - }, - { - "cell_type": "markdown", - "id": "3f82fe70", - "metadata": {}, - "source": [ - "Or use it as part of an expression." - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "0a4670f4", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "63.000000000000014" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "circle_area(radius) + 2 * circle_area(radius / 2)" - ] - }, - { - "cell_type": "markdown", - "id": "15122fd2", - "metadata": {}, - "source": [ - "Later we can display the value of the variable we assigned the result to." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "6e6460b9", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "42.00000000000001" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "a" - ] - }, - { - "cell_type": "markdown", - "id": "a3f6dcae", - "metadata": {}, - "source": [ - "But we can't access `area`." - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "77613df9", - "metadata": { - "tags": [ - "raises-exception" - ] - }, - "outputs": [ - { - "ename": "NameError", - "evalue": "name 'area' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[0;31mNameError\u001b[0m\u001b[0;31m:\u001b[0m name 'area' is not defined\n" - ] - } - ], - "source": [ - "%%expect NameError\n", - "\n", - "area" - ] - }, - { - "cell_type": "markdown", - "id": "f8ace9ce", - "metadata": {}, - "source": [ - "`area` is a local variable in a function, so we can't access it from outside the function." - ] - }, - { - "cell_type": "markdown", - "id": "41a4f03f", - "metadata": {}, - "source": [ - "## And some have None\n", - "\n", - "If a function doesn't have a `return` statement, it returns `None`, which is a special value like `True` and `False`.\n", - "For example, here's the `repeat` function from Chapter 3." - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "89c083f8", - "metadata": {}, - "outputs": [], - "source": [ - "def repeat(word, n):\n", - " print(word * n)" - ] - }, - { - "cell_type": "markdown", - "id": "6ada19cf", - "metadata": {}, - "source": [ - "If we call it like this, it displays the first line of the Monty Python song \"Finland\"." - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "737b67ca", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Finland, Finland, Finland, \n" - ] - } - ], - "source": [ - "repeat('Finland, ', 3)" - ] - }, - { - "cell_type": "markdown", - "id": "fe49f5e5", - "metadata": {}, - "source": [ - "This function uses the `print` function to display a string, but it does not use a `return` statement to return a value.\n", - "If we assign the result to a variable, it displays the string anyway. " - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "9b4fa14f", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Finland, Finland, Finland, \n" - ] - } - ], - "source": [ - "result = repeat('Finland, ', 3)" - ] - }, - { - "cell_type": "markdown", - "id": "4ecabbdb", - "metadata": {}, - "source": [ - "And if we display the value of the variable, we get nothing." - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "50f96bcb", - "metadata": {}, - "outputs": [], - "source": [ - "result" - ] - }, - { - "cell_type": "markdown", - "id": "07033959", - "metadata": {}, - "source": [ - "`result` actually has a value, but Jupyter doesn't show it.\n", - "However, we can display it like this." - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "6712f2df", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "None\n" - ] - } - ], - "source": [ - "print(result)" - ] - }, - { - "cell_type": "markdown", - "id": "379b98c5", - "metadata": {}, - "source": [ - "The return value from `repeat` is `None`.\n", - "\n", - "Now here's a function similar to `repeat` except that has a return value." - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "0ec1afd3", - "metadata": {}, - "outputs": [], - "source": [ - "def repeat_string(word, n):\n", - " return word * n" - ] - }, - { - "cell_type": "markdown", - "id": "db6ad3d4", - "metadata": {}, - "source": [ - "Notice that we can use an expression in a `return` statement, not just a variable.\n", - "\n", - "With this version, we can assign the result to a variable.\n", - "When the function runs, it doesn't display anything." - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "c82334b6", - "metadata": {}, - "outputs": [], - "source": [ - "line = repeat_string('Spam, ', 4)" - ] - }, - { - "cell_type": "markdown", - "id": "1232cd8a", - "metadata": {}, - "source": [ - "But later we can display the value assigned to `line`." - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "595ec598", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'Spam, Spam, Spam, Spam, '" - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "line" - ] - }, - { - "cell_type": "markdown", - "id": "ae02c7d2", - "metadata": {}, - "source": [ - "A function like this is called a **pure function** because it doesn't display anything or have any other effect -- other than returning a value." - ] - }, - { - "cell_type": "markdown", - "id": "567ae734", - "metadata": {}, - "source": [ - "## Return values and conditionals\n", - "\n", - "If Python did not provide `abs`, we could write it like this." - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "236c59e6", - "metadata": {}, - "outputs": [], - "source": [ - "def absolute_value(x):\n", - " if x < 0:\n", - " return -x\n", - " else:\n", - " return x" - ] - }, - { - "cell_type": "markdown", - "id": "ffd559b8", - "metadata": {}, - "source": [ - "If `x` is negative, the first `return` statement returns `-x` and the function ends immediately.\n", - "Otherwise, the second `return` statement returns `x` and the function ends.\n", - "So this function is correct.\n", - "\n", - "However, if you put `return` statements in a conditional, you have to make sure that every possible path through the program hits a `return` statement.\n", - "For example, here's an incorrect version of `absolute_value`." - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "2f60639c", - "metadata": {}, - "outputs": [], - "source": [ - "def absolute_value_wrong(x):\n", - " if x < 0:\n", - " return -x\n", - " if x > 0:\n", - " return x" - ] - }, - { - "cell_type": "markdown", - "id": "da3280ae", - "metadata": {}, - "source": [ - "Here's what happens if we call this function with `0` as an argument." - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "c9dae6c8", - "metadata": {}, - "outputs": [], - "source": [ - "absolute_value_wrong(0)" - ] - }, - { - "cell_type": "markdown", - "id": "5733f239", - "metadata": {}, - "source": [ - "We get nothing! Here's the problem: when `x` is `0`, neither condition is true, and the function ends without hitting a `return` statement, which means that the return value is `None`, so Jupyter displays nothing.\n", - "\n", - "As another example, here's a version of `absolute_value` with an extra `return` statement at the end." - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "c8c4edee", - "metadata": {}, - "outputs": [], - "source": [ - "def absolute_value_extra_return(x):\n", - " if x < 0:\n", - " return -x\n", - " else:\n", - " return x\n", - " \n", - " return 'This is dead code'" - ] - }, - { - "cell_type": "markdown", - "id": "cf5486fd", - "metadata": {}, - "source": [ - "If `x` is negative, the first `return` statement runs and the function ends.\n", - "Otherwise the second `return` statement runs and the function ends.\n", - "Either way, we never get to the third `return` statement -- so it can never run.\n", - "\n", - "Code that can never run is called **dead code**.\n", - "In general, dead code doesn't do any harm, but it often indicates a misunderstanding, and it might be confusing to someone trying to understand the program." - ] - }, - { - "cell_type": "markdown", - "id": "68a6ae39", - "metadata": { - "tags": [ - "section_incremental" - ] - }, - "source": [ - "## Incremental development\n", - "\n", - "As you write larger functions, you might find yourself spending more\n", - "time debugging.\n", - "To deal with increasingly complex programs, you might want to try **incremental development**, which is a way of adding and testing only a small amount of code at a time.\n", - "\n", - "As an example, suppose you want to find the distance between two points represented by the coordinates $(x_1, y_1)$ and $(x_2, y_2)$.\n", - "By the Pythagorean theorem, the distance is:\n", - "\n", - "$$\\mathrm{distance} = \\sqrt{(x_2 - x_1)^2 + (y_2 - y_1)^2}$$ \n", - "\n", - "The first step is to consider what a `distance` function should look like in Python -- that is, what are the inputs (parameters) and what is the output (return value)?\n", - "\n", - "For this function, the inputs are the coordinates of the points.\n", - "The return value is the distance.\n", - "Immediately you can write an outline of the function:" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "bbcab1ed", - "metadata": {}, - "outputs": [], - "source": [ - "def distance(x1, y1, x2, y2):\n", - " return 0.0" - ] - }, - { - "cell_type": "markdown", - "id": "7b384fcf", - "metadata": {}, - "source": [ - "This version doesn't compute distances yet -- it always returns zero.\n", - "But it is a complete function with a return value, which means that you can test it before you make it more complicated.\n", - "\n", - "To test the new function, we'll call it with sample arguments:" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "923d96db", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0.0" - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "distance(1, 2, 4, 6)" - ] - }, - { - "cell_type": "markdown", - "id": "13a98096", - "metadata": {}, - "source": [ - "I chose these values so that the horizontal distance is `3` and the\n", - "vertical distance is `4`.\n", - "That way, the result is `5`, the hypotenuse of a `3-4-5` right triangle. When testing a function, it is useful to know the right answer.\n", - "\n", - "At this point we have confirmed that the function runs and returns a value, and we can start adding code to the body.\n", - "A good next step is to find the differences `x2 - x1` and `y2 - y1`. \n", - "Here's a version that stores those values in temporary variables and displays them." - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "id": "9374cfe3", - "metadata": {}, - "outputs": [], - "source": [ - "def distance(x1, y1, x2, y2):\n", - " dx = x2 - x1\n", - " dy = y2 - y1\n", - " print('dx is', dx)\n", - " print('dy is', dy)\n", - " return 0.0" - ] - }, - { - "cell_type": "markdown", - "id": "c342a3bd", - "metadata": {}, - "source": [ - "If the function is working, it should display `dx is 3` and `dy is 4`.\n", - "If so, we know that the function is getting the right arguments and\n", - "performing the first computation correctly. If not, there are only a few\n", - "lines to check." - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "id": "405af839", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "dx is 3\n", - "dy is 4\n" - ] - }, - { - "data": { - "text/plain": [ - "0.0" - ] - }, - "execution_count": 31, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "distance(1, 2, 4, 6)" - ] - }, - { - "cell_type": "markdown", - "id": "9424eca9", - "metadata": {}, - "source": [ - "Good so far. Next we compute the sum of squares of `dx` and `dy`:" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "id": "e52b3b04", - "metadata": {}, - "outputs": [], - "source": [ - "def distance(x1, y1, x2, y2):\n", - " dx = x2 - x1\n", - " dy = y2 - y1\n", - " dsquared = dx**2 + dy**2\n", - " print('dsquared is: ', dsquared)\n", - " return 0.0" - ] - }, - { - "cell_type": "markdown", - "id": "e28262f9", - "metadata": {}, - "source": [ - "Again, we can run the function and check the output, which should be `25`. " - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "id": "38eebbf3", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "dsquared is: 25\n" - ] - }, - { - "data": { - "text/plain": [ - "0.0" - ] - }, - "execution_count": 33, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "distance(1, 2, 4, 6)" - ] - }, - { - "cell_type": "markdown", - "id": "c09f0ddc", - "metadata": {}, - "source": [ - "Finally, we can use `math.sqrt` to compute the distance:" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "id": "b4536ea0", - "metadata": {}, - "outputs": [], - "source": [ - "def distance(x1, y1, x2, y2):\n", - " dx = x2 - x1\n", - " dy = y2 - y1\n", - " dsquared = dx**2 + dy**2\n", - " result = math.sqrt(dsquared)\n", - " print(\"result is\", result)" - ] - }, - { - "cell_type": "markdown", - "id": "f27902ac", - "metadata": {}, - "source": [ - "And test it." - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "id": "325efb93", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "result is 5.0\n" - ] - } - ], - "source": [ - "distance(1, 2, 4, 6)" - ] - }, - { - "cell_type": "markdown", - "id": "8ad2e626", - "metadata": {}, - "source": [ - "The result is correct, but this version of the function displays the result rather than returning it, so the return value is `None`.\n", - "\n", - "We can fix that by replacing the `print` function with a `return` statement." - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "id": "3cd982ce", - "metadata": {}, - "outputs": [], - "source": [ - "def distance(x1, y1, x2, y2):\n", - " dx = x2 - x1\n", - " dy = y2 - y1\n", - " dsquared = dx**2 + dy**2\n", - " result = math.sqrt(dsquared)\n", - " return result" - ] - }, - { - "cell_type": "markdown", - "id": "f3a13a14", - "metadata": {}, - "source": [ - "This version of `distance` is a pure function.\n", - "If we call it like this, only the result is displayed." - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "id": "c734f5b2", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "5.0" - ] - }, - "execution_count": 37, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "distance(1, 2, 4, 6)" - ] - }, - { - "cell_type": "markdown", - "id": "7db8cf86", - "metadata": {}, - "source": [ - "And if we assign the result to a variable, nothing is displayed." - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "id": "094a242f", - "metadata": {}, - "outputs": [], - "source": [ - "d = distance(1, 2, 4, 6)" - ] - }, - { - "cell_type": "markdown", - "id": "0c3b8829", - "metadata": {}, - "source": [ - "The `print` statements we wrote are useful for debugging, but once the function is working, we can remove them. \n", - "Code like that is called **scaffolding** because it is helpful for building the program but is not part of the final product.\n", - "\n", - "This example demonstrates incremental development.\n", - "The key aspects of this process are:\n", - "\n", - "1. Start with a working program, make small changes, and test after every change.\n", - "\n", - "2. Use variables to hold intermediate values so you can display and check them.\n", - "\n", - "3. Once the program is working, remove the scaffolding.\n", - "\n", - "At any point, if there is an error, you should have a good idea where it is.\n", - "Incremental development can save you a lot of debugging time." - ] - }, - { - "cell_type": "markdown", - "id": "3dd7514f", - "metadata": {}, - "source": [ - "## Boolean functions\n", - "\n", - "Functions can return the boolean values `True` and `False`, which is often convenient for encapsulating a complex test in a function.\n", - "For example, `is_divisible` checks whether `x` is divisible by `y` with no remainder." - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "id": "64207948", - "metadata": {}, - "outputs": [], - "source": [ - "def is_divisible(x, y):\n", - " if x % y == 0:\n", - " return True\n", - " else:\n", - " return False" - ] - }, - { - "cell_type": "markdown", - "id": "f3a58afb", - "metadata": {}, - "source": [ - "Here's how we use it." - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "id": "c367cdae", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 40, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "is_divisible(6, 4)" - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "id": "837f4f95", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 41, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "is_divisible(6, 3)" - ] - }, - { - "cell_type": "markdown", - "id": "e9103ece", - "metadata": {}, - "source": [ - "Inside the function, the result of the `==` operator is a boolean, so we can write the\n", - "function more concisely by returning it directly." - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "id": "e411354f", - "metadata": {}, - "outputs": [], - "source": [ - "def is_divisible(x, y):\n", - " return x % y == 0" - ] - }, - { - "cell_type": "markdown", - "id": "4d82dae5", - "metadata": {}, - "source": [ - "Boolean functions are often used in conditional statements." - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "id": "925e7d4f", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "divisible\n" - ] - } - ], - "source": [ - "if is_divisible(6, 2):\n", - " print('divisible')" - ] - }, - { - "cell_type": "markdown", - "id": "9e232afc", - "metadata": {}, - "source": [ - "It might be tempting to write something like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "id": "62178e75", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "divisible\n" - ] - } - ], - "source": [ - "if is_divisible(6, 2) == True:\n", - " print('divisible')" - ] - }, - { - "cell_type": "markdown", - "id": "ff9e5160", - "metadata": {}, - "source": [ - "But the comparison is unnecessary." - ] - }, - { - "cell_type": "markdown", - "id": "a932a966", - "metadata": {}, - "source": [ - "## Recursion with return values\n", - "\n", - "Now that we can write functions with return values, we can write recursive functions with return values, and with that capability, we have passed an important threshold -- the subset of Python we have is now **Turing complete**, which means that we can perform any computation that can be described by an algorithm.\n", - "\n", - "To demonstrate recursion with return values, we'll evaluate a few recursively defined mathematical functions.\n", - "A recursive definition is similar to a circular definition, in the sense that the definition refers to the thing being defined. A truly circular definition is not very useful:\n", - "\n", - "> vorpal: An adjective used to describe something that is vorpal.\n", - "\n", - "If you saw that definition in the dictionary, you might be annoyed. \n", - "On the other hand, if you looked up the definition of the factorial function, denoted with the symbol $!$, you might get something like this: \n", - "\n", - "$$\\begin{aligned}\n", - "0! &= 1 \\\\\n", - "n! &= n~(n-1)!\n", - "\\end{aligned}$$ \n", - "\n", - "This definition says that the factorial of $0$ is $1$, and the factorial of any other value, $n$, is $n$ multiplied by the factorial of $n-1$.\n", - "\n", - "If you can write a recursive definition of something, you can write a Python program to evaluate it. \n", - "Following an incremental development process, we'll start with a function that take `n` as a parameter and always returns `0`." - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "id": "23e37c79", - "metadata": {}, - "outputs": [], - "source": [ - "def factorial(n):\n", - " return 0" - ] - }, - { - "cell_type": "markdown", - "id": "ee1f63b8", - "metadata": {}, - "source": [ - "Now let's add the first part of the definition -- if the argument happens to be `0`, all we have to do is return `1`:" - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "id": "5ea57d9f", - "metadata": {}, - "outputs": [], - "source": [ - "def factorial(n):\n", - " if n == 0:\n", - " return 1\n", - " else:\n", - " return 0" - ] - }, - { - "cell_type": "markdown", - "id": "4f2fd7c7", - "metadata": {}, - "source": [ - "Now let's fill in the second part -- if `n` is not `0`, we have to make a recursive\n", - "call to find the factorial of `n-1` and then multiply the result by `n`:" - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "id": "b66e670b", - "metadata": {}, - "outputs": [], - "source": [ - "def factorial(n):\n", - " if n == 0:\n", - " return 1\n", - " else:\n", - " recurse = factorial(n-1)\n", - " return n * recurse" - ] - }, - { - "cell_type": "markdown", - "id": "da3d1595", - "metadata": {}, - "source": [ - "The flow of execution for this program is similar to the flow of `countdown` in Chapter 5.\n", - "If we call `factorial` with the value `3`:\n", - "\n", - "Since `3` is not `0`, we take the second branch and calculate the factorial\n", - "of `n-1`\\...\n", - "\n", - "> Since `2` is not `0`, we take the second branch and calculate the\n", - "> factorial of `n-1`\\...\n", - ">\n", - "> > Since `1` is not `0`, we take the second branch and calculate the\n", - "> > factorial of `n-1`\\...\n", - "> >\n", - "> > > Since `0` equals `0`, we take the first branch and return `1` without\n", - "> > > making any more recursive calls.\n", - "> >\n", - "> > The return value, `1`, is multiplied by `n`, which is `1`, and the\n", - "> > result is returned.\n", - ">\n", - "> The return value, `1`, is multiplied by `n`, which is `2`, and the result\n", - "> is returned.\n", - "\n", - "The return value `2` is multiplied by `n`, which is `3`, and the result,\n", - "`6`, becomes the return value of the function call that started the whole\n", - "process.\n", - "\n", - "The following figure shows the stack diagram for this sequence of function calls." - ] - }, - { - "cell_type": "code", - "execution_count": 48, - "id": "455f0457", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "from diagram import Frame, Stack, make_binding\n", - "\n", - "main = Frame([], name='__main__', loc='left')\n", - "frames = [main]\n", - "\n", - "ns = 3, 2, 1\n", - "recurses = 2, 1, 1\n", - "results = 6, 2, 1\n", - "\n", - "for n, recurse, result in zip(ns, recurses, results):\n", - " binding1 = make_binding('n', n)\n", - " binding2 = make_binding('recurse', recurse)\n", - " frame = Frame([binding1, binding2], \n", - " name='factorial', value=result,\n", - " loc='left', dx=1.2)\n", - " frames.append(frame)\n", - " \n", - "binding1 = make_binding('n', 0)\n", - "frame = Frame([binding1], name='factorial', value=1, \n", - " shim=1.2, loc='left', dx=1.4)\n", - "frames.append(frame)\n", - "\n", - "stack = Stack(frames, dy=-0.45)" - ] - }, - { - "cell_type": "code", - "execution_count": 49, - "id": "a75ccd9b", - "metadata": { - "tags": [ - "remove-input" - ] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from diagram import diagram, adjust\n", - "\n", - "width, height, x, y = [2.74, 2.26, 0.73, 2.05]\n", - "ax = diagram(width, height)\n", - "bbox = stack.draw(ax, x, y)\n", - "# adjust(x, y, bbox)" - ] - }, - { - "cell_type": "markdown", - "id": "f924c539", - "metadata": {}, - "source": [ - "The return values are shown being passed back up the stack.\n", - "In each frame, the return value is the product of `n` and `recurse`.\n", - "\n", - "In the last frame, the local variable `recurse` does not exist because the branch that creates it does not run." - ] - }, - { - "cell_type": "markdown", - "id": "acea9dc1", - "metadata": {}, - "source": [ - "## Leap of faith\n", - "\n", - "Following the flow of execution is one way to read programs, but it can quickly become overwhelming. An alternative is what I call the \"leap of faith\". When you come to a function call, instead of following the flow of execution, you *assume* that the function works correctly and returns the right result.\n", - "\n", - "In fact, you are already practicing this leap of faith when you use built-in functions.\n", - "When you call `abs` or `math.sqrt`, you don't examine the bodies of those functions -- you just assume that they work.\n", - "\n", - "The same is true when you call one of your own functions. For example, earlier we wrote a function called `is_divisible` that determines whether one number is divisible by another. Once we convince ourselves that this function is correct, we can use it without looking at the body again.\n", - "\n", - "The same is true of recursive programs.\n", - "When you get to the recursive call, instead of following the flow of execution, you should assume that the recursive call works and then ask yourself, \"Assuming that I can compute the factorial of $n-1$, can I compute the factorial of $n$?\"\n", - "The recursive definition of factorial implies that you can, by multiplying by $n$.\n", - "\n", - "Of course, it's a bit strange to assume that the function works correctly when you haven't finished writing it, but that's why it's called a leap of faith!" - ] - }, - { - "cell_type": "markdown", - "id": "ca2a2d76", - "metadata": { - "tags": [ - "section_fibonacci" - ] - }, - "source": [ - "## Fibonacci\n", - "\n", - "After `factorial`, the most common example of a recursive function is `fibonacci`, which has the following definition: \n", - "\n", - "$$\\begin{aligned}\n", - "\\mathrm{fibonacci}(0) &= 0 \\\\\n", - "\\mathrm{fibonacci}(1) &= 1 \\\\\n", - "\\mathrm{fibonacci}(n) &= \\mathrm{fibonacci}(n-1) + \\mathrm{fibonacci}(n-2)\n", - "\\end{aligned}$$ \n", - "\n", - "Translated into Python, it looks like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "id": "cad75752", - "metadata": {}, - "outputs": [], - "source": [ - "def fibonacci(n):\n", - " if n == 0:\n", - " return 0\n", - " elif n == 1:\n", - " return 1\n", - " else:\n", - " return fibonacci(n-1) + fibonacci(n-2)" - ] - }, - { - "cell_type": "markdown", - "id": "69d56a0b", - "metadata": {}, - "source": [ - "If you try to follow the flow of execution here, even for small values of $n$, your head explodes.\n", - "But according to the leap of faith, if you assume that the two recursive calls work correctly, you can be confident that the last `return` statement is correct.\n", - "\n", - "As an aside, this way of computing Fibonacci numbers is very inefficient.\n", - "In [Chapter 10](section_memos) I'll explain why and suggest a way to improve it." - ] - }, - { - "cell_type": "markdown", - "id": "26d9706b", - "metadata": {}, - "source": [ - "## Checking types\n", - "\n", - "What happens if we call `factorial` and give it `1.5` as an argument?" - ] - }, - { - "cell_type": "code", - "execution_count": 51, - "id": "5e4b5f1d", - "metadata": { - "tags": [ - "raises-exception" - ] - }, - "outputs": [ - { - "ename": "RecursionError", - "evalue": "maximum recursion depth exceeded in comparison", - "output_type": "error", - "traceback": [ - "\u001b[0;31mRecursionError\u001b[0m\u001b[0;31m:\u001b[0m maximum recursion depth exceeded in comparison\n" - ] - } - ], - "source": [ - "%%expect RecursionError\n", - "\n", - "factorial(1.5)" - ] - }, - { - "cell_type": "markdown", - "id": "0bec7ba4", - "metadata": {}, - "source": [ - "It looks like an infinite recursion. How can that be? The function has base cases when `n == 1` or `n == 0`.\n", - "But if `n` is not an integer, we can *miss* the base case and recurse forever.\n", - "\n", - "In this example, the initial value of `n` is `1.5`.\n", - "In the first recursive call, the value of `n` is `0.5`.\n", - "In the next, it is `-0.5`. \n", - "From there, it gets smaller (more negative), but it will never be `0`.\n", - "\n", - "To avoid infinite recursion we can use the built-in function `isinstance` to check the type of the argument.\n", - "Here's how we check whether a value is an integer." - ] - }, - { - "cell_type": "code", - "execution_count": 52, - "id": "3f607dff", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 52, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "isinstance(3, int)" - ] - }, - { - "cell_type": "code", - "execution_count": 53, - "id": "ab638bfe", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 53, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "isinstance(1.5, int)" - ] - }, - { - "cell_type": "markdown", - "id": "b0017b42", - "metadata": {}, - "source": [ - "Now here's a version of `factorial` with error-checking." - ] - }, - { - "cell_type": "code", - "execution_count": 54, - "id": "73aafac0", - "metadata": {}, - "outputs": [], - "source": [ - "def factorial(n):\n", - " if not isinstance(n, int):\n", - " print('factorial is only defined for integers.')\n", - " return None\n", - " elif n < 0:\n", - " print('factorial is not defined for negative numbers.')\n", - " return None\n", - " elif n == 0:\n", - " return 1\n", - " else:\n", - " return n * factorial(n-1)" - ] - }, - { - "cell_type": "markdown", - "id": "0561e3f5", - "metadata": {}, - "source": [ - "First it checks whether `n` is an integer.\n", - "If not, it displays an error message and returns `None`.\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 55, - "id": "be881cb7", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "factorial is only defined for integers.\n" - ] - } - ], - "source": [ - "factorial('crunchy frog')" - ] - }, - { - "cell_type": "markdown", - "id": "10b00a39", - "metadata": {}, - "source": [ - "Then it checks whether `n` is negative.\n", - "If so, it displays an error message and returns `None.`" - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "id": "fa83014f", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "factorial is not defined for negative numbers.\n" - ] - } - ], - "source": [ - "factorial(-2)" - ] - }, - { - "cell_type": "markdown", - "id": "96aa1403", - "metadata": {}, - "source": [ - "If we get past both checks, we know that `n` is a non-negative integer, so we can be confident the recursion will terminate.\n", - "Checking the parameters of a function to make sure they have the correct types and values is called **input validation**." - ] - }, - { - "cell_type": "markdown", - "id": "eb8a85a7", - "metadata": { - "tags": [ - "section_debugging_factorial" - ] - }, - "source": [ - "## Debugging\n", - "\n", - "Breaking a large program into smaller functions creates natural checkpoints for debugging.\n", - "If a function is not working, there are three possibilities to consider:\n", - "\n", - "- There is something wrong with the arguments the function is getting -- that is, a precondition is violated.\n", - "\n", - "- There is something wrong with the function -- that is, a postcondition is violated.\n", - "\n", - "- The caller is doing something wrong with the return value.\n", - "\n", - "To rule out the first possibility, you can add a `print` statement at the beginning of the function that displays the values of the parameters (and maybe their types).\n", - "Or you can write code that checks the preconditions explicitly.\n", - "\n", - "If the parameters look good, you can add a `print` statement before each `return` statement and display the return value.\n", - "If possible, call the function with arguments that make it easy check the result. \n", - "\n", - "If the function seems to be working, look at the function call to make sure the return value is being used correctly -- or used at all!\n", - "\n", - "Adding `print` statements at the beginning and end of a function can help make the flow of execution more visible.\n", - "For example, here is a version of `factorial` with print statements:" - ] - }, - { - "cell_type": "code", - "execution_count": 57, - "id": "1d50479e", - "metadata": {}, - "outputs": [], - "source": [ - "def factorial(n):\n", - " space = ' ' * (4 * n)\n", - " print(space, 'factorial', n)\n", - " if n == 0:\n", - " print(space, 'returning 1')\n", - " return 1\n", - " else:\n", - " recurse = factorial(n-1)\n", - " result = n * recurse\n", - " print(space, 'returning', result)\n", - " return result" - ] - }, - { - "cell_type": "markdown", - "id": "0c044111", - "metadata": {}, - "source": [ - "`space` is a string of space characters that controls the indentation of\n", - "the output. Here is the result of `factorial(3)` :" - ] - }, - { - "cell_type": "code", - "execution_count": 58, - "id": "798db5c4", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " factorial 3\n", - " factorial 2\n", - " factorial 1\n", - " factorial 0\n", - " returning 1\n", - " returning 1\n", - " returning 2\n", - " returning 6\n" - ] - }, - { - "data": { - "text/plain": [ - "6" - ] - }, - "execution_count": 58, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "factorial(3)" - ] - }, - { - "cell_type": "markdown", - "id": "43b3e408", - "metadata": {}, - "source": [ - "If you are confused about the flow of execution, this kind of output can be helpful.\n", - "It takes some time to develop effective scaffolding, but a little bit of scaffolding can save a lot of debugging." - ] - }, - { - "cell_type": "markdown", - "id": "b7c3962f", - "metadata": {}, - "source": [ - "## Glossary\n", - "\n", - "**return value:**\n", - "The result of a function. If a function call is used as an expression, the return value is the value of the expression.\n", - "\n", - "**pure function:**\n", - "A function that does not display anything or have any other effect, other than returning a return value.\n", - "\n", - "\n", - "**dead code:**\n", - "Part of a program that can never run, often because it appears after a `return` statement.\n", - "\n", - "**incremental development:**\n", - "A program development plan intended to avoid debugging by adding and testing only a small amount of code at a time.\n", - "\n", - "**scaffolding:**\n", - " Code that is used during program development but is not part of the final version.\n", - "\n", - "**Turing complete:**\n", - "A language, or subset of a language, is Turing complete if it can perform any computation that can be described by an algorithm.\n", - "\n", - "**input validation:**\n", - "Checking the parameters of a function to make sure they have the correct types and values" - ] - }, - { - "cell_type": "markdown", - "id": "ff7b1edf", - "metadata": {}, - "source": [ - "## Exercises" - ] - }, - { - "cell_type": "code", - "execution_count": 59, - "id": "e0f15ca4", - "metadata": { - "tags": [ - "remove-print" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Exception reporting mode: Verbose\n" - ] - } - ], - "source": [ - "# This cell tells Jupyter to provide detailed debugging information\n", - "# when a runtime error occurs. Run it before working on the exercises.\n", - "\n", - "%xmode Verbose" - ] - }, - { - "cell_type": "markdown", - "id": "0da2daaf", - "metadata": {}, - "source": [ - "### Ask a virtual assistant\n", - "\n", - "In this chapter, we saw an incorrect function that can end without returning a value." - ] - }, - { - "cell_type": "code", - "execution_count": 60, - "id": "90b4979f", - "metadata": {}, - "outputs": [], - "source": [ - "def absolute_value_wrong(x):\n", - " if x < 0:\n", - " return -x\n", - " if x > 0:\n", - " return x" - ] - }, - { - "cell_type": "markdown", - "id": "69563d4b", - "metadata": {}, - "source": [ - "And a version of the same function that has dead code at the end." - ] - }, - { - "cell_type": "code", - "execution_count": 61, - "id": "9217f038", - "metadata": {}, - "outputs": [], - "source": [ - "def absolute_value_extra_return(x):\n", - " if x < 0:\n", - " return -x\n", - " else:\n", - " return x\n", - " \n", - " return 'This is dead code.'" - ] - }, - { - "cell_type": "markdown", - "id": "9fe8ae2e", - "metadata": {}, - "source": [ - "And we saw the following example, which is correct but not idiomatic." - ] - }, - { - "cell_type": "code", - "execution_count": 62, - "id": "3168489b", - "metadata": {}, - "outputs": [], - "source": [ - "def is_divisible(x, y):\n", - " if x % y == 0:\n", - " return True\n", - " else:\n", - " return False" - ] - }, - { - "cell_type": "markdown", - "id": "14f52688", - "metadata": {}, - "source": [ - "Ask a virtual assistant what's wrong with each of these functions and see if it can spot the errors or improve the style.\n", - "\n", - "Then ask \"Write a function that takes coordinates of two points and computes the distance between them.\" See if the result resembles the version of `distance` we wrote in this chapter." - ] - }, - { - "cell_type": "markdown", - "id": "fd23bb60", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "Use incremental development to write a function called `hypot` that returns the length of the hypotenuse of a right triangle given the lengths of the other two legs as arguments.\n", - "\n", - "Note: There's a function in the math module called `hypot` that does the same thing, but you should not use it for this exercise!\n", - "\n", - "Even if you can write the function correctly on the first try, start with a function that always returns `0` and practice making small changes, testing as you go.\n", - "When you are done, the function should only return a value -- it should not display anything." - ] - }, - { - "cell_type": "code", - "execution_count": 63, - "id": "62267fa3", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def hypot(a, b):\n", - " return 0" - ] - }, - { - "cell_type": "code", - "execution_count": 64, - "id": "5f8fa829", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0" - ] - }, - "execution_count": 64, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Solution\n", - "\n", - "hypot(3, 4)" - ] - }, - { - "cell_type": "code", - "execution_count": 65, - "id": "3d129b03", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def hypot(a, b):\n", - " d2 = a**2 + b**2\n", - " print(d2)\n", - " return 0" - ] - }, - { - "cell_type": "code", - "execution_count": 66, - "id": "030179b6", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "25\n" - ] - }, - { - "data": { - "text/plain": [ - "0" - ] - }, - "execution_count": 66, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Solution\n", - "\n", - "hypot(3, 4)" - ] - }, - { - "cell_type": "code", - "execution_count": 67, - "id": "d737b468", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def hypot(a, b):\n", - " d2 = a**2 + b**2\n", - " result = math.sqrt(d2)\n", - " print(result)\n", - " return 0" - ] - }, - { - "cell_type": "code", - "execution_count": 68, - "id": "77a74879", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "5.0\n" - ] - }, - { - "data": { - "text/plain": [ - "0" - ] - }, - "execution_count": 68, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Solution\n", - "\n", - "hypot(3, 4)" - ] - }, - { - "cell_type": "code", - "execution_count": 69, - "id": "0521d267", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def hypot(a, b):\n", - " d2 = a**2 + b**2\n", - " result = math.sqrt(d2)\n", - " return result" - ] - }, - { - "cell_type": "code", - "execution_count": 70, - "id": "468a31e9", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "5.0" - ] - }, - "execution_count": 70, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Solution\n", - "\n", - "hypot(3, 4)" - ] - }, - { - "cell_type": "code", - "execution_count": 71, - "id": "abbe3ebf", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def hypotenuse(a, b):\n", - " return math.sqrt(a**2 + b**2)" - ] - }, - { - "cell_type": "code", - "execution_count": 72, - "id": "651295e4", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "5.0" - ] - }, - "execution_count": 72, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Solution\n", - "\n", - "hypot(3, 4)" - ] - }, - { - "cell_type": "markdown", - "id": "0a66d82a", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "Write a boolean function, `is_between(x, y, z)`, that returns `True` if $x < y < z$ or if \n", - "$z < y < x$, and`False` otherwise." - ] - }, - { - "cell_type": "code", - "execution_count": 73, - "id": "0a4ee482", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def is_between(x, y, z):\n", - " if x < y < z:\n", - " return True\n", - " else:\n", - " return z < y < x" - ] - }, - { - "cell_type": "markdown", - "id": "c12f318d", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "You can use these examples to test your function." - ] - }, - { - "cell_type": "code", - "execution_count": 74, - "id": "956ed6d7", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 74, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "is_between(1, 2, 3) # should be True" - ] - }, - { - "cell_type": "code", - "execution_count": 75, - "id": "a994eaa6", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 75, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "is_between(3, 2, 1) # should be True" - ] - }, - { - "cell_type": "code", - "execution_count": 76, - "id": "4318028d", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 76, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "is_between(1, 3, 2) # should be False" - ] - }, - { - "cell_type": "code", - "execution_count": 77, - "id": "05208c8b", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 77, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "is_between(2, 3, 1) # should be False" - ] - }, - { - "cell_type": "markdown", - "id": "57f06466", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "The Ackermann function, $A(m, n)$, is defined:\n", - "\n", - "$$\\begin{aligned}\n", - "A(m, n) = \\begin{cases} \n", - " n+1 & \\mbox{if } m = 0 \\\\ \n", - " A(m-1, 1) & \\mbox{if } m > 0 \\mbox{ and } n = 0 \\\\ \n", - "A(m-1, A(m, n-1)) & \\mbox{if } m > 0 \\mbox{ and } n > 0.\n", - "\\end{cases} \n", - "\\end{aligned}$$ \n", - "\n", - "Write a function named `ackermann` that evaluates the Ackermann function.\n", - "What happens if you call `ackermann(5, 5)`?" - ] - }, - { - "cell_type": "code", - "execution_count": 78, - "id": "7eb85c5c", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def ackermann(m, n):\n", - " \"\"\"Computes the Ackermann function A(m, n)\n", - "\n", - " See http://en.wikipedia.org/wiki/Ackermann_function\n", - "\n", - " n, m: non-negative integers\n", - " \"\"\"\n", - " if m == 0:\n", - " return n+1\n", - " if n == 0:\n", - " return ackermann(m-1, 1)\n", - " return ackermann(m-1, ackermann(m, n-1))" - ] - }, - { - "cell_type": "markdown", - "id": "85f7f614", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "You can use these examples to test your function." - ] - }, - { - "cell_type": "code", - "execution_count": 79, - "id": "687a3e5a", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "29" - ] - }, - "execution_count": 79, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "ackermann(3, 2) # should be 29" - ] - }, - { - "cell_type": "code", - "execution_count": 80, - "id": "c49e9749", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "61" - ] - }, - "execution_count": 80, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "ackermann(3, 3) # should be 61" - ] - }, - { - "cell_type": "code", - "execution_count": 81, - "id": "8497dec4", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "125" - ] - }, - "execution_count": 81, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "ackermann(3, 4) # should be 125" - ] - }, - { - "cell_type": "markdown", - "id": "4994ceae", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "If you call this function with values bigger than 4, you get a `RecursionError`." - ] - }, - { - "cell_type": "code", - "execution_count": 82, - "id": "76be4d15", - "metadata": { - "tags": [ - "raises-exception", - "remove-cell" - ] - }, - "outputs": [ - { - "ename": "RecursionError", - "evalue": "maximum recursion depth exceeded in comparison", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mRecursionError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[82], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mackermann\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m5\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m5\u001b[39;49m\u001b[43m)\u001b[49m\n", - "Cell \u001b[0;32mIn[78], line 14\u001b[0m, in \u001b[0;36mackermann\u001b[0;34m(m=5, n=5)\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m n \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m0\u001b[39m:\n\u001b[1;32m 13\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m ackermann(m\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m, \u001b[38;5;241m1\u001b[39m)\n\u001b[0;32m---> 14\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m ackermann(m\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m, \u001b[43mackermann\u001b[49m\u001b[43m(\u001b[49m\u001b[43mm\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mn\u001b[49m\u001b[38;5;241;43m-\u001b[39;49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m)\u001b[49m)\n m \u001b[0;34m= 5\u001b[0m\u001b[0;34m\n \u001b[0mn \u001b[0;34m= 5\u001b[0m\u001b[0;34m\n \u001b[0mm-1 \u001b[0;34m= 4\u001b[0m\u001b[0;34m\n \u001b[0mn-1 \u001b[0;34m= 4\u001b[0m\n", - "Cell \u001b[0;32mIn[78], line 14\u001b[0m, in \u001b[0;36mackermann\u001b[0;34m(m=5, n=4)\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m n \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m0\u001b[39m:\n\u001b[1;32m 13\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m ackermann(m\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m, \u001b[38;5;241m1\u001b[39m)\n\u001b[0;32m---> 14\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m ackermann(m\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m, \u001b[43mackermann\u001b[49m\u001b[43m(\u001b[49m\u001b[43mm\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mn\u001b[49m\u001b[38;5;241;43m-\u001b[39;49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m)\u001b[49m)\n m \u001b[0;34m= 5\u001b[0m\u001b[0;34m\n \u001b[0mn \u001b[0;34m= 4\u001b[0m\u001b[0;34m\n \u001b[0mm-1 \u001b[0;34m= 4\u001b[0m\u001b[0;34m\n \u001b[0mn-1 \u001b[0;34m= 3\u001b[0m\n", - " \u001b[0;31m[... skipping similar frames: ackermann at line 14 (2 times)]\u001b[0m\n", - "Cell \u001b[0;32mIn[78], line 14\u001b[0m, in \u001b[0;36mackermann\u001b[0;34m(m=5, n=1)\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m n \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m0\u001b[39m:\n\u001b[1;32m 13\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m ackermann(m\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m, \u001b[38;5;241m1\u001b[39m)\n\u001b[0;32m---> 14\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m ackermann(m\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m, \u001b[43mackermann\u001b[49m\u001b[43m(\u001b[49m\u001b[43mm\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mn\u001b[49m\u001b[38;5;241;43m-\u001b[39;49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m)\u001b[49m)\n m \u001b[0;34m= 5\u001b[0m\u001b[0;34m\n \u001b[0mn \u001b[0;34m= 1\u001b[0m\u001b[0;34m\n \u001b[0mm-1 \u001b[0;34m= 4\u001b[0m\u001b[0;34m\n \u001b[0mn-1 \u001b[0;34m= 0\u001b[0m\n", - "Cell \u001b[0;32mIn[78], line 13\u001b[0m, in \u001b[0;36mackermann\u001b[0;34m(m=5, n=0)\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m n\u001b[38;5;241m+\u001b[39m\u001b[38;5;241m1\u001b[39m\n\u001b[1;32m 12\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m n \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m0\u001b[39m:\n\u001b[0;32m---> 13\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mackermann\u001b[49m\u001b[43m(\u001b[49m\u001b[43mm\u001b[49m\u001b[38;5;241;43m-\u001b[39;49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m)\u001b[49m\n m \u001b[0;34m= 5\u001b[0m\u001b[0;34m\n \u001b[0mm-1 \u001b[0;34m= 4\u001b[0m\n\u001b[1;32m 14\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m ackermann(m\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m, ackermann(m, n\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m))\n", - "Cell \u001b[0;32mIn[78], line 14\u001b[0m, in \u001b[0;36mackermann\u001b[0;34m(m=4, n=1)\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m n \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m0\u001b[39m:\n\u001b[1;32m 13\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m ackermann(m\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m, \u001b[38;5;241m1\u001b[39m)\n\u001b[0;32m---> 14\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mackermann\u001b[49m\u001b[43m(\u001b[49m\u001b[43mm\u001b[49m\u001b[38;5;241;43m-\u001b[39;49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mackermann\u001b[49m\u001b[43m(\u001b[49m\u001b[43mm\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mn\u001b[49m\u001b[38;5;241;43m-\u001b[39;49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n m \u001b[0;34m= 4\u001b[0m\u001b[0;34m\n \u001b[0mn \u001b[0;34m= 1\u001b[0m\u001b[0;34m\n \u001b[0mm-1 \u001b[0;34m= 3\u001b[0m\u001b[0;34m\n \u001b[0mn-1 \u001b[0;34m= 0\u001b[0m\n", - "Cell \u001b[0;32mIn[78], line 14\u001b[0m, in \u001b[0;36mackermann\u001b[0;34m(m=3, n=13)\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m n \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m0\u001b[39m:\n\u001b[1;32m 13\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m ackermann(m\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m, \u001b[38;5;241m1\u001b[39m)\n\u001b[0;32m---> 14\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m ackermann(m\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m, \u001b[43mackermann\u001b[49m\u001b[43m(\u001b[49m\u001b[43mm\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mn\u001b[49m\u001b[38;5;241;43m-\u001b[39;49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m)\u001b[49m)\n m \u001b[0;34m= 3\u001b[0m\u001b[0;34m\n \u001b[0mn \u001b[0;34m= 13\u001b[0m\u001b[0;34m\n \u001b[0mm-1 \u001b[0;34m= 2\u001b[0m\u001b[0;34m\n \u001b[0mn-1 \u001b[0;34m= 12\u001b[0m\n", - " \u001b[0;31m[... skipping similar frames: ackermann at line 14 (2950 times)]\u001b[0m\n", - "Cell \u001b[0;32mIn[78], line 14\u001b[0m, in \u001b[0;36mackermann\u001b[0;34m(m=1, n=1)\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m n \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m0\u001b[39m:\n\u001b[1;32m 13\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m ackermann(m\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m, \u001b[38;5;241m1\u001b[39m)\n\u001b[0;32m---> 14\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m ackermann(m\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m, \u001b[43mackermann\u001b[49m\u001b[43m(\u001b[49m\u001b[43mm\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mn\u001b[49m\u001b[38;5;241;43m-\u001b[39;49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m)\u001b[49m)\n m \u001b[0;34m= 1\u001b[0m\u001b[0;34m\n \u001b[0mn \u001b[0;34m= 1\u001b[0m\u001b[0;34m\n \u001b[0mm-1 \u001b[0;34m= 0\u001b[0m\u001b[0;34m\n \u001b[0mn-1 \u001b[0;34m= 0\u001b[0m\n", - "Cell \u001b[0;32mIn[78], line 13\u001b[0m, in \u001b[0;36mackermann\u001b[0;34m(m=1, n=0)\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m n\u001b[38;5;241m+\u001b[39m\u001b[38;5;241m1\u001b[39m\n\u001b[1;32m 12\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m n \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m0\u001b[39m:\n\u001b[0;32m---> 13\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mackermann\u001b[49m\u001b[43m(\u001b[49m\u001b[43mm\u001b[49m\u001b[38;5;241;43m-\u001b[39;49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m)\u001b[49m\n m \u001b[0;34m= 1\u001b[0m\u001b[0;34m\n \u001b[0mm-1 \u001b[0;34m= 0\u001b[0m\n\u001b[1;32m 14\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m ackermann(m\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m, ackermann(m, n\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m))\n", - "Cell \u001b[0;32mIn[78], line 10\u001b[0m, in \u001b[0;36mackermann\u001b[0;34m(m=0, n=1)\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mackermann\u001b[39m(m, n):\n\u001b[1;32m 4\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Computes the Ackermann function A(m, n)\u001b[39;00m\n\u001b[1;32m 5\u001b[0m \n\u001b[1;32m 6\u001b[0m \u001b[38;5;124;03m See http://en.wikipedia.org/wiki/Ackermann_function\u001b[39;00m\n\u001b[1;32m 7\u001b[0m \n\u001b[1;32m 8\u001b[0m \u001b[38;5;124;03m n, m: non-negative integers\u001b[39;00m\n\u001b[1;32m 9\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m---> 10\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[43mm\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m==\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;241;43m0\u001b[39;49m:\n m == 0 \u001b[0;34m= True\u001b[0m\u001b[0;34m\n \u001b[0mm \u001b[0;34m= 0\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m n\u001b[38;5;241m+\u001b[39m\u001b[38;5;241m1\u001b[39m\n\u001b[1;32m 12\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m n \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m0\u001b[39m:\n", - "\u001b[0;31mRecursionError\u001b[0m: maximum recursion depth exceeded in comparison" - ] - } - ], - "source": [ - "%%expect RecursionError\n", - "\n", - "ackermann(5, 5)" - ] - }, - { - "cell_type": "markdown", - "id": "b8af1586", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "To see why, add a print statement to the beginning of the function to display the values of the parameters, and then run the examples again." - ] - }, - { - "cell_type": "markdown", - "id": "7c2ac0a4", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "### Exercise\n", - "\n", - "A number, $a$, is a power of $b$ if it is divisible by $b$ and $a/b$ is\n", - "a power of $b$. Write a function called `is_power` that takes parameters\n", - "`a` and `b` and returns `True` if `a` is a power of `b`. Note: you will\n", - "have to think about the base case." - ] - }, - { - "cell_type": "code", - "execution_count": 83, - "id": "0bcba5fe", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def is_power(a, b):\n", - " \"\"\"Check whether a is a power of b\n", - " \"\"\"\n", - " if a == 1:\n", - " return True\n", - " \n", - " if is_divisible(a, b):\n", - " return is_power(a/b, b)\n", - " else:\n", - " return False" - ] - }, - { - "cell_type": "markdown", - "id": "e93a0715", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "You can use these examples to test your function." - ] - }, - { - "cell_type": "code", - "execution_count": 84, - "id": "4b6656e6", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 84, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "is_power(65536, 2) # should be True" - ] - }, - { - "cell_type": "code", - "execution_count": 85, - "id": "36d9e92a", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 85, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "is_power(27, 3) # should be True" - ] - }, - { - "cell_type": "code", - "execution_count": 86, - "id": "1d944b42", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 86, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "is_power(24, 2) # should be False" - ] - }, - { - "cell_type": "code", - "execution_count": 87, - "id": "63ec57c9", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 87, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "is_power(1, 17) # should be True" - ] - }, - { - "cell_type": "markdown", - "id": "a33bbd07", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "The greatest common divisor (GCD) of $a$ and $b$ is the largest number\n", - "that divides both of them with no remainder.\n", - "\n", - "One way to find the GCD of two numbers is based on the observation that\n", - "if $r$ is the remainder when $a$ is divided by $b$, then $gcd(a,\n", - "b) = gcd(b, r)$. As a base case, we can use $gcd(a, 0) = a$.\n", - "\n", - "Write a function called `gcd` that takes parameters `a` and `b` and\n", - "returns their greatest common divisor." - ] - }, - { - "cell_type": "code", - "execution_count": 88, - "id": "4e067bfb", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def gcd(a, b):\n", - " if b == 0:\n", - " return a\n", - " else:\n", - " return gcd(b, a%b)" - ] - }, - { - "cell_type": "markdown", - "id": "efbebde9", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "You can use these examples to test your function." - ] - }, - { - "cell_type": "code", - "execution_count": 89, - "id": "2a7c1c21", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "4" - ] - }, - "execution_count": 89, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "gcd(12, 8) # should be 4" - ] - }, - { - "cell_type": "code", - "execution_count": 90, - "id": "5df00229", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "1" - ] - }, - "execution_count": 90, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "gcd(13, 17) # should be 1" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "8bec38b3", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "id": "a7f4edf8", - "metadata": { - "tags": [] - }, - "source": [ - "[Think Python: 3rd Edition](https://allendowney.github.io/ThinkPython/index.html)\n", - "\n", - "Copyright 2024 [Allen B. Downey](https://allendowney.com)\n", - "\n", - "Code license: [MIT License](https://mit-license.org/)\n", - "\n", - "Text license: [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-nc-sa/4.0/)" - ] - } - ], - "metadata": { - "celltoolbar": "Tags", - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.11" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/soln/chap07.ipynb b/soln/chap07.ipynb deleted file mode 100644 index 3101aab..0000000 --- a/soln/chap07.ipynb +++ /dev/null @@ -1,116027 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "1331faa1", - "metadata": {}, - "source": [ - "You can order print and ebook versions of *Think Python 3e* from\n", - "[Bookshop.org](https://bookshop.org/a/98697/9781098155438) and\n", - "[Amazon](https://www.amazon.com/_/dp/1098155432?smid=ATVPDKIKX0DER&_encoding=UTF8&tag=oreilly20-20&_encoding=UTF8&tag=greenteapre01-20&linkCode=ur2&linkId=e2a529f94920295d27ec8a06e757dc7c&camp=1789&creative=9325)." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "f0c8eb18", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "from os.path import basename, exists\n", - "\n", - "def download(url):\n", - " filename = basename(url)\n", - " if not exists(filename):\n", - " from urllib.request import urlretrieve\n", - "\n", - " local, _ = urlretrieve(url, filename)\n", - " print(\"Downloaded \" + str(local))\n", - " return filename\n", - "\n", - "download('https://github.com/AllenDowney/ThinkPython/raw/v3/thinkpython.py');\n", - "download('https://github.com/AllenDowney/ThinkPython/raw/v3/diagram.py');\n", - "\n", - "import thinkpython" - ] - }, - { - "cell_type": "markdown", - "id": "a81d9ad2-9a47-4872-bf65-5a8dfb09c32f", - "metadata": { - "tags": [ - "chapter_search" - ] - }, - "source": [ - "# Iteration and Search\n", - "\n", - "In 1939 Ernest Vincent Wright published a 50,000 word novel called *Gadsby* that does not contain the letter \"e\". Since \"e\" is the most common letter in English, writing even a few words without using it is difficult.\n", - "To get a sense of how difficult, in this chapter we'll compute the fraction of English words have at least one \"e\".\n", - "\n", - "For that, we'll use `for` statements to loop through the letters in a string and the words in a file, and we'll update variables in a loop to count the number of words that contain an \"e\".\n", - "We'll use the `in` operator to check whether a letter appears in a word, and you'll learn a programming pattern called a \"linear search\".\n", - "\n", - "As an exercise, you'll use these tools to solve a word puzzle called \"Spelling Bee\"." - ] - }, - { - "cell_type": "markdown", - "id": "389f5162-0a8c-4cc7-99f1-a261e0b39006", - "metadata": {}, - "source": [ - "## Loops and strings\n", - "\n", - "In Chapter 3 we saw a `for` loop that uses the `range` function to display a sequence of numbers." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "6b8569b8-1576-45d2-99f6-c7a2c7e100c4", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0 1 2 " - ] - } - ], - "source": [ - "for i in range(3):\n", - " print(i, end=' ')" - ] - }, - { - "cell_type": "markdown", - "id": "937a0af9-5486-4195-8e59-6f819db1cf3f", - "metadata": {}, - "source": [ - "This version uses the keyword argument `end` so the `print` function puts a space after each number rather than a newline.\n", - "\n", - "We can also use a `for` loop to display the letters in a string." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "6cb5b573-601c-42f5-a940-f1a4d244f990", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "G a d s b y " - ] - } - ], - "source": [ - "for letter in 'Gadsby':\n", - " print(letter, end=' ')" - ] - }, - { - "cell_type": "markdown", - "id": "72044436-ed85-407b-8821-9696648ec29c", - "metadata": {}, - "source": [ - "Notice that I changed the name of the variable from `i` to `letter`, which provides more information about the value it refers to.\n", - "The variable defined in a `for` loop is called the **loop variable**.\n", - "\n", - "Now that we can loop through the letters in a word, we can check whether it contains the letter \"e\"." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "7040a890-6619-4ad2-b0bf-b094a5a0e43d", - "metadata": {}, - "outputs": [], - "source": [ - "for letter in \"Gadsby\":\n", - " if letter == 'E' or letter == 'e':\n", - " print('This word has an \"e\"')" - ] - }, - { - "cell_type": "markdown", - "id": "644b7df2-4528-48d9-a003-2d21fbefbaab", - "metadata": {}, - "source": [ - "Before we go on, let's encapsulate that loop in a function." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "40fd553c-693c-4ffc-8e49-1d7de3c4d4a7", - "metadata": {}, - "outputs": [], - "source": [ - "def has_e():\n", - " for letter in \"Gadsby\":\n", - " if letter == 'E' or letter == 'e':\n", - " print('This word has an \"e\"')" - ] - }, - { - "cell_type": "markdown", - "id": "31cfacd9-5721-457a-be40-80cf002723b2", - "metadata": {}, - "source": [ - "And let's make it a pure function that return `True` if the word contains an \"e\" and `False` otherwise." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "8a34174b-5a77-482a-8480-14cfdff16339", - "metadata": {}, - "outputs": [], - "source": [ - "def has_e():\n", - " for letter in \"Gadsby\":\n", - " if letter == 'E' or letter == 'e':\n", - " return True\n", - " return False" - ] - }, - { - "cell_type": "markdown", - "id": "8f45502e-6db3-4fcc-802c-c97398787dbd", - "metadata": {}, - "source": [ - "We can generalize it to take the word as a parameter." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "0909121d-5218-49ca-b03e-258206f00e40", - "metadata": {}, - "outputs": [], - "source": [ - "def has_e(word):\n", - " for letter in word:\n", - " if letter == 'E' or letter == 'e':\n", - " return True\n", - " return False" - ] - }, - { - "cell_type": "markdown", - "id": "590f4399-16d3-4f1c-93bc-b1fe7ce46633", - "metadata": {}, - "source": [ - "Now we can test it like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "3c4d8138-ddf6-46fe-a940-a7042617ceb1", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "has_e('Gadsby')" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "5c463051-b737-49ab-a1d7-4be66fd8331f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "has_e('Emma')" - ] - }, - { - "cell_type": "markdown", - "id": "8adf1e92-435e-4b54-837a-bad603ebcafd", - "metadata": {}, - "source": [ - "## Reading the word list\n", - "\n", - "To see how many words contain an \"e\", we'll need a word list.\n", - "The one we'll use is a list of about 114,000 official crosswords; that is, words that are considered valid in crossword puzzles and other word games. " - ] - }, - { - "cell_type": "markdown", - "id": "0e3d1c79-5436-42ac-9e29-82fc59936263", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "The following cell downloads the word list, which is a modified version of a list collected and contributed to the public domain by Grady Ward as part of the Moby lexicon project (see )." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "a7b7ac52-64a6-4dd9-98f5-b772a5e0f161", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "download('https://raw.githubusercontent.com/AllenDowney/ThinkPython/v3/words.txt');" - ] - }, - { - "cell_type": "markdown", - "id": "5b383a3c-d173-4a66-bf86-23b329032004", - "metadata": {}, - "source": [ - "The word list is in a file called `words.txt`, which is downloaded in the notebook for this chapter.\n", - "To read it, we'll use the built-in function `open`, which takes the name of the file as a parameter and returns a **file object** we can use to read the file." - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "1ad13ce7-99be-4412-8e0b-978fe6de25f2", - "metadata": {}, - "outputs": [], - "source": [ - "file_object = open('words.txt')" - ] - }, - { - "cell_type": "markdown", - "id": "4414d9b1-cb8e-472e-818c-0555e29b1ad5", - "metadata": {}, - "source": [ - "The file object provides a function called `readline`, which reads characters from the file until it gets to a newline and returns the result as a string:" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "dc2054e6-d8e8-4a06-a1ea-5cfcf4ccf1e0", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'aa\\n'" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "file_object.readline()" - ] - }, - { - "cell_type": "markdown", - "id": "d74e9fe9-117e-436a-ade3-3d08dfda2a00", - "metadata": {}, - "source": [ - "Notice that the syntax for calling `readline` is different from functions we've seen so far. That's because it is a **method**, which is a function associated with an object.\n", - "In this case `readline` is associated with the file object, so we call it using the name of the object, the dot operator, and the name of the method.\n", - "\n", - "The first word in the list is \"aa\", which is a kind of lava.\n", - "The sequence `\\n` represents the newline character that separates this word from the next.\n", - "\n", - "The file object keeps track of where it is in the file, so if you call\n", - "`readline` again, you get the next word:" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "eaea1520-0fb3-4ef3-be6e-9e1cdcccf39f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'aah\\n'" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "line = file_object.readline()\n", - "line" - ] - }, - { - "cell_type": "markdown", - "id": "cd466fdb-38ce-4e5b-92c7-05dc23922005", - "metadata": {}, - "source": [ - "To remove the newline from the end of the word, we can use `strip`, which is a method associated with strings, so we can call it like this." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "f602bfb6-7a93-4fb8-ade6-6784155a6f1a", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'aah'" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "word = line.strip()\n", - "word" - ] - }, - { - "cell_type": "markdown", - "id": "6dda6bac-e02e-47ee-9bab-70cef8c27d7a", - "metadata": {}, - "source": [ - "`strip` removes whitespace characters -- including spaces, tabs, and newlines -- from the beginning and end of the string.\n", - "\n", - "You can also use a file object as part of a `for` loop. \n", - "This program reads `words.txt` and prints each word, one per line:" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "cf3b8b7e-5fc7-4bb1-b628-09277bdc5a0d", - "metadata": { - "tags": [ - "remove-output" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "aa\n", - "aah\n", - "aahed\n", - "aahing\n", - "aahs\n", - "aal\n", - "aalii\n", - "aaliis\n", - "aals\n", - "aardvark\n", - "aardvarks\n", - "aardwolf\n", - "aardwolves\n", - "aas\n", - "aasvogel\n", - "aasvogels\n", - "aba\n", - "abaca\n", - "abacas\n", - "abaci\n", - "aback\n", - "abacus\n", - "abacuses\n", - "abaft\n", - "abaka\n", - "abakas\n", - "abalone\n", - "abalones\n", - "abamp\n", - "abampere\n", - "abamperes\n", - "abamps\n", - "abandon\n", - "abandoned\n", - "abandoning\n", - "abandonment\n", - "abandonments\n", - "abandons\n", - "abas\n", - "abase\n", - "abased\n", - "abasedly\n", - "abasement\n", - "abasements\n", - "abaser\n", - "abasers\n", - "abases\n", - "abash\n", - "abashed\n", - "abashes\n", - "abashing\n", - "abasing\n", - "abatable\n", - "abate\n", - "abated\n", - "abatement\n", - "abatements\n", - "abater\n", - "abaters\n", - "abates\n", - "abating\n", - "abatis\n", - "abatises\n", - "abator\n", - "abators\n", - "abattis\n", - "abattises\n", - "abattoir\n", - "abattoirs\n", - "abaxial\n", - "abaxile\n", - "abbacies\n", - "abbacy\n", - "abbatial\n", - "abbe\n", - "abbes\n", - "abbess\n", - "abbesses\n", - "abbey\n", - "abbeys\n", - "abbot\n", - "abbotcies\n", - "abbotcy\n", - "abbots\n", - "abbreviate\n", - "abbreviated\n", - "abbreviates\n", - "abbreviating\n", - "abbreviation\n", - "abbreviations\n", - "abdicate\n", - "abdicated\n", - "abdicates\n", - "abdicating\n", - "abdication\n", - "abdications\n", - "abdomen\n", - "abdomens\n", - "abdomina\n", - "abdominal\n", - "abdominally\n", - "abduce\n", - "abduced\n", - "abducens\n", - "abducent\n", - "abducentes\n", - "abduces\n", - "abducing\n", - "abduct\n", - "abducted\n", - "abducting\n", - "abductor\n", - "abductores\n", - "abductors\n", - "abducts\n", - "abeam\n", - "abed\n", - "abele\n", - "abeles\n", - "abelmosk\n", - "abelmosks\n", - "aberrant\n", - "aberrants\n", - "aberration\n", - "aberrations\n", - "abet\n", - "abetment\n", - "abetments\n", - "abets\n", - "abettal\n", - "abettals\n", - "abetted\n", - "abetter\n", - "abetters\n", - "abetting\n", - "abettor\n", - "abettors\n", - "abeyance\n", - "abeyances\n", - "abeyancies\n", - "abeyancy\n", - "abeyant\n", - "abfarad\n", - "abfarads\n", - "abhenries\n", - "abhenry\n", - "abhenrys\n", - "abhor\n", - "abhorred\n", - "abhorrence\n", - "abhorrences\n", - "abhorrent\n", - "abhorrer\n", - "abhorrers\n", - "abhorring\n", - "abhors\n", - "abidance\n", - "abidances\n", - "abide\n", - "abided\n", - "abider\n", - "abiders\n", - "abides\n", - "abiding\n", - "abied\n", - "abies\n", - "abigail\n", - "abigails\n", - "abilities\n", - "ability\n", - "abioses\n", - "abiosis\n", - "abiotic\n", - "abject\n", - "abjectly\n", - "abjectness\n", - "abjectnesses\n", - "abjuration\n", - "abjurations\n", - "abjure\n", - "abjured\n", - "abjurer\n", - "abjurers\n", - "abjures\n", - "abjuring\n", - "ablate\n", - "ablated\n", - "ablates\n", - "ablating\n", - "ablation\n", - "ablations\n", - "ablative\n", - "ablatives\n", - "ablaut\n", - "ablauts\n", - "ablaze\n", - "able\n", - "ablegate\n", - "ablegates\n", - "abler\n", - "ables\n", - "ablest\n", - "ablings\n", - "ablins\n", - "abloom\n", - "abluent\n", - "abluents\n", - "ablush\n", - "abluted\n", - "ablution\n", - "ablutions\n", - "ably\n", - "abmho\n", - "abmhos\n", - "abnegate\n", - "abnegated\n", - "abnegates\n", - "abnegating\n", - "abnegation\n", - "abnegations\n", - "abnormal\n", - "abnormalities\n", - "abnormality\n", - "abnormally\n", - "abnormals\n", - "abo\n", - "aboard\n", - "abode\n", - "aboded\n", - "abodes\n", - "aboding\n", - "abohm\n", - "abohms\n", - "aboideau\n", - "aboideaus\n", - "aboideaux\n", - "aboil\n", - "aboiteau\n", - "aboiteaus\n", - "aboiteaux\n", - "abolish\n", - "abolished\n", - "abolishes\n", - "abolishing\n", - "abolition\n", - "abolitions\n", - "abolla\n", - "abollae\n", - "aboma\n", - "abomas\n", - "abomasa\n", - "abomasal\n", - "abomasi\n", - "abomasum\n", - "abomasus\n", - "abominable\n", - "abominate\n", - "abominated\n", - "abominates\n", - "abominating\n", - "abomination\n", - "abominations\n", - "aboon\n", - "aboral\n", - "aborally\n", - "aboriginal\n", - "aborigine\n", - "aborigines\n", - "aborning\n", - "abort\n", - "aborted\n", - "aborter\n", - "aborters\n", - "aborting\n", - "abortion\n", - "abortions\n", - "abortive\n", - "aborts\n", - "abos\n", - "abought\n", - "aboulia\n", - "aboulias\n", - "aboulic\n", - "abound\n", - "abounded\n", - "abounding\n", - "abounds\n", - "about\n", - "above\n", - "aboveboard\n", - "aboves\n", - "abracadabra\n", - "abradant\n", - "abradants\n", - "abrade\n", - "abraded\n", - "abrader\n", - "abraders\n", - "abrades\n", - "abrading\n", - "abrasion\n", - "abrasions\n", - "abrasive\n", - "abrasively\n", - "abrasiveness\n", - "abrasivenesses\n", - "abrasives\n", - "abreact\n", - "abreacted\n", - "abreacting\n", - "abreacts\n", - "abreast\n", - "abri\n", - "abridge\n", - "abridged\n", - "abridgement\n", - "abridgements\n", - "abridger\n", - "abridgers\n", - "abridges\n", - "abridging\n", - "abridgment\n", - "abridgments\n", - "abris\n", - "abroach\n", - "abroad\n", - "abrogate\n", - "abrogated\n", - "abrogates\n", - "abrogating\n", - "abrupt\n", - "abrupter\n", - "abruptest\n", - "abruptly\n", - "abscess\n", - "abscessed\n", - "abscesses\n", - "abscessing\n", - "abscise\n", - "abscised\n", - "abscises\n", - "abscisin\n", - "abscising\n", - "abscisins\n", - "abscissa\n", - "abscissae\n", - "abscissas\n", - "abscond\n", - "absconded\n", - "absconding\n", - "absconds\n", - "absence\n", - "absences\n", - "absent\n", - "absented\n", - "absentee\n", - "absentees\n", - "absenter\n", - "absenters\n", - "absenting\n", - "absently\n", - "absentminded\n", - "absentmindedly\n", - "absentmindedness\n", - "absentmindednesses\n", - "absents\n", - "absinth\n", - "absinthe\n", - "absinthes\n", - "absinths\n", - "absolute\n", - "absolutely\n", - "absoluter\n", - "absolutes\n", - "absolutest\n", - "absolution\n", - "absolutions\n", - "absolve\n", - "absolved\n", - "absolver\n", - "absolvers\n", - "absolves\n", - "absolving\n", - "absonant\n", - "absorb\n", - "absorbed\n", - "absorbencies\n", - "absorbency\n", - "absorbent\n", - "absorber\n", - "absorbers\n", - "absorbing\n", - "absorbingly\n", - "absorbs\n", - "absorption\n", - "absorptions\n", - "absorptive\n", - "abstain\n", - "abstained\n", - "abstainer\n", - "abstainers\n", - "abstaining\n", - "abstains\n", - "abstemious\n", - "abstemiously\n", - "abstention\n", - "abstentions\n", - "absterge\n", - "absterged\n", - "absterges\n", - "absterging\n", - "abstinence\n", - "abstinences\n", - "abstract\n", - "abstracted\n", - "abstracter\n", - "abstractest\n", - "abstracting\n", - "abstraction\n", - "abstractions\n", - "abstractly\n", - "abstractness\n", - "abstractnesses\n", - "abstracts\n", - "abstrict\n", - "abstricted\n", - "abstricting\n", - "abstricts\n", - "abstruse\n", - "abstrusely\n", - "abstruseness\n", - "abstrusenesses\n", - "abstruser\n", - "abstrusest\n", - "absurd\n", - "absurder\n", - "absurdest\n", - "absurdities\n", - "absurdity\n", - "absurdly\n", - "absurds\n", - "abubble\n", - "abulia\n", - "abulias\n", - "abulic\n", - "abundance\n", - "abundances\n", - "abundant\n", - "abundantly\n", - "abusable\n", - "abuse\n", - "abused\n", - "abuser\n", - "abusers\n", - "abuses\n", - "abusing\n", - "abusive\n", - "abusively\n", - "abusiveness\n", - "abusivenesses\n", - "abut\n", - "abutilon\n", - "abutilons\n", - "abutment\n", - "abutments\n", - "abuts\n", - "abuttal\n", - "abuttals\n", - "abutted\n", - "abutter\n", - "abutters\n", - "abutting\n", - "abuzz\n", - "abvolt\n", - "abvolts\n", - "abwatt\n", - "abwatts\n", - "aby\n", - "abye\n", - "abyed\n", - "abyes\n", - "abying\n", - "abys\n", - "abysm\n", - "abysmal\n", - "abysmally\n", - "abysms\n", - "abyss\n", - "abyssal\n", - "abysses\n", - "acacia\n", - "acacias\n", - "academe\n", - "academes\n", - "academia\n", - "academias\n", - "academic\n", - "academically\n", - "academics\n", - "academies\n", - "academy\n", - "acajou\n", - "acajous\n", - "acaleph\n", - "acalephae\n", - "acalephe\n", - "acalephes\n", - "acalephs\n", - "acanthi\n", - "acanthus\n", - "acanthuses\n", - "acari\n", - "acarid\n", - "acaridan\n", - "acaridans\n", - "acarids\n", - "acarine\n", - "acarines\n", - "acaroid\n", - "acarpous\n", - "acarus\n", - "acaudal\n", - "acaudate\n", - "acauline\n", - "acaulose\n", - "acaulous\n", - "accede\n", - "acceded\n", - "acceder\n", - "acceders\n", - "accedes\n", - "acceding\n", - "accelerate\n", - "accelerated\n", - "accelerates\n", - "accelerating\n", - "acceleration\n", - "accelerations\n", - "accelerator\n", - "accelerators\n", - "accent\n", - "accented\n", - "accenting\n", - "accentor\n", - "accentors\n", - "accents\n", - "accentual\n", - "accentuate\n", - "accentuated\n", - "accentuates\n", - "accentuating\n", - "accentuation\n", - "accentuations\n", - "accept\n", - "acceptabilities\n", - "acceptability\n", - "acceptable\n", - "acceptance\n", - "acceptances\n", - "accepted\n", - "acceptee\n", - "acceptees\n", - "accepter\n", - "accepters\n", - "accepting\n", - "acceptor\n", - "acceptors\n", - "accepts\n", - "access\n", - "accessed\n", - "accesses\n", - "accessibilities\n", - "accessibility\n", - "accessible\n", - "accessing\n", - "accession\n", - "accessions\n", - "accessories\n", - "accessory\n", - "accident\n", - "accidental\n", - "accidentally\n", - "accidentals\n", - "accidents\n", - "accidie\n", - "accidies\n", - "acclaim\n", - "acclaimed\n", - "acclaiming\n", - "acclaims\n", - "acclamation\n", - "acclamations\n", - "acclimate\n", - "acclimated\n", - "acclimates\n", - "acclimating\n", - "acclimation\n", - "acclimations\n", - "acclimatization\n", - "acclimatizations\n", - "acclimatize\n", - "acclimatizes\n", - "accolade\n", - "accolades\n", - "accommodate\n", - "accommodated\n", - "accommodates\n", - "accommodating\n", - "accommodation\n", - "accommodations\n", - "accompanied\n", - "accompanies\n", - "accompaniment\n", - "accompaniments\n", - "accompanist\n", - "accompany\n", - "accompanying\n", - "accomplice\n", - "accomplices\n", - "accomplish\n", - "accomplished\n", - "accomplisher\n", - "accomplishers\n", - "accomplishes\n", - "accomplishing\n", - "accomplishment\n", - "accomplishments\n", - "accord\n", - "accordance\n", - "accordant\n", - "accorded\n", - "accorder\n", - "accorders\n", - "according\n", - "accordingly\n", - "accordion\n", - "accordions\n", - "accords\n", - "accost\n", - "accosted\n", - "accosting\n", - "accosts\n", - "account\n", - "accountabilities\n", - "accountability\n", - "accountable\n", - "accountancies\n", - "accountancy\n", - "accountant\n", - "accountants\n", - "accounted\n", - "accounting\n", - "accountings\n", - "accounts\n", - "accouter\n", - "accoutered\n", - "accoutering\n", - "accouters\n", - "accoutre\n", - "accoutred\n", - "accoutrement\n", - "accoutrements\n", - "accoutres\n", - "accoutring\n", - "accredit\n", - "accredited\n", - "accrediting\n", - "accredits\n", - "accrete\n", - "accreted\n", - "accretes\n", - "accreting\n", - "accrual\n", - "accruals\n", - "accrue\n", - "accrued\n", - "accrues\n", - "accruing\n", - "accumulate\n", - "accumulated\n", - "accumulates\n", - "accumulating\n", - "accumulation\n", - "accumulations\n", - "accumulator\n", - "accumulators\n", - "accuracies\n", - "accuracy\n", - "accurate\n", - "accurately\n", - "accurateness\n", - "accuratenesses\n", - "accursed\n", - "accurst\n", - "accusal\n", - "accusals\n", - "accusant\n", - "accusants\n", - "accusation\n", - "accusations\n", - "accuse\n", - "accused\n", - "accuser\n", - "accusers\n", - "accuses\n", - "accusing\n", - "accustom\n", - "accustomed\n", - "accustoming\n", - "accustoms\n", - "ace\n", - "aced\n", - "acedia\n", - "acedias\n", - "aceldama\n", - "aceldamas\n", - "acentric\n", - "acequia\n", - "acequias\n", - "acerate\n", - "acerated\n", - "acerb\n", - "acerbate\n", - "acerbated\n", - "acerbates\n", - "acerbating\n", - "acerber\n", - "acerbest\n", - "acerbic\n", - "acerbities\n", - "acerbity\n", - "acerola\n", - "acerolas\n", - "acerose\n", - "acerous\n", - "acers\n", - "acervate\n", - "acervuli\n", - "aces\n", - "acescent\n", - "acescents\n", - "aceta\n", - "acetal\n", - "acetals\n", - "acetamid\n", - "acetamids\n", - "acetate\n", - "acetated\n", - "acetates\n", - "acetic\n", - "acetified\n", - "acetifies\n", - "acetify\n", - "acetifying\n", - "acetone\n", - "acetones\n", - "acetonic\n", - "acetose\n", - "acetous\n", - "acetoxyl\n", - "acetoxyls\n", - "acetum\n", - "acetyl\n", - "acetylene\n", - "acetylenes\n", - "acetylic\n", - "acetyls\n", - "ache\n", - "ached\n", - "achene\n", - "achenes\n", - "achenial\n", - "aches\n", - "achier\n", - "achiest\n", - "achievable\n", - "achieve\n", - "achieved\n", - "achievement\n", - "achievements\n", - "achiever\n", - "achievers\n", - "achieves\n", - "achieving\n", - "achiness\n", - "achinesses\n", - "aching\n", - "achingly\n", - "achiote\n", - "achiotes\n", - "achoo\n", - "achromat\n", - "achromats\n", - "achromic\n", - "achy\n", - "acicula\n", - "aciculae\n", - "acicular\n", - "aciculas\n", - "acid\n", - "acidhead\n", - "acidheads\n", - "acidic\n", - "acidified\n", - "acidifies\n", - "acidify\n", - "acidifying\n", - "acidities\n", - "acidity\n", - "acidly\n", - "acidness\n", - "acidnesses\n", - "acidoses\n", - "acidosis\n", - "acidotic\n", - "acids\n", - "acidy\n", - "acierate\n", - "acierated\n", - "acierates\n", - "acierating\n", - "aciform\n", - "acinar\n", - "acing\n", - "acini\n", - "acinic\n", - "acinose\n", - "acinous\n", - "acinus\n", - "acknowledge\n", - "acknowledged\n", - "acknowledgement\n", - "acknowledgements\n", - "acknowledges\n", - "acknowledging\n", - "acknowledgment\n", - "acknowledgments\n", - "aclinic\n", - "acmatic\n", - "acme\n", - "acmes\n", - "acmic\n", - "acne\n", - "acned\n", - "acnes\n", - "acnode\n", - "acnodes\n", - "acock\n", - "acold\n", - "acolyte\n", - "acolytes\n", - "aconite\n", - "aconites\n", - "aconitic\n", - "aconitum\n", - "aconitums\n", - "acorn\n", - "acorns\n", - "acoustic\n", - "acoustical\n", - "acoustically\n", - "acoustics\n", - "acquaint\n", - "acquaintance\n", - "acquaintances\n", - "acquaintanceship\n", - "acquaintanceships\n", - "acquainted\n", - "acquainting\n", - "acquaints\n", - "acquest\n", - "acquests\n", - "acquiesce\n", - "acquiesced\n", - "acquiescence\n", - "acquiescences\n", - "acquiescent\n", - "acquiescently\n", - "acquiesces\n", - "acquiescing\n", - "acquire\n", - "acquired\n", - "acquirer\n", - "acquirers\n", - "acquires\n", - "acquiring\n", - "acquisition\n", - "acquisitions\n", - "acquisitive\n", - "acquit\n", - "acquits\n", - "acquitted\n", - "acquitting\n", - "acrasin\n", - "acrasins\n", - "acre\n", - "acreage\n", - "acreages\n", - "acred\n", - "acres\n", - "acrid\n", - "acrider\n", - "acridest\n", - "acridine\n", - "acridines\n", - "acridities\n", - "acridity\n", - "acridly\n", - "acridness\n", - "acridnesses\n", - "acrimonies\n", - "acrimonious\n", - "acrimony\n", - "acrobat\n", - "acrobatic\n", - "acrobats\n", - "acrodont\n", - "acrodonts\n", - "acrogen\n", - "acrogens\n", - "acrolein\n", - "acroleins\n", - "acrolith\n", - "acroliths\n", - "acromia\n", - "acromial\n", - "acromion\n", - "acronic\n", - "acronym\n", - "acronyms\n", - "across\n", - "acrostic\n", - "acrostics\n", - "acrotic\n", - "acrotism\n", - "acrotisms\n", - "acrylate\n", - "acrylates\n", - "acrylic\n", - "acrylics\n", - "act\n", - "acta\n", - "actable\n", - "acted\n", - "actin\n", - "actinal\n", - "acting\n", - "actings\n", - "actinia\n", - "actiniae\n", - "actinian\n", - "actinians\n", - "actinias\n", - "actinic\n", - "actinide\n", - "actinides\n", - "actinism\n", - "actinisms\n", - "actinium\n", - "actiniums\n", - "actinoid\n", - "actinoids\n", - "actinon\n", - "actinons\n", - "actins\n", - "action\n", - "actions\n", - "activate\n", - "activated\n", - "activates\n", - "activating\n", - "activation\n", - "activations\n", - "active\n", - "actively\n", - "actives\n", - "activism\n", - "activisms\n", - "activist\n", - "activists\n", - "activities\n", - "activity\n", - "actor\n", - "actorish\n", - "actors\n", - "actress\n", - "actresses\n", - "acts\n", - "actual\n", - "actualities\n", - "actuality\n", - "actualization\n", - "actualizations\n", - "actualize\n", - "actualized\n", - "actualizes\n", - "actualizing\n", - "actually\n", - "actuarial\n", - "actuaries\n", - "actuary\n", - "actuate\n", - "actuated\n", - "actuates\n", - "actuating\n", - "actuator\n", - "actuators\n", - "acuate\n", - "acuities\n", - "acuity\n", - "aculeate\n", - "acumen\n", - "acumens\n", - "acupuncture\n", - "acupunctures\n", - "acupuncturist\n", - "acupuncturists\n", - "acutance\n", - "acutances\n", - "acute\n", - "acutely\n", - "acuteness\n", - "acutenesses\n", - "acuter\n", - "acutes\n", - "acutest\n", - "acyclic\n", - "acyl\n", - "acylate\n", - "acylated\n", - "acylates\n", - "acylating\n", - "acyls\n", - "ad\n", - "adage\n", - "adages\n", - "adagial\n", - "adagio\n", - "adagios\n", - "adamance\n", - "adamances\n", - "adamancies\n", - "adamancy\n", - "adamant\n", - "adamantlies\n", - "adamantly\n", - "adamants\n", - "adamsite\n", - "adamsites\n", - "adapt\n", - "adaptabilities\n", - "adaptability\n", - "adaptable\n", - "adaptation\n", - "adaptations\n", - "adapted\n", - "adapter\n", - "adapters\n", - "adapting\n", - "adaption\n", - "adaptions\n", - "adaptive\n", - "adaptor\n", - "adaptors\n", - "adapts\n", - "adaxial\n", - "add\n", - "addable\n", - "addax\n", - "addaxes\n", - "added\n", - "addedly\n", - "addend\n", - "addenda\n", - "addends\n", - "addendum\n", - "adder\n", - "adders\n", - "addible\n", - "addict\n", - "addicted\n", - "addicting\n", - "addiction\n", - "addictions\n", - "addictive\n", - "addicts\n", - "adding\n", - "addition\n", - "additional\n", - "additionally\n", - "additions\n", - "additive\n", - "additives\n", - "addle\n", - "addled\n", - "addles\n", - "addling\n", - "address\n", - "addressable\n", - "addressed\n", - "addresses\n", - "addressing\n", - "addrest\n", - "adds\n", - "adduce\n", - "adduced\n", - "adducent\n", - "adducer\n", - "adducers\n", - "adduces\n", - "adducing\n", - "adduct\n", - "adducted\n", - "adducting\n", - "adductor\n", - "adductors\n", - "adducts\n", - "adeem\n", - "adeemed\n", - "adeeming\n", - "adeems\n", - "adenine\n", - "adenines\n", - "adenitis\n", - "adenitises\n", - "adenoid\n", - "adenoidal\n", - "adenoids\n", - "adenoma\n", - "adenomas\n", - "adenomata\n", - "adenopathy\n", - "adenyl\n", - "adenyls\n", - "adept\n", - "adepter\n", - "adeptest\n", - "adeptly\n", - "adeptness\n", - "adeptnesses\n", - "adepts\n", - "adequacies\n", - "adequacy\n", - "adequate\n", - "adequately\n", - "adhere\n", - "adhered\n", - "adherence\n", - "adherences\n", - "adherend\n", - "adherends\n", - "adherent\n", - "adherents\n", - "adherer\n", - "adherers\n", - "adheres\n", - "adhering\n", - "adhesion\n", - "adhesions\n", - "adhesive\n", - "adhesives\n", - "adhibit\n", - "adhibited\n", - "adhibiting\n", - "adhibits\n", - "adieu\n", - "adieus\n", - "adieux\n", - "adios\n", - "adipic\n", - "adipose\n", - "adiposes\n", - "adiposis\n", - "adipous\n", - "adit\n", - "adits\n", - "adjacent\n", - "adjectival\n", - "adjectivally\n", - "adjective\n", - "adjectives\n", - "adjoin\n", - "adjoined\n", - "adjoining\n", - "adjoins\n", - "adjoint\n", - "adjoints\n", - "adjourn\n", - "adjourned\n", - "adjourning\n", - "adjournment\n", - "adjournments\n", - "adjourns\n", - "adjudge\n", - "adjudged\n", - "adjudges\n", - "adjudging\n", - "adjudicate\n", - "adjudicated\n", - "adjudicates\n", - "adjudicating\n", - "adjudication\n", - "adjudications\n", - "adjunct\n", - "adjuncts\n", - "adjure\n", - "adjured\n", - "adjurer\n", - "adjurers\n", - "adjures\n", - "adjuring\n", - "adjuror\n", - "adjurors\n", - "adjust\n", - "adjustable\n", - "adjusted\n", - "adjuster\n", - "adjusters\n", - "adjusting\n", - "adjustment\n", - "adjustments\n", - "adjustor\n", - "adjustors\n", - "adjusts\n", - "adjutant\n", - "adjutants\n", - "adjuvant\n", - "adjuvants\n", - "adman\n", - "admass\n", - "admen\n", - "administer\n", - "administers\n", - "administrable\n", - "administrant\n", - "administrants\n", - "administration\n", - "administrations\n", - "administrative\n", - "administratively\n", - "administrator\n", - "administrators\n", - "adminstration\n", - "adminstrations\n", - "admiral\n", - "admirals\n", - "admiration\n", - "admirations\n", - "admire\n", - "admired\n", - "admirer\n", - "admirers\n", - "admires\n", - "admiring\n", - "admiringly\n", - "admissibilities\n", - "admissibility\n", - "admissible\n", - "admissibly\n", - "admission\n", - "admissions\n", - "admit\n", - "admits\n", - "admittance\n", - "admittances\n", - "admitted\n", - "admittedly\n", - "admitter\n", - "admitters\n", - "admitting\n", - "admix\n", - "admixed\n", - "admixes\n", - "admixing\n", - "admixt\n", - "admixture\n", - "admixtures\n", - "admonish\n", - "admonished\n", - "admonishes\n", - "admonishing\n", - "adnate\n", - "adnation\n", - "adnations\n", - "adnexa\n", - "adnexal\n", - "adnoun\n", - "adnouns\n", - "ado\n", - "adobe\n", - "adobes\n", - "adolescence\n", - "adolescences\n", - "adolescent\n", - "adolescents\n", - "adopt\n", - "adopted\n", - "adoptee\n", - "adoptees\n", - "adopter\n", - "adopters\n", - "adopting\n", - "adoption\n", - "adoptions\n", - "adoptive\n", - "adopts\n", - "adorable\n", - "adorably\n", - "adoration\n", - "adorations\n", - "adore\n", - "adored\n", - "adorer\n", - "adorers\n", - "adores\n", - "adoring\n", - "adorn\n", - "adorned\n", - "adorner\n", - "adorners\n", - "adorning\n", - "adorns\n", - "ados\n", - "adown\n", - "adoze\n", - "adrenal\n", - "adrenals\n", - "adriamycin\n", - "adrift\n", - "adroit\n", - "adroiter\n", - "adroitest\n", - "adroitly\n", - "adroitness\n", - "adroitnesses\n", - "ads\n", - "adscript\n", - "adscripts\n", - "adsorb\n", - "adsorbed\n", - "adsorbing\n", - "adsorbs\n", - "adularia\n", - "adularias\n", - "adulate\n", - "adulated\n", - "adulates\n", - "adulating\n", - "adulator\n", - "adulators\n", - "adult\n", - "adulterate\n", - "adulterated\n", - "adulterates\n", - "adulterating\n", - "adulteration\n", - "adulterations\n", - "adulterer\n", - "adulterers\n", - "adulteress\n", - "adulteresses\n", - "adulteries\n", - "adulterous\n", - "adultery\n", - "adulthood\n", - "adulthoods\n", - "adultly\n", - "adults\n", - "adumbral\n", - "adunc\n", - "aduncate\n", - "aduncous\n", - "adust\n", - "advance\n", - "advanced\n", - "advancement\n", - "advancements\n", - "advancer\n", - "advancers\n", - "advances\n", - "advancing\n", - "advantage\n", - "advantageous\n", - "advantageously\n", - "advantages\n", - "advent\n", - "adventitious\n", - "adventitiously\n", - "adventitiousness\n", - "adventitiousnesses\n", - "advents\n", - "adventure\n", - "adventurer\n", - "adventurers\n", - "adventures\n", - "adventuresome\n", - "adventurous\n", - "adverb\n", - "adverbially\n", - "adverbs\n", - "adversaries\n", - "adversary\n", - "adverse\n", - "adversity\n", - "advert\n", - "adverted\n", - "adverting\n", - "advertise\n", - "advertised\n", - "advertisement\n", - "advertisements\n", - "advertiser\n", - "advertisers\n", - "advertises\n", - "advertising\n", - "advertisings\n", - "adverts\n", - "advice\n", - "advices\n", - "advisabilities\n", - "advisability\n", - "advisable\n", - "advise\n", - "advised\n", - "advisee\n", - "advisees\n", - "advisement\n", - "advisements\n", - "adviser\n", - "advisers\n", - "advises\n", - "advising\n", - "advisor\n", - "advisories\n", - "advisors\n", - "advisory\n", - "advocacies\n", - "advocacy\n", - "advocate\n", - "advocated\n", - "advocates\n", - "advocating\n", - "advowson\n", - "advowsons\n", - "adynamia\n", - "adynamias\n", - "adynamic\n", - "adyta\n", - "adytum\n", - "adz\n", - "adze\n", - "adzes\n", - "ae\n", - "aecia\n", - "aecial\n", - "aecidia\n", - "aecidium\n", - "aecium\n", - "aedes\n", - "aedile\n", - "aediles\n", - "aedine\n", - "aegis\n", - "aegises\n", - "aeneous\n", - "aeneus\n", - "aeolian\n", - "aeon\n", - "aeonian\n", - "aeonic\n", - "aeons\n", - "aerate\n", - "aerated\n", - "aerates\n", - "aerating\n", - "aeration\n", - "aerations\n", - "aerator\n", - "aerators\n", - "aerial\n", - "aerially\n", - "aerials\n", - "aerie\n", - "aerier\n", - "aeries\n", - "aeriest\n", - "aerified\n", - "aerifies\n", - "aeriform\n", - "aerify\n", - "aerifying\n", - "aerily\n", - "aero\n", - "aerobe\n", - "aerobes\n", - "aerobia\n", - "aerobic\n", - "aerobium\n", - "aeroduct\n", - "aeroducts\n", - "aerodynamic\n", - "aerodynamical\n", - "aerodynamically\n", - "aerodynamics\n", - "aerodyne\n", - "aerodynes\n", - "aerofoil\n", - "aerofoils\n", - "aerogel\n", - "aerogels\n", - "aerogram\n", - "aerograms\n", - "aerolite\n", - "aerolites\n", - "aerolith\n", - "aeroliths\n", - "aerologies\n", - "aerology\n", - "aeronaut\n", - "aeronautic\n", - "aeronautical\n", - "aeronautically\n", - "aeronautics\n", - "aeronauts\n", - "aeronomies\n", - "aeronomy\n", - "aerosol\n", - "aerosols\n", - "aerospace\n", - "aerostat\n", - "aerostats\n", - "aerugo\n", - "aerugos\n", - "aery\n", - "aesthete\n", - "aesthetes\n", - "aesthetic\n", - "aesthetically\n", - "aesthetics\n", - "aestival\n", - "aether\n", - "aetheric\n", - "aethers\n", - "afar\n", - "afars\n", - "afeard\n", - "afeared\n", - "aff\n", - "affabilities\n", - "affability\n", - "affable\n", - "affably\n", - "affair\n", - "affaire\n", - "affaires\n", - "affairs\n", - "affect\n", - "affectation\n", - "affectations\n", - "affected\n", - "affectedly\n", - "affecter\n", - "affecters\n", - "affecting\n", - "affectingly\n", - "affection\n", - "affectionate\n", - "affectionately\n", - "affections\n", - "affects\n", - "afferent\n", - "affiance\n", - "affianced\n", - "affiances\n", - "affiancing\n", - "affiant\n", - "affiants\n", - "affiche\n", - "affiches\n", - "affidavit\n", - "affidavits\n", - "affiliate\n", - "affiliated\n", - "affiliates\n", - "affiliating\n", - "affiliation\n", - "affiliations\n", - "affine\n", - "affined\n", - "affinely\n", - "affines\n", - "affinities\n", - "affinity\n", - "affirm\n", - "affirmation\n", - "affirmations\n", - "affirmative\n", - "affirmatively\n", - "affirmatives\n", - "affirmed\n", - "affirmer\n", - "affirmers\n", - "affirming\n", - "affirms\n", - "affix\n", - "affixal\n", - "affixed\n", - "affixer\n", - "affixers\n", - "affixes\n", - "affixial\n", - "affixing\n", - "afflatus\n", - "afflatuses\n", - "afflict\n", - "afflicted\n", - "afflicting\n", - "affliction\n", - "afflictions\n", - "afflicts\n", - "affluence\n", - "affluences\n", - "affluent\n", - "affluents\n", - "afflux\n", - "affluxes\n", - "afford\n", - "afforded\n", - "affording\n", - "affords\n", - "afforest\n", - "afforested\n", - "afforesting\n", - "afforests\n", - "affray\n", - "affrayed\n", - "affrayer\n", - "affrayers\n", - "affraying\n", - "affrays\n", - "affright\n", - "affrighted\n", - "affrighting\n", - "affrights\n", - "affront\n", - "affronted\n", - "affronting\n", - "affronts\n", - "affusion\n", - "affusions\n", - "afghan\n", - "afghani\n", - "afghanis\n", - "afghans\n", - "afield\n", - "afire\n", - "aflame\n", - "afloat\n", - "aflutter\n", - "afoot\n", - "afore\n", - "afoul\n", - "afraid\n", - "afreet\n", - "afreets\n", - "afresh\n", - "afrit\n", - "afrits\n", - "aft\n", - "after\n", - "afterlife\n", - "afterlifes\n", - "aftermath\n", - "aftermaths\n", - "afternoon\n", - "afternoons\n", - "afters\n", - "aftertax\n", - "afterthought\n", - "afterthoughts\n", - "afterward\n", - "afterwards\n", - "aftmost\n", - "aftosa\n", - "aftosas\n", - "aga\n", - "again\n", - "against\n", - "agalloch\n", - "agallochs\n", - "agalwood\n", - "agalwoods\n", - "agama\n", - "agamas\n", - "agamete\n", - "agametes\n", - "agamic\n", - "agamous\n", - "agapae\n", - "agapai\n", - "agape\n", - "agapeic\n", - "agar\n", - "agaric\n", - "agarics\n", - "agars\n", - "agas\n", - "agate\n", - "agates\n", - "agatize\n", - "agatized\n", - "agatizes\n", - "agatizing\n", - "agatoid\n", - "agave\n", - "agaves\n", - "agaze\n", - "age\n", - "aged\n", - "agedly\n", - "agedness\n", - "agednesses\n", - "agee\n", - "ageing\n", - "ageings\n", - "ageless\n", - "agelong\n", - "agencies\n", - "agency\n", - "agenda\n", - "agendas\n", - "agendum\n", - "agendums\n", - "agene\n", - "agenes\n", - "ageneses\n", - "agenesia\n", - "agenesias\n", - "agenesis\n", - "agenetic\n", - "agenize\n", - "agenized\n", - "agenizes\n", - "agenizing\n", - "agent\n", - "agential\n", - "agentries\n", - "agentry\n", - "agents\n", - "ager\n", - "ageratum\n", - "ageratums\n", - "agers\n", - "ages\n", - "agger\n", - "aggers\n", - "aggie\n", - "aggies\n", - "aggrade\n", - "aggraded\n", - "aggrades\n", - "aggrading\n", - "aggrandize\n", - "aggrandized\n", - "aggrandizement\n", - "aggrandizements\n", - "aggrandizes\n", - "aggrandizing\n", - "aggravate\n", - "aggravates\n", - "aggravation\n", - "aggravations\n", - "aggregate\n", - "aggregated\n", - "aggregates\n", - "aggregating\n", - "aggress\n", - "aggressed\n", - "aggresses\n", - "aggressing\n", - "aggression\n", - "aggressions\n", - "aggressive\n", - "aggressively\n", - "aggressiveness\n", - "aggressivenesses\n", - "aggrieve\n", - "aggrieved\n", - "aggrieves\n", - "aggrieving\n", - "agha\n", - "aghas\n", - "aghast\n", - "agile\n", - "agilely\n", - "agilities\n", - "agility\n", - "agin\n", - "aging\n", - "agings\n", - "aginner\n", - "aginners\n", - "agio\n", - "agios\n", - "agiotage\n", - "agiotages\n", - "agist\n", - "agisted\n", - "agisting\n", - "agists\n", - "agitable\n", - "agitate\n", - "agitated\n", - "agitates\n", - "agitating\n", - "agitation\n", - "agitations\n", - "agitato\n", - "agitator\n", - "agitators\n", - "agitprop\n", - "agitprops\n", - "aglare\n", - "agleam\n", - "aglee\n", - "aglet\n", - "aglets\n", - "agley\n", - "aglimmer\n", - "aglitter\n", - "aglow\n", - "agly\n", - "aglycon\n", - "aglycone\n", - "aglycones\n", - "aglycons\n", - "agma\n", - "agmas\n", - "agminate\n", - "agnail\n", - "agnails\n", - "agnate\n", - "agnates\n", - "agnatic\n", - "agnation\n", - "agnations\n", - "agnize\n", - "agnized\n", - "agnizes\n", - "agnizing\n", - "agnomen\n", - "agnomens\n", - "agnomina\n", - "agnostic\n", - "agnostics\n", - "ago\n", - "agog\n", - "agon\n", - "agonal\n", - "agone\n", - "agones\n", - "agonic\n", - "agonies\n", - "agonise\n", - "agonised\n", - "agonises\n", - "agonising\n", - "agonist\n", - "agonists\n", - "agonize\n", - "agonized\n", - "agonizes\n", - "agonizing\n", - "agonizingly\n", - "agons\n", - "agony\n", - "agora\n", - "agorae\n", - "agoras\n", - "agorot\n", - "agoroth\n", - "agouti\n", - "agouties\n", - "agoutis\n", - "agouty\n", - "agrafe\n", - "agrafes\n", - "agraffe\n", - "agraffes\n", - "agrapha\n", - "agraphia\n", - "agraphias\n", - "agraphic\n", - "agrarian\n", - "agrarianism\n", - "agrarianisms\n", - "agrarians\n", - "agree\n", - "agreeable\n", - "agreeableness\n", - "agreeablenesses\n", - "agreed\n", - "agreeing\n", - "agreement\n", - "agreements\n", - "agrees\n", - "agrestal\n", - "agrestic\n", - "agricultural\n", - "agriculturalist\n", - "agriculturalists\n", - "agriculture\n", - "agricultures\n", - "agriculturist\n", - "agriculturists\n", - "agrimonies\n", - "agrimony\n", - "agrologies\n", - "agrology\n", - "agronomies\n", - "agronomy\n", - "aground\n", - "ague\n", - "aguelike\n", - "agues\n", - "agueweed\n", - "agueweeds\n", - "aguish\n", - "aguishly\n", - "ah\n", - "aha\n", - "ahchoo\n", - "ahead\n", - "ahem\n", - "ahimsa\n", - "ahimsas\n", - "ahold\n", - "aholds\n", - "ahorse\n", - "ahoy\n", - "ahoys\n", - "ahull\n", - "ai\n", - "aiblins\n", - "aid\n", - "aide\n", - "aided\n", - "aider\n", - "aiders\n", - "aides\n", - "aidful\n", - "aiding\n", - "aidless\n", - "aidman\n", - "aidmen\n", - "aids\n", - "aiglet\n", - "aiglets\n", - "aigret\n", - "aigrets\n", - "aigrette\n", - "aigrettes\n", - "aiguille\n", - "aiguilles\n", - "aikido\n", - "aikidos\n", - "ail\n", - "ailed\n", - "aileron\n", - "ailerons\n", - "ailing\n", - "ailment\n", - "ailments\n", - "ails\n", - "aim\n", - "aimed\n", - "aimer\n", - "aimers\n", - "aimful\n", - "aimfully\n", - "aiming\n", - "aimless\n", - "aimlessly\n", - "aimlessness\n", - "aimlessnesses\n", - "aims\n", - "ain\n", - "aine\n", - "ainee\n", - "ains\n", - "ainsell\n", - "ainsells\n", - "air\n", - "airboat\n", - "airboats\n", - "airborne\n", - "airbound\n", - "airbrush\n", - "airbrushed\n", - "airbrushes\n", - "airbrushing\n", - "airburst\n", - "airbursts\n", - "airbus\n", - "airbuses\n", - "airbusses\n", - "aircoach\n", - "aircoaches\n", - "aircondition\n", - "airconditioned\n", - "airconditioning\n", - "airconditions\n", - "aircraft\n", - "aircrew\n", - "aircrews\n", - "airdrome\n", - "airdromes\n", - "airdrop\n", - "airdropped\n", - "airdropping\n", - "airdrops\n", - "aired\n", - "airer\n", - "airest\n", - "airfield\n", - "airfields\n", - "airflow\n", - "airflows\n", - "airfoil\n", - "airfoils\n", - "airframe\n", - "airframes\n", - "airglow\n", - "airglows\n", - "airhead\n", - "airheads\n", - "airier\n", - "airiest\n", - "airily\n", - "airiness\n", - "airinesses\n", - "airing\n", - "airings\n", - "airless\n", - "airlift\n", - "airlifted\n", - "airlifting\n", - "airlifts\n", - "airlike\n", - "airline\n", - "airliner\n", - "airliners\n", - "airlines\n", - "airmail\n", - "airmailed\n", - "airmailing\n", - "airmails\n", - "airman\n", - "airmen\n", - "airn\n", - "airns\n", - "airpark\n", - "airparks\n", - "airplane\n", - "airplanes\n", - "airport\n", - "airports\n", - "airpost\n", - "airposts\n", - "airproof\n", - "airproofed\n", - "airproofing\n", - "airproofs\n", - "airs\n", - "airscrew\n", - "airscrews\n", - "airship\n", - "airships\n", - "airsick\n", - "airspace\n", - "airspaces\n", - "airspeed\n", - "airspeeds\n", - "airstrip\n", - "airstrips\n", - "airt\n", - "airted\n", - "airth\n", - "airthed\n", - "airthing\n", - "airths\n", - "airtight\n", - "airting\n", - "airts\n", - "airward\n", - "airwave\n", - "airwaves\n", - "airway\n", - "airways\n", - "airwise\n", - "airwoman\n", - "airwomen\n", - "airy\n", - "ais\n", - "aisle\n", - "aisled\n", - "aisles\n", - "ait\n", - "aitch\n", - "aitches\n", - "aits\n", - "aiver\n", - "aivers\n", - "ajar\n", - "ajee\n", - "ajiva\n", - "ajivas\n", - "ajowan\n", - "ajowans\n", - "akee\n", - "akees\n", - "akela\n", - "akelas\n", - "akene\n", - "akenes\n", - "akimbo\n", - "akin\n", - "akvavit\n", - "akvavits\n", - "ala\n", - "alabaster\n", - "alabasters\n", - "alack\n", - "alacrities\n", - "alacrity\n", - "alae\n", - "alameda\n", - "alamedas\n", - "alamo\n", - "alamode\n", - "alamodes\n", - "alamos\n", - "alan\n", - "aland\n", - "alands\n", - "alane\n", - "alang\n", - "alanin\n", - "alanine\n", - "alanines\n", - "alanins\n", - "alans\n", - "alant\n", - "alants\n", - "alanyl\n", - "alanyls\n", - "alar\n", - "alarm\n", - "alarmed\n", - "alarming\n", - "alarmism\n", - "alarmisms\n", - "alarmist\n", - "alarmists\n", - "alarms\n", - "alarum\n", - "alarumed\n", - "alaruming\n", - "alarums\n", - "alary\n", - "alas\n", - "alaska\n", - "alaskas\n", - "alastor\n", - "alastors\n", - "alate\n", - "alated\n", - "alation\n", - "alations\n", - "alb\n", - "alba\n", - "albacore\n", - "albacores\n", - "albas\n", - "albata\n", - "albatas\n", - "albatross\n", - "albatrosses\n", - "albedo\n", - "albedos\n", - "albeit\n", - "albicore\n", - "albicores\n", - "albinal\n", - "albinic\n", - "albinism\n", - "albinisms\n", - "albino\n", - "albinos\n", - "albite\n", - "albites\n", - "albitic\n", - "albs\n", - "album\n", - "albumen\n", - "albumens\n", - "albumin\n", - "albumins\n", - "albumose\n", - "albumoses\n", - "albums\n", - "alburnum\n", - "alburnums\n", - "alcade\n", - "alcades\n", - "alcahest\n", - "alcahests\n", - "alcaic\n", - "alcaics\n", - "alcaide\n", - "alcaides\n", - "alcalde\n", - "alcaldes\n", - "alcayde\n", - "alcaydes\n", - "alcazar\n", - "alcazars\n", - "alchemic\n", - "alchemical\n", - "alchemies\n", - "alchemist\n", - "alchemists\n", - "alchemy\n", - "alchymies\n", - "alchymy\n", - "alcidine\n", - "alcohol\n", - "alcoholic\n", - "alcoholics\n", - "alcoholism\n", - "alcoholisms\n", - "alcohols\n", - "alcove\n", - "alcoved\n", - "alcoves\n", - "aldehyde\n", - "aldehydes\n", - "alder\n", - "alderman\n", - "aldermen\n", - "alders\n", - "aldol\n", - "aldolase\n", - "aldolases\n", - "aldols\n", - "aldose\n", - "aldoses\n", - "aldovandi\n", - "aldrin\n", - "aldrins\n", - "ale\n", - "aleatory\n", - "alec\n", - "alecs\n", - "alee\n", - "alef\n", - "alefs\n", - "alegar\n", - "alegars\n", - "alehouse\n", - "alehouses\n", - "alembic\n", - "alembics\n", - "aleph\n", - "alephs\n", - "alert\n", - "alerted\n", - "alerter\n", - "alertest\n", - "alerting\n", - "alertly\n", - "alertness\n", - "alertnesses\n", - "alerts\n", - "ales\n", - "aleuron\n", - "aleurone\n", - "aleurones\n", - "aleurons\n", - "alevin\n", - "alevins\n", - "alewife\n", - "alewives\n", - "alexia\n", - "alexias\n", - "alexin\n", - "alexine\n", - "alexines\n", - "alexins\n", - "alfa\n", - "alfaki\n", - "alfakis\n", - "alfalfa\n", - "alfalfas\n", - "alfaqui\n", - "alfaquin\n", - "alfaquins\n", - "alfaquis\n", - "alfas\n", - "alforja\n", - "alforjas\n", - "alfresco\n", - "alga\n", - "algae\n", - "algal\n", - "algaroba\n", - "algarobas\n", - "algas\n", - "algebra\n", - "algebraic\n", - "algebraically\n", - "algebras\n", - "algerine\n", - "algerines\n", - "algicide\n", - "algicides\n", - "algid\n", - "algidities\n", - "algidity\n", - "algin\n", - "alginate\n", - "alginates\n", - "algins\n", - "algoid\n", - "algologies\n", - "algology\n", - "algor\n", - "algorism\n", - "algorisms\n", - "algorithm\n", - "algorithms\n", - "algors\n", - "algum\n", - "algums\n", - "alias\n", - "aliases\n", - "alibi\n", - "alibied\n", - "alibies\n", - "alibiing\n", - "alibis\n", - "alible\n", - "alidad\n", - "alidade\n", - "alidades\n", - "alidads\n", - "alien\n", - "alienage\n", - "alienages\n", - "alienate\n", - "alienated\n", - "alienates\n", - "alienating\n", - "alienation\n", - "alienations\n", - "aliened\n", - "alienee\n", - "alienees\n", - "aliener\n", - "alieners\n", - "aliening\n", - "alienism\n", - "alienisms\n", - "alienist\n", - "alienists\n", - "alienly\n", - "alienor\n", - "alienors\n", - "aliens\n", - "alif\n", - "aliform\n", - "alifs\n", - "alight\n", - "alighted\n", - "alighting\n", - "alights\n", - "align\n", - "aligned\n", - "aligner\n", - "aligners\n", - "aligning\n", - "alignment\n", - "alignments\n", - "aligns\n", - "alike\n", - "aliment\n", - "alimentary\n", - "alimentation\n", - "alimented\n", - "alimenting\n", - "aliments\n", - "alimonies\n", - "alimony\n", - "aline\n", - "alined\n", - "aliner\n", - "aliners\n", - "alines\n", - "alining\n", - "aliped\n", - "alipeds\n", - "aliquant\n", - "aliquot\n", - "aliquots\n", - "alist\n", - "alit\n", - "aliunde\n", - "alive\n", - "aliyah\n", - "aliyahs\n", - "alizarin\n", - "alizarins\n", - "alkahest\n", - "alkahests\n", - "alkali\n", - "alkalic\n", - "alkalies\n", - "alkalified\n", - "alkalifies\n", - "alkalify\n", - "alkalifying\n", - "alkalin\n", - "alkaline\n", - "alkalinities\n", - "alkalinity\n", - "alkalis\n", - "alkalise\n", - "alkalised\n", - "alkalises\n", - "alkalising\n", - "alkalize\n", - "alkalized\n", - "alkalizes\n", - "alkalizing\n", - "alkaloid\n", - "alkaloids\n", - "alkane\n", - "alkanes\n", - "alkanet\n", - "alkanets\n", - "alkene\n", - "alkenes\n", - "alkine\n", - "alkines\n", - "alkoxy\n", - "alkyd\n", - "alkyds\n", - "alkyl\n", - "alkylate\n", - "alkylated\n", - "alkylates\n", - "alkylating\n", - "alkylic\n", - "alkyls\n", - "alkyne\n", - "alkynes\n", - "all\n", - "allanite\n", - "allanites\n", - "allay\n", - "allayed\n", - "allayer\n", - "allayers\n", - "allaying\n", - "allays\n", - "allegation\n", - "allegations\n", - "allege\n", - "alleged\n", - "allegedly\n", - "alleger\n", - "allegers\n", - "alleges\n", - "allegiance\n", - "allegiances\n", - "alleging\n", - "allegorical\n", - "allegories\n", - "allegory\n", - "allegro\n", - "allegros\n", - "allele\n", - "alleles\n", - "allelic\n", - "allelism\n", - "allelisms\n", - "alleluia\n", - "alleluias\n", - "allergen\n", - "allergenic\n", - "allergens\n", - "allergic\n", - "allergies\n", - "allergin\n", - "allergins\n", - "allergist\n", - "allergists\n", - "allergy\n", - "alleviate\n", - "alleviated\n", - "alleviates\n", - "alleviating\n", - "alleviation\n", - "alleviations\n", - "alley\n", - "alleys\n", - "alleyway\n", - "alleyways\n", - "allheal\n", - "allheals\n", - "alliable\n", - "alliance\n", - "alliances\n", - "allied\n", - "allies\n", - "alligator\n", - "alligators\n", - "alliteration\n", - "alliterations\n", - "alliterative\n", - "allium\n", - "alliums\n", - "allobar\n", - "allobars\n", - "allocate\n", - "allocated\n", - "allocates\n", - "allocating\n", - "allocation\n", - "allocations\n", - "allod\n", - "allodia\n", - "allodial\n", - "allodium\n", - "allods\n", - "allogamies\n", - "allogamy\n", - "allonge\n", - "allonges\n", - "allonym\n", - "allonyms\n", - "allopath\n", - "allopaths\n", - "allopurinol\n", - "allot\n", - "allotment\n", - "allotments\n", - "allots\n", - "allotted\n", - "allottee\n", - "allottees\n", - "allotter\n", - "allotters\n", - "allotting\n", - "allotype\n", - "allotypes\n", - "allotypies\n", - "allotypy\n", - "allover\n", - "allovers\n", - "allow\n", - "allowable\n", - "allowance\n", - "allowances\n", - "allowed\n", - "allowing\n", - "allows\n", - "alloxan\n", - "alloxans\n", - "alloy\n", - "alloyed\n", - "alloying\n", - "alloys\n", - "alls\n", - "allseed\n", - "allseeds\n", - "allspice\n", - "allspices\n", - "allude\n", - "alluded\n", - "alludes\n", - "alluding\n", - "allure\n", - "allured\n", - "allurement\n", - "allurements\n", - "allurer\n", - "allurers\n", - "allures\n", - "alluring\n", - "allusion\n", - "allusions\n", - "allusive\n", - "allusively\n", - "allusiveness\n", - "allusivenesses\n", - "alluvia\n", - "alluvial\n", - "alluvials\n", - "alluvion\n", - "alluvions\n", - "alluvium\n", - "alluviums\n", - "ally\n", - "allying\n", - "allyl\n", - "allylic\n", - "allyls\n", - "alma\n", - "almagest\n", - "almagests\n", - "almah\n", - "almahs\n", - "almanac\n", - "almanacs\n", - "almas\n", - "alme\n", - "almeh\n", - "almehs\n", - "almemar\n", - "almemars\n", - "almes\n", - "almighty\n", - "almner\n", - "almners\n", - "almond\n", - "almonds\n", - "almoner\n", - "almoners\n", - "almonries\n", - "almonry\n", - "almost\n", - "alms\n", - "almsman\n", - "almsmen\n", - "almuce\n", - "almuces\n", - "almud\n", - "almude\n", - "almudes\n", - "almuds\n", - "almug\n", - "almugs\n", - "alnico\n", - "alnicoes\n", - "alodia\n", - "alodial\n", - "alodium\n", - "aloe\n", - "aloes\n", - "aloetic\n", - "aloft\n", - "alogical\n", - "aloha\n", - "alohas\n", - "aloin\n", - "aloins\n", - "alone\n", - "along\n", - "alongside\n", - "aloof\n", - "aloofly\n", - "alopecia\n", - "alopecias\n", - "alopecic\n", - "aloud\n", - "alow\n", - "alp\n", - "alpaca\n", - "alpacas\n", - "alpha\n", - "alphabet\n", - "alphabeted\n", - "alphabetic\n", - "alphabetical\n", - "alphabetically\n", - "alphabeting\n", - "alphabetize\n", - "alphabetized\n", - "alphabetizer\n", - "alphabetizers\n", - "alphabetizes\n", - "alphabetizing\n", - "alphabets\n", - "alphanumeric\n", - "alphanumerics\n", - "alphas\n", - "alphorn\n", - "alphorns\n", - "alphosis\n", - "alphosises\n", - "alphyl\n", - "alphyls\n", - "alpine\n", - "alpinely\n", - "alpines\n", - "alpinism\n", - "alpinisms\n", - "alpinist\n", - "alpinists\n", - "alps\n", - "already\n", - "alright\n", - "alsike\n", - "alsikes\n", - "also\n", - "alt\n", - "altar\n", - "altars\n", - "alter\n", - "alterant\n", - "alterants\n", - "alteration\n", - "alterations\n", - "altercation\n", - "altercations\n", - "altered\n", - "alterer\n", - "alterers\n", - "altering\n", - "alternate\n", - "alternated\n", - "alternates\n", - "alternating\n", - "alternation\n", - "alternations\n", - "alternative\n", - "alternatively\n", - "alternatives\n", - "alternator\n", - "alternators\n", - "alters\n", - "althaea\n", - "althaeas\n", - "althea\n", - "altheas\n", - "altho\n", - "althorn\n", - "althorns\n", - "although\n", - "altimeter\n", - "altimeters\n", - "altitude\n", - "altitudes\n", - "alto\n", - "altogether\n", - "altos\n", - "altruism\n", - "altruisms\n", - "altruist\n", - "altruistic\n", - "altruistically\n", - "altruists\n", - "alts\n", - "aludel\n", - "aludels\n", - "alula\n", - "alulae\n", - "alular\n", - "alum\n", - "alumin\n", - "alumina\n", - "aluminas\n", - "alumine\n", - "alumines\n", - "aluminic\n", - "alumins\n", - "aluminum\n", - "aluminums\n", - "alumna\n", - "alumnae\n", - "alumni\n", - "alumnus\n", - "alumroot\n", - "alumroots\n", - "alums\n", - "alunite\n", - "alunites\n", - "alveolar\n", - "alveolars\n", - "alveoli\n", - "alveolus\n", - "alvine\n", - "alway\n", - "always\n", - "alyssum\n", - "alyssums\n", - "am\n", - "ama\n", - "amadavat\n", - "amadavats\n", - "amadou\n", - "amadous\n", - "amah\n", - "amahs\n", - "amain\n", - "amalgam\n", - "amalgamate\n", - "amalgamated\n", - "amalgamates\n", - "amalgamating\n", - "amalgamation\n", - "amalgamations\n", - "amalgams\n", - "amandine\n", - "amanita\n", - "amanitas\n", - "amanuensis\n", - "amaranth\n", - "amaranths\n", - "amarelle\n", - "amarelles\n", - "amarna\n", - "amaryllis\n", - "amaryllises\n", - "amas\n", - "amass\n", - "amassed\n", - "amasser\n", - "amassers\n", - "amasses\n", - "amassing\n", - "amateur\n", - "amateurish\n", - "amateurism\n", - "amateurisms\n", - "amateurs\n", - "amative\n", - "amatol\n", - "amatols\n", - "amatory\n", - "amaze\n", - "amazed\n", - "amazedly\n", - "amazement\n", - "amazements\n", - "amazes\n", - "amazing\n", - "amazingly\n", - "amazon\n", - "amazonian\n", - "amazons\n", - "ambage\n", - "ambages\n", - "ambari\n", - "ambaries\n", - "ambaris\n", - "ambary\n", - "ambassador\n", - "ambassadorial\n", - "ambassadors\n", - "ambassadorship\n", - "ambassadorships\n", - "ambeer\n", - "ambeers\n", - "amber\n", - "ambergris\n", - "ambergrises\n", - "amberies\n", - "amberoid\n", - "amberoids\n", - "ambers\n", - "ambery\n", - "ambiance\n", - "ambiances\n", - "ambidextrous\n", - "ambidextrously\n", - "ambience\n", - "ambiences\n", - "ambient\n", - "ambients\n", - "ambiguities\n", - "ambiguity\n", - "ambiguous\n", - "ambit\n", - "ambition\n", - "ambitioned\n", - "ambitioning\n", - "ambitions\n", - "ambitious\n", - "ambitiously\n", - "ambits\n", - "ambivalence\n", - "ambivalences\n", - "ambivalent\n", - "ambivert\n", - "ambiverts\n", - "amble\n", - "ambled\n", - "ambler\n", - "amblers\n", - "ambles\n", - "ambling\n", - "ambo\n", - "amboina\n", - "amboinas\n", - "ambones\n", - "ambos\n", - "amboyna\n", - "amboynas\n", - "ambries\n", - "ambroid\n", - "ambroids\n", - "ambrosia\n", - "ambrosias\n", - "ambry\n", - "ambsace\n", - "ambsaces\n", - "ambulance\n", - "ambulances\n", - "ambulant\n", - "ambulate\n", - "ambulated\n", - "ambulates\n", - "ambulating\n", - "ambulation\n", - "ambulatory\n", - "ambush\n", - "ambushed\n", - "ambusher\n", - "ambushers\n", - "ambushes\n", - "ambushing\n", - "ameba\n", - "amebae\n", - "ameban\n", - "amebas\n", - "amebean\n", - "amebic\n", - "ameboid\n", - "ameer\n", - "ameerate\n", - "ameerates\n", - "ameers\n", - "amelcorn\n", - "amelcorns\n", - "ameliorate\n", - "ameliorated\n", - "ameliorates\n", - "ameliorating\n", - "amelioration\n", - "ameliorations\n", - "amen\n", - "amenable\n", - "amenably\n", - "amend\n", - "amended\n", - "amender\n", - "amenders\n", - "amending\n", - "amendment\n", - "amendments\n", - "amends\n", - "amenities\n", - "amenity\n", - "amens\n", - "ament\n", - "amentia\n", - "amentias\n", - "aments\n", - "amerce\n", - "amerced\n", - "amercer\n", - "amercers\n", - "amerces\n", - "amercing\n", - "amesace\n", - "amesaces\n", - "amethyst\n", - "amethysts\n", - "ami\n", - "amia\n", - "amiabilities\n", - "amiability\n", - "amiable\n", - "amiably\n", - "amiantus\n", - "amiantuses\n", - "amias\n", - "amicable\n", - "amicably\n", - "amice\n", - "amices\n", - "amid\n", - "amidase\n", - "amidases\n", - "amide\n", - "amides\n", - "amidic\n", - "amidin\n", - "amidins\n", - "amido\n", - "amidogen\n", - "amidogens\n", - "amidol\n", - "amidols\n", - "amids\n", - "amidship\n", - "amidst\n", - "amie\n", - "amies\n", - "amiga\n", - "amigas\n", - "amigo\n", - "amigos\n", - "amin\n", - "amine\n", - "amines\n", - "aminic\n", - "aminities\n", - "aminity\n", - "amino\n", - "amins\n", - "amir\n", - "amirate\n", - "amirates\n", - "amirs\n", - "amis\n", - "amiss\n", - "amities\n", - "amitoses\n", - "amitosis\n", - "amitotic\n", - "amitrole\n", - "amitroles\n", - "amity\n", - "ammeter\n", - "ammeters\n", - "ammine\n", - "ammines\n", - "ammino\n", - "ammo\n", - "ammocete\n", - "ammocetes\n", - "ammonal\n", - "ammonals\n", - "ammonia\n", - "ammoniac\n", - "ammoniacs\n", - "ammonias\n", - "ammonic\n", - "ammonified\n", - "ammonifies\n", - "ammonify\n", - "ammonifying\n", - "ammonite\n", - "ammonites\n", - "ammonium\n", - "ammoniums\n", - "ammonoid\n", - "ammonoids\n", - "ammos\n", - "ammunition\n", - "ammunitions\n", - "amnesia\n", - "amnesiac\n", - "amnesiacs\n", - "amnesias\n", - "amnesic\n", - "amnesics\n", - "amnestic\n", - "amnestied\n", - "amnesties\n", - "amnesty\n", - "amnestying\n", - "amnia\n", - "amnic\n", - "amnion\n", - "amnionic\n", - "amnions\n", - "amniote\n", - "amniotes\n", - "amniotic\n", - "amoeba\n", - "amoebae\n", - "amoeban\n", - "amoebas\n", - "amoebean\n", - "amoebic\n", - "amoeboid\n", - "amok\n", - "amoks\n", - "amole\n", - "amoles\n", - "among\n", - "amongst\n", - "amoral\n", - "amorally\n", - "amoretti\n", - "amoretto\n", - "amorettos\n", - "amorini\n", - "amorino\n", - "amorist\n", - "amorists\n", - "amoroso\n", - "amorous\n", - "amorously\n", - "amorousness\n", - "amorousnesses\n", - "amorphous\n", - "amort\n", - "amortise\n", - "amortised\n", - "amortises\n", - "amortising\n", - "amortization\n", - "amortizations\n", - "amortize\n", - "amortized\n", - "amortizes\n", - "amortizing\n", - "amotion\n", - "amotions\n", - "amount\n", - "amounted\n", - "amounting\n", - "amounts\n", - "amour\n", - "amours\n", - "amp\n", - "amperage\n", - "amperages\n", - "ampere\n", - "amperes\n", - "ampersand\n", - "ampersands\n", - "amphibia\n", - "amphibian\n", - "amphibians\n", - "amphibious\n", - "amphioxi\n", - "amphipod\n", - "amphipods\n", - "amphitheater\n", - "amphitheaters\n", - "amphora\n", - "amphorae\n", - "amphoral\n", - "amphoras\n", - "ample\n", - "ampler\n", - "amplest\n", - "amplification\n", - "amplifications\n", - "amplified\n", - "amplifier\n", - "amplifiers\n", - "amplifies\n", - "amplify\n", - "amplifying\n", - "amplitude\n", - "amplitudes\n", - "amply\n", - "ampoule\n", - "ampoules\n", - "amps\n", - "ampul\n", - "ampule\n", - "ampules\n", - "ampulla\n", - "ampullae\n", - "ampullar\n", - "ampuls\n", - "amputate\n", - "amputated\n", - "amputates\n", - "amputating\n", - "amputation\n", - "amputations\n", - "amputee\n", - "amputees\n", - "amreeta\n", - "amreetas\n", - "amrita\n", - "amritas\n", - "amtrac\n", - "amtrack\n", - "amtracks\n", - "amtracs\n", - "amu\n", - "amuck\n", - "amucks\n", - "amulet\n", - "amulets\n", - "amus\n", - "amusable\n", - "amuse\n", - "amused\n", - "amusedly\n", - "amusement\n", - "amusements\n", - "amuser\n", - "amusers\n", - "amuses\n", - "amusing\n", - "amusive\n", - "amygdala\n", - "amygdalae\n", - "amygdale\n", - "amygdales\n", - "amygdule\n", - "amygdules\n", - "amyl\n", - "amylase\n", - "amylases\n", - "amylene\n", - "amylenes\n", - "amylic\n", - "amyloid\n", - "amyloids\n", - "amylose\n", - "amyloses\n", - "amyls\n", - "amylum\n", - "amylums\n", - "an\n", - "ana\n", - "anabaena\n", - "anabaenas\n", - "anabas\n", - "anabases\n", - "anabasis\n", - "anabatic\n", - "anableps\n", - "anablepses\n", - "anabolic\n", - "anachronism\n", - "anachronisms\n", - "anachronistic\n", - "anaconda\n", - "anacondas\n", - "anadem\n", - "anadems\n", - "anaemia\n", - "anaemias\n", - "anaemic\n", - "anaerobe\n", - "anaerobes\n", - "anaesthesiology\n", - "anaesthetic\n", - "anaesthetics\n", - "anaglyph\n", - "anaglyphs\n", - "anagoge\n", - "anagoges\n", - "anagogic\n", - "anagogies\n", - "anagogy\n", - "anagram\n", - "anagrammed\n", - "anagramming\n", - "anagrams\n", - "anal\n", - "analcime\n", - "analcimes\n", - "analcite\n", - "analcites\n", - "analecta\n", - "analects\n", - "analemma\n", - "analemmas\n", - "analemmata\n", - "analgesic\n", - "analgesics\n", - "analgia\n", - "analgias\n", - "analities\n", - "anality\n", - "anally\n", - "analog\n", - "analogic\n", - "analogical\n", - "analogically\n", - "analogies\n", - "analogously\n", - "analogs\n", - "analogue\n", - "analogues\n", - "analogy\n", - "analyse\n", - "analysed\n", - "analyser\n", - "analysers\n", - "analyses\n", - "analysing\n", - "analysis\n", - "analyst\n", - "analysts\n", - "analytic\n", - "analytical\n", - "analyzable\n", - "analyze\n", - "analyzed\n", - "analyzer\n", - "analyzers\n", - "analyzes\n", - "analyzing\n", - "ananke\n", - "anankes\n", - "anapaest\n", - "anapaests\n", - "anapest\n", - "anapests\n", - "anaphase\n", - "anaphases\n", - "anaphora\n", - "anaphoras\n", - "anaphylactic\n", - "anarch\n", - "anarchic\n", - "anarchies\n", - "anarchism\n", - "anarchisms\n", - "anarchist\n", - "anarchistic\n", - "anarchists\n", - "anarchs\n", - "anarchy\n", - "anarthria\n", - "anas\n", - "anasarca\n", - "anasarcas\n", - "anatase\n", - "anatases\n", - "anathema\n", - "anathemas\n", - "anathemata\n", - "anatomic\n", - "anatomical\n", - "anatomically\n", - "anatomies\n", - "anatomist\n", - "anatomists\n", - "anatomy\n", - "anatoxin\n", - "anatoxins\n", - "anatto\n", - "anattos\n", - "ancestor\n", - "ancestors\n", - "ancestral\n", - "ancestress\n", - "ancestresses\n", - "ancestries\n", - "ancestry\n", - "anchor\n", - "anchorage\n", - "anchorages\n", - "anchored\n", - "anchoret\n", - "anchorets\n", - "anchoring\n", - "anchorman\n", - "anchormen\n", - "anchors\n", - "anchovies\n", - "anchovy\n", - "anchusa\n", - "anchusas\n", - "anchusin\n", - "anchusins\n", - "ancient\n", - "ancienter\n", - "ancientest\n", - "ancients\n", - "ancilla\n", - "ancillae\n", - "ancillary\n", - "ancillas\n", - "ancon\n", - "anconal\n", - "ancone\n", - "anconeal\n", - "ancones\n", - "anconoid\n", - "ancress\n", - "ancresses\n", - "and\n", - "andante\n", - "andantes\n", - "anded\n", - "andesite\n", - "andesites\n", - "andesyte\n", - "andesytes\n", - "andiron\n", - "andirons\n", - "androgen\n", - "androgens\n", - "androgynous\n", - "android\n", - "androids\n", - "ands\n", - "ane\n", - "anear\n", - "aneared\n", - "anearing\n", - "anears\n", - "anecdota\n", - "anecdotal\n", - "anecdote\n", - "anecdotes\n", - "anechoic\n", - "anele\n", - "aneled\n", - "aneles\n", - "aneling\n", - "anemia\n", - "anemias\n", - "anemic\n", - "anemone\n", - "anemones\n", - "anenst\n", - "anent\n", - "anergia\n", - "anergias\n", - "anergic\n", - "anergies\n", - "anergy\n", - "aneroid\n", - "aneroids\n", - "anes\n", - "anesthesia\n", - "anesthesias\n", - "anesthetic\n", - "anesthetics\n", - "anesthetist\n", - "anesthetists\n", - "anesthetize\n", - "anesthetized\n", - "anesthetizes\n", - "anesthetizing\n", - "anestri\n", - "anestrus\n", - "anethol\n", - "anethole\n", - "anetholes\n", - "anethols\n", - "aneurism\n", - "aneurisms\n", - "aneurysm\n", - "aneurysms\n", - "anew\n", - "anga\n", - "angaria\n", - "angarias\n", - "angaries\n", - "angary\n", - "angas\n", - "angel\n", - "angelic\n", - "angelica\n", - "angelical\n", - "angelically\n", - "angelicas\n", - "angels\n", - "angelus\n", - "angeluses\n", - "anger\n", - "angered\n", - "angering\n", - "angerly\n", - "angers\n", - "angina\n", - "anginal\n", - "anginas\n", - "anginose\n", - "anginous\n", - "angioma\n", - "angiomas\n", - "angiomata\n", - "angle\n", - "angled\n", - "anglepod\n", - "anglepods\n", - "angler\n", - "anglers\n", - "angles\n", - "angleworm\n", - "angleworms\n", - "anglice\n", - "angling\n", - "anglings\n", - "angora\n", - "angoras\n", - "angrier\n", - "angriest\n", - "angrily\n", - "angry\n", - "angst\n", - "angstrom\n", - "angstroms\n", - "angsts\n", - "anguine\n", - "anguish\n", - "anguished\n", - "anguishes\n", - "anguishing\n", - "angular\n", - "angularities\n", - "angularity\n", - "angulate\n", - "angulated\n", - "angulates\n", - "angulating\n", - "angulose\n", - "angulous\n", - "anhinga\n", - "anhingas\n", - "ani\n", - "anil\n", - "anile\n", - "anilin\n", - "aniline\n", - "anilines\n", - "anilins\n", - "anilities\n", - "anility\n", - "anils\n", - "anima\n", - "animal\n", - "animally\n", - "animals\n", - "animas\n", - "animate\n", - "animated\n", - "animater\n", - "animaters\n", - "animates\n", - "animating\n", - "animation\n", - "animations\n", - "animato\n", - "animator\n", - "animators\n", - "anime\n", - "animes\n", - "animi\n", - "animis\n", - "animism\n", - "animisms\n", - "animist\n", - "animists\n", - "animosities\n", - "animosity\n", - "animus\n", - "animuses\n", - "anion\n", - "anionic\n", - "anions\n", - "anis\n", - "anise\n", - "aniseed\n", - "aniseeds\n", - "anises\n", - "anisette\n", - "anisettes\n", - "anisic\n", - "anisole\n", - "anisoles\n", - "ankerite\n", - "ankerites\n", - "ankh\n", - "ankhs\n", - "ankle\n", - "anklebone\n", - "anklebones\n", - "ankles\n", - "anklet\n", - "anklets\n", - "ankus\n", - "ankuses\n", - "ankush\n", - "ankushes\n", - "ankylose\n", - "ankylosed\n", - "ankyloses\n", - "ankylosing\n", - "anlace\n", - "anlaces\n", - "anlage\n", - "anlagen\n", - "anlages\n", - "anlas\n", - "anlases\n", - "anna\n", - "annal\n", - "annalist\n", - "annalists\n", - "annals\n", - "annas\n", - "annates\n", - "annatto\n", - "annattos\n", - "anneal\n", - "annealed\n", - "annealer\n", - "annealers\n", - "annealing\n", - "anneals\n", - "annelid\n", - "annelids\n", - "annex\n", - "annexation\n", - "annexations\n", - "annexe\n", - "annexed\n", - "annexes\n", - "annexing\n", - "annihilate\n", - "annihilated\n", - "annihilates\n", - "annihilating\n", - "annihilation\n", - "annihilations\n", - "anniversaries\n", - "anniversary\n", - "annotate\n", - "annotated\n", - "annotates\n", - "annotating\n", - "annotation\n", - "annotations\n", - "annotator\n", - "annotators\n", - "announce\n", - "announced\n", - "announcement\n", - "announcements\n", - "announcer\n", - "announcers\n", - "announces\n", - "announcing\n", - "annoy\n", - "annoyance\n", - "annoyances\n", - "annoyed\n", - "annoyer\n", - "annoyers\n", - "annoying\n", - "annoyingly\n", - "annoys\n", - "annual\n", - "annually\n", - "annuals\n", - "annuities\n", - "annuity\n", - "annul\n", - "annular\n", - "annulate\n", - "annulet\n", - "annulets\n", - "annuli\n", - "annulled\n", - "annulling\n", - "annulment\n", - "annulments\n", - "annulose\n", - "annuls\n", - "annulus\n", - "annuluses\n", - "anoa\n", - "anoas\n", - "anodal\n", - "anodally\n", - "anode\n", - "anodes\n", - "anodic\n", - "anodically\n", - "anodize\n", - "anodized\n", - "anodizes\n", - "anodizing\n", - "anodyne\n", - "anodynes\n", - "anodynic\n", - "anoint\n", - "anointed\n", - "anointer\n", - "anointers\n", - "anointing\n", - "anointment\n", - "anointments\n", - "anoints\n", - "anole\n", - "anoles\n", - "anolyte\n", - "anolytes\n", - "anomalies\n", - "anomalous\n", - "anomaly\n", - "anomic\n", - "anomie\n", - "anomies\n", - "anomy\n", - "anon\n", - "anonym\n", - "anonymities\n", - "anonymity\n", - "anonymous\n", - "anonymously\n", - "anonyms\n", - "anoopsia\n", - "anoopsias\n", - "anopia\n", - "anopias\n", - "anopsia\n", - "anopsias\n", - "anorak\n", - "anoraks\n", - "anoretic\n", - "anorexia\n", - "anorexias\n", - "anorexies\n", - "anorexy\n", - "anorthic\n", - "anosmia\n", - "anosmias\n", - "anosmic\n", - "another\n", - "anoxemia\n", - "anoxemias\n", - "anoxemic\n", - "anoxia\n", - "anoxias\n", - "anoxic\n", - "ansa\n", - "ansae\n", - "ansate\n", - "ansated\n", - "anserine\n", - "anserines\n", - "anserous\n", - "answer\n", - "answerable\n", - "answered\n", - "answerer\n", - "answerers\n", - "answering\n", - "answers\n", - "ant\n", - "anta\n", - "antacid\n", - "antacids\n", - "antae\n", - "antagonism\n", - "antagonisms\n", - "antagonist\n", - "antagonistic\n", - "antagonists\n", - "antagonize\n", - "antagonized\n", - "antagonizes\n", - "antagonizing\n", - "antalgic\n", - "antalgics\n", - "antarctic\n", - "antas\n", - "ante\n", - "anteater\n", - "anteaters\n", - "antebellum\n", - "antecede\n", - "anteceded\n", - "antecedent\n", - "antecedents\n", - "antecedes\n", - "anteceding\n", - "anted\n", - "antedate\n", - "antedated\n", - "antedates\n", - "antedating\n", - "anteed\n", - "antefix\n", - "antefixa\n", - "antefixes\n", - "anteing\n", - "antelope\n", - "antelopes\n", - "antenna\n", - "antennae\n", - "antennal\n", - "antennas\n", - "antepast\n", - "antepasts\n", - "anterior\n", - "anteroom\n", - "anterooms\n", - "antes\n", - "antetype\n", - "antetypes\n", - "antevert\n", - "anteverted\n", - "anteverting\n", - "anteverts\n", - "anthelia\n", - "anthelices\n", - "anthelix\n", - "anthem\n", - "anthemed\n", - "anthemia\n", - "antheming\n", - "anthems\n", - "anther\n", - "antheral\n", - "antherid\n", - "antherids\n", - "anthers\n", - "antheses\n", - "anthesis\n", - "anthill\n", - "anthills\n", - "anthodia\n", - "anthoid\n", - "anthologies\n", - "anthology\n", - "anthraces\n", - "anthracite\n", - "anthracites\n", - "anthrax\n", - "anthropoid\n", - "anthropological\n", - "anthropologist\n", - "anthropologists\n", - "anthropology\n", - "anti\n", - "antiabortion\n", - "antiacademic\n", - "antiadministration\n", - "antiaggression\n", - "antiaggressive\n", - "antiaircraft\n", - "antialien\n", - "antianarchic\n", - "antianarchist\n", - "antiannexation\n", - "antiapartheid\n", - "antiar\n", - "antiarin\n", - "antiarins\n", - "antiaristocrat\n", - "antiaristocratic\n", - "antiars\n", - "antiatheism\n", - "antiatheist\n", - "antiauthoritarian\n", - "antibacterial\n", - "antibiotic\n", - "antibiotics\n", - "antiblack\n", - "antibodies\n", - "antibody\n", - "antibourgeois\n", - "antiboxing\n", - "antiboycott\n", - "antibureaucratic\n", - "antiburglar\n", - "antiburglary\n", - "antibusiness\n", - "antic\n", - "anticancer\n", - "anticapitalism\n", - "anticapitalist\n", - "anticapitalistic\n", - "anticensorship\n", - "antichurch\n", - "anticigarette\n", - "anticipate\n", - "anticipated\n", - "anticipates\n", - "anticipating\n", - "anticipation\n", - "anticipations\n", - "anticipatory\n", - "antick\n", - "anticked\n", - "anticking\n", - "anticks\n", - "anticlerical\n", - "anticlimactic\n", - "anticlimax\n", - "anticlimaxes\n", - "anticly\n", - "anticollision\n", - "anticolonial\n", - "anticommunism\n", - "anticommunist\n", - "anticonservation\n", - "anticonservationist\n", - "anticonsumer\n", - "anticonventional\n", - "anticorrosive\n", - "anticorruption\n", - "anticrime\n", - "anticruelty\n", - "antics\n", - "anticultural\n", - "antidandruff\n", - "antidemocratic\n", - "antidiscrimination\n", - "antidote\n", - "antidotes\n", - "antidumping\n", - "antieavesdropping\n", - "antiemetic\n", - "antiemetics\n", - "antiestablishment\n", - "antievolution\n", - "antievolutionary\n", - "antifanatic\n", - "antifascism\n", - "antifascist\n", - "antifat\n", - "antifatigue\n", - "antifemale\n", - "antifeminine\n", - "antifeminism\n", - "antifeminist\n", - "antifertility\n", - "antiforeign\n", - "antiforeigner\n", - "antifraud\n", - "antifreeze\n", - "antifreezes\n", - "antifungus\n", - "antigambling\n", - "antigen\n", - "antigene\n", - "antigenes\n", - "antigens\n", - "antiglare\n", - "antigonorrheal\n", - "antigovernment\n", - "antigraft\n", - "antiguerilla\n", - "antihero\n", - "antiheroes\n", - "antihijack\n", - "antihistamine\n", - "antihistamines\n", - "antihomosexual\n", - "antihuman\n", - "antihumanism\n", - "antihumanistic\n", - "antihumanity\n", - "antihunting\n", - "antijamming\n", - "antiking\n", - "antikings\n", - "antilabor\n", - "antiliberal\n", - "antiliberalism\n", - "antilitter\n", - "antilittering\n", - "antilog\n", - "antilogies\n", - "antilogs\n", - "antilogy\n", - "antilynching\n", - "antimanagement\n", - "antimask\n", - "antimasks\n", - "antimaterialism\n", - "antimaterialist\n", - "antimaterialistic\n", - "antimere\n", - "antimeres\n", - "antimicrobial\n", - "antimilitarism\n", - "antimilitarist\n", - "antimilitaristic\n", - "antimilitary\n", - "antimiscegenation\n", - "antimonies\n", - "antimonopolist\n", - "antimonopoly\n", - "antimony\n", - "antimosquito\n", - "anting\n", - "antings\n", - "antinode\n", - "antinodes\n", - "antinoise\n", - "antinomies\n", - "antinomy\n", - "antiobesity\n", - "antipapal\n", - "antipathies\n", - "antipathy\n", - "antipersonnel\n", - "antiphon\n", - "antiphons\n", - "antipode\n", - "antipodes\n", - "antipole\n", - "antipoles\n", - "antipolice\n", - "antipollution\n", - "antipope\n", - "antipopes\n", - "antipornographic\n", - "antipornography\n", - "antipoverty\n", - "antiprofiteering\n", - "antiprogressive\n", - "antiprostitution\n", - "antipyic\n", - "antipyics\n", - "antipyretic\n", - "antiquarian\n", - "antiquarianism\n", - "antiquarians\n", - "antiquaries\n", - "antiquary\n", - "antiquated\n", - "antique\n", - "antiqued\n", - "antiquer\n", - "antiquers\n", - "antiques\n", - "antiquing\n", - "antiquities\n", - "antiquity\n", - "antirabies\n", - "antiracing\n", - "antiracketeering\n", - "antiradical\n", - "antirealism\n", - "antirealistic\n", - "antirecession\n", - "antireform\n", - "antireligious\n", - "antirepublican\n", - "antirevolutionary\n", - "antirobbery\n", - "antiromantic\n", - "antirust\n", - "antirusts\n", - "antis\n", - "antisegregation\n", - "antiseptic\n", - "antiseptically\n", - "antiseptics\n", - "antisera\n", - "antisexist\n", - "antisexual\n", - "antishoplifting\n", - "antiskid\n", - "antislavery\n", - "antismog\n", - "antismoking\n", - "antismuggling\n", - "antispending\n", - "antistrike\n", - "antistudent\n", - "antisubmarine\n", - "antisubversion\n", - "antisubversive\n", - "antisuicide\n", - "antisyphillis\n", - "antitank\n", - "antitax\n", - "antitechnological\n", - "antitechnology\n", - "antiterrorism\n", - "antiterrorist\n", - "antitheft\n", - "antitheses\n", - "antithesis\n", - "antitobacco\n", - "antitotalitarian\n", - "antitoxin\n", - "antitraditional\n", - "antitrust\n", - "antituberculosis\n", - "antitumor\n", - "antitype\n", - "antitypes\n", - "antityphoid\n", - "antiulcer\n", - "antiunemployment\n", - "antiunion\n", - "antiuniversity\n", - "antiurban\n", - "antivandalism\n", - "antiviolence\n", - "antiviral\n", - "antivivisection\n", - "antiwar\n", - "antiwhite\n", - "antiwiretapping\n", - "antiwoman\n", - "antler\n", - "antlered\n", - "antlers\n", - "antlike\n", - "antlion\n", - "antlions\n", - "antonym\n", - "antonymies\n", - "antonyms\n", - "antonymy\n", - "antra\n", - "antral\n", - "antre\n", - "antres\n", - "antrorse\n", - "antrum\n", - "ants\n", - "anuran\n", - "anurans\n", - "anureses\n", - "anuresis\n", - "anuretic\n", - "anuria\n", - "anurias\n", - "anuric\n", - "anurous\n", - "anus\n", - "anuses\n", - "anvil\n", - "anviled\n", - "anviling\n", - "anvilled\n", - "anvilling\n", - "anvils\n", - "anviltop\n", - "anviltops\n", - "anxieties\n", - "anxiety\n", - "anxious\n", - "anxiously\n", - "any\n", - "anybodies\n", - "anybody\n", - "anyhow\n", - "anymore\n", - "anyone\n", - "anyplace\n", - "anything\n", - "anythings\n", - "anytime\n", - "anyway\n", - "anyways\n", - "anywhere\n", - "anywheres\n", - "anywise\n", - "aorist\n", - "aoristic\n", - "aorists\n", - "aorta\n", - "aortae\n", - "aortal\n", - "aortas\n", - "aortic\n", - "aoudad\n", - "aoudads\n", - "apace\n", - "apache\n", - "apaches\n", - "apagoge\n", - "apagoges\n", - "apagogic\n", - "apanage\n", - "apanages\n", - "aparejo\n", - "aparejos\n", - "apart\n", - "apartheid\n", - "apartheids\n", - "apatetic\n", - "apathetic\n", - "apathetically\n", - "apathies\n", - "apathy\n", - "apatite\n", - "apatites\n", - "ape\n", - "apeak\n", - "aped\n", - "apeek\n", - "apelike\n", - "aper\n", - "apercu\n", - "apercus\n", - "aperient\n", - "aperients\n", - "aperies\n", - "aperitif\n", - "aperitifs\n", - "apers\n", - "aperture\n", - "apertures\n", - "apery\n", - "apes\n", - "apetalies\n", - "apetaly\n", - "apex\n", - "apexes\n", - "aphagia\n", - "aphagias\n", - "aphanite\n", - "aphanites\n", - "aphasia\n", - "aphasiac\n", - "aphasiacs\n", - "aphasias\n", - "aphasic\n", - "aphasics\n", - "aphelia\n", - "aphelian\n", - "aphelion\n", - "apheses\n", - "aphesis\n", - "aphetic\n", - "aphid\n", - "aphides\n", - "aphidian\n", - "aphidians\n", - "aphids\n", - "aphis\n", - "apholate\n", - "apholates\n", - "aphonia\n", - "aphonias\n", - "aphonic\n", - "aphonics\n", - "aphorise\n", - "aphorised\n", - "aphorises\n", - "aphorising\n", - "aphorism\n", - "aphorisms\n", - "aphorist\n", - "aphoristic\n", - "aphorists\n", - "aphorize\n", - "aphorized\n", - "aphorizes\n", - "aphorizing\n", - "aphotic\n", - "aphrodisiac\n", - "aphtha\n", - "aphthae\n", - "aphthous\n", - "aphyllies\n", - "aphylly\n", - "apian\n", - "apiarian\n", - "apiarians\n", - "apiaries\n", - "apiarist\n", - "apiarists\n", - "apiary\n", - "apical\n", - "apically\n", - "apices\n", - "apiculi\n", - "apiculus\n", - "apiece\n", - "apimania\n", - "apimanias\n", - "aping\n", - "apiologies\n", - "apiology\n", - "apish\n", - "apishly\n", - "aplasia\n", - "aplasias\n", - "aplastic\n", - "aplenty\n", - "aplite\n", - "aplites\n", - "aplitic\n", - "aplomb\n", - "aplombs\n", - "apnea\n", - "apneal\n", - "apneas\n", - "apneic\n", - "apnoea\n", - "apnoeal\n", - "apnoeas\n", - "apnoeic\n", - "apocalypse\n", - "apocalypses\n", - "apocalyptic\n", - "apocalyptical\n", - "apocarp\n", - "apocarpies\n", - "apocarps\n", - "apocarpy\n", - "apocope\n", - "apocopes\n", - "apocopic\n", - "apocrine\n", - "apocrypha\n", - "apocryphal\n", - "apodal\n", - "apodoses\n", - "apodosis\n", - "apodous\n", - "apogamic\n", - "apogamies\n", - "apogamy\n", - "apogeal\n", - "apogean\n", - "apogee\n", - "apogees\n", - "apogeic\n", - "apollo\n", - "apollos\n", - "apolog\n", - "apologal\n", - "apologetic\n", - "apologetically\n", - "apologia\n", - "apologiae\n", - "apologias\n", - "apologies\n", - "apologist\n", - "apologize\n", - "apologized\n", - "apologizes\n", - "apologizing\n", - "apologs\n", - "apologue\n", - "apologues\n", - "apology\n", - "apolune\n", - "apolunes\n", - "apomict\n", - "apomicts\n", - "apomixes\n", - "apomixis\n", - "apophyge\n", - "apophyges\n", - "apoplectic\n", - "apoplexies\n", - "apoplexy\n", - "aport\n", - "apostacies\n", - "apostacy\n", - "apostasies\n", - "apostasy\n", - "apostate\n", - "apostates\n", - "apostil\n", - "apostils\n", - "apostle\n", - "apostles\n", - "apostleship\n", - "apostolic\n", - "apostrophe\n", - "apostrophes\n", - "apothecaries\n", - "apothecary\n", - "apothece\n", - "apotheces\n", - "apothegm\n", - "apothegms\n", - "apothem\n", - "apothems\n", - "appal\n", - "appall\n", - "appalled\n", - "appalling\n", - "appalls\n", - "appals\n", - "appanage\n", - "appanages\n", - "apparat\n", - "apparats\n", - "apparatus\n", - "apparatuses\n", - "apparel\n", - "appareled\n", - "appareling\n", - "apparelled\n", - "apparelling\n", - "apparels\n", - "apparent\n", - "apparently\n", - "apparition\n", - "apparitions\n", - "appeal\n", - "appealed\n", - "appealer\n", - "appealers\n", - "appealing\n", - "appeals\n", - "appear\n", - "appearance\n", - "appearances\n", - "appeared\n", - "appearing\n", - "appears\n", - "appease\n", - "appeased\n", - "appeasement\n", - "appeasements\n", - "appeaser\n", - "appeasers\n", - "appeases\n", - "appeasing\n", - "appel\n", - "appellee\n", - "appellees\n", - "appellor\n", - "appellors\n", - "appels\n", - "append\n", - "appendage\n", - "appendages\n", - "appendectomies\n", - "appendectomy\n", - "appended\n", - "appendices\n", - "appendicitis\n", - "appending\n", - "appendix\n", - "appendixes\n", - "appends\n", - "appestat\n", - "appestats\n", - "appetent\n", - "appetite\n", - "appetites\n", - "appetizer\n", - "appetizers\n", - "appetizing\n", - "appetizingly\n", - "applaud\n", - "applauded\n", - "applauding\n", - "applauds\n", - "applause\n", - "applauses\n", - "apple\n", - "applejack\n", - "applejacks\n", - "apples\n", - "applesauce\n", - "appliance\n", - "applicabilities\n", - "applicability\n", - "applicable\n", - "applicancies\n", - "applicancy\n", - "applicant\n", - "applicants\n", - "application\n", - "applications\n", - "applicator\n", - "applicators\n", - "applied\n", - "applier\n", - "appliers\n", - "applies\n", - "applique\n", - "appliqued\n", - "appliqueing\n", - "appliques\n", - "apply\n", - "applying\n", - "appoint\n", - "appointed\n", - "appointing\n", - "appointment\n", - "appointments\n", - "appoints\n", - "apportion\n", - "apportioned\n", - "apportioning\n", - "apportionment\n", - "apportionments\n", - "apportions\n", - "appose\n", - "apposed\n", - "apposer\n", - "apposers\n", - "apposes\n", - "apposing\n", - "apposite\n", - "appositely\n", - "appraisal\n", - "appraisals\n", - "appraise\n", - "appraised\n", - "appraiser\n", - "appraisers\n", - "appraises\n", - "appraising\n", - "appreciable\n", - "appreciably\n", - "appreciate\n", - "appreciated\n", - "appreciates\n", - "appreciating\n", - "appreciation\n", - "appreciations\n", - "appreciative\n", - "apprehend\n", - "apprehended\n", - "apprehending\n", - "apprehends\n", - "apprehension\n", - "apprehensions\n", - "apprehensive\n", - "apprehensively\n", - "apprehensiveness\n", - "apprehensivenesses\n", - "apprentice\n", - "apprenticed\n", - "apprentices\n", - "apprenticeship\n", - "apprenticeships\n", - "apprenticing\n", - "apprise\n", - "apprised\n", - "appriser\n", - "apprisers\n", - "apprises\n", - "apprising\n", - "apprize\n", - "apprized\n", - "apprizer\n", - "apprizers\n", - "apprizes\n", - "apprizing\n", - "approach\n", - "approachable\n", - "approached\n", - "approaches\n", - "approaching\n", - "approbation\n", - "appropriate\n", - "appropriated\n", - "appropriately\n", - "appropriateness\n", - "appropriates\n", - "appropriating\n", - "appropriation\n", - "appropriations\n", - "approval\n", - "approvals\n", - "approve\n", - "approved\n", - "approver\n", - "approvers\n", - "approves\n", - "approving\n", - "approximate\n", - "approximated\n", - "approximately\n", - "approximates\n", - "approximating\n", - "approximation\n", - "approximations\n", - "appulse\n", - "appulses\n", - "appurtenance\n", - "appurtenances\n", - "appurtenant\n", - "apractic\n", - "apraxia\n", - "apraxias\n", - "apraxic\n", - "apricot\n", - "apricots\n", - "apron\n", - "aproned\n", - "aproning\n", - "aprons\n", - "apropos\n", - "apse\n", - "apses\n", - "apsidal\n", - "apsides\n", - "apsis\n", - "apt\n", - "apter\n", - "apteral\n", - "apterous\n", - "apteryx\n", - "apteryxes\n", - "aptest\n", - "aptitude\n", - "aptitudes\n", - "aptly\n", - "aptness\n", - "aptnesses\n", - "apyrase\n", - "apyrases\n", - "apyretic\n", - "aqua\n", - "aquacade\n", - "aquacades\n", - "aquae\n", - "aquamarine\n", - "aquamarines\n", - "aquanaut\n", - "aquanauts\n", - "aquaria\n", - "aquarial\n", - "aquarian\n", - "aquarians\n", - "aquarist\n", - "aquarists\n", - "aquarium\n", - "aquariums\n", - "aquas\n", - "aquatic\n", - "aquatics\n", - "aquatint\n", - "aquatinted\n", - "aquatinting\n", - "aquatints\n", - "aquatone\n", - "aquatones\n", - "aquavit\n", - "aquavits\n", - "aqueduct\n", - "aqueducts\n", - "aqueous\n", - "aquifer\n", - "aquifers\n", - "aquiline\n", - "aquiver\n", - "ar\n", - "arabesk\n", - "arabesks\n", - "arabesque\n", - "arabesques\n", - "arabize\n", - "arabized\n", - "arabizes\n", - "arabizing\n", - "arable\n", - "arables\n", - "araceous\n", - "arachnid\n", - "arachnids\n", - "arak\n", - "araks\n", - "araneid\n", - "araneids\n", - "arapaima\n", - "arapaimas\n", - "araroba\n", - "ararobas\n", - "arbalest\n", - "arbalests\n", - "arbalist\n", - "arbalists\n", - "arbiter\n", - "arbiters\n", - "arbitral\n", - "arbitrarily\n", - "arbitrariness\n", - "arbitrarinesses\n", - "arbitrary\n", - "arbitrate\n", - "arbitrated\n", - "arbitrates\n", - "arbitrating\n", - "arbitration\n", - "arbitrations\n", - "arbitrator\n", - "arbitrators\n", - "arbor\n", - "arboreal\n", - "arbored\n", - "arbores\n", - "arboreta\n", - "arborist\n", - "arborists\n", - "arborize\n", - "arborized\n", - "arborizes\n", - "arborizing\n", - "arborous\n", - "arbors\n", - "arbour\n", - "arboured\n", - "arbours\n", - "arbuscle\n", - "arbuscles\n", - "arbute\n", - "arbutean\n", - "arbutes\n", - "arbutus\n", - "arbutuses\n", - "arc\n", - "arcade\n", - "arcaded\n", - "arcades\n", - "arcadia\n", - "arcadian\n", - "arcadians\n", - "arcadias\n", - "arcading\n", - "arcadings\n", - "arcana\n", - "arcane\n", - "arcanum\n", - "arcature\n", - "arcatures\n", - "arced\n", - "arch\n", - "archaeological\n", - "archaeologies\n", - "archaeologist\n", - "archaeologists\n", - "archaeology\n", - "archaic\n", - "archaically\n", - "archaise\n", - "archaised\n", - "archaises\n", - "archaising\n", - "archaism\n", - "archaisms\n", - "archaist\n", - "archaists\n", - "archaize\n", - "archaized\n", - "archaizes\n", - "archaizing\n", - "archangel\n", - "archangels\n", - "archbishop\n", - "archbishopric\n", - "archbishoprics\n", - "archbishops\n", - "archdiocese\n", - "archdioceses\n", - "archduke\n", - "archdukes\n", - "arched\n", - "archeologies\n", - "archeology\n", - "archer\n", - "archeries\n", - "archers\n", - "archery\n", - "arches\n", - "archetype\n", - "archetypes\n", - "archil\n", - "archils\n", - "archine\n", - "archines\n", - "arching\n", - "archings\n", - "archipelago\n", - "archipelagos\n", - "architect\n", - "architects\n", - "architectural\n", - "architecture\n", - "architectures\n", - "archival\n", - "archive\n", - "archived\n", - "archives\n", - "archiving\n", - "archly\n", - "archness\n", - "archnesses\n", - "archon\n", - "archons\n", - "archway\n", - "archways\n", - "arciform\n", - "arcing\n", - "arcked\n", - "arcking\n", - "arco\n", - "arcs\n", - "arctic\n", - "arctics\n", - "arcuate\n", - "arcuated\n", - "arcus\n", - "arcuses\n", - "ardeb\n", - "ardebs\n", - "ardencies\n", - "ardency\n", - "ardent\n", - "ardently\n", - "ardor\n", - "ardors\n", - "ardour\n", - "ardours\n", - "arduous\n", - "arduously\n", - "arduousness\n", - "arduousnesses\n", - "are\n", - "area\n", - "areae\n", - "areal\n", - "areally\n", - "areas\n", - "areaway\n", - "areaways\n", - "areca\n", - "arecas\n", - "areic\n", - "arena\n", - "arenas\n", - "arenose\n", - "arenous\n", - "areola\n", - "areolae\n", - "areolar\n", - "areolas\n", - "areolate\n", - "areole\n", - "areoles\n", - "areologies\n", - "areology\n", - "ares\n", - "arete\n", - "aretes\n", - "arethusa\n", - "arethusas\n", - "arf\n", - "argal\n", - "argali\n", - "argalis\n", - "argals\n", - "argent\n", - "argental\n", - "argentic\n", - "argents\n", - "argentum\n", - "argentums\n", - "argil\n", - "argils\n", - "arginase\n", - "arginases\n", - "arginine\n", - "arginines\n", - "argle\n", - "argled\n", - "argles\n", - "argling\n", - "argol\n", - "argols\n", - "argon\n", - "argonaut\n", - "argonauts\n", - "argons\n", - "argosies\n", - "argosy\n", - "argot\n", - "argotic\n", - "argots\n", - "arguable\n", - "arguably\n", - "argue\n", - "argued\n", - "arguer\n", - "arguers\n", - "argues\n", - "argufied\n", - "argufier\n", - "argufiers\n", - "argufies\n", - "argufy\n", - "argufying\n", - "arguing\n", - "argument\n", - "argumentative\n", - "arguments\n", - "argus\n", - "arguses\n", - "argyle\n", - "argyles\n", - "argyll\n", - "argylls\n", - "arhat\n", - "arhats\n", - "aria\n", - "arias\n", - "arid\n", - "arider\n", - "aridest\n", - "aridities\n", - "aridity\n", - "aridly\n", - "aridness\n", - "aridnesses\n", - "ariel\n", - "ariels\n", - "arietta\n", - "ariettas\n", - "ariette\n", - "ariettes\n", - "aright\n", - "aril\n", - "ariled\n", - "arillate\n", - "arillode\n", - "arillodes\n", - "arilloid\n", - "arils\n", - "ariose\n", - "ariosi\n", - "arioso\n", - "ariosos\n", - "arise\n", - "arisen\n", - "arises\n", - "arising\n", - "arista\n", - "aristae\n", - "aristas\n", - "aristate\n", - "aristocracies\n", - "aristocracy\n", - "aristocrat\n", - "aristocratic\n", - "aristocrats\n", - "arithmetic\n", - "arithmetical\n", - "ark\n", - "arks\n", - "arles\n", - "arm\n", - "armada\n", - "armadas\n", - "armadillo\n", - "armadillos\n", - "armament\n", - "armaments\n", - "armature\n", - "armatured\n", - "armatures\n", - "armaturing\n", - "armband\n", - "armbands\n", - "armchair\n", - "armchairs\n", - "armed\n", - "armer\n", - "armers\n", - "armet\n", - "armets\n", - "armful\n", - "armfuls\n", - "armhole\n", - "armholes\n", - "armies\n", - "armiger\n", - "armigero\n", - "armigeros\n", - "armigers\n", - "armilla\n", - "armillae\n", - "armillas\n", - "arming\n", - "armings\n", - "armless\n", - "armlet\n", - "armlets\n", - "armlike\n", - "armload\n", - "armloads\n", - "armoire\n", - "armoires\n", - "armonica\n", - "armonicas\n", - "armor\n", - "armored\n", - "armorer\n", - "armorers\n", - "armorial\n", - "armorials\n", - "armories\n", - "armoring\n", - "armors\n", - "armory\n", - "armour\n", - "armoured\n", - "armourer\n", - "armourers\n", - "armouries\n", - "armouring\n", - "armours\n", - "armoury\n", - "armpit\n", - "armpits\n", - "armrest\n", - "armrests\n", - "arms\n", - "armsful\n", - "armure\n", - "armures\n", - "army\n", - "armyworm\n", - "armyworms\n", - "arnatto\n", - "arnattos\n", - "arnica\n", - "arnicas\n", - "arnotto\n", - "arnottos\n", - "aroid\n", - "aroids\n", - "aroint\n", - "arointed\n", - "arointing\n", - "aroints\n", - "aroma\n", - "aromas\n", - "aromatic\n", - "aromatics\n", - "arose\n", - "around\n", - "arousal\n", - "arousals\n", - "arouse\n", - "aroused\n", - "arouser\n", - "arousers\n", - "arouses\n", - "arousing\n", - "aroynt\n", - "aroynted\n", - "aroynting\n", - "aroynts\n", - "arpeggio\n", - "arpeggios\n", - "arpen\n", - "arpens\n", - "arpent\n", - "arpents\n", - "arquebus\n", - "arquebuses\n", - "arrack\n", - "arracks\n", - "arraign\n", - "arraigned\n", - "arraigning\n", - "arraigns\n", - "arrange\n", - "arranged\n", - "arrangement\n", - "arrangements\n", - "arranger\n", - "arrangers\n", - "arranges\n", - "arranging\n", - "arrant\n", - "arrantly\n", - "arras\n", - "arrased\n", - "array\n", - "arrayal\n", - "arrayals\n", - "arrayed\n", - "arrayer\n", - "arrayers\n", - "arraying\n", - "arrays\n", - "arrear\n", - "arrears\n", - "arrest\n", - "arrested\n", - "arrestee\n", - "arrestees\n", - "arrester\n", - "arresters\n", - "arresting\n", - "arrestor\n", - "arrestors\n", - "arrests\n", - "arrhizal\n", - "arrhythmia\n", - "arris\n", - "arrises\n", - "arrival\n", - "arrivals\n", - "arrive\n", - "arrived\n", - "arriver\n", - "arrivers\n", - "arrives\n", - "arriving\n", - "arroba\n", - "arrobas\n", - "arrogance\n", - "arrogances\n", - "arrogant\n", - "arrogantly\n", - "arrogate\n", - "arrogated\n", - "arrogates\n", - "arrogating\n", - "arrow\n", - "arrowed\n", - "arrowhead\n", - "arrowheads\n", - "arrowing\n", - "arrows\n", - "arrowy\n", - "arroyo\n", - "arroyos\n", - "ars\n", - "arse\n", - "arsenal\n", - "arsenals\n", - "arsenate\n", - "arsenates\n", - "arsenic\n", - "arsenical\n", - "arsenics\n", - "arsenide\n", - "arsenides\n", - "arsenious\n", - "arsenite\n", - "arsenites\n", - "arseno\n", - "arsenous\n", - "arses\n", - "arshin\n", - "arshins\n", - "arsine\n", - "arsines\n", - "arsino\n", - "arsis\n", - "arson\n", - "arsonist\n", - "arsonists\n", - "arsonous\n", - "arsons\n", - "art\n", - "artal\n", - "artefact\n", - "artefacts\n", - "artel\n", - "artels\n", - "arterial\n", - "arterials\n", - "arteries\n", - "arteriosclerosis\n", - "arteriosclerotic\n", - "artery\n", - "artful\n", - "artfully\n", - "artfulness\n", - "artfulnesses\n", - "arthralgia\n", - "arthritic\n", - "arthritides\n", - "arthritis\n", - "arthropod\n", - "arthropods\n", - "artichoke\n", - "artichokes\n", - "article\n", - "articled\n", - "articles\n", - "articling\n", - "articulate\n", - "articulated\n", - "articulately\n", - "articulateness\n", - "articulatenesses\n", - "articulates\n", - "articulating\n", - "artier\n", - "artiest\n", - "artifact\n", - "artifacts\n", - "artifice\n", - "artifices\n", - "artificial\n", - "artificialities\n", - "artificiality\n", - "artificially\n", - "artificialness\n", - "artificialnesses\n", - "artilleries\n", - "artillery\n", - "artily\n", - "artiness\n", - "artinesses\n", - "artisan\n", - "artisans\n", - "artist\n", - "artiste\n", - "artistes\n", - "artistic\n", - "artistical\n", - "artistically\n", - "artistries\n", - "artistry\n", - "artists\n", - "artless\n", - "artlessly\n", - "artlessness\n", - "artlessnesses\n", - "arts\n", - "artwork\n", - "artworks\n", - "arty\n", - "arum\n", - "arums\n", - "aruspex\n", - "aruspices\n", - "arval\n", - "arvo\n", - "arvos\n", - "aryl\n", - "aryls\n", - "arythmia\n", - "arythmias\n", - "arythmic\n", - "as\n", - "asarum\n", - "asarums\n", - "asbestic\n", - "asbestos\n", - "asbestoses\n", - "asbestus\n", - "asbestuses\n", - "ascarid\n", - "ascarides\n", - "ascarids\n", - "ascaris\n", - "ascend\n", - "ascendancies\n", - "ascendancy\n", - "ascendant\n", - "ascended\n", - "ascender\n", - "ascenders\n", - "ascending\n", - "ascends\n", - "ascension\n", - "ascensions\n", - "ascent\n", - "ascents\n", - "ascertain\n", - "ascertainable\n", - "ascertained\n", - "ascertaining\n", - "ascertains\n", - "asceses\n", - "ascesis\n", - "ascetic\n", - "asceticism\n", - "asceticisms\n", - "ascetics\n", - "asci\n", - "ascidia\n", - "ascidian\n", - "ascidians\n", - "ascidium\n", - "ascites\n", - "ascitic\n", - "ascocarp\n", - "ascocarps\n", - "ascorbic\n", - "ascot\n", - "ascots\n", - "ascribable\n", - "ascribe\n", - "ascribed\n", - "ascribes\n", - "ascribing\n", - "ascription\n", - "ascriptions\n", - "ascus\n", - "asdic\n", - "asdics\n", - "asea\n", - "asepses\n", - "asepsis\n", - "aseptic\n", - "asexual\n", - "ash\n", - "ashamed\n", - "ashcan\n", - "ashcans\n", - "ashed\n", - "ashen\n", - "ashes\n", - "ashier\n", - "ashiest\n", - "ashing\n", - "ashlar\n", - "ashlared\n", - "ashlaring\n", - "ashlars\n", - "ashler\n", - "ashlered\n", - "ashlering\n", - "ashlers\n", - "ashless\n", - "ashman\n", - "ashmen\n", - "ashore\n", - "ashplant\n", - "ashplants\n", - "ashram\n", - "ashrams\n", - "ashtray\n", - "ashtrays\n", - "ashy\n", - "aside\n", - "asides\n", - "asinine\n", - "ask\n", - "askance\n", - "askant\n", - "asked\n", - "asker\n", - "askers\n", - "askeses\n", - "askesis\n", - "askew\n", - "asking\n", - "askings\n", - "asks\n", - "aslant\n", - "asleep\n", - "aslope\n", - "asocial\n", - "asp\n", - "aspect\n", - "aspects\n", - "aspen\n", - "aspens\n", - "asper\n", - "asperate\n", - "asperated\n", - "asperates\n", - "asperating\n", - "asperges\n", - "asperities\n", - "asperity\n", - "aspers\n", - "asperse\n", - "aspersed\n", - "asperser\n", - "aspersers\n", - "asperses\n", - "aspersing\n", - "aspersion\n", - "aspersions\n", - "aspersor\n", - "aspersors\n", - "asphalt\n", - "asphalted\n", - "asphaltic\n", - "asphalting\n", - "asphalts\n", - "asphaltum\n", - "asphaltums\n", - "aspheric\n", - "asphodel\n", - "asphodels\n", - "asphyxia\n", - "asphyxias\n", - "asphyxiate\n", - "asphyxiated\n", - "asphyxiates\n", - "asphyxiating\n", - "asphyxiation\n", - "asphyxiations\n", - "asphyxies\n", - "asphyxy\n", - "aspic\n", - "aspics\n", - "aspirant\n", - "aspirants\n", - "aspirata\n", - "aspiratae\n", - "aspirate\n", - "aspirated\n", - "aspirates\n", - "aspirating\n", - "aspiration\n", - "aspirations\n", - "aspire\n", - "aspired\n", - "aspirer\n", - "aspirers\n", - "aspires\n", - "aspirin\n", - "aspiring\n", - "aspirins\n", - "aspis\n", - "aspises\n", - "aspish\n", - "asps\n", - "asquint\n", - "asrama\n", - "asramas\n", - "ass\n", - "assagai\n", - "assagaied\n", - "assagaiing\n", - "assagais\n", - "assai\n", - "assail\n", - "assailable\n", - "assailant\n", - "assailants\n", - "assailed\n", - "assailer\n", - "assailers\n", - "assailing\n", - "assails\n", - "assais\n", - "assassin\n", - "assassinate\n", - "assassinated\n", - "assassinates\n", - "assassinating\n", - "assassination\n", - "assassinations\n", - "assassins\n", - "assault\n", - "assaulted\n", - "assaulting\n", - "assaults\n", - "assay\n", - "assayed\n", - "assayer\n", - "assayers\n", - "assaying\n", - "assays\n", - "assegai\n", - "assegaied\n", - "assegaiing\n", - "assegais\n", - "assemble\n", - "assembled\n", - "assembles\n", - "assemblies\n", - "assembling\n", - "assembly\n", - "assemblyman\n", - "assemblymen\n", - "assemblywoman\n", - "assemblywomen\n", - "assent\n", - "assented\n", - "assenter\n", - "assenters\n", - "assenting\n", - "assentor\n", - "assentors\n", - "assents\n", - "assert\n", - "asserted\n", - "asserter\n", - "asserters\n", - "asserting\n", - "assertion\n", - "assertions\n", - "assertive\n", - "assertiveness\n", - "assertivenesses\n", - "assertor\n", - "assertors\n", - "asserts\n", - "asses\n", - "assess\n", - "assessed\n", - "assesses\n", - "assessing\n", - "assessment\n", - "assessments\n", - "assessor\n", - "assessors\n", - "asset\n", - "assets\n", - "assiduities\n", - "assiduity\n", - "assiduous\n", - "assiduously\n", - "assiduousness\n", - "assiduousnesses\n", - "assign\n", - "assignable\n", - "assignat\n", - "assignats\n", - "assigned\n", - "assignee\n", - "assignees\n", - "assigner\n", - "assigners\n", - "assigning\n", - "assignment\n", - "assignments\n", - "assignor\n", - "assignors\n", - "assigns\n", - "assimilate\n", - "assimilated\n", - "assimilates\n", - "assimilating\n", - "assimilation\n", - "assimilations\n", - "assist\n", - "assistance\n", - "assistances\n", - "assistant\n", - "assistants\n", - "assisted\n", - "assister\n", - "assisters\n", - "assisting\n", - "assistor\n", - "assistors\n", - "assists\n", - "assize\n", - "assizes\n", - "asslike\n", - "associate\n", - "associated\n", - "associates\n", - "associating\n", - "association\n", - "associations\n", - "assoil\n", - "assoiled\n", - "assoiling\n", - "assoils\n", - "assonant\n", - "assonants\n", - "assort\n", - "assorted\n", - "assorter\n", - "assorters\n", - "assorting\n", - "assortment\n", - "assortments\n", - "assorts\n", - "assuage\n", - "assuaged\n", - "assuages\n", - "assuaging\n", - "assume\n", - "assumed\n", - "assumer\n", - "assumers\n", - "assumes\n", - "assuming\n", - "assumption\n", - "assumptions\n", - "assurance\n", - "assurances\n", - "assure\n", - "assured\n", - "assureds\n", - "assurer\n", - "assurers\n", - "assures\n", - "assuring\n", - "assuror\n", - "assurors\n", - "asswage\n", - "asswaged\n", - "asswages\n", - "asswaging\n", - "astasia\n", - "astasias\n", - "astatic\n", - "astatine\n", - "astatines\n", - "aster\n", - "asteria\n", - "asterias\n", - "asterisk\n", - "asterisked\n", - "asterisking\n", - "asterisks\n", - "asterism\n", - "asterisms\n", - "astern\n", - "asternal\n", - "asteroid\n", - "asteroidal\n", - "asteroids\n", - "asters\n", - "asthenia\n", - "asthenias\n", - "asthenic\n", - "asthenics\n", - "asthenies\n", - "astheny\n", - "asthma\n", - "asthmas\n", - "astigmatic\n", - "astigmatism\n", - "astigmatisms\n", - "astir\n", - "astomous\n", - "astonied\n", - "astonies\n", - "astonish\n", - "astonished\n", - "astonishes\n", - "astonishing\n", - "astonishingly\n", - "astonishment\n", - "astonishments\n", - "astony\n", - "astonying\n", - "astound\n", - "astounded\n", - "astounding\n", - "astoundingly\n", - "astounds\n", - "astraddle\n", - "astragal\n", - "astragals\n", - "astral\n", - "astrally\n", - "astrals\n", - "astray\n", - "astrict\n", - "astricted\n", - "astricting\n", - "astricts\n", - "astride\n", - "astringe\n", - "astringed\n", - "astringencies\n", - "astringency\n", - "astringent\n", - "astringents\n", - "astringes\n", - "astringing\n", - "astrolabe\n", - "astrolabes\n", - "astrologer\n", - "astrologers\n", - "astrological\n", - "astrologies\n", - "astrology\n", - "astronaut\n", - "astronautic\n", - "astronautical\n", - "astronautically\n", - "astronautics\n", - "astronauts\n", - "astronomer\n", - "astronomers\n", - "astronomic\n", - "astronomical\n", - "astute\n", - "astutely\n", - "astuteness\n", - "astylar\n", - "asunder\n", - "aswarm\n", - "aswirl\n", - "aswoon\n", - "asyla\n", - "asylum\n", - "asylums\n", - "asymmetric\n", - "asymmetrical\n", - "asymmetries\n", - "asymmetry\n", - "asyndeta\n", - "at\n", - "atabal\n", - "atabals\n", - "ataghan\n", - "ataghans\n", - "atalaya\n", - "atalayas\n", - "ataman\n", - "atamans\n", - "atamasco\n", - "atamascos\n", - "ataraxia\n", - "ataraxias\n", - "ataraxic\n", - "ataraxics\n", - "ataraxies\n", - "ataraxy\n", - "atavic\n", - "atavism\n", - "atavisms\n", - "atavist\n", - "atavists\n", - "ataxia\n", - "ataxias\n", - "ataxic\n", - "ataxics\n", - "ataxies\n", - "ataxy\n", - "ate\n", - "atechnic\n", - "atelic\n", - "atelier\n", - "ateliers\n", - "ates\n", - "athanasies\n", - "athanasy\n", - "atheism\n", - "atheisms\n", - "atheist\n", - "atheistic\n", - "atheists\n", - "atheling\n", - "athelings\n", - "atheneum\n", - "atheneums\n", - "atheroma\n", - "atheromas\n", - "atheromata\n", - "atherosclerosis\n", - "atherosclerotic\n", - "athirst\n", - "athlete\n", - "athletes\n", - "athletic\n", - "athletics\n", - "athodyd\n", - "athodyds\n", - "athwart\n", - "atilt\n", - "atingle\n", - "atlantes\n", - "atlas\n", - "atlases\n", - "atlatl\n", - "atlatls\n", - "atma\n", - "atman\n", - "atmans\n", - "atmas\n", - "atmosphere\n", - "atmospheres\n", - "atmospheric\n", - "atmospherically\n", - "atoll\n", - "atolls\n", - "atom\n", - "atomic\n", - "atomical\n", - "atomics\n", - "atomies\n", - "atomise\n", - "atomised\n", - "atomises\n", - "atomising\n", - "atomism\n", - "atomisms\n", - "atomist\n", - "atomists\n", - "atomize\n", - "atomized\n", - "atomizer\n", - "atomizers\n", - "atomizes\n", - "atomizing\n", - "atoms\n", - "atomy\n", - "atonable\n", - "atonal\n", - "atonally\n", - "atone\n", - "atoned\n", - "atonement\n", - "atonements\n", - "atoner\n", - "atoners\n", - "atones\n", - "atonic\n", - "atonicity\n", - "atonics\n", - "atonies\n", - "atoning\n", - "atony\n", - "atop\n", - "atopic\n", - "atopies\n", - "atopy\n", - "atrazine\n", - "atrazines\n", - "atremble\n", - "atresia\n", - "atresias\n", - "atria\n", - "atrial\n", - "atrip\n", - "atrium\n", - "atriums\n", - "atrocious\n", - "atrociously\n", - "atrociousness\n", - "atrociousnesses\n", - "atrocities\n", - "atrocity\n", - "atrophia\n", - "atrophias\n", - "atrophic\n", - "atrophied\n", - "atrophies\n", - "atrophy\n", - "atrophying\n", - "atropin\n", - "atropine\n", - "atropines\n", - "atropins\n", - "atropism\n", - "atropisms\n", - "attach\n", - "attache\n", - "attached\n", - "attacher\n", - "attachers\n", - "attaches\n", - "attaching\n", - "attachment\n", - "attachments\n", - "attack\n", - "attacked\n", - "attacker\n", - "attackers\n", - "attacking\n", - "attacks\n", - "attain\n", - "attainabilities\n", - "attainability\n", - "attainable\n", - "attained\n", - "attainer\n", - "attainers\n", - "attaining\n", - "attainment\n", - "attainments\n", - "attains\n", - "attaint\n", - "attainted\n", - "attainting\n", - "attaints\n", - "attar\n", - "attars\n", - "attemper\n", - "attempered\n", - "attempering\n", - "attempers\n", - "attempt\n", - "attempted\n", - "attempting\n", - "attempts\n", - "attend\n", - "attendance\n", - "attendances\n", - "attendant\n", - "attendants\n", - "attended\n", - "attendee\n", - "attendees\n", - "attender\n", - "attenders\n", - "attending\n", - "attendings\n", - "attends\n", - "attent\n", - "attention\n", - "attentions\n", - "attentive\n", - "attentively\n", - "attentiveness\n", - "attentivenesses\n", - "attenuate\n", - "attenuated\n", - "attenuates\n", - "attenuating\n", - "attenuation\n", - "attenuations\n", - "attest\n", - "attestation\n", - "attestations\n", - "attested\n", - "attester\n", - "attesters\n", - "attesting\n", - "attestor\n", - "attestors\n", - "attests\n", - "attic\n", - "atticism\n", - "atticisms\n", - "atticist\n", - "atticists\n", - "attics\n", - "attire\n", - "attired\n", - "attires\n", - "attiring\n", - "attitude\n", - "attitudes\n", - "attorn\n", - "attorned\n", - "attorney\n", - "attorneys\n", - "attorning\n", - "attorns\n", - "attract\n", - "attracted\n", - "attracting\n", - "attraction\n", - "attractions\n", - "attractive\n", - "attractively\n", - "attractiveness\n", - "attractivenesses\n", - "attracts\n", - "attributable\n", - "attribute\n", - "attributed\n", - "attributes\n", - "attributing\n", - "attribution\n", - "attributions\n", - "attrite\n", - "attrited\n", - "attune\n", - "attuned\n", - "attunes\n", - "attuning\n", - "atwain\n", - "atween\n", - "atwitter\n", - "atypic\n", - "atypical\n", - "aubade\n", - "aubades\n", - "auberge\n", - "auberges\n", - "auburn\n", - "auburns\n", - "auction\n", - "auctioned\n", - "auctioneer\n", - "auctioneers\n", - "auctioning\n", - "auctions\n", - "audacious\n", - "audacities\n", - "audacity\n", - "audad\n", - "audads\n", - "audible\n", - "audibles\n", - "audibly\n", - "audience\n", - "audiences\n", - "audient\n", - "audients\n", - "audile\n", - "audiles\n", - "auding\n", - "audings\n", - "audio\n", - "audiogram\n", - "audiograms\n", - "audios\n", - "audit\n", - "audited\n", - "auditing\n", - "audition\n", - "auditioned\n", - "auditioning\n", - "auditions\n", - "auditive\n", - "auditives\n", - "auditor\n", - "auditories\n", - "auditorium\n", - "auditoriums\n", - "auditors\n", - "auditory\n", - "audits\n", - "augend\n", - "augends\n", - "auger\n", - "augers\n", - "aught\n", - "aughts\n", - "augite\n", - "augites\n", - "augitic\n", - "augment\n", - "augmentation\n", - "augmentations\n", - "augmented\n", - "augmenting\n", - "augments\n", - "augur\n", - "augural\n", - "augured\n", - "augurer\n", - "augurers\n", - "auguries\n", - "auguring\n", - "augurs\n", - "augury\n", - "august\n", - "auguster\n", - "augustest\n", - "augustly\n", - "auk\n", - "auklet\n", - "auklets\n", - "auks\n", - "auld\n", - "aulder\n", - "auldest\n", - "aulic\n", - "aunt\n", - "aunthood\n", - "aunthoods\n", - "auntie\n", - "aunties\n", - "auntlier\n", - "auntliest\n", - "auntlike\n", - "auntly\n", - "aunts\n", - "aunty\n", - "aura\n", - "aurae\n", - "aural\n", - "aurally\n", - "aurar\n", - "auras\n", - "aurate\n", - "aurated\n", - "aureate\n", - "aurei\n", - "aureola\n", - "aureolae\n", - "aureolas\n", - "aureole\n", - "aureoled\n", - "aureoles\n", - "aureoling\n", - "aures\n", - "aureus\n", - "auric\n", - "auricle\n", - "auricled\n", - "auricles\n", - "auricula\n", - "auriculae\n", - "auriculas\n", - "auriform\n", - "auris\n", - "aurist\n", - "aurists\n", - "aurochs\n", - "aurochses\n", - "aurora\n", - "aurorae\n", - "auroral\n", - "auroras\n", - "aurorean\n", - "aurous\n", - "aurum\n", - "aurums\n", - "auscultation\n", - "auscultations\n", - "auspex\n", - "auspice\n", - "auspices\n", - "auspicious\n", - "austere\n", - "austerer\n", - "austerest\n", - "austerities\n", - "austerity\n", - "austral\n", - "autacoid\n", - "autacoids\n", - "autarchies\n", - "autarchy\n", - "autarkic\n", - "autarkies\n", - "autarkik\n", - "autarky\n", - "autecism\n", - "autecisms\n", - "authentic\n", - "authentically\n", - "authenticate\n", - "authenticated\n", - "authenticates\n", - "authenticating\n", - "authentication\n", - "authentications\n", - "authenticities\n", - "authenticity\n", - "author\n", - "authored\n", - "authoress\n", - "authoresses\n", - "authoring\n", - "authoritarian\n", - "authoritative\n", - "authoritatively\n", - "authorities\n", - "authority\n", - "authorization\n", - "authorizations\n", - "authorize\n", - "authorized\n", - "authorizes\n", - "authorizing\n", - "authors\n", - "authorship\n", - "authorships\n", - "autism\n", - "autisms\n", - "autistic\n", - "auto\n", - "autobahn\n", - "autobahnen\n", - "autobahns\n", - "autobiographer\n", - "autobiographers\n", - "autobiographical\n", - "autobiographies\n", - "autobiography\n", - "autobus\n", - "autobuses\n", - "autobusses\n", - "autocade\n", - "autocades\n", - "autocoid\n", - "autocoids\n", - "autocracies\n", - "autocracy\n", - "autocrat\n", - "autocratic\n", - "autocratically\n", - "autocrats\n", - "autodyne\n", - "autodynes\n", - "autoed\n", - "autogamies\n", - "autogamy\n", - "autogenies\n", - "autogeny\n", - "autogiro\n", - "autogiros\n", - "autograph\n", - "autographed\n", - "autographing\n", - "autographs\n", - "autogyro\n", - "autogyros\n", - "autoing\n", - "autolyze\n", - "autolyzed\n", - "autolyzes\n", - "autolyzing\n", - "automata\n", - "automate\n", - "automateable\n", - "automated\n", - "automates\n", - "automatic\n", - "automatically\n", - "automating\n", - "automation\n", - "automations\n", - "automaton\n", - "automatons\n", - "automobile\n", - "automobiles\n", - "automotive\n", - "autonomies\n", - "autonomous\n", - "autonomously\n", - "autonomy\n", - "autopsic\n", - "autopsied\n", - "autopsies\n", - "autopsy\n", - "autopsying\n", - "autos\n", - "autosome\n", - "autosomes\n", - "autotomies\n", - "autotomy\n", - "autotype\n", - "autotypes\n", - "autotypies\n", - "autotypy\n", - "autumn\n", - "autumnal\n", - "autumns\n", - "autunite\n", - "autunites\n", - "auxeses\n", - "auxesis\n", - "auxetic\n", - "auxetics\n", - "auxiliaries\n", - "auxiliary\n", - "auxin\n", - "auxinic\n", - "auxins\n", - "ava\n", - "avail\n", - "availabilities\n", - "availability\n", - "available\n", - "availed\n", - "availing\n", - "avails\n", - "avalanche\n", - "avalanches\n", - "avarice\n", - "avarices\n", - "avast\n", - "avatar\n", - "avatars\n", - "avaunt\n", - "ave\n", - "avellan\n", - "avellane\n", - "avenge\n", - "avenged\n", - "avenger\n", - "avengers\n", - "avenges\n", - "avenging\n", - "avens\n", - "avenses\n", - "aventail\n", - "aventails\n", - "avenue\n", - "avenues\n", - "aver\n", - "average\n", - "averaged\n", - "averages\n", - "averaging\n", - "averment\n", - "averments\n", - "averred\n", - "averring\n", - "avers\n", - "averse\n", - "aversely\n", - "aversion\n", - "aversions\n", - "aversive\n", - "avert\n", - "averted\n", - "averting\n", - "averts\n", - "aves\n", - "avgas\n", - "avgases\n", - "avgasses\n", - "avian\n", - "avianize\n", - "avianized\n", - "avianizes\n", - "avianizing\n", - "avians\n", - "aviaries\n", - "aviarist\n", - "aviarists\n", - "aviary\n", - "aviate\n", - "aviated\n", - "aviates\n", - "aviating\n", - "aviation\n", - "aviations\n", - "aviator\n", - "aviators\n", - "aviatrices\n", - "aviatrix\n", - "aviatrixes\n", - "avicular\n", - "avid\n", - "avidin\n", - "avidins\n", - "avidities\n", - "avidity\n", - "avidly\n", - "avidness\n", - "avidnesses\n", - "avifauna\n", - "avifaunae\n", - "avifaunas\n", - "avigator\n", - "avigators\n", - "avion\n", - "avionic\n", - "avionics\n", - "avions\n", - "aviso\n", - "avisos\n", - "avo\n", - "avocado\n", - "avocadoes\n", - "avocados\n", - "avocation\n", - "avocations\n", - "avocet\n", - "avocets\n", - "avodire\n", - "avodires\n", - "avoid\n", - "avoidable\n", - "avoidance\n", - "avoidances\n", - "avoided\n", - "avoider\n", - "avoiders\n", - "avoiding\n", - "avoids\n", - "avoidupois\n", - "avoidupoises\n", - "avos\n", - "avoset\n", - "avosets\n", - "avouch\n", - "avouched\n", - "avoucher\n", - "avouchers\n", - "avouches\n", - "avouching\n", - "avow\n", - "avowable\n", - "avowably\n", - "avowal\n", - "avowals\n", - "avowed\n", - "avowedly\n", - "avower\n", - "avowers\n", - "avowing\n", - "avows\n", - "avulse\n", - "avulsed\n", - "avulses\n", - "avulsing\n", - "avulsion\n", - "avulsions\n", - "aw\n", - "awa\n", - "await\n", - "awaited\n", - "awaiter\n", - "awaiters\n", - "awaiting\n", - "awaits\n", - "awake\n", - "awaked\n", - "awaken\n", - "awakened\n", - "awakener\n", - "awakeners\n", - "awakening\n", - "awakens\n", - "awakes\n", - "awaking\n", - "award\n", - "awarded\n", - "awardee\n", - "awardees\n", - "awarder\n", - "awarders\n", - "awarding\n", - "awards\n", - "aware\n", - "awash\n", - "away\n", - "awayness\n", - "awaynesses\n", - "awe\n", - "aweary\n", - "aweather\n", - "awed\n", - "awee\n", - "aweigh\n", - "aweing\n", - "aweless\n", - "awes\n", - "awesome\n", - "awesomely\n", - "awful\n", - "awfuller\n", - "awfullest\n", - "awfully\n", - "awhile\n", - "awhirl\n", - "awing\n", - "awkward\n", - "awkwarder\n", - "awkwardest\n", - "awkwardly\n", - "awkwardness\n", - "awkwardnesses\n", - "awl\n", - "awless\n", - "awls\n", - "awlwort\n", - "awlworts\n", - "awmous\n", - "awn\n", - "awned\n", - "awning\n", - "awninged\n", - "awnings\n", - "awnless\n", - "awns\n", - "awny\n", - "awoke\n", - "awoken\n", - "awol\n", - "awols\n", - "awry\n", - "axal\n", - "axe\n", - "axed\n", - "axel\n", - "axels\n", - "axeman\n", - "axemen\n", - "axenic\n", - "axes\n", - "axial\n", - "axialities\n", - "axiality\n", - "axially\n", - "axil\n", - "axile\n", - "axilla\n", - "axillae\n", - "axillar\n", - "axillaries\n", - "axillars\n", - "axillary\n", - "axillas\n", - "axils\n", - "axing\n", - "axiologies\n", - "axiology\n", - "axiom\n", - "axiomatic\n", - "axioms\n", - "axis\n", - "axised\n", - "axises\n", - "axite\n", - "axites\n", - "axle\n", - "axled\n", - "axles\n", - "axletree\n", - "axletrees\n", - "axlike\n", - "axman\n", - "axmen\n", - "axolotl\n", - "axolotls\n", - "axon\n", - "axonal\n", - "axone\n", - "axones\n", - "axonic\n", - "axons\n", - "axoplasm\n", - "axoplasms\n", - "axseed\n", - "axseeds\n", - "ay\n", - "ayah\n", - "ayahs\n", - "aye\n", - "ayes\n", - "ayin\n", - "ayins\n", - "ays\n", - "azalea\n", - "azaleas\n", - "azan\n", - "azans\n", - "azide\n", - "azides\n", - "azido\n", - "azimuth\n", - "azimuthal\n", - "azimuths\n", - "azine\n", - "azines\n", - "azo\n", - "azoic\n", - "azole\n", - "azoles\n", - "azon\n", - "azonal\n", - "azonic\n", - "azons\n", - "azote\n", - "azoted\n", - "azotemia\n", - "azotemias\n", - "azotemic\n", - "azotes\n", - "azoth\n", - "azoths\n", - "azotic\n", - "azotise\n", - "azotised\n", - "azotises\n", - "azotising\n", - "azotize\n", - "azotized\n", - "azotizes\n", - "azotizing\n", - "azoturia\n", - "azoturias\n", - "azure\n", - "azures\n", - "azurite\n", - "azurites\n", - "azygos\n", - "azygoses\n", - "azygous\n", - "ba\n", - "baa\n", - "baaed\n", - "baaing\n", - "baal\n", - "baalim\n", - "baalism\n", - "baalisms\n", - "baals\n", - "baas\n", - "baba\n", - "babas\n", - "babassu\n", - "babassus\n", - "babbitt\n", - "babbitted\n", - "babbitting\n", - "babbitts\n", - "babble\n", - "babbled\n", - "babbler\n", - "babblers\n", - "babbles\n", - "babbling\n", - "babblings\n", - "babbool\n", - "babbools\n", - "babe\n", - "babel\n", - "babels\n", - "babes\n", - "babesia\n", - "babesias\n", - "babiche\n", - "babiches\n", - "babied\n", - "babies\n", - "babirusa\n", - "babirusas\n", - "babka\n", - "babkas\n", - "baboo\n", - "babool\n", - "babools\n", - "baboon\n", - "baboons\n", - "baboos\n", - "babu\n", - "babul\n", - "babuls\n", - "babus\n", - "babushka\n", - "babushkas\n", - "baby\n", - "babyhood\n", - "babyhoods\n", - "babying\n", - "babyish\n", - "bacca\n", - "baccae\n", - "baccalaureate\n", - "baccalaureates\n", - "baccara\n", - "baccaras\n", - "baccarat\n", - "baccarats\n", - "baccate\n", - "baccated\n", - "bacchant\n", - "bacchantes\n", - "bacchants\n", - "bacchic\n", - "bacchii\n", - "bacchius\n", - "bach\n", - "bached\n", - "bachelor\n", - "bachelorhood\n", - "bachelorhoods\n", - "bachelors\n", - "baches\n", - "baching\n", - "bacillar\n", - "bacillary\n", - "bacilli\n", - "bacillus\n", - "back\n", - "backache\n", - "backaches\n", - "backarrow\n", - "backarrows\n", - "backbend\n", - "backbends\n", - "backbit\n", - "backbite\n", - "backbiter\n", - "backbiters\n", - "backbites\n", - "backbiting\n", - "backbitten\n", - "backbone\n", - "backbones\n", - "backdoor\n", - "backdrop\n", - "backdrops\n", - "backed\n", - "backer\n", - "backers\n", - "backfill\n", - "backfilled\n", - "backfilling\n", - "backfills\n", - "backfire\n", - "backfired\n", - "backfires\n", - "backfiring\n", - "backgammon\n", - "backgammons\n", - "background\n", - "backgrounds\n", - "backhand\n", - "backhanded\n", - "backhanding\n", - "backhands\n", - "backhoe\n", - "backhoes\n", - "backing\n", - "backings\n", - "backlash\n", - "backlashed\n", - "backlasher\n", - "backlashers\n", - "backlashes\n", - "backlashing\n", - "backless\n", - "backlist\n", - "backlists\n", - "backlit\n", - "backlog\n", - "backlogged\n", - "backlogging\n", - "backlogs\n", - "backmost\n", - "backout\n", - "backouts\n", - "backpack\n", - "backpacked\n", - "backpacker\n", - "backpacking\n", - "backpacks\n", - "backrest\n", - "backrests\n", - "backs\n", - "backsaw\n", - "backsaws\n", - "backseat\n", - "backseats\n", - "backset\n", - "backsets\n", - "backside\n", - "backsides\n", - "backslap\n", - "backslapped\n", - "backslapping\n", - "backslaps\n", - "backslash\n", - "backslashes\n", - "backslid\n", - "backslide\n", - "backslided\n", - "backslider\n", - "backsliders\n", - "backslides\n", - "backsliding\n", - "backspace\n", - "backspaced\n", - "backspaces\n", - "backspacing\n", - "backspin\n", - "backspins\n", - "backstay\n", - "backstays\n", - "backstop\n", - "backstopped\n", - "backstopping\n", - "backstops\n", - "backup\n", - "backups\n", - "backward\n", - "backwardness\n", - "backwardnesses\n", - "backwards\n", - "backwash\n", - "backwashed\n", - "backwashes\n", - "backwashing\n", - "backwood\n", - "backwoods\n", - "backyard\n", - "backyards\n", - "bacon\n", - "bacons\n", - "bacteria\n", - "bacterial\n", - "bacterin\n", - "bacterins\n", - "bacteriologic\n", - "bacteriological\n", - "bacteriologies\n", - "bacteriologist\n", - "bacteriologists\n", - "bacteriology\n", - "bacterium\n", - "baculine\n", - "bad\n", - "baddie\n", - "baddies\n", - "baddy\n", - "bade\n", - "badge\n", - "badged\n", - "badger\n", - "badgered\n", - "badgering\n", - "badgerly\n", - "badgers\n", - "badges\n", - "badging\n", - "badinage\n", - "badinaged\n", - "badinages\n", - "badinaging\n", - "badland\n", - "badlands\n", - "badly\n", - "badman\n", - "badmen\n", - "badminton\n", - "badmintons\n", - "badmouth\n", - "badmouthed\n", - "badmouthing\n", - "badmouths\n", - "badness\n", - "badnesses\n", - "bads\n", - "baff\n", - "baffed\n", - "baffies\n", - "baffing\n", - "baffle\n", - "baffled\n", - "baffler\n", - "bafflers\n", - "baffles\n", - "baffling\n", - "baffs\n", - "baffy\n", - "bag\n", - "bagass\n", - "bagasse\n", - "bagasses\n", - "bagatelle\n", - "bagatelles\n", - "bagel\n", - "bagels\n", - "bagful\n", - "bagfuls\n", - "baggage\n", - "baggages\n", - "bagged\n", - "baggie\n", - "baggier\n", - "baggies\n", - "baggiest\n", - "baggily\n", - "bagging\n", - "baggings\n", - "baggy\n", - "bagman\n", - "bagmen\n", - "bagnio\n", - "bagnios\n", - "bagpipe\n", - "bagpiper\n", - "bagpipers\n", - "bagpipes\n", - "bags\n", - "bagsful\n", - "baguet\n", - "baguets\n", - "baguette\n", - "baguettes\n", - "bagwig\n", - "bagwigs\n", - "bagworm\n", - "bagworms\n", - "bah\n", - "bahadur\n", - "bahadurs\n", - "baht\n", - "bahts\n", - "baidarka\n", - "baidarkas\n", - "bail\n", - "bailable\n", - "bailed\n", - "bailee\n", - "bailees\n", - "bailer\n", - "bailers\n", - "bailey\n", - "baileys\n", - "bailie\n", - "bailies\n", - "bailiff\n", - "bailiffs\n", - "bailing\n", - "bailiwick\n", - "bailiwicks\n", - "bailment\n", - "bailments\n", - "bailor\n", - "bailors\n", - "bailout\n", - "bailouts\n", - "bails\n", - "bailsman\n", - "bailsmen\n", - "bairn\n", - "bairnish\n", - "bairnlier\n", - "bairnliest\n", - "bairnly\n", - "bairns\n", - "bait\n", - "baited\n", - "baiter\n", - "baiters\n", - "baith\n", - "baiting\n", - "baits\n", - "baiza\n", - "baizas\n", - "baize\n", - "baizes\n", - "bake\n", - "baked\n", - "bakemeat\n", - "bakemeats\n", - "baker\n", - "bakeries\n", - "bakers\n", - "bakery\n", - "bakes\n", - "bakeshop\n", - "bakeshops\n", - "baking\n", - "bakings\n", - "baklava\n", - "baklavas\n", - "baklawa\n", - "baklawas\n", - "bakshish\n", - "bakshished\n", - "bakshishes\n", - "bakshishing\n", - "bal\n", - "balance\n", - "balanced\n", - "balancer\n", - "balancers\n", - "balances\n", - "balancing\n", - "balas\n", - "balases\n", - "balata\n", - "balatas\n", - "balboa\n", - "balboas\n", - "balconies\n", - "balcony\n", - "bald\n", - "balded\n", - "balder\n", - "balderdash\n", - "balderdashes\n", - "baldest\n", - "baldhead\n", - "baldheads\n", - "balding\n", - "baldish\n", - "baldly\n", - "baldness\n", - "baldnesses\n", - "baldpate\n", - "baldpates\n", - "baldric\n", - "baldrick\n", - "baldricks\n", - "baldrics\n", - "balds\n", - "bale\n", - "baled\n", - "baleen\n", - "baleens\n", - "balefire\n", - "balefires\n", - "baleful\n", - "baler\n", - "balers\n", - "bales\n", - "baling\n", - "balisaur\n", - "balisaurs\n", - "balk\n", - "balked\n", - "balker\n", - "balkers\n", - "balkier\n", - "balkiest\n", - "balkily\n", - "balking\n", - "balkline\n", - "balklines\n", - "balks\n", - "balky\n", - "ball\n", - "ballad\n", - "ballade\n", - "ballades\n", - "balladic\n", - "balladries\n", - "balladry\n", - "ballads\n", - "ballast\n", - "ballasted\n", - "ballasting\n", - "ballasts\n", - "balled\n", - "baller\n", - "ballerina\n", - "ballerinas\n", - "ballers\n", - "ballet\n", - "balletic\n", - "ballets\n", - "balling\n", - "ballista\n", - "ballistae\n", - "ballistic\n", - "ballistics\n", - "ballon\n", - "ballonet\n", - "ballonets\n", - "ballonne\n", - "ballonnes\n", - "ballons\n", - "balloon\n", - "ballooned\n", - "ballooning\n", - "balloonist\n", - "balloonists\n", - "balloons\n", - "ballot\n", - "balloted\n", - "balloter\n", - "balloters\n", - "balloting\n", - "ballots\n", - "ballroom\n", - "ballrooms\n", - "balls\n", - "bally\n", - "ballyhoo\n", - "ballyhooed\n", - "ballyhooing\n", - "ballyhoos\n", - "ballyrag\n", - "ballyragged\n", - "ballyragging\n", - "ballyrags\n", - "balm\n", - "balmier\n", - "balmiest\n", - "balmily\n", - "balminess\n", - "balminesses\n", - "balmlike\n", - "balmoral\n", - "balmorals\n", - "balms\n", - "balmy\n", - "balneal\n", - "baloney\n", - "baloneys\n", - "bals\n", - "balsa\n", - "balsam\n", - "balsamed\n", - "balsamic\n", - "balsaming\n", - "balsams\n", - "balsas\n", - "baltimore\n", - "baluster\n", - "balusters\n", - "balustrade\n", - "balustrades\n", - "bambini\n", - "bambino\n", - "bambinos\n", - "bamboo\n", - "bamboos\n", - "bamboozle\n", - "bamboozled\n", - "bamboozles\n", - "bamboozling\n", - "ban\n", - "banal\n", - "banalities\n", - "banality\n", - "banally\n", - "banana\n", - "bananas\n", - "banausic\n", - "banco\n", - "bancos\n", - "band\n", - "bandage\n", - "bandaged\n", - "bandager\n", - "bandagers\n", - "bandages\n", - "bandaging\n", - "bandana\n", - "bandanas\n", - "bandanna\n", - "bandannas\n", - "bandbox\n", - "bandboxes\n", - "bandeau\n", - "bandeaus\n", - "bandeaux\n", - "banded\n", - "bander\n", - "banderol\n", - "banderols\n", - "banders\n", - "bandied\n", - "bandies\n", - "banding\n", - "bandit\n", - "banditries\n", - "banditry\n", - "bandits\n", - "banditti\n", - "bandog\n", - "bandogs\n", - "bandora\n", - "bandoras\n", - "bandore\n", - "bandores\n", - "bands\n", - "bandsman\n", - "bandsmen\n", - "bandstand\n", - "bandstands\n", - "bandwagon\n", - "bandwagons\n", - "bandwidth\n", - "bandwidths\n", - "bandy\n", - "bandying\n", - "bane\n", - "baned\n", - "baneful\n", - "banes\n", - "bang\n", - "banged\n", - "banger\n", - "bangers\n", - "banging\n", - "bangkok\n", - "bangkoks\n", - "bangle\n", - "bangles\n", - "bangs\n", - "bangtail\n", - "bangtails\n", - "bani\n", - "banian\n", - "banians\n", - "baning\n", - "banish\n", - "banished\n", - "banisher\n", - "banishers\n", - "banishes\n", - "banishing\n", - "banishment\n", - "banishments\n", - "banister\n", - "banisters\n", - "banjo\n", - "banjoes\n", - "banjoist\n", - "banjoists\n", - "banjos\n", - "bank\n", - "bankable\n", - "bankbook\n", - "bankbooks\n", - "banked\n", - "banker\n", - "bankers\n", - "banking\n", - "bankings\n", - "banknote\n", - "banknotes\n", - "bankroll\n", - "bankrolled\n", - "bankrolling\n", - "bankrolls\n", - "bankrupt\n", - "bankruptcies\n", - "bankruptcy\n", - "bankrupted\n", - "bankrupting\n", - "bankrupts\n", - "banks\n", - "banksia\n", - "banksias\n", - "bankside\n", - "banksides\n", - "banned\n", - "banner\n", - "banneret\n", - "bannerets\n", - "bannerol\n", - "bannerols\n", - "banners\n", - "bannet\n", - "bannets\n", - "banning\n", - "bannock\n", - "bannocks\n", - "banns\n", - "banquet\n", - "banqueted\n", - "banqueting\n", - "banquets\n", - "bans\n", - "banshee\n", - "banshees\n", - "banshie\n", - "banshies\n", - "bantam\n", - "bantams\n", - "banter\n", - "bantered\n", - "banterer\n", - "banterers\n", - "bantering\n", - "banters\n", - "bantling\n", - "bantlings\n", - "banyan\n", - "banyans\n", - "banzai\n", - "banzais\n", - "baobab\n", - "baobabs\n", - "baptise\n", - "baptised\n", - "baptises\n", - "baptisia\n", - "baptisias\n", - "baptising\n", - "baptism\n", - "baptismal\n", - "baptisms\n", - "baptist\n", - "baptists\n", - "baptize\n", - "baptized\n", - "baptizer\n", - "baptizers\n", - "baptizes\n", - "baptizing\n", - "bar\n", - "barathea\n", - "baratheas\n", - "barb\n", - "barbal\n", - "barbarian\n", - "barbarians\n", - "barbaric\n", - "barbarity\n", - "barbarous\n", - "barbarously\n", - "barbasco\n", - "barbascos\n", - "barbate\n", - "barbe\n", - "barbecue\n", - "barbecued\n", - "barbecues\n", - "barbecuing\n", - "barbed\n", - "barbel\n", - "barbell\n", - "barbells\n", - "barbels\n", - "barber\n", - "barbered\n", - "barbering\n", - "barberries\n", - "barberry\n", - "barbers\n", - "barbes\n", - "barbet\n", - "barbets\n", - "barbette\n", - "barbettes\n", - "barbican\n", - "barbicans\n", - "barbicel\n", - "barbicels\n", - "barbing\n", - "barbital\n", - "barbitals\n", - "barbiturate\n", - "barbiturates\n", - "barbless\n", - "barbs\n", - "barbule\n", - "barbules\n", - "barbut\n", - "barbuts\n", - "barbwire\n", - "barbwires\n", - "bard\n", - "barde\n", - "barded\n", - "bardes\n", - "bardic\n", - "barding\n", - "bards\n", - "bare\n", - "bareback\n", - "barebacked\n", - "bared\n", - "barefaced\n", - "barefit\n", - "barefoot\n", - "barefooted\n", - "barege\n", - "bareges\n", - "barehead\n", - "bareheaded\n", - "barely\n", - "bareness\n", - "barenesses\n", - "barer\n", - "bares\n", - "baresark\n", - "baresarks\n", - "barest\n", - "barf\n", - "barfed\n", - "barfing\n", - "barflies\n", - "barfly\n", - "barfs\n", - "bargain\n", - "bargained\n", - "bargaining\n", - "bargains\n", - "barge\n", - "barged\n", - "bargee\n", - "bargees\n", - "bargeman\n", - "bargemen\n", - "barges\n", - "barghest\n", - "barghests\n", - "barging\n", - "barguest\n", - "barguests\n", - "barhop\n", - "barhopped\n", - "barhopping\n", - "barhops\n", - "baric\n", - "barilla\n", - "barillas\n", - "baring\n", - "barite\n", - "barites\n", - "baritone\n", - "baritones\n", - "barium\n", - "bariums\n", - "bark\n", - "barked\n", - "barkeep\n", - "barkeeps\n", - "barker\n", - "barkers\n", - "barkier\n", - "barkiest\n", - "barking\n", - "barkless\n", - "barks\n", - "barky\n", - "barleduc\n", - "barleducs\n", - "barless\n", - "barley\n", - "barleys\n", - "barlow\n", - "barlows\n", - "barm\n", - "barmaid\n", - "barmaids\n", - "barman\n", - "barmen\n", - "barmie\n", - "barmier\n", - "barmiest\n", - "barms\n", - "barmy\n", - "barn\n", - "barnacle\n", - "barnacles\n", - "barnier\n", - "barniest\n", - "barns\n", - "barnstorm\n", - "barnstorms\n", - "barny\n", - "barnyard\n", - "barnyards\n", - "barogram\n", - "barograms\n", - "barometer\n", - "barometers\n", - "barometric\n", - "barometrical\n", - "baron\n", - "baronage\n", - "baronages\n", - "baroness\n", - "baronesses\n", - "baronet\n", - "baronetcies\n", - "baronetcy\n", - "baronets\n", - "barong\n", - "barongs\n", - "baronial\n", - "baronies\n", - "baronne\n", - "baronnes\n", - "barons\n", - "barony\n", - "baroque\n", - "baroques\n", - "barouche\n", - "barouches\n", - "barque\n", - "barques\n", - "barrable\n", - "barrack\n", - "barracked\n", - "barracking\n", - "barracks\n", - "barracuda\n", - "barracudas\n", - "barrage\n", - "barraged\n", - "barrages\n", - "barraging\n", - "barranca\n", - "barrancas\n", - "barranco\n", - "barrancos\n", - "barrater\n", - "barraters\n", - "barrator\n", - "barrators\n", - "barratries\n", - "barratry\n", - "barre\n", - "barred\n", - "barrel\n", - "barreled\n", - "barreling\n", - "barrelled\n", - "barrelling\n", - "barrels\n", - "barren\n", - "barrener\n", - "barrenest\n", - "barrenly\n", - "barrenness\n", - "barrennesses\n", - "barrens\n", - "barres\n", - "barret\n", - "barretor\n", - "barretors\n", - "barretries\n", - "barretry\n", - "barrets\n", - "barrette\n", - "barrettes\n", - "barricade\n", - "barricades\n", - "barrier\n", - "barriers\n", - "barring\n", - "barrio\n", - "barrios\n", - "barrister\n", - "barristers\n", - "barroom\n", - "barrooms\n", - "barrow\n", - "barrows\n", - "bars\n", - "barstool\n", - "barstools\n", - "bartend\n", - "bartended\n", - "bartender\n", - "bartenders\n", - "bartending\n", - "bartends\n", - "barter\n", - "bartered\n", - "barterer\n", - "barterers\n", - "bartering\n", - "barters\n", - "bartholomew\n", - "bartisan\n", - "bartisans\n", - "bartizan\n", - "bartizans\n", - "barware\n", - "barwares\n", - "barye\n", - "baryes\n", - "baryon\n", - "baryonic\n", - "baryons\n", - "baryta\n", - "barytas\n", - "baryte\n", - "barytes\n", - "barytic\n", - "barytone\n", - "barytones\n", - "bas\n", - "basal\n", - "basally\n", - "basalt\n", - "basaltes\n", - "basaltic\n", - "basalts\n", - "bascule\n", - "bascules\n", - "base\n", - "baseball\n", - "baseballs\n", - "baseborn\n", - "based\n", - "baseless\n", - "baseline\n", - "baselines\n", - "basely\n", - "baseman\n", - "basemen\n", - "basement\n", - "basements\n", - "baseness\n", - "basenesses\n", - "basenji\n", - "basenjis\n", - "baser\n", - "bases\n", - "basest\n", - "bash\n", - "bashaw\n", - "bashaws\n", - "bashed\n", - "basher\n", - "bashers\n", - "bashes\n", - "bashful\n", - "bashfulness\n", - "bashfulnesses\n", - "bashing\n", - "bashlyk\n", - "bashlyks\n", - "basic\n", - "basically\n", - "basicities\n", - "basicity\n", - "basics\n", - "basidia\n", - "basidial\n", - "basidium\n", - "basified\n", - "basifier\n", - "basifiers\n", - "basifies\n", - "basify\n", - "basifying\n", - "basil\n", - "basilar\n", - "basilary\n", - "basilic\n", - "basilica\n", - "basilicae\n", - "basilicas\n", - "basilisk\n", - "basilisks\n", - "basils\n", - "basin\n", - "basinal\n", - "basined\n", - "basinet\n", - "basinets\n", - "basing\n", - "basins\n", - "basion\n", - "basions\n", - "basis\n", - "bask\n", - "basked\n", - "basket\n", - "basketball\n", - "basketballs\n", - "basketful\n", - "basketfuls\n", - "basketries\n", - "basketry\n", - "baskets\n", - "basking\n", - "basks\n", - "basophil\n", - "basophils\n", - "basque\n", - "basques\n", - "bass\n", - "basses\n", - "basset\n", - "basseted\n", - "basseting\n", - "bassets\n", - "bassetted\n", - "bassetting\n", - "bassi\n", - "bassinet\n", - "bassinets\n", - "bassist\n", - "bassists\n", - "bassly\n", - "bassness\n", - "bassnesses\n", - "basso\n", - "bassoon\n", - "bassoons\n", - "bassos\n", - "basswood\n", - "basswoods\n", - "bassy\n", - "bast\n", - "bastard\n", - "bastardies\n", - "bastardize\n", - "bastardized\n", - "bastardizes\n", - "bastardizing\n", - "bastards\n", - "bastardy\n", - "baste\n", - "basted\n", - "baster\n", - "basters\n", - "bastes\n", - "bastile\n", - "bastiles\n", - "bastille\n", - "bastilles\n", - "basting\n", - "bastings\n", - "bastion\n", - "bastioned\n", - "bastions\n", - "basts\n", - "bat\n", - "batboy\n", - "batboys\n", - "batch\n", - "batched\n", - "batcher\n", - "batchers\n", - "batches\n", - "batching\n", - "bate\n", - "bateau\n", - "bateaux\n", - "bated\n", - "bates\n", - "batfish\n", - "batfishes\n", - "batfowl\n", - "batfowled\n", - "batfowling\n", - "batfowls\n", - "bath\n", - "bathe\n", - "bathed\n", - "bather\n", - "bathers\n", - "bathes\n", - "bathetic\n", - "bathing\n", - "bathless\n", - "bathos\n", - "bathoses\n", - "bathrobe\n", - "bathrobes\n", - "bathroom\n", - "bathrooms\n", - "baths\n", - "bathtub\n", - "bathtubs\n", - "bathyal\n", - "batik\n", - "batiks\n", - "bating\n", - "batiste\n", - "batistes\n", - "batlike\n", - "batman\n", - "batmen\n", - "baton\n", - "batons\n", - "bats\n", - "batsman\n", - "batsmen\n", - "batt\n", - "battalia\n", - "battalias\n", - "battalion\n", - "battalions\n", - "batteau\n", - "batteaux\n", - "batted\n", - "batten\n", - "battened\n", - "battener\n", - "batteners\n", - "battening\n", - "battens\n", - "batter\n", - "battered\n", - "batterie\n", - "batteries\n", - "battering\n", - "batters\n", - "battery\n", - "battier\n", - "battiest\n", - "battik\n", - "battiks\n", - "batting\n", - "battings\n", - "battle\n", - "battled\n", - "battlefield\n", - "battlefields\n", - "battlement\n", - "battlements\n", - "battler\n", - "battlers\n", - "battles\n", - "battleship\n", - "battleships\n", - "battling\n", - "batts\n", - "battu\n", - "battue\n", - "battues\n", - "batty\n", - "batwing\n", - "baubee\n", - "baubees\n", - "bauble\n", - "baubles\n", - "baud\n", - "baudekin\n", - "baudekins\n", - "baudrons\n", - "baudronses\n", - "bauds\n", - "baulk\n", - "baulked\n", - "baulkier\n", - "baulkiest\n", - "baulking\n", - "baulks\n", - "baulky\n", - "bausond\n", - "bauxite\n", - "bauxites\n", - "bauxitic\n", - "bawbee\n", - "bawbees\n", - "bawcock\n", - "bawcocks\n", - "bawd\n", - "bawdier\n", - "bawdies\n", - "bawdiest\n", - "bawdily\n", - "bawdiness\n", - "bawdinesses\n", - "bawdric\n", - "bawdrics\n", - "bawdries\n", - "bawdry\n", - "bawds\n", - "bawdy\n", - "bawl\n", - "bawled\n", - "bawler\n", - "bawlers\n", - "bawling\n", - "bawls\n", - "bawsunt\n", - "bawtie\n", - "bawties\n", - "bawty\n", - "bay\n", - "bayadeer\n", - "bayadeers\n", - "bayadere\n", - "bayaderes\n", - "bayamo\n", - "bayamos\n", - "bayard\n", - "bayards\n", - "bayberries\n", - "bayberry\n", - "bayed\n", - "baying\n", - "bayonet\n", - "bayoneted\n", - "bayoneting\n", - "bayonets\n", - "bayonetted\n", - "bayonetting\n", - "bayou\n", - "bayous\n", - "bays\n", - "baywood\n", - "baywoods\n", - "bazaar\n", - "bazaars\n", - "bazar\n", - "bazars\n", - "bazooka\n", - "bazookas\n", - "bdellium\n", - "bdelliums\n", - "be\n", - "beach\n", - "beachboy\n", - "beachboys\n", - "beachcomber\n", - "beachcombers\n", - "beached\n", - "beaches\n", - "beachhead\n", - "beachheads\n", - "beachier\n", - "beachiest\n", - "beaching\n", - "beachy\n", - "beacon\n", - "beaconed\n", - "beaconing\n", - "beacons\n", - "bead\n", - "beaded\n", - "beadier\n", - "beadiest\n", - "beadily\n", - "beading\n", - "beadings\n", - "beadle\n", - "beadles\n", - "beadlike\n", - "beadman\n", - "beadmen\n", - "beadroll\n", - "beadrolls\n", - "beads\n", - "beadsman\n", - "beadsmen\n", - "beadwork\n", - "beadworks\n", - "beady\n", - "beagle\n", - "beagles\n", - "beak\n", - "beaked\n", - "beaker\n", - "beakers\n", - "beakier\n", - "beakiest\n", - "beakless\n", - "beaklike\n", - "beaks\n", - "beaky\n", - "beam\n", - "beamed\n", - "beamier\n", - "beamiest\n", - "beamily\n", - "beaming\n", - "beamish\n", - "beamless\n", - "beamlike\n", - "beams\n", - "beamy\n", - "bean\n", - "beanbag\n", - "beanbags\n", - "beanball\n", - "beanballs\n", - "beaned\n", - "beaneries\n", - "beanery\n", - "beanie\n", - "beanies\n", - "beaning\n", - "beanlike\n", - "beano\n", - "beanos\n", - "beanpole\n", - "beanpoles\n", - "beans\n", - "bear\n", - "bearable\n", - "bearably\n", - "bearcat\n", - "bearcats\n", - "beard\n", - "bearded\n", - "bearding\n", - "beardless\n", - "beards\n", - "bearer\n", - "bearers\n", - "bearing\n", - "bearings\n", - "bearish\n", - "bearlike\n", - "bears\n", - "bearskin\n", - "bearskins\n", - "beast\n", - "beastie\n", - "beasties\n", - "beastlier\n", - "beastliest\n", - "beastliness\n", - "beastlinesses\n", - "beastly\n", - "beasts\n", - "beat\n", - "beatable\n", - "beaten\n", - "beater\n", - "beaters\n", - "beatific\n", - "beatification\n", - "beatifications\n", - "beatified\n", - "beatifies\n", - "beatify\n", - "beatifying\n", - "beating\n", - "beatings\n", - "beatless\n", - "beatnik\n", - "beatniks\n", - "beats\n", - "beau\n", - "beauish\n", - "beaus\n", - "beaut\n", - "beauteously\n", - "beauties\n", - "beautification\n", - "beautifications\n", - "beautified\n", - "beautifies\n", - "beautiful\n", - "beautifully\n", - "beautify\n", - "beautifying\n", - "beauts\n", - "beauty\n", - "beaux\n", - "beaver\n", - "beavered\n", - "beavering\n", - "beavers\n", - "bebeeru\n", - "bebeerus\n", - "beblood\n", - "beblooded\n", - "beblooding\n", - "bebloods\n", - "bebop\n", - "bebopper\n", - "beboppers\n", - "bebops\n", - "becalm\n", - "becalmed\n", - "becalming\n", - "becalms\n", - "became\n", - "becap\n", - "becapped\n", - "becapping\n", - "becaps\n", - "becarpet\n", - "becarpeted\n", - "becarpeting\n", - "becarpets\n", - "because\n", - "bechalk\n", - "bechalked\n", - "bechalking\n", - "bechalks\n", - "bechamel\n", - "bechamels\n", - "bechance\n", - "bechanced\n", - "bechances\n", - "bechancing\n", - "becharm\n", - "becharmed\n", - "becharming\n", - "becharms\n", - "beck\n", - "becked\n", - "becket\n", - "beckets\n", - "becking\n", - "beckon\n", - "beckoned\n", - "beckoner\n", - "beckoners\n", - "beckoning\n", - "beckons\n", - "becks\n", - "beclamor\n", - "beclamored\n", - "beclamoring\n", - "beclamors\n", - "beclasp\n", - "beclasped\n", - "beclasping\n", - "beclasps\n", - "becloak\n", - "becloaked\n", - "becloaking\n", - "becloaks\n", - "beclog\n", - "beclogged\n", - "beclogging\n", - "beclogs\n", - "beclothe\n", - "beclothed\n", - "beclothes\n", - "beclothing\n", - "becloud\n", - "beclouded\n", - "beclouding\n", - "beclouds\n", - "beclown\n", - "beclowned\n", - "beclowning\n", - "beclowns\n", - "become\n", - "becomes\n", - "becoming\n", - "becomingly\n", - "becomings\n", - "becoward\n", - "becowarded\n", - "becowarding\n", - "becowards\n", - "becrawl\n", - "becrawled\n", - "becrawling\n", - "becrawls\n", - "becrime\n", - "becrimed\n", - "becrimes\n", - "becriming\n", - "becrowd\n", - "becrowded\n", - "becrowding\n", - "becrowds\n", - "becrust\n", - "becrusted\n", - "becrusting\n", - "becrusts\n", - "becudgel\n", - "becudgeled\n", - "becudgeling\n", - "becudgelled\n", - "becudgelling\n", - "becudgels\n", - "becurse\n", - "becursed\n", - "becurses\n", - "becursing\n", - "becurst\n", - "bed\n", - "bedabble\n", - "bedabbled\n", - "bedabbles\n", - "bedabbling\n", - "bedamn\n", - "bedamned\n", - "bedamning\n", - "bedamns\n", - "bedarken\n", - "bedarkened\n", - "bedarkening\n", - "bedarkens\n", - "bedaub\n", - "bedaubed\n", - "bedaubing\n", - "bedaubs\n", - "bedazzle\n", - "bedazzled\n", - "bedazzles\n", - "bedazzling\n", - "bedbug\n", - "bedbugs\n", - "bedchair\n", - "bedchairs\n", - "bedclothes\n", - "bedcover\n", - "bedcovers\n", - "bedded\n", - "bedder\n", - "bedders\n", - "bedding\n", - "beddings\n", - "bedeafen\n", - "bedeafened\n", - "bedeafening\n", - "bedeafens\n", - "bedeck\n", - "bedecked\n", - "bedecking\n", - "bedecks\n", - "bedel\n", - "bedell\n", - "bedells\n", - "bedels\n", - "bedeman\n", - "bedemen\n", - "bedesman\n", - "bedesmen\n", - "bedevil\n", - "bedeviled\n", - "bedeviling\n", - "bedevilled\n", - "bedevilling\n", - "bedevils\n", - "bedew\n", - "bedewed\n", - "bedewing\n", - "bedews\n", - "bedfast\n", - "bedframe\n", - "bedframes\n", - "bedgown\n", - "bedgowns\n", - "bediaper\n", - "bediapered\n", - "bediapering\n", - "bediapers\n", - "bedight\n", - "bedighted\n", - "bedighting\n", - "bedights\n", - "bedim\n", - "bedimmed\n", - "bedimming\n", - "bedimple\n", - "bedimpled\n", - "bedimples\n", - "bedimpling\n", - "bedims\n", - "bedirtied\n", - "bedirties\n", - "bedirty\n", - "bedirtying\n", - "bedizen\n", - "bedizened\n", - "bedizening\n", - "bedizens\n", - "bedlam\n", - "bedlamp\n", - "bedlamps\n", - "bedlams\n", - "bedless\n", - "bedlike\n", - "bedmaker\n", - "bedmakers\n", - "bedmate\n", - "bedmates\n", - "bedotted\n", - "bedouin\n", - "bedouins\n", - "bedpan\n", - "bedpans\n", - "bedplate\n", - "bedplates\n", - "bedpost\n", - "bedposts\n", - "bedquilt\n", - "bedquilts\n", - "bedraggled\n", - "bedrail\n", - "bedrails\n", - "bedrape\n", - "bedraped\n", - "bedrapes\n", - "bedraping\n", - "bedrench\n", - "bedrenched\n", - "bedrenches\n", - "bedrenching\n", - "bedrid\n", - "bedridden\n", - "bedrivel\n", - "bedriveled\n", - "bedriveling\n", - "bedrivelled\n", - "bedrivelling\n", - "bedrivels\n", - "bedrock\n", - "bedrocks\n", - "bedroll\n", - "bedrolls\n", - "bedroom\n", - "bedrooms\n", - "bedrug\n", - "bedrugged\n", - "bedrugging\n", - "bedrugs\n", - "beds\n", - "bedside\n", - "bedsides\n", - "bedsonia\n", - "bedsonias\n", - "bedsore\n", - "bedsores\n", - "bedspread\n", - "bedspreads\n", - "bedstand\n", - "bedstands\n", - "bedstead\n", - "bedsteads\n", - "bedstraw\n", - "bedstraws\n", - "bedtick\n", - "bedticks\n", - "bedtime\n", - "bedtimes\n", - "beduin\n", - "beduins\n", - "bedumb\n", - "bedumbed\n", - "bedumbing\n", - "bedumbs\n", - "bedunce\n", - "bedunced\n", - "bedunces\n", - "beduncing\n", - "bedward\n", - "bedwards\n", - "bedwarf\n", - "bedwarfed\n", - "bedwarfing\n", - "bedwarfs\n", - "bee\n", - "beebee\n", - "beebees\n", - "beebread\n", - "beebreads\n", - "beech\n", - "beechen\n", - "beeches\n", - "beechier\n", - "beechiest\n", - "beechnut\n", - "beechnuts\n", - "beechy\n", - "beef\n", - "beefcake\n", - "beefcakes\n", - "beefed\n", - "beefier\n", - "beefiest\n", - "beefily\n", - "beefing\n", - "beefless\n", - "beefs\n", - "beefsteak\n", - "beefsteaks\n", - "beefwood\n", - "beefwoods\n", - "beefy\n", - "beehive\n", - "beehives\n", - "beelike\n", - "beeline\n", - "beelines\n", - "beelzebub\n", - "been\n", - "beep\n", - "beeped\n", - "beeper\n", - "beepers\n", - "beeping\n", - "beeps\n", - "beer\n", - "beerier\n", - "beeriest\n", - "beers\n", - "beery\n", - "bees\n", - "beeswax\n", - "beeswaxes\n", - "beeswing\n", - "beeswings\n", - "beet\n", - "beetle\n", - "beetled\n", - "beetles\n", - "beetling\n", - "beetroot\n", - "beetroots\n", - "beets\n", - "beeves\n", - "befall\n", - "befallen\n", - "befalling\n", - "befalls\n", - "befell\n", - "befinger\n", - "befingered\n", - "befingering\n", - "befingers\n", - "befit\n", - "befits\n", - "befitted\n", - "befitting\n", - "beflag\n", - "beflagged\n", - "beflagging\n", - "beflags\n", - "beflea\n", - "befleaed\n", - "befleaing\n", - "befleas\n", - "befleck\n", - "beflecked\n", - "beflecking\n", - "beflecks\n", - "beflower\n", - "beflowered\n", - "beflowering\n", - "beflowers\n", - "befog\n", - "befogged\n", - "befogging\n", - "befogs\n", - "befool\n", - "befooled\n", - "befooling\n", - "befools\n", - "before\n", - "beforehand\n", - "befoul\n", - "befouled\n", - "befouler\n", - "befoulers\n", - "befouling\n", - "befouls\n", - "befret\n", - "befrets\n", - "befretted\n", - "befretting\n", - "befriend\n", - "befriended\n", - "befriending\n", - "befriends\n", - "befringe\n", - "befringed\n", - "befringes\n", - "befringing\n", - "befuddle\n", - "befuddled\n", - "befuddles\n", - "befuddling\n", - "beg\n", - "begall\n", - "begalled\n", - "begalling\n", - "begalls\n", - "began\n", - "begat\n", - "begaze\n", - "begazed\n", - "begazes\n", - "begazing\n", - "beget\n", - "begets\n", - "begetter\n", - "begetters\n", - "begetting\n", - "beggar\n", - "beggared\n", - "beggaries\n", - "beggaring\n", - "beggarly\n", - "beggars\n", - "beggary\n", - "begged\n", - "begging\n", - "begin\n", - "beginner\n", - "beginners\n", - "beginning\n", - "beginnings\n", - "begins\n", - "begird\n", - "begirded\n", - "begirding\n", - "begirdle\n", - "begirdled\n", - "begirdles\n", - "begirdling\n", - "begirds\n", - "begirt\n", - "beglad\n", - "begladded\n", - "begladding\n", - "beglads\n", - "begloom\n", - "begloomed\n", - "beglooming\n", - "beglooms\n", - "begone\n", - "begonia\n", - "begonias\n", - "begorah\n", - "begorra\n", - "begorrah\n", - "begot\n", - "begotten\n", - "begrim\n", - "begrime\n", - "begrimed\n", - "begrimes\n", - "begriming\n", - "begrimmed\n", - "begrimming\n", - "begrims\n", - "begroan\n", - "begroaned\n", - "begroaning\n", - "begroans\n", - "begrudge\n", - "begrudged\n", - "begrudges\n", - "begrudging\n", - "begs\n", - "beguile\n", - "beguiled\n", - "beguiler\n", - "beguilers\n", - "beguiles\n", - "beguiling\n", - "beguine\n", - "beguines\n", - "begulf\n", - "begulfed\n", - "begulfing\n", - "begulfs\n", - "begum\n", - "begums\n", - "begun\n", - "behalf\n", - "behalves\n", - "behave\n", - "behaved\n", - "behaver\n", - "behavers\n", - "behaves\n", - "behaving\n", - "behavior\n", - "behavioral\n", - "behaviors\n", - "behead\n", - "beheaded\n", - "beheading\n", - "beheads\n", - "beheld\n", - "behemoth\n", - "behemoths\n", - "behest\n", - "behests\n", - "behind\n", - "behinds\n", - "behold\n", - "beholden\n", - "beholder\n", - "beholders\n", - "beholding\n", - "beholds\n", - "behoof\n", - "behoove\n", - "behooved\n", - "behooves\n", - "behooving\n", - "behove\n", - "behoved\n", - "behoves\n", - "behoving\n", - "behowl\n", - "behowled\n", - "behowling\n", - "behowls\n", - "beige\n", - "beiges\n", - "beigy\n", - "being\n", - "beings\n", - "bejewel\n", - "bejeweled\n", - "bejeweling\n", - "bejewelled\n", - "bejewelling\n", - "bejewels\n", - "bejumble\n", - "bejumbled\n", - "bejumbles\n", - "bejumbling\n", - "bekiss\n", - "bekissed\n", - "bekisses\n", - "bekissing\n", - "beknight\n", - "beknighted\n", - "beknighting\n", - "beknights\n", - "beknot\n", - "beknots\n", - "beknotted\n", - "beknotting\n", - "bel\n", - "belabor\n", - "belabored\n", - "belaboring\n", - "belabors\n", - "belabour\n", - "belaboured\n", - "belabouring\n", - "belabours\n", - "belaced\n", - "beladied\n", - "beladies\n", - "belady\n", - "beladying\n", - "belated\n", - "belaud\n", - "belauded\n", - "belauding\n", - "belauds\n", - "belay\n", - "belayed\n", - "belaying\n", - "belays\n", - "belch\n", - "belched\n", - "belcher\n", - "belchers\n", - "belches\n", - "belching\n", - "beldam\n", - "beldame\n", - "beldames\n", - "beldams\n", - "beleaguer\n", - "beleaguered\n", - "beleaguering\n", - "beleaguers\n", - "beleap\n", - "beleaped\n", - "beleaping\n", - "beleaps\n", - "beleapt\n", - "belfried\n", - "belfries\n", - "belfry\n", - "belga\n", - "belgas\n", - "belie\n", - "belied\n", - "belief\n", - "beliefs\n", - "belier\n", - "beliers\n", - "belies\n", - "believable\n", - "believably\n", - "believe\n", - "believed\n", - "believer\n", - "believers\n", - "believes\n", - "believing\n", - "belike\n", - "beliquor\n", - "beliquored\n", - "beliquoring\n", - "beliquors\n", - "belittle\n", - "belittled\n", - "belittles\n", - "belittling\n", - "belive\n", - "bell\n", - "belladonna\n", - "belladonnas\n", - "bellbird\n", - "bellbirds\n", - "bellboy\n", - "bellboys\n", - "belle\n", - "belled\n", - "belleek\n", - "belleeks\n", - "belles\n", - "bellhop\n", - "bellhops\n", - "bellicose\n", - "bellicosities\n", - "bellicosity\n", - "bellied\n", - "bellies\n", - "belligerence\n", - "belligerences\n", - "belligerencies\n", - "belligerency\n", - "belligerent\n", - "belligerents\n", - "belling\n", - "bellman\n", - "bellmen\n", - "bellow\n", - "bellowed\n", - "bellower\n", - "bellowers\n", - "bellowing\n", - "bellows\n", - "bellpull\n", - "bellpulls\n", - "bells\n", - "bellwether\n", - "bellwethers\n", - "bellwort\n", - "bellworts\n", - "belly\n", - "bellyache\n", - "bellyached\n", - "bellyaches\n", - "bellyaching\n", - "bellyful\n", - "bellyfuls\n", - "bellying\n", - "belong\n", - "belonged\n", - "belonging\n", - "belongings\n", - "belongs\n", - "beloved\n", - "beloveds\n", - "below\n", - "belows\n", - "bels\n", - "belt\n", - "belted\n", - "belting\n", - "beltings\n", - "beltless\n", - "beltline\n", - "beltlines\n", - "belts\n", - "beltway\n", - "beltways\n", - "beluga\n", - "belugas\n", - "belying\n", - "bema\n", - "bemadam\n", - "bemadamed\n", - "bemadaming\n", - "bemadams\n", - "bemadden\n", - "bemaddened\n", - "bemaddening\n", - "bemaddens\n", - "bemas\n", - "bemata\n", - "bemean\n", - "bemeaned\n", - "bemeaning\n", - "bemeans\n", - "bemingle\n", - "bemingled\n", - "bemingles\n", - "bemingling\n", - "bemire\n", - "bemired\n", - "bemires\n", - "bemiring\n", - "bemist\n", - "bemisted\n", - "bemisting\n", - "bemists\n", - "bemix\n", - "bemixed\n", - "bemixes\n", - "bemixing\n", - "bemixt\n", - "bemoan\n", - "bemoaned\n", - "bemoaning\n", - "bemoans\n", - "bemock\n", - "bemocked\n", - "bemocking\n", - "bemocks\n", - "bemuddle\n", - "bemuddled\n", - "bemuddles\n", - "bemuddling\n", - "bemurmur\n", - "bemurmured\n", - "bemurmuring\n", - "bemurmurs\n", - "bemuse\n", - "bemused\n", - "bemuses\n", - "bemusing\n", - "bemuzzle\n", - "bemuzzled\n", - "bemuzzles\n", - "bemuzzling\n", - "ben\n", - "bename\n", - "benamed\n", - "benames\n", - "benaming\n", - "bench\n", - "benched\n", - "bencher\n", - "benchers\n", - "benches\n", - "benching\n", - "bend\n", - "bendable\n", - "benday\n", - "bendayed\n", - "bendaying\n", - "bendays\n", - "bended\n", - "bendee\n", - "bendees\n", - "bender\n", - "benders\n", - "bending\n", - "bends\n", - "bendways\n", - "bendwise\n", - "bendy\n", - "bendys\n", - "bene\n", - "beneath\n", - "benedick\n", - "benedicks\n", - "benedict\n", - "benediction\n", - "benedictions\n", - "benedicts\n", - "benefaction\n", - "benefactions\n", - "benefactor\n", - "benefactors\n", - "benefactress\n", - "benefactresses\n", - "benefic\n", - "benefice\n", - "beneficed\n", - "beneficence\n", - "beneficences\n", - "beneficent\n", - "benefices\n", - "beneficial\n", - "beneficially\n", - "beneficiaries\n", - "beneficiary\n", - "beneficing\n", - "benefit\n", - "benefited\n", - "benefiting\n", - "benefits\n", - "benefitted\n", - "benefitting\n", - "benempt\n", - "benempted\n", - "benes\n", - "benevolence\n", - "benevolences\n", - "benevolent\n", - "benign\n", - "benignities\n", - "benignity\n", - "benignly\n", - "benison\n", - "benisons\n", - "benjamin\n", - "benjamins\n", - "benne\n", - "bennes\n", - "bennet\n", - "bennets\n", - "benni\n", - "bennies\n", - "bennis\n", - "benny\n", - "bens\n", - "bent\n", - "benthal\n", - "benthic\n", - "benthos\n", - "benthoses\n", - "bents\n", - "bentwood\n", - "bentwoods\n", - "benumb\n", - "benumbed\n", - "benumbing\n", - "benumbs\n", - "benzal\n", - "benzene\n", - "benzenes\n", - "benzidin\n", - "benzidins\n", - "benzin\n", - "benzine\n", - "benzines\n", - "benzins\n", - "benzoate\n", - "benzoates\n", - "benzoic\n", - "benzoin\n", - "benzoins\n", - "benzol\n", - "benzole\n", - "benzoles\n", - "benzols\n", - "benzoyl\n", - "benzoyls\n", - "benzyl\n", - "benzylic\n", - "benzyls\n", - "bepaint\n", - "bepainted\n", - "bepainting\n", - "bepaints\n", - "bepimple\n", - "bepimpled\n", - "bepimples\n", - "bepimpling\n", - "bequeath\n", - "bequeathed\n", - "bequeathing\n", - "bequeaths\n", - "bequest\n", - "bequests\n", - "berake\n", - "beraked\n", - "berakes\n", - "beraking\n", - "berascal\n", - "berascaled\n", - "berascaling\n", - "berascals\n", - "berate\n", - "berated\n", - "berates\n", - "berating\n", - "berberin\n", - "berberins\n", - "berceuse\n", - "berceuses\n", - "bereave\n", - "bereaved\n", - "bereavement\n", - "bereavements\n", - "bereaver\n", - "bereavers\n", - "bereaves\n", - "bereaving\n", - "bereft\n", - "beret\n", - "berets\n", - "beretta\n", - "berettas\n", - "berg\n", - "bergamot\n", - "bergamots\n", - "bergs\n", - "berhyme\n", - "berhymed\n", - "berhymes\n", - "berhyming\n", - "beriber\n", - "beribers\n", - "berime\n", - "berimed\n", - "berimes\n", - "beriming\n", - "beringed\n", - "berlin\n", - "berline\n", - "berlines\n", - "berlins\n", - "berm\n", - "berme\n", - "bermes\n", - "berms\n", - "bernicle\n", - "bernicles\n", - "bernstein\n", - "berobed\n", - "berouged\n", - "berretta\n", - "berrettas\n", - "berried\n", - "berries\n", - "berry\n", - "berrying\n", - "berseem\n", - "berseems\n", - "berserk\n", - "berserks\n", - "berth\n", - "bertha\n", - "berthas\n", - "berthed\n", - "berthing\n", - "berths\n", - "beryl\n", - "beryline\n", - "beryls\n", - "bescorch\n", - "bescorched\n", - "bescorches\n", - "bescorching\n", - "bescour\n", - "bescoured\n", - "bescouring\n", - "bescours\n", - "bescreen\n", - "bescreened\n", - "bescreening\n", - "bescreens\n", - "beseech\n", - "beseeched\n", - "beseeches\n", - "beseeching\n", - "beseem\n", - "beseemed\n", - "beseeming\n", - "beseems\n", - "beset\n", - "besets\n", - "besetter\n", - "besetters\n", - "besetting\n", - "beshadow\n", - "beshadowed\n", - "beshadowing\n", - "beshadows\n", - "beshame\n", - "beshamed\n", - "beshames\n", - "beshaming\n", - "beshiver\n", - "beshivered\n", - "beshivering\n", - "beshivers\n", - "beshout\n", - "beshouted\n", - "beshouting\n", - "beshouts\n", - "beshrew\n", - "beshrewed\n", - "beshrewing\n", - "beshrews\n", - "beshroud\n", - "beshrouded\n", - "beshrouding\n", - "beshrouds\n", - "beside\n", - "besides\n", - "besiege\n", - "besieged\n", - "besieger\n", - "besiegers\n", - "besieges\n", - "besieging\n", - "beslaved\n", - "beslime\n", - "beslimed\n", - "beslimes\n", - "besliming\n", - "besmear\n", - "besmeared\n", - "besmearing\n", - "besmears\n", - "besmile\n", - "besmiled\n", - "besmiles\n", - "besmiling\n", - "besmirch\n", - "besmirched\n", - "besmirches\n", - "besmirching\n", - "besmoke\n", - "besmoked\n", - "besmokes\n", - "besmoking\n", - "besmooth\n", - "besmoothed\n", - "besmoothing\n", - "besmooths\n", - "besmudge\n", - "besmudged\n", - "besmudges\n", - "besmudging\n", - "besmut\n", - "besmuts\n", - "besmutted\n", - "besmutting\n", - "besnow\n", - "besnowed\n", - "besnowing\n", - "besnows\n", - "besom\n", - "besoms\n", - "besoothe\n", - "besoothed\n", - "besoothes\n", - "besoothing\n", - "besot\n", - "besots\n", - "besotted\n", - "besotting\n", - "besought\n", - "bespake\n", - "bespeak\n", - "bespeaking\n", - "bespeaks\n", - "bespoke\n", - "bespoken\n", - "bespouse\n", - "bespoused\n", - "bespouses\n", - "bespousing\n", - "bespread\n", - "bespreading\n", - "bespreads\n", - "besprent\n", - "best\n", - "bestead\n", - "besteaded\n", - "besteading\n", - "besteads\n", - "bested\n", - "bestial\n", - "bestialities\n", - "bestiality\n", - "bestiaries\n", - "bestiary\n", - "besting\n", - "bestir\n", - "bestirred\n", - "bestirring\n", - "bestirs\n", - "bestow\n", - "bestowal\n", - "bestowals\n", - "bestowed\n", - "bestowing\n", - "bestows\n", - "bestrew\n", - "bestrewed\n", - "bestrewing\n", - "bestrewn\n", - "bestrews\n", - "bestrid\n", - "bestridden\n", - "bestride\n", - "bestrides\n", - "bestriding\n", - "bestrode\n", - "bestrow\n", - "bestrowed\n", - "bestrowing\n", - "bestrown\n", - "bestrows\n", - "bests\n", - "bestud\n", - "bestudded\n", - "bestudding\n", - "bestuds\n", - "beswarm\n", - "beswarmed\n", - "beswarming\n", - "beswarms\n", - "bet\n", - "beta\n", - "betaine\n", - "betaines\n", - "betake\n", - "betaken\n", - "betakes\n", - "betaking\n", - "betas\n", - "betatron\n", - "betatrons\n", - "betatter\n", - "betattered\n", - "betattering\n", - "betatters\n", - "betaxed\n", - "betel\n", - "betelnut\n", - "betelnuts\n", - "betels\n", - "beth\n", - "bethank\n", - "bethanked\n", - "bethanking\n", - "bethanks\n", - "bethel\n", - "bethels\n", - "bethink\n", - "bethinking\n", - "bethinks\n", - "bethorn\n", - "bethorned\n", - "bethorning\n", - "bethorns\n", - "bethought\n", - "beths\n", - "bethump\n", - "bethumped\n", - "bethumping\n", - "bethumps\n", - "betide\n", - "betided\n", - "betides\n", - "betiding\n", - "betime\n", - "betimes\n", - "betise\n", - "betises\n", - "betoken\n", - "betokened\n", - "betokening\n", - "betokens\n", - "beton\n", - "betonies\n", - "betons\n", - "betony\n", - "betook\n", - "betray\n", - "betrayal\n", - "betrayals\n", - "betrayed\n", - "betrayer\n", - "betrayers\n", - "betraying\n", - "betrays\n", - "betroth\n", - "betrothal\n", - "betrothals\n", - "betrothed\n", - "betrotheds\n", - "betrothing\n", - "betroths\n", - "bets\n", - "betta\n", - "bettas\n", - "betted\n", - "better\n", - "bettered\n", - "bettering\n", - "betterment\n", - "betterments\n", - "betters\n", - "betting\n", - "bettor\n", - "bettors\n", - "between\n", - "betwixt\n", - "beuncled\n", - "bevatron\n", - "bevatrons\n", - "bevel\n", - "beveled\n", - "beveler\n", - "bevelers\n", - "beveling\n", - "bevelled\n", - "beveller\n", - "bevellers\n", - "bevelling\n", - "bevels\n", - "beverage\n", - "beverages\n", - "bevies\n", - "bevomit\n", - "bevomited\n", - "bevomiting\n", - "bevomits\n", - "bevor\n", - "bevors\n", - "bevy\n", - "bewail\n", - "bewailed\n", - "bewailer\n", - "bewailers\n", - "bewailing\n", - "bewails\n", - "beware\n", - "bewared\n", - "bewares\n", - "bewaring\n", - "bewearied\n", - "bewearies\n", - "beweary\n", - "bewearying\n", - "beweep\n", - "beweeping\n", - "beweeps\n", - "bewept\n", - "bewig\n", - "bewigged\n", - "bewigging\n", - "bewigs\n", - "bewilder\n", - "bewildered\n", - "bewildering\n", - "bewilderment\n", - "bewilderments\n", - "bewilders\n", - "bewinged\n", - "bewitch\n", - "bewitched\n", - "bewitches\n", - "bewitching\n", - "beworm\n", - "bewormed\n", - "beworming\n", - "beworms\n", - "beworried\n", - "beworries\n", - "beworry\n", - "beworrying\n", - "bewrap\n", - "bewrapped\n", - "bewrapping\n", - "bewraps\n", - "bewrapt\n", - "bewray\n", - "bewrayed\n", - "bewrayer\n", - "bewrayers\n", - "bewraying\n", - "bewrays\n", - "bey\n", - "beylic\n", - "beylics\n", - "beylik\n", - "beyliks\n", - "beyond\n", - "beyonds\n", - "beys\n", - "bezant\n", - "bezants\n", - "bezel\n", - "bezels\n", - "bezil\n", - "bezils\n", - "bezique\n", - "beziques\n", - "bezoar\n", - "bezoars\n", - "bezzant\n", - "bezzants\n", - "bhakta\n", - "bhaktas\n", - "bhakti\n", - "bhaktis\n", - "bhang\n", - "bhangs\n", - "bheestie\n", - "bheesties\n", - "bheesty\n", - "bhistie\n", - "bhisties\n", - "bhoot\n", - "bhoots\n", - "bhut\n", - "bhuts\n", - "bi\n", - "biacetyl\n", - "biacetyls\n", - "bialy\n", - "bialys\n", - "biannual\n", - "biannually\n", - "bias\n", - "biased\n", - "biasedly\n", - "biases\n", - "biasing\n", - "biasness\n", - "biasnesses\n", - "biassed\n", - "biasses\n", - "biassing\n", - "biathlon\n", - "biathlons\n", - "biaxal\n", - "biaxial\n", - "bib\n", - "bibasic\n", - "bibasilar\n", - "bibb\n", - "bibbed\n", - "bibber\n", - "bibberies\n", - "bibbers\n", - "bibbery\n", - "bibbing\n", - "bibbs\n", - "bibcock\n", - "bibcocks\n", - "bibelot\n", - "bibelots\n", - "bible\n", - "bibles\n", - "bibless\n", - "biblical\n", - "biblike\n", - "bibliographer\n", - "bibliographers\n", - "bibliographic\n", - "bibliographical\n", - "bibliographies\n", - "bibliography\n", - "bibs\n", - "bibulous\n", - "bicameral\n", - "bicarb\n", - "bicarbonate\n", - "bicarbonates\n", - "bicarbs\n", - "bice\n", - "bicentennial\n", - "bicentennials\n", - "biceps\n", - "bicepses\n", - "bices\n", - "bichrome\n", - "bicker\n", - "bickered\n", - "bickerer\n", - "bickerers\n", - "bickering\n", - "bickers\n", - "bicolor\n", - "bicolored\n", - "bicolors\n", - "bicolour\n", - "bicolours\n", - "biconcave\n", - "biconcavities\n", - "biconcavity\n", - "biconvex\n", - "biconvexities\n", - "biconvexity\n", - "bicorn\n", - "bicorne\n", - "bicornes\n", - "bicron\n", - "bicrons\n", - "bicultural\n", - "bicuspid\n", - "bicuspids\n", - "bicycle\n", - "bicycled\n", - "bicycler\n", - "bicyclers\n", - "bicycles\n", - "bicyclic\n", - "bicycling\n", - "bid\n", - "bidarka\n", - "bidarkas\n", - "bidarkee\n", - "bidarkees\n", - "biddable\n", - "biddably\n", - "bidden\n", - "bidder\n", - "bidders\n", - "biddies\n", - "bidding\n", - "biddings\n", - "biddy\n", - "bide\n", - "bided\n", - "bidental\n", - "bider\n", - "biders\n", - "bides\n", - "bidet\n", - "bidets\n", - "biding\n", - "bidirectional\n", - "bids\n", - "bield\n", - "bielded\n", - "bielding\n", - "bields\n", - "biennia\n", - "biennial\n", - "biennially\n", - "biennials\n", - "biennium\n", - "bienniums\n", - "bier\n", - "biers\n", - "bifacial\n", - "biff\n", - "biffed\n", - "biffies\n", - "biffin\n", - "biffing\n", - "biffins\n", - "biffs\n", - "biffy\n", - "bifid\n", - "bifidities\n", - "bifidity\n", - "bifidly\n", - "bifilar\n", - "biflex\n", - "bifocal\n", - "bifocals\n", - "bifold\n", - "biforate\n", - "biforked\n", - "biform\n", - "biformed\n", - "bifunctional\n", - "big\n", - "bigamies\n", - "bigamist\n", - "bigamists\n", - "bigamous\n", - "bigamy\n", - "bigaroon\n", - "bigaroons\n", - "bigeminies\n", - "bigeminy\n", - "bigeye\n", - "bigeyes\n", - "bigger\n", - "biggest\n", - "biggety\n", - "biggie\n", - "biggies\n", - "biggin\n", - "bigging\n", - "biggings\n", - "biggins\n", - "biggish\n", - "biggity\n", - "bighead\n", - "bigheads\n", - "bighorn\n", - "bighorns\n", - "bight\n", - "bighted\n", - "bighting\n", - "bights\n", - "bigly\n", - "bigmouth\n", - "bigmouths\n", - "bigness\n", - "bignesses\n", - "bignonia\n", - "bignonias\n", - "bigot\n", - "bigoted\n", - "bigotries\n", - "bigotry\n", - "bigots\n", - "bigwig\n", - "bigwigs\n", - "bihourly\n", - "bijou\n", - "bijous\n", - "bijoux\n", - "bijugate\n", - "bijugous\n", - "bike\n", - "biked\n", - "biker\n", - "bikers\n", - "bikes\n", - "bikeway\n", - "bikeways\n", - "biking\n", - "bikini\n", - "bikinied\n", - "bikinis\n", - "bilabial\n", - "bilabials\n", - "bilander\n", - "bilanders\n", - "bilateral\n", - "bilaterally\n", - "bilberries\n", - "bilberry\n", - "bilbo\n", - "bilboa\n", - "bilboas\n", - "bilboes\n", - "bilbos\n", - "bile\n", - "biles\n", - "bilge\n", - "bilged\n", - "bilges\n", - "bilgier\n", - "bilgiest\n", - "bilging\n", - "bilgy\n", - "biliary\n", - "bilinear\n", - "bilingual\n", - "bilious\n", - "biliousness\n", - "biliousnesses\n", - "bilirubin\n", - "bilk\n", - "bilked\n", - "bilker\n", - "bilkers\n", - "bilking\n", - "bilks\n", - "bill\n", - "billable\n", - "billboard\n", - "billboards\n", - "billbug\n", - "billbugs\n", - "billed\n", - "biller\n", - "billers\n", - "billet\n", - "billeted\n", - "billeter\n", - "billeters\n", - "billeting\n", - "billets\n", - "billfish\n", - "billfishes\n", - "billfold\n", - "billfolds\n", - "billhead\n", - "billheads\n", - "billhook\n", - "billhooks\n", - "billiard\n", - "billiards\n", - "billie\n", - "billies\n", - "billing\n", - "billings\n", - "billion\n", - "billions\n", - "billionth\n", - "billionths\n", - "billon\n", - "billons\n", - "billow\n", - "billowed\n", - "billowier\n", - "billowiest\n", - "billowing\n", - "billows\n", - "billowy\n", - "bills\n", - "billy\n", - "billycan\n", - "billycans\n", - "bilobate\n", - "bilobed\n", - "bilsted\n", - "bilsteds\n", - "biltong\n", - "biltongs\n", - "bima\n", - "bimah\n", - "bimahs\n", - "bimanous\n", - "bimanual\n", - "bimas\n", - "bimensal\n", - "bimester\n", - "bimesters\n", - "bimetal\n", - "bimetallic\n", - "bimetals\n", - "bimethyl\n", - "bimethyls\n", - "bimodal\n", - "bin\n", - "binal\n", - "binaries\n", - "binary\n", - "binate\n", - "binately\n", - "binational\n", - "binationalism\n", - "binationalisms\n", - "binaural\n", - "bind\n", - "bindable\n", - "binder\n", - "binderies\n", - "binders\n", - "bindery\n", - "binding\n", - "bindings\n", - "bindle\n", - "bindles\n", - "binds\n", - "bindweed\n", - "bindweeds\n", - "bine\n", - "bines\n", - "binge\n", - "binges\n", - "bingo\n", - "bingos\n", - "binit\n", - "binits\n", - "binnacle\n", - "binnacles\n", - "binned\n", - "binning\n", - "binocle\n", - "binocles\n", - "binocular\n", - "binocularly\n", - "binoculars\n", - "binomial\n", - "binomials\n", - "bins\n", - "bint\n", - "bints\n", - "bio\n", - "bioassay\n", - "bioassayed\n", - "bioassaying\n", - "bioassays\n", - "biochemical\n", - "biochemicals\n", - "biochemist\n", - "biochemistries\n", - "biochemistry\n", - "biochemists\n", - "biocidal\n", - "biocide\n", - "biocides\n", - "bioclean\n", - "biocycle\n", - "biocycles\n", - "biodegradabilities\n", - "biodegradability\n", - "biodegradable\n", - "biodegradation\n", - "biodegradations\n", - "biodegrade\n", - "biodegraded\n", - "biodegrades\n", - "biodegrading\n", - "biogen\n", - "biogenic\n", - "biogenies\n", - "biogens\n", - "biogeny\n", - "biographer\n", - "biographers\n", - "biographic\n", - "biographical\n", - "biographies\n", - "biography\n", - "bioherm\n", - "bioherms\n", - "biologic\n", - "biological\n", - "biologics\n", - "biologies\n", - "biologist\n", - "biologists\n", - "biology\n", - "biolyses\n", - "biolysis\n", - "biolytic\n", - "biomass\n", - "biomasses\n", - "biome\n", - "biomedical\n", - "biomes\n", - "biometries\n", - "biometry\n", - "bionic\n", - "bionics\n", - "bionomic\n", - "bionomies\n", - "bionomy\n", - "biont\n", - "biontic\n", - "bionts\n", - "biophysical\n", - "biophysicist\n", - "biophysicists\n", - "biophysics\n", - "bioplasm\n", - "bioplasms\n", - "biopsic\n", - "biopsies\n", - "biopsy\n", - "bioptic\n", - "bios\n", - "bioscope\n", - "bioscopes\n", - "bioscopies\n", - "bioscopy\n", - "biota\n", - "biotas\n", - "biotic\n", - "biotical\n", - "biotics\n", - "biotin\n", - "biotins\n", - "biotite\n", - "biotites\n", - "biotitic\n", - "biotope\n", - "biotopes\n", - "biotron\n", - "biotrons\n", - "biotype\n", - "biotypes\n", - "biotypic\n", - "biovular\n", - "bipack\n", - "bipacks\n", - "biparental\n", - "biparous\n", - "biparted\n", - "bipartisan\n", - "biparty\n", - "biped\n", - "bipedal\n", - "bipeds\n", - "biphenyl\n", - "biphenyls\n", - "biplane\n", - "biplanes\n", - "bipod\n", - "bipods\n", - "bipolar\n", - "biracial\n", - "biracially\n", - "biradial\n", - "biramose\n", - "biramous\n", - "birch\n", - "birched\n", - "birchen\n", - "birches\n", - "birching\n", - "bird\n", - "birdbath\n", - "birdbaths\n", - "birdbrained\n", - "birdcage\n", - "birdcages\n", - "birdcall\n", - "birdcalls\n", - "birded\n", - "birder\n", - "birders\n", - "birdfarm\n", - "birdfarms\n", - "birdhouse\n", - "birdhouses\n", - "birdie\n", - "birdied\n", - "birdieing\n", - "birdies\n", - "birding\n", - "birdlike\n", - "birdlime\n", - "birdlimed\n", - "birdlimes\n", - "birdliming\n", - "birdman\n", - "birdmen\n", - "birds\n", - "birdseed\n", - "birdseeds\n", - "birdseye\n", - "birdseyes\n", - "bireme\n", - "biremes\n", - "biretta\n", - "birettas\n", - "birk\n", - "birkie\n", - "birkies\n", - "birks\n", - "birl\n", - "birle\n", - "birled\n", - "birler\n", - "birlers\n", - "birles\n", - "birling\n", - "birlings\n", - "birls\n", - "birr\n", - "birred\n", - "birretta\n", - "birrettas\n", - "birring\n", - "birrs\n", - "birse\n", - "birses\n", - "birth\n", - "birthdate\n", - "birthdates\n", - "birthday\n", - "birthdays\n", - "birthed\n", - "birthing\n", - "birthplace\n", - "birthplaces\n", - "birthrate\n", - "birthrates\n", - "births\n", - "bis\n", - "biscuit\n", - "biscuits\n", - "bise\n", - "bisect\n", - "bisected\n", - "bisecting\n", - "bisection\n", - "bisections\n", - "bisector\n", - "bisectors\n", - "bisects\n", - "bises\n", - "bisexual\n", - "bisexuals\n", - "bishop\n", - "bishoped\n", - "bishoping\n", - "bishops\n", - "bisk\n", - "bisks\n", - "bismuth\n", - "bismuths\n", - "bisnaga\n", - "bisnagas\n", - "bison\n", - "bisons\n", - "bisque\n", - "bisques\n", - "bistate\n", - "bister\n", - "bistered\n", - "bisters\n", - "bistort\n", - "bistorts\n", - "bistouries\n", - "bistoury\n", - "bistre\n", - "bistred\n", - "bistres\n", - "bistro\n", - "bistroic\n", - "bistros\n", - "bit\n", - "bitable\n", - "bitch\n", - "bitched\n", - "bitcheries\n", - "bitchery\n", - "bitches\n", - "bitchier\n", - "bitchiest\n", - "bitchily\n", - "bitching\n", - "bitchy\n", - "bite\n", - "biteable\n", - "biter\n", - "biters\n", - "bites\n", - "bitewing\n", - "bitewings\n", - "biting\n", - "bitingly\n", - "bits\n", - "bitstock\n", - "bitstocks\n", - "bitsy\n", - "bitt\n", - "bitted\n", - "bitten\n", - "bitter\n", - "bittered\n", - "bitterer\n", - "bitterest\n", - "bittering\n", - "bitterly\n", - "bittern\n", - "bitterness\n", - "bitternesses\n", - "bitterns\n", - "bitters\n", - "bittier\n", - "bittiest\n", - "bitting\n", - "bittings\n", - "bittock\n", - "bittocks\n", - "bitts\n", - "bitty\n", - "bitumen\n", - "bitumens\n", - "bituminous\n", - "bivalent\n", - "bivalents\n", - "bivalve\n", - "bivalved\n", - "bivalves\n", - "bivinyl\n", - "bivinyls\n", - "bivouac\n", - "bivouacked\n", - "bivouacking\n", - "bivouacks\n", - "bivouacs\n", - "biweeklies\n", - "biweekly\n", - "biyearly\n", - "bizarre\n", - "bizarrely\n", - "bizarres\n", - "bize\n", - "bizes\n", - "biznaga\n", - "biznagas\n", - "bizonal\n", - "bizone\n", - "bizones\n", - "blab\n", - "blabbed\n", - "blabber\n", - "blabbered\n", - "blabbering\n", - "blabbers\n", - "blabbing\n", - "blabby\n", - "blabs\n", - "black\n", - "blackball\n", - "blackballs\n", - "blackberries\n", - "blackberry\n", - "blackbird\n", - "blackbirds\n", - "blackboard\n", - "blackboards\n", - "blackboy\n", - "blackboys\n", - "blackcap\n", - "blackcaps\n", - "blacked\n", - "blacken\n", - "blackened\n", - "blackening\n", - "blackens\n", - "blacker\n", - "blackest\n", - "blackfin\n", - "blackfins\n", - "blackflies\n", - "blackfly\n", - "blackguard\n", - "blackguards\n", - "blackgum\n", - "blackgums\n", - "blackhead\n", - "blackheads\n", - "blacking\n", - "blackings\n", - "blackish\n", - "blackjack\n", - "blackjacks\n", - "blackleg\n", - "blacklegs\n", - "blacklist\n", - "blacklisted\n", - "blacklisting\n", - "blacklists\n", - "blackly\n", - "blackmail\n", - "blackmailed\n", - "blackmailer\n", - "blackmailers\n", - "blackmailing\n", - "blackmails\n", - "blackness\n", - "blacknesses\n", - "blackout\n", - "blackouts\n", - "blacks\n", - "blacksmith\n", - "blacksmiths\n", - "blacktop\n", - "blacktopped\n", - "blacktopping\n", - "blacktops\n", - "bladder\n", - "bladders\n", - "bladdery\n", - "blade\n", - "bladed\n", - "blades\n", - "blae\n", - "blah\n", - "blahs\n", - "blain\n", - "blains\n", - "blamable\n", - "blamably\n", - "blame\n", - "blamed\n", - "blameful\n", - "blameless\n", - "blamelessly\n", - "blamer\n", - "blamers\n", - "blames\n", - "blameworthiness\n", - "blameworthinesses\n", - "blameworthy\n", - "blaming\n", - "blanch\n", - "blanched\n", - "blancher\n", - "blanchers\n", - "blanches\n", - "blanching\n", - "bland\n", - "blander\n", - "blandest\n", - "blandish\n", - "blandished\n", - "blandishes\n", - "blandishing\n", - "blandishment\n", - "blandishments\n", - "blandly\n", - "blandness\n", - "blandnesses\n", - "blank\n", - "blanked\n", - "blanker\n", - "blankest\n", - "blanket\n", - "blanketed\n", - "blanketing\n", - "blankets\n", - "blanking\n", - "blankly\n", - "blankness\n", - "blanknesses\n", - "blanks\n", - "blare\n", - "blared\n", - "blares\n", - "blaring\n", - "blarney\n", - "blarneyed\n", - "blarneying\n", - "blarneys\n", - "blase\n", - "blaspheme\n", - "blasphemed\n", - "blasphemes\n", - "blasphemies\n", - "blaspheming\n", - "blasphemous\n", - "blasphemy\n", - "blast\n", - "blasted\n", - "blastema\n", - "blastemas\n", - "blastemata\n", - "blaster\n", - "blasters\n", - "blastie\n", - "blastier\n", - "blasties\n", - "blastiest\n", - "blasting\n", - "blastings\n", - "blastoff\n", - "blastoffs\n", - "blastoma\n", - "blastomas\n", - "blastomata\n", - "blasts\n", - "blastula\n", - "blastulae\n", - "blastulas\n", - "blasty\n", - "blat\n", - "blatancies\n", - "blatancy\n", - "blatant\n", - "blate\n", - "blather\n", - "blathered\n", - "blathering\n", - "blathers\n", - "blats\n", - "blatted\n", - "blatter\n", - "blattered\n", - "blattering\n", - "blatters\n", - "blatting\n", - "blaubok\n", - "blauboks\n", - "blaw\n", - "blawed\n", - "blawing\n", - "blawn\n", - "blaws\n", - "blaze\n", - "blazed\n", - "blazer\n", - "blazers\n", - "blazes\n", - "blazing\n", - "blazon\n", - "blazoned\n", - "blazoner\n", - "blazoners\n", - "blazoning\n", - "blazonries\n", - "blazonry\n", - "blazons\n", - "bleach\n", - "bleached\n", - "bleacher\n", - "bleachers\n", - "bleaches\n", - "bleaching\n", - "bleak\n", - "bleaker\n", - "bleakest\n", - "bleakish\n", - "bleakly\n", - "bleakness\n", - "bleaknesses\n", - "bleaks\n", - "blear\n", - "bleared\n", - "blearier\n", - "bleariest\n", - "blearily\n", - "blearing\n", - "blears\n", - "bleary\n", - "bleat\n", - "bleated\n", - "bleater\n", - "bleaters\n", - "bleating\n", - "bleats\n", - "bleb\n", - "blebby\n", - "blebs\n", - "bled\n", - "bleed\n", - "bleeder\n", - "bleeders\n", - "bleeding\n", - "bleedings\n", - "bleeds\n", - "blellum\n", - "blellums\n", - "blemish\n", - "blemished\n", - "blemishes\n", - "blemishing\n", - "blench\n", - "blenched\n", - "blencher\n", - "blenchers\n", - "blenches\n", - "blenching\n", - "blend\n", - "blende\n", - "blended\n", - "blender\n", - "blenders\n", - "blendes\n", - "blending\n", - "blends\n", - "blennies\n", - "blenny\n", - "blent\n", - "bleomycin\n", - "blesbok\n", - "blesboks\n", - "blesbuck\n", - "blesbucks\n", - "bless\n", - "blessed\n", - "blesseder\n", - "blessedest\n", - "blessedness\n", - "blessednesses\n", - "blesser\n", - "blessers\n", - "blesses\n", - "blessing\n", - "blessings\n", - "blest\n", - "blet\n", - "blether\n", - "blethered\n", - "blethering\n", - "blethers\n", - "blets\n", - "blew\n", - "blight\n", - "blighted\n", - "blighter\n", - "blighters\n", - "blighties\n", - "blighting\n", - "blights\n", - "blighty\n", - "blimey\n", - "blimp\n", - "blimpish\n", - "blimps\n", - "blimy\n", - "blin\n", - "blind\n", - "blindage\n", - "blindages\n", - "blinded\n", - "blinder\n", - "blinders\n", - "blindest\n", - "blindfold\n", - "blindfolded\n", - "blindfolding\n", - "blindfolds\n", - "blinding\n", - "blindly\n", - "blindness\n", - "blindnesses\n", - "blinds\n", - "blini\n", - "blinis\n", - "blink\n", - "blinkard\n", - "blinkards\n", - "blinked\n", - "blinker\n", - "blinkered\n", - "blinkering\n", - "blinkers\n", - "blinking\n", - "blinks\n", - "blintz\n", - "blintze\n", - "blintzes\n", - "blip\n", - "blipped\n", - "blipping\n", - "blips\n", - "bliss\n", - "blisses\n", - "blissful\n", - "blissfully\n", - "blister\n", - "blistered\n", - "blistering\n", - "blisters\n", - "blistery\n", - "blite\n", - "blites\n", - "blithe\n", - "blithely\n", - "blither\n", - "blithered\n", - "blithering\n", - "blithers\n", - "blithesome\n", - "blithest\n", - "blitz\n", - "blitzed\n", - "blitzes\n", - "blitzing\n", - "blizzard\n", - "blizzards\n", - "bloat\n", - "bloated\n", - "bloater\n", - "bloaters\n", - "bloating\n", - "bloats\n", - "blob\n", - "blobbed\n", - "blobbing\n", - "blobs\n", - "bloc\n", - "block\n", - "blockade\n", - "blockaded\n", - "blockades\n", - "blockading\n", - "blockage\n", - "blockages\n", - "blocked\n", - "blocker\n", - "blockers\n", - "blockier\n", - "blockiest\n", - "blocking\n", - "blockish\n", - "blocks\n", - "blocky\n", - "blocs\n", - "bloke\n", - "blokes\n", - "blond\n", - "blonde\n", - "blonder\n", - "blondes\n", - "blondest\n", - "blondish\n", - "blonds\n", - "blood\n", - "bloodcurdling\n", - "blooded\n", - "bloodfin\n", - "bloodfins\n", - "bloodhound\n", - "bloodhounds\n", - "bloodied\n", - "bloodier\n", - "bloodies\n", - "bloodiest\n", - "bloodily\n", - "blooding\n", - "bloodings\n", - "bloodless\n", - "bloodmobile\n", - "bloodmobiles\n", - "bloodred\n", - "bloods\n", - "bloodshed\n", - "bloodsheds\n", - "bloodstain\n", - "bloodstained\n", - "bloodstains\n", - "bloodsucker\n", - "bloodsuckers\n", - "bloodsucking\n", - "bloodsuckings\n", - "bloodthirstily\n", - "bloodthirstiness\n", - "bloodthirstinesses\n", - "bloodthirsty\n", - "bloody\n", - "bloodying\n", - "bloom\n", - "bloomed\n", - "bloomer\n", - "bloomeries\n", - "bloomers\n", - "bloomery\n", - "bloomier\n", - "bloomiest\n", - "blooming\n", - "blooms\n", - "bloomy\n", - "bloop\n", - "blooped\n", - "blooper\n", - "bloopers\n", - "blooping\n", - "bloops\n", - "blossom\n", - "blossomed\n", - "blossoming\n", - "blossoms\n", - "blossomy\n", - "blot\n", - "blotch\n", - "blotched\n", - "blotches\n", - "blotchier\n", - "blotchiest\n", - "blotching\n", - "blotchy\n", - "blotless\n", - "blots\n", - "blotted\n", - "blotter\n", - "blotters\n", - "blottier\n", - "blottiest\n", - "blotting\n", - "blotto\n", - "blotty\n", - "blouse\n", - "bloused\n", - "blouses\n", - "blousier\n", - "blousiest\n", - "blousily\n", - "blousing\n", - "blouson\n", - "blousons\n", - "blousy\n", - "blow\n", - "blowback\n", - "blowbacks\n", - "blowby\n", - "blowbys\n", - "blower\n", - "blowers\n", - "blowfish\n", - "blowfishes\n", - "blowflies\n", - "blowfly\n", - "blowgun\n", - "blowguns\n", - "blowhard\n", - "blowhards\n", - "blowhole\n", - "blowholes\n", - "blowier\n", - "blowiest\n", - "blowing\n", - "blown\n", - "blowoff\n", - "blowoffs\n", - "blowout\n", - "blowouts\n", - "blowpipe\n", - "blowpipes\n", - "blows\n", - "blowsed\n", - "blowsier\n", - "blowsiest\n", - "blowsily\n", - "blowsy\n", - "blowtorch\n", - "blowtorches\n", - "blowtube\n", - "blowtubes\n", - "blowup\n", - "blowups\n", - "blowy\n", - "blowzed\n", - "blowzier\n", - "blowziest\n", - "blowzily\n", - "blowzy\n", - "blubber\n", - "blubbered\n", - "blubbering\n", - "blubbers\n", - "blubbery\n", - "blucher\n", - "bluchers\n", - "bludgeon\n", - "bludgeoned\n", - "bludgeoning\n", - "bludgeons\n", - "blue\n", - "blueball\n", - "blueballs\n", - "bluebell\n", - "bluebells\n", - "blueberries\n", - "blueberry\n", - "bluebill\n", - "bluebills\n", - "bluebird\n", - "bluebirds\n", - "bluebook\n", - "bluebooks\n", - "bluecap\n", - "bluecaps\n", - "bluecoat\n", - "bluecoats\n", - "blued\n", - "bluefin\n", - "bluefins\n", - "bluefish\n", - "bluefishes\n", - "bluegill\n", - "bluegills\n", - "bluegum\n", - "bluegums\n", - "bluehead\n", - "blueheads\n", - "blueing\n", - "blueings\n", - "blueish\n", - "bluejack\n", - "bluejacks\n", - "bluejay\n", - "bluejays\n", - "blueline\n", - "bluelines\n", - "bluely\n", - "blueness\n", - "bluenesses\n", - "bluenose\n", - "bluenoses\n", - "blueprint\n", - "blueprinted\n", - "blueprinting\n", - "blueprints\n", - "bluer\n", - "blues\n", - "bluesman\n", - "bluesmen\n", - "bluest\n", - "bluestem\n", - "bluestems\n", - "bluesy\n", - "bluet\n", - "bluets\n", - "blueweed\n", - "blueweeds\n", - "bluewood\n", - "bluewoods\n", - "bluey\n", - "blueys\n", - "bluff\n", - "bluffed\n", - "bluffer\n", - "bluffers\n", - "bluffest\n", - "bluffing\n", - "bluffly\n", - "bluffs\n", - "bluing\n", - "bluings\n", - "bluish\n", - "blume\n", - "blumed\n", - "blumes\n", - "bluming\n", - "blunder\n", - "blunderbuss\n", - "blunderbusses\n", - "blundered\n", - "blundering\n", - "blunders\n", - "blunge\n", - "blunged\n", - "blunger\n", - "blungers\n", - "blunges\n", - "blunging\n", - "blunt\n", - "blunted\n", - "blunter\n", - "bluntest\n", - "blunting\n", - "bluntly\n", - "bluntness\n", - "bluntnesses\n", - "blunts\n", - "blur\n", - "blurb\n", - "blurbs\n", - "blurred\n", - "blurrier\n", - "blurriest\n", - "blurrily\n", - "blurring\n", - "blurry\n", - "blurs\n", - "blurt\n", - "blurted\n", - "blurter\n", - "blurters\n", - "blurting\n", - "blurts\n", - "blush\n", - "blushed\n", - "blusher\n", - "blushers\n", - "blushes\n", - "blushful\n", - "blushing\n", - "bluster\n", - "blustered\n", - "blustering\n", - "blusters\n", - "blustery\n", - "blype\n", - "blypes\n", - "bo\n", - "boa\n", - "boar\n", - "board\n", - "boarded\n", - "boarder\n", - "boarders\n", - "boarding\n", - "boardings\n", - "boardman\n", - "boardmen\n", - "boards\n", - "boardwalk\n", - "boardwalks\n", - "boarfish\n", - "boarfishes\n", - "boarish\n", - "boars\n", - "boart\n", - "boarts\n", - "boas\n", - "boast\n", - "boasted\n", - "boaster\n", - "boasters\n", - "boastful\n", - "boastfully\n", - "boasting\n", - "boasts\n", - "boat\n", - "boatable\n", - "boatbill\n", - "boatbills\n", - "boated\n", - "boatel\n", - "boatels\n", - "boater\n", - "boaters\n", - "boating\n", - "boatings\n", - "boatload\n", - "boatloads\n", - "boatman\n", - "boatmen\n", - "boats\n", - "boatsman\n", - "boatsmen\n", - "boatswain\n", - "boatswains\n", - "boatyard\n", - "boatyards\n", - "bob\n", - "bobbed\n", - "bobber\n", - "bobberies\n", - "bobbers\n", - "bobbery\n", - "bobbies\n", - "bobbin\n", - "bobbinet\n", - "bobbinets\n", - "bobbing\n", - "bobbins\n", - "bobble\n", - "bobbled\n", - "bobbles\n", - "bobbling\n", - "bobby\n", - "bobcat\n", - "bobcats\n", - "bobeche\n", - "bobeches\n", - "bobolink\n", - "bobolinks\n", - "bobs\n", - "bobsled\n", - "bobsleded\n", - "bobsleding\n", - "bobsleds\n", - "bobstay\n", - "bobstays\n", - "bobtail\n", - "bobtailed\n", - "bobtailing\n", - "bobtails\n", - "bobwhite\n", - "bobwhites\n", - "bocaccio\n", - "bocaccios\n", - "bocce\n", - "bocces\n", - "bocci\n", - "boccia\n", - "boccias\n", - "boccie\n", - "boccies\n", - "boccis\n", - "boche\n", - "boches\n", - "bock\n", - "bocks\n", - "bod\n", - "bode\n", - "boded\n", - "bodega\n", - "bodegas\n", - "bodement\n", - "bodements\n", - "bodes\n", - "bodice\n", - "bodices\n", - "bodied\n", - "bodies\n", - "bodiless\n", - "bodily\n", - "boding\n", - "bodingly\n", - "bodings\n", - "bodkin\n", - "bodkins\n", - "bods\n", - "body\n", - "bodying\n", - "bodysurf\n", - "bodysurfed\n", - "bodysurfing\n", - "bodysurfs\n", - "bodywork\n", - "bodyworks\n", - "boehmite\n", - "boehmites\n", - "boff\n", - "boffin\n", - "boffins\n", - "boffo\n", - "boffola\n", - "boffolas\n", - "boffos\n", - "boffs\n", - "bog\n", - "bogan\n", - "bogans\n", - "bogbean\n", - "bogbeans\n", - "bogey\n", - "bogeyed\n", - "bogeying\n", - "bogeyman\n", - "bogeymen\n", - "bogeys\n", - "bogged\n", - "boggier\n", - "boggiest\n", - "bogging\n", - "boggish\n", - "boggle\n", - "boggled\n", - "boggler\n", - "bogglers\n", - "boggles\n", - "boggling\n", - "boggy\n", - "bogie\n", - "bogies\n", - "bogle\n", - "bogles\n", - "bogs\n", - "bogus\n", - "bogwood\n", - "bogwoods\n", - "bogy\n", - "bogyism\n", - "bogyisms\n", - "bogyman\n", - "bogymen\n", - "bogys\n", - "bohea\n", - "boheas\n", - "bohemia\n", - "bohemian\n", - "bohemians\n", - "bohemias\n", - "bohunk\n", - "bohunks\n", - "boil\n", - "boilable\n", - "boiled\n", - "boiler\n", - "boilers\n", - "boiling\n", - "boils\n", - "boisterous\n", - "boisterously\n", - "boite\n", - "boites\n", - "bola\n", - "bolar\n", - "bolas\n", - "bolases\n", - "bold\n", - "bolder\n", - "boldest\n", - "boldface\n", - "boldfaced\n", - "boldfaces\n", - "boldfacing\n", - "boldly\n", - "boldness\n", - "boldnesses\n", - "bole\n", - "bolero\n", - "boleros\n", - "boles\n", - "bolete\n", - "boletes\n", - "boleti\n", - "boletus\n", - "boletuses\n", - "bolide\n", - "bolides\n", - "bolivar\n", - "bolivares\n", - "bolivars\n", - "bolivia\n", - "bolivias\n", - "boll\n", - "bollard\n", - "bollards\n", - "bolled\n", - "bolling\n", - "bollix\n", - "bollixed\n", - "bollixes\n", - "bollixing\n", - "bollox\n", - "bolloxed\n", - "bolloxes\n", - "bolloxing\n", - "bolls\n", - "bollworm\n", - "bollworms\n", - "bolo\n", - "bologna\n", - "bolognas\n", - "boloney\n", - "boloneys\n", - "bolos\n", - "bolshevik\n", - "bolson\n", - "bolsons\n", - "bolster\n", - "bolstered\n", - "bolstering\n", - "bolsters\n", - "bolt\n", - "bolted\n", - "bolter\n", - "bolters\n", - "bolthead\n", - "boltheads\n", - "bolting\n", - "boltonia\n", - "boltonias\n", - "boltrope\n", - "boltropes\n", - "bolts\n", - "bolus\n", - "boluses\n", - "bomb\n", - "bombard\n", - "bombarded\n", - "bombardier\n", - "bombardiers\n", - "bombarding\n", - "bombardment\n", - "bombardments\n", - "bombards\n", - "bombast\n", - "bombastic\n", - "bombasts\n", - "bombe\n", - "bombed\n", - "bomber\n", - "bombers\n", - "bombes\n", - "bombing\n", - "bombload\n", - "bombloads\n", - "bombproof\n", - "bombs\n", - "bombshell\n", - "bombshells\n", - "bombycid\n", - "bombycids\n", - "bombyx\n", - "bombyxes\n", - "bonaci\n", - "bonacis\n", - "bonanza\n", - "bonanzas\n", - "bonbon\n", - "bonbons\n", - "bond\n", - "bondable\n", - "bondage\n", - "bondages\n", - "bonded\n", - "bonder\n", - "bonders\n", - "bondholder\n", - "bondholders\n", - "bonding\n", - "bondmaid\n", - "bondmaids\n", - "bondman\n", - "bondmen\n", - "bonds\n", - "bondsman\n", - "bondsmen\n", - "bonduc\n", - "bonducs\n", - "bondwoman\n", - "bondwomen\n", - "bone\n", - "boned\n", - "bonefish\n", - "bonefishes\n", - "bonehead\n", - "boneheads\n", - "boneless\n", - "boner\n", - "boners\n", - "bones\n", - "boneset\n", - "bonesets\n", - "boney\n", - "boneyard\n", - "boneyards\n", - "bonfire\n", - "bonfires\n", - "bong\n", - "bonged\n", - "bonging\n", - "bongo\n", - "bongoes\n", - "bongoist\n", - "bongoists\n", - "bongos\n", - "bongs\n", - "bonhomie\n", - "bonhomies\n", - "bonier\n", - "boniest\n", - "boniface\n", - "bonifaces\n", - "boniness\n", - "boninesses\n", - "boning\n", - "bonita\n", - "bonitas\n", - "bonito\n", - "bonitoes\n", - "bonitos\n", - "bonkers\n", - "bonne\n", - "bonnes\n", - "bonnet\n", - "bonneted\n", - "bonneting\n", - "bonnets\n", - "bonnie\n", - "bonnier\n", - "bonniest\n", - "bonnily\n", - "bonnock\n", - "bonnocks\n", - "bonny\n", - "bonsai\n", - "bonspell\n", - "bonspells\n", - "bonspiel\n", - "bonspiels\n", - "bontebok\n", - "bonteboks\n", - "bonus\n", - "bonuses\n", - "bony\n", - "bonze\n", - "bonzer\n", - "bonzes\n", - "boo\n", - "boob\n", - "boobies\n", - "booboo\n", - "booboos\n", - "boobs\n", - "booby\n", - "boodle\n", - "boodled\n", - "boodler\n", - "boodlers\n", - "boodles\n", - "boodling\n", - "booed\n", - "booger\n", - "boogers\n", - "boogie\n", - "boogies\n", - "boogyman\n", - "boogymen\n", - "boohoo\n", - "boohooed\n", - "boohooing\n", - "boohoos\n", - "booing\n", - "book\n", - "bookcase\n", - "bookcases\n", - "booked\n", - "bookend\n", - "bookends\n", - "booker\n", - "bookers\n", - "bookie\n", - "bookies\n", - "booking\n", - "bookings\n", - "bookish\n", - "bookkeeper\n", - "bookkeepers\n", - "bookkeeping\n", - "bookkeepings\n", - "booklet\n", - "booklets\n", - "booklore\n", - "booklores\n", - "bookmaker\n", - "bookmakers\n", - "bookmaking\n", - "bookmakings\n", - "bookman\n", - "bookmark\n", - "bookmarks\n", - "bookmen\n", - "bookrack\n", - "bookracks\n", - "bookrest\n", - "bookrests\n", - "books\n", - "bookseller\n", - "booksellers\n", - "bookshelf\n", - "bookshelfs\n", - "bookshop\n", - "bookshops\n", - "bookstore\n", - "bookstores\n", - "bookworm\n", - "bookworms\n", - "boom\n", - "boomed\n", - "boomer\n", - "boomerang\n", - "boomerangs\n", - "boomers\n", - "boomier\n", - "boomiest\n", - "booming\n", - "boomkin\n", - "boomkins\n", - "boomlet\n", - "boomlets\n", - "booms\n", - "boomtown\n", - "boomtowns\n", - "boomy\n", - "boon\n", - "boondocks\n", - "boonies\n", - "boons\n", - "boor\n", - "boorish\n", - "boors\n", - "boos\n", - "boost\n", - "boosted\n", - "booster\n", - "boosters\n", - "boosting\n", - "boosts\n", - "boot\n", - "booted\n", - "bootee\n", - "bootees\n", - "booteries\n", - "bootery\n", - "booth\n", - "booths\n", - "bootie\n", - "booties\n", - "booting\n", - "bootjack\n", - "bootjacks\n", - "bootlace\n", - "bootlaces\n", - "bootleg\n", - "bootlegged\n", - "bootlegger\n", - "bootleggers\n", - "bootlegging\n", - "bootlegs\n", - "bootless\n", - "bootlick\n", - "bootlicked\n", - "bootlicking\n", - "bootlicks\n", - "boots\n", - "booty\n", - "booze\n", - "boozed\n", - "boozer\n", - "boozers\n", - "boozes\n", - "boozier\n", - "booziest\n", - "boozily\n", - "boozing\n", - "boozy\n", - "bop\n", - "bopped\n", - "bopper\n", - "boppers\n", - "bopping\n", - "bops\n", - "bora\n", - "boraces\n", - "boracic\n", - "boracite\n", - "boracites\n", - "borage\n", - "borages\n", - "borane\n", - "boranes\n", - "boras\n", - "borate\n", - "borated\n", - "borates\n", - "borax\n", - "boraxes\n", - "borazon\n", - "borazons\n", - "bordel\n", - "bordello\n", - "bordellos\n", - "bordels\n", - "border\n", - "bordered\n", - "borderer\n", - "borderers\n", - "bordering\n", - "borderline\n", - "borders\n", - "bordure\n", - "bordures\n", - "bore\n", - "boreal\n", - "borecole\n", - "borecoles\n", - "bored\n", - "boredom\n", - "boredoms\n", - "borer\n", - "borers\n", - "bores\n", - "boric\n", - "boride\n", - "borides\n", - "boring\n", - "boringly\n", - "borings\n", - "born\n", - "borne\n", - "borneol\n", - "borneols\n", - "bornite\n", - "bornites\n", - "boron\n", - "boronic\n", - "borons\n", - "borough\n", - "boroughs\n", - "borrow\n", - "borrowed\n", - "borrower\n", - "borrowers\n", - "borrowing\n", - "borrows\n", - "borsch\n", - "borsches\n", - "borscht\n", - "borschts\n", - "borstal\n", - "borstals\n", - "bort\n", - "borts\n", - "borty\n", - "bortz\n", - "bortzes\n", - "borzoi\n", - "borzois\n", - "bos\n", - "boscage\n", - "boscages\n", - "boschbok\n", - "boschboks\n", - "bosh\n", - "boshbok\n", - "boshboks\n", - "boshes\n", - "boshvark\n", - "boshvarks\n", - "bosk\n", - "boskage\n", - "boskages\n", - "bosker\n", - "bosket\n", - "boskets\n", - "boskier\n", - "boskiest\n", - "bosks\n", - "bosky\n", - "bosom\n", - "bosomed\n", - "bosoming\n", - "bosoms\n", - "bosomy\n", - "boson\n", - "bosons\n", - "bosque\n", - "bosques\n", - "bosquet\n", - "bosquets\n", - "boss\n", - "bossdom\n", - "bossdoms\n", - "bossed\n", - "bosses\n", - "bossier\n", - "bossies\n", - "bossiest\n", - "bossily\n", - "bossing\n", - "bossism\n", - "bossisms\n", - "bossy\n", - "boston\n", - "bostons\n", - "bosun\n", - "bosuns\n", - "bot\n", - "botanic\n", - "botanical\n", - "botanies\n", - "botanise\n", - "botanised\n", - "botanises\n", - "botanising\n", - "botanist\n", - "botanists\n", - "botanize\n", - "botanized\n", - "botanizes\n", - "botanizing\n", - "botany\n", - "botch\n", - "botched\n", - "botcher\n", - "botcheries\n", - "botchers\n", - "botchery\n", - "botches\n", - "botchier\n", - "botchiest\n", - "botchily\n", - "botching\n", - "botchy\n", - "botel\n", - "botels\n", - "botflies\n", - "botfly\n", - "both\n", - "bother\n", - "bothered\n", - "bothering\n", - "bothers\n", - "bothersome\n", - "botonee\n", - "botonnee\n", - "botryoid\n", - "botryose\n", - "bots\n", - "bott\n", - "bottle\n", - "bottled\n", - "bottleneck\n", - "bottlenecks\n", - "bottler\n", - "bottlers\n", - "bottles\n", - "bottling\n", - "bottom\n", - "bottomed\n", - "bottomer\n", - "bottomers\n", - "bottoming\n", - "bottomless\n", - "bottomries\n", - "bottomry\n", - "bottoms\n", - "botts\n", - "botulin\n", - "botulins\n", - "botulism\n", - "botulisms\n", - "boucle\n", - "boucles\n", - "boudoir\n", - "boudoirs\n", - "bouffant\n", - "bouffants\n", - "bouffe\n", - "bouffes\n", - "bough\n", - "boughed\n", - "boughpot\n", - "boughpots\n", - "boughs\n", - "bought\n", - "boughten\n", - "bougie\n", - "bougies\n", - "bouillon\n", - "bouillons\n", - "boulder\n", - "boulders\n", - "bouldery\n", - "boule\n", - "boules\n", - "boulle\n", - "boulles\n", - "bounce\n", - "bounced\n", - "bouncer\n", - "bouncers\n", - "bounces\n", - "bouncier\n", - "bounciest\n", - "bouncily\n", - "bouncing\n", - "bouncy\n", - "bound\n", - "boundaries\n", - "boundary\n", - "bounded\n", - "bounden\n", - "bounder\n", - "bounders\n", - "bounding\n", - "boundless\n", - "boundlessness\n", - "boundlessnesses\n", - "bounds\n", - "bounteous\n", - "bounteously\n", - "bountied\n", - "bounties\n", - "bountiful\n", - "bountifully\n", - "bounty\n", - "bouquet\n", - "bouquets\n", - "bourbon\n", - "bourbons\n", - "bourdon\n", - "bourdons\n", - "bourg\n", - "bourgeois\n", - "bourgeoisie\n", - "bourgeoisies\n", - "bourgeon\n", - "bourgeoned\n", - "bourgeoning\n", - "bourgeons\n", - "bourgs\n", - "bourn\n", - "bourne\n", - "bournes\n", - "bourns\n", - "bourree\n", - "bourrees\n", - "bourse\n", - "bourses\n", - "bourtree\n", - "bourtrees\n", - "bouse\n", - "boused\n", - "bouses\n", - "bousing\n", - "bousouki\n", - "bousoukia\n", - "bousoukis\n", - "bousy\n", - "bout\n", - "boutique\n", - "boutiques\n", - "bouts\n", - "bouzouki\n", - "bouzoukia\n", - "bouzoukis\n", - "bovid\n", - "bovids\n", - "bovine\n", - "bovinely\n", - "bovines\n", - "bovinities\n", - "bovinity\n", - "bow\n", - "bowed\n", - "bowel\n", - "boweled\n", - "boweling\n", - "bowelled\n", - "bowelling\n", - "bowels\n", - "bower\n", - "bowered\n", - "boweries\n", - "bowering\n", - "bowers\n", - "bowery\n", - "bowfin\n", - "bowfins\n", - "bowfront\n", - "bowhead\n", - "bowheads\n", - "bowing\n", - "bowingly\n", - "bowings\n", - "bowknot\n", - "bowknots\n", - "bowl\n", - "bowlder\n", - "bowlders\n", - "bowled\n", - "bowleg\n", - "bowlegs\n", - "bowler\n", - "bowlers\n", - "bowless\n", - "bowlful\n", - "bowlfuls\n", - "bowlike\n", - "bowline\n", - "bowlines\n", - "bowling\n", - "bowlings\n", - "bowllike\n", - "bowls\n", - "bowman\n", - "bowmen\n", - "bowpot\n", - "bowpots\n", - "bows\n", - "bowse\n", - "bowsed\n", - "bowses\n", - "bowshot\n", - "bowshots\n", - "bowsing\n", - "bowsprit\n", - "bowsprits\n", - "bowwow\n", - "bowwows\n", - "bowyer\n", - "bowyers\n", - "box\n", - "boxberries\n", - "boxberry\n", - "boxcar\n", - "boxcars\n", - "boxed\n", - "boxer\n", - "boxers\n", - "boxes\n", - "boxfish\n", - "boxfishes\n", - "boxful\n", - "boxfuls\n", - "boxhaul\n", - "boxhauled\n", - "boxhauling\n", - "boxhauls\n", - "boxier\n", - "boxiest\n", - "boxiness\n", - "boxinesses\n", - "boxing\n", - "boxings\n", - "boxlike\n", - "boxthorn\n", - "boxthorns\n", - "boxwood\n", - "boxwoods\n", - "boxy\n", - "boy\n", - "boyar\n", - "boyard\n", - "boyards\n", - "boyarism\n", - "boyarisms\n", - "boyars\n", - "boycott\n", - "boycotted\n", - "boycotting\n", - "boycotts\n", - "boyhood\n", - "boyhoods\n", - "boyish\n", - "boyishly\n", - "boyishness\n", - "boyishnesses\n", - "boyla\n", - "boylas\n", - "boyo\n", - "boyos\n", - "boys\n", - "bozo\n", - "bozos\n", - "bra\n", - "brabble\n", - "brabbled\n", - "brabbler\n", - "brabblers\n", - "brabbles\n", - "brabbling\n", - "brace\n", - "braced\n", - "bracelet\n", - "bracelets\n", - "bracer\n", - "bracero\n", - "braceros\n", - "bracers\n", - "braces\n", - "brach\n", - "braches\n", - "brachet\n", - "brachets\n", - "brachia\n", - "brachial\n", - "brachials\n", - "brachium\n", - "bracing\n", - "bracings\n", - "bracken\n", - "brackens\n", - "bracket\n", - "bracketed\n", - "bracketing\n", - "brackets\n", - "brackish\n", - "bract\n", - "bracteal\n", - "bracted\n", - "bractlet\n", - "bractlets\n", - "bracts\n", - "brad\n", - "bradawl\n", - "bradawls\n", - "bradded\n", - "bradding\n", - "bradoon\n", - "bradoons\n", - "brads\n", - "brae\n", - "braes\n", - "brag\n", - "braggart\n", - "braggarts\n", - "bragged\n", - "bragger\n", - "braggers\n", - "braggest\n", - "braggier\n", - "braggiest\n", - "bragging\n", - "braggy\n", - "brags\n", - "brahma\n", - "brahmas\n", - "braid\n", - "braided\n", - "braider\n", - "braiders\n", - "braiding\n", - "braidings\n", - "braids\n", - "brail\n", - "brailed\n", - "brailing\n", - "braille\n", - "brailled\n", - "brailles\n", - "brailling\n", - "brails\n", - "brain\n", - "brained\n", - "brainier\n", - "brainiest\n", - "brainily\n", - "braining\n", - "brainish\n", - "brainless\n", - "brainpan\n", - "brainpans\n", - "brains\n", - "brainstorm\n", - "brainstorms\n", - "brainy\n", - "braise\n", - "braised\n", - "braises\n", - "braising\n", - "braize\n", - "braizes\n", - "brake\n", - "brakeage\n", - "brakeages\n", - "braked\n", - "brakeman\n", - "brakemen\n", - "brakes\n", - "brakier\n", - "brakiest\n", - "braking\n", - "braky\n", - "bramble\n", - "brambled\n", - "brambles\n", - "bramblier\n", - "brambliest\n", - "brambling\n", - "brambly\n", - "bran\n", - "branch\n", - "branched\n", - "branches\n", - "branchia\n", - "branchiae\n", - "branchier\n", - "branchiest\n", - "branching\n", - "branchy\n", - "brand\n", - "branded\n", - "brander\n", - "branders\n", - "brandied\n", - "brandies\n", - "branding\n", - "brandish\n", - "brandished\n", - "brandishes\n", - "brandishing\n", - "brands\n", - "brandy\n", - "brandying\n", - "brank\n", - "branks\n", - "branned\n", - "branner\n", - "branners\n", - "brannier\n", - "branniest\n", - "branning\n", - "branny\n", - "brans\n", - "brant\n", - "brantail\n", - "brantails\n", - "brants\n", - "bras\n", - "brash\n", - "brasher\n", - "brashes\n", - "brashest\n", - "brashier\n", - "brashiest\n", - "brashly\n", - "brashy\n", - "brasier\n", - "brasiers\n", - "brasil\n", - "brasilin\n", - "brasilins\n", - "brasils\n", - "brass\n", - "brassage\n", - "brassages\n", - "brassard\n", - "brassards\n", - "brassart\n", - "brassarts\n", - "brasses\n", - "brassica\n", - "brassicas\n", - "brassie\n", - "brassier\n", - "brassiere\n", - "brassieres\n", - "brassies\n", - "brassiest\n", - "brassily\n", - "brassish\n", - "brassy\n", - "brat\n", - "brats\n", - "brattice\n", - "bratticed\n", - "brattices\n", - "bratticing\n", - "brattier\n", - "brattiest\n", - "brattish\n", - "brattle\n", - "brattled\n", - "brattles\n", - "brattling\n", - "bratty\n", - "braunite\n", - "braunites\n", - "brava\n", - "bravado\n", - "bravadoes\n", - "bravados\n", - "bravas\n", - "brave\n", - "braved\n", - "bravely\n", - "braver\n", - "braveries\n", - "bravers\n", - "bravery\n", - "braves\n", - "bravest\n", - "braving\n", - "bravo\n", - "bravoed\n", - "bravoes\n", - "bravoing\n", - "bravos\n", - "bravura\n", - "bravuras\n", - "bravure\n", - "braw\n", - "brawer\n", - "brawest\n", - "brawl\n", - "brawled\n", - "brawler\n", - "brawlers\n", - "brawlie\n", - "brawlier\n", - "brawliest\n", - "brawling\n", - "brawls\n", - "brawly\n", - "brawn\n", - "brawnier\n", - "brawniest\n", - "brawnily\n", - "brawns\n", - "brawny\n", - "braws\n", - "braxies\n", - "braxy\n", - "bray\n", - "brayed\n", - "brayer\n", - "brayers\n", - "braying\n", - "brays\n", - "braza\n", - "brazas\n", - "braze\n", - "brazed\n", - "brazen\n", - "brazened\n", - "brazening\n", - "brazenly\n", - "brazenness\n", - "brazennesses\n", - "brazens\n", - "brazer\n", - "brazers\n", - "brazes\n", - "brazier\n", - "braziers\n", - "brazil\n", - "brazilin\n", - "brazilins\n", - "brazils\n", - "brazing\n", - "breach\n", - "breached\n", - "breacher\n", - "breachers\n", - "breaches\n", - "breaching\n", - "bread\n", - "breaded\n", - "breading\n", - "breadnut\n", - "breadnuts\n", - "breads\n", - "breadth\n", - "breadths\n", - "breadwinner\n", - "breadwinners\n", - "break\n", - "breakable\n", - "breakage\n", - "breakages\n", - "breakdown\n", - "breakdowns\n", - "breaker\n", - "breakers\n", - "breakfast\n", - "breakfasted\n", - "breakfasting\n", - "breakfasts\n", - "breaking\n", - "breakings\n", - "breakout\n", - "breakouts\n", - "breaks\n", - "breakthrough\n", - "breakthroughs\n", - "breakup\n", - "breakups\n", - "bream\n", - "breamed\n", - "breaming\n", - "breams\n", - "breast\n", - "breastbone\n", - "breastbones\n", - "breasted\n", - "breasting\n", - "breasts\n", - "breath\n", - "breathe\n", - "breathed\n", - "breather\n", - "breathers\n", - "breathes\n", - "breathier\n", - "breathiest\n", - "breathing\n", - "breathless\n", - "breathlessly\n", - "breaths\n", - "breathtaking\n", - "breathy\n", - "breccia\n", - "breccial\n", - "breccias\n", - "brecham\n", - "brechams\n", - "brechan\n", - "brechans\n", - "bred\n", - "brede\n", - "bredes\n", - "bree\n", - "breech\n", - "breeched\n", - "breeches\n", - "breeching\n", - "breed\n", - "breeder\n", - "breeders\n", - "breeding\n", - "breedings\n", - "breeds\n", - "breeks\n", - "brees\n", - "breeze\n", - "breezed\n", - "breezes\n", - "breezier\n", - "breeziest\n", - "breezily\n", - "breezing\n", - "breezy\n", - "bregma\n", - "bregmata\n", - "bregmate\n", - "brent\n", - "brents\n", - "brethren\n", - "breve\n", - "breves\n", - "brevet\n", - "brevetcies\n", - "brevetcy\n", - "breveted\n", - "breveting\n", - "brevets\n", - "brevetted\n", - "brevetting\n", - "breviaries\n", - "breviary\n", - "brevier\n", - "breviers\n", - "brevities\n", - "brevity\n", - "brew\n", - "brewage\n", - "brewages\n", - "brewed\n", - "brewer\n", - "breweries\n", - "brewers\n", - "brewery\n", - "brewing\n", - "brewings\n", - "brewis\n", - "brewises\n", - "brews\n", - "briar\n", - "briard\n", - "briards\n", - "briars\n", - "briary\n", - "bribable\n", - "bribe\n", - "bribed\n", - "briber\n", - "briberies\n", - "bribers\n", - "bribery\n", - "bribes\n", - "bribing\n", - "brick\n", - "brickbat\n", - "brickbats\n", - "bricked\n", - "brickier\n", - "brickiest\n", - "bricking\n", - "bricklayer\n", - "bricklayers\n", - "bricklaying\n", - "bricklayings\n", - "brickle\n", - "bricks\n", - "bricky\n", - "bricole\n", - "bricoles\n", - "bridal\n", - "bridally\n", - "bridals\n", - "bride\n", - "bridegroom\n", - "bridegrooms\n", - "brides\n", - "bridesmaid\n", - "bridesmaids\n", - "bridge\n", - "bridgeable\n", - "bridgeables\n", - "bridged\n", - "bridges\n", - "bridging\n", - "bridgings\n", - "bridle\n", - "bridled\n", - "bridler\n", - "bridlers\n", - "bridles\n", - "bridling\n", - "bridoon\n", - "bridoons\n", - "brie\n", - "brief\n", - "briefcase\n", - "briefcases\n", - "briefed\n", - "briefer\n", - "briefers\n", - "briefest\n", - "briefing\n", - "briefings\n", - "briefly\n", - "briefness\n", - "briefnesses\n", - "briefs\n", - "brier\n", - "briers\n", - "briery\n", - "bries\n", - "brig\n", - "brigade\n", - "brigaded\n", - "brigades\n", - "brigadier\n", - "brigadiers\n", - "brigading\n", - "brigand\n", - "brigands\n", - "bright\n", - "brighten\n", - "brightened\n", - "brightener\n", - "brighteners\n", - "brightening\n", - "brightens\n", - "brighter\n", - "brightest\n", - "brightly\n", - "brightness\n", - "brightnesses\n", - "brights\n", - "brigs\n", - "brill\n", - "brilliance\n", - "brilliances\n", - "brilliancies\n", - "brilliancy\n", - "brilliant\n", - "brilliantly\n", - "brills\n", - "brim\n", - "brimful\n", - "brimfull\n", - "brimless\n", - "brimmed\n", - "brimmer\n", - "brimmers\n", - "brimming\n", - "brims\n", - "brimstone\n", - "brimstones\n", - "brin\n", - "brinded\n", - "brindle\n", - "brindled\n", - "brindles\n", - "brine\n", - "brined\n", - "briner\n", - "briners\n", - "brines\n", - "bring\n", - "bringer\n", - "bringers\n", - "bringing\n", - "brings\n", - "brinier\n", - "brinies\n", - "briniest\n", - "brininess\n", - "brininesses\n", - "brining\n", - "brinish\n", - "brink\n", - "brinks\n", - "brins\n", - "briny\n", - "brio\n", - "brioche\n", - "brioches\n", - "brionies\n", - "briony\n", - "brios\n", - "briquet\n", - "briquets\n", - "briquetted\n", - "briquetting\n", - "brisance\n", - "brisances\n", - "brisant\n", - "brisk\n", - "brisked\n", - "brisker\n", - "briskest\n", - "brisket\n", - "briskets\n", - "brisking\n", - "briskly\n", - "briskness\n", - "brisknesses\n", - "brisks\n", - "brisling\n", - "brislings\n", - "bristle\n", - "bristled\n", - "bristles\n", - "bristlier\n", - "bristliest\n", - "bristling\n", - "bristly\n", - "bristol\n", - "bristols\n", - "brit\n", - "britches\n", - "brits\n", - "britska\n", - "britskas\n", - "britt\n", - "brittle\n", - "brittled\n", - "brittler\n", - "brittles\n", - "brittlest\n", - "brittling\n", - "britts\n", - "britzka\n", - "britzkas\n", - "britzska\n", - "britzskas\n", - "broach\n", - "broached\n", - "broacher\n", - "broachers\n", - "broaches\n", - "broaching\n", - "broad\n", - "broadax\n", - "broadaxe\n", - "broadaxes\n", - "broadcast\n", - "broadcasted\n", - "broadcaster\n", - "broadcasters\n", - "broadcasting\n", - "broadcasts\n", - "broadcloth\n", - "broadcloths\n", - "broaden\n", - "broadened\n", - "broadening\n", - "broadens\n", - "broader\n", - "broadest\n", - "broadish\n", - "broadloom\n", - "broadlooms\n", - "broadly\n", - "broadness\n", - "broadnesses\n", - "broads\n", - "broadside\n", - "broadsides\n", - "brocade\n", - "brocaded\n", - "brocades\n", - "brocading\n", - "brocatel\n", - "brocatels\n", - "broccoli\n", - "broccolis\n", - "broche\n", - "brochure\n", - "brochures\n", - "brock\n", - "brockage\n", - "brockages\n", - "brocket\n", - "brockets\n", - "brocks\n", - "brocoli\n", - "brocolis\n", - "brogan\n", - "brogans\n", - "brogue\n", - "brogueries\n", - "broguery\n", - "brogues\n", - "broguish\n", - "broider\n", - "broidered\n", - "broideries\n", - "broidering\n", - "broiders\n", - "broidery\n", - "broil\n", - "broiled\n", - "broiler\n", - "broilers\n", - "broiling\n", - "broils\n", - "brokage\n", - "brokages\n", - "broke\n", - "broken\n", - "brokenhearted\n", - "brokenly\n", - "broker\n", - "brokerage\n", - "brokerages\n", - "brokers\n", - "brollies\n", - "brolly\n", - "bromal\n", - "bromals\n", - "bromate\n", - "bromated\n", - "bromates\n", - "bromating\n", - "brome\n", - "bromelin\n", - "bromelins\n", - "bromes\n", - "bromic\n", - "bromid\n", - "bromide\n", - "bromides\n", - "bromidic\n", - "bromids\n", - "bromin\n", - "bromine\n", - "bromines\n", - "bromins\n", - "bromism\n", - "bromisms\n", - "bromo\n", - "bromos\n", - "bronc\n", - "bronchi\n", - "bronchia\n", - "bronchial\n", - "bronchitis\n", - "broncho\n", - "bronchos\n", - "bronchospasm\n", - "bronchus\n", - "bronco\n", - "broncos\n", - "broncs\n", - "bronze\n", - "bronzed\n", - "bronzer\n", - "bronzers\n", - "bronzes\n", - "bronzier\n", - "bronziest\n", - "bronzing\n", - "bronzings\n", - "bronzy\n", - "broo\n", - "brooch\n", - "brooches\n", - "brood\n", - "brooded\n", - "brooder\n", - "brooders\n", - "broodier\n", - "broodiest\n", - "brooding\n", - "broods\n", - "broody\n", - "brook\n", - "brooked\n", - "brooking\n", - "brookite\n", - "brookites\n", - "brooklet\n", - "brooklets\n", - "brookline\n", - "brooks\n", - "broom\n", - "broomed\n", - "broomier\n", - "broomiest\n", - "brooming\n", - "brooms\n", - "broomstick\n", - "broomsticks\n", - "broomy\n", - "broos\n", - "brose\n", - "broses\n", - "brosy\n", - "broth\n", - "brothel\n", - "brothels\n", - "brother\n", - "brothered\n", - "brotherhood\n", - "brotherhoods\n", - "brothering\n", - "brotherliness\n", - "brotherlinesses\n", - "brotherly\n", - "brothers\n", - "broths\n", - "brothy\n", - "brougham\n", - "broughams\n", - "brought\n", - "brouhaha\n", - "brouhahas\n", - "brow\n", - "browbeat\n", - "browbeaten\n", - "browbeating\n", - "browbeats\n", - "browless\n", - "brown\n", - "browned\n", - "browner\n", - "brownest\n", - "brownie\n", - "brownier\n", - "brownies\n", - "browniest\n", - "browning\n", - "brownish\n", - "brownout\n", - "brownouts\n", - "browns\n", - "browny\n", - "brows\n", - "browse\n", - "browsed\n", - "browser\n", - "browsers\n", - "browses\n", - "browsing\n", - "brucella\n", - "brucellae\n", - "brucellas\n", - "brucin\n", - "brucine\n", - "brucines\n", - "brucins\n", - "brugh\n", - "brughs\n", - "bruin\n", - "bruins\n", - "bruise\n", - "bruised\n", - "bruiser\n", - "bruisers\n", - "bruises\n", - "bruising\n", - "bruit\n", - "bruited\n", - "bruiter\n", - "bruiters\n", - "bruiting\n", - "bruits\n", - "brulot\n", - "brulots\n", - "brulyie\n", - "brulyies\n", - "brulzie\n", - "brulzies\n", - "brumal\n", - "brumbies\n", - "brumby\n", - "brume\n", - "brumes\n", - "brumous\n", - "brunch\n", - "brunched\n", - "brunches\n", - "brunching\n", - "brunet\n", - "brunets\n", - "brunette\n", - "brunettes\n", - "brunizem\n", - "brunizems\n", - "brunt\n", - "brunts\n", - "brush\n", - "brushed\n", - "brusher\n", - "brushers\n", - "brushes\n", - "brushier\n", - "brushiest\n", - "brushing\n", - "brushoff\n", - "brushoffs\n", - "brushup\n", - "brushups\n", - "brushy\n", - "brusk\n", - "brusker\n", - "bruskest\n", - "brusque\n", - "brusquely\n", - "brusquer\n", - "brusquest\n", - "brut\n", - "brutal\n", - "brutalities\n", - "brutality\n", - "brutalize\n", - "brutalized\n", - "brutalizes\n", - "brutalizing\n", - "brutally\n", - "brute\n", - "bruted\n", - "brutely\n", - "brutes\n", - "brutified\n", - "brutifies\n", - "brutify\n", - "brutifying\n", - "bruting\n", - "brutish\n", - "brutism\n", - "brutisms\n", - "bruxism\n", - "bruxisms\n", - "bryologies\n", - "bryology\n", - "bryonies\n", - "bryony\n", - "bryozoan\n", - "bryozoans\n", - "bub\n", - "bubal\n", - "bubale\n", - "bubales\n", - "bubaline\n", - "bubalis\n", - "bubalises\n", - "bubals\n", - "bubbies\n", - "bubble\n", - "bubbled\n", - "bubbler\n", - "bubblers\n", - "bubbles\n", - "bubblier\n", - "bubblies\n", - "bubbliest\n", - "bubbling\n", - "bubbly\n", - "bubby\n", - "bubinga\n", - "bubingas\n", - "bubo\n", - "buboed\n", - "buboes\n", - "bubonic\n", - "bubs\n", - "buccal\n", - "buccally\n", - "buck\n", - "buckaroo\n", - "buckaroos\n", - "buckayro\n", - "buckayros\n", - "buckbean\n", - "buckbeans\n", - "bucked\n", - "buckeen\n", - "buckeens\n", - "bucker\n", - "buckeroo\n", - "buckeroos\n", - "buckers\n", - "bucket\n", - "bucketed\n", - "bucketful\n", - "bucketfuls\n", - "bucketing\n", - "buckets\n", - "buckeye\n", - "buckeyes\n", - "bucking\n", - "buckish\n", - "buckle\n", - "buckled\n", - "buckler\n", - "bucklered\n", - "bucklering\n", - "bucklers\n", - "buckles\n", - "buckling\n", - "bucko\n", - "buckoes\n", - "buckra\n", - "buckram\n", - "buckramed\n", - "buckraming\n", - "buckrams\n", - "buckras\n", - "bucks\n", - "bucksaw\n", - "bucksaws\n", - "buckshee\n", - "buckshees\n", - "buckshot\n", - "buckshots\n", - "buckskin\n", - "buckskins\n", - "bucktail\n", - "bucktails\n", - "bucktooth\n", - "bucktooths\n", - "buckwheat\n", - "buckwheats\n", - "bucolic\n", - "bucolics\n", - "bud\n", - "budded\n", - "budder\n", - "budders\n", - "buddies\n", - "budding\n", - "buddle\n", - "buddleia\n", - "buddleias\n", - "buddles\n", - "buddy\n", - "budge\n", - "budged\n", - "budger\n", - "budgers\n", - "budges\n", - "budget\n", - "budgetary\n", - "budgeted\n", - "budgeter\n", - "budgeters\n", - "budgeting\n", - "budgets\n", - "budgie\n", - "budgies\n", - "budging\n", - "budless\n", - "budlike\n", - "buds\n", - "buff\n", - "buffable\n", - "buffalo\n", - "buffaloed\n", - "buffaloes\n", - "buffaloing\n", - "buffalos\n", - "buffed\n", - "buffer\n", - "buffered\n", - "buffering\n", - "buffers\n", - "buffet\n", - "buffeted\n", - "buffeter\n", - "buffeters\n", - "buffeting\n", - "buffets\n", - "buffi\n", - "buffier\n", - "buffiest\n", - "buffing\n", - "buffo\n", - "buffoon\n", - "buffoons\n", - "buffos\n", - "buffs\n", - "buffy\n", - "bug\n", - "bugaboo\n", - "bugaboos\n", - "bugbane\n", - "bugbanes\n", - "bugbear\n", - "bugbears\n", - "bugeye\n", - "bugeyes\n", - "bugged\n", - "bugger\n", - "buggered\n", - "buggeries\n", - "buggering\n", - "buggers\n", - "buggery\n", - "buggier\n", - "buggies\n", - "buggiest\n", - "bugging\n", - "buggy\n", - "bughouse\n", - "bughouses\n", - "bugle\n", - "bugled\n", - "bugler\n", - "buglers\n", - "bugles\n", - "bugling\n", - "bugloss\n", - "buglosses\n", - "bugs\n", - "bugseed\n", - "bugseeds\n", - "bugsha\n", - "bugshas\n", - "buhl\n", - "buhls\n", - "buhlwork\n", - "buhlworks\n", - "buhr\n", - "buhrs\n", - "build\n", - "builded\n", - "builder\n", - "builders\n", - "building\n", - "buildings\n", - "builds\n", - "buildup\n", - "buildups\n", - "built\n", - "buirdly\n", - "bulb\n", - "bulbar\n", - "bulbed\n", - "bulbel\n", - "bulbels\n", - "bulbil\n", - "bulbils\n", - "bulbous\n", - "bulbs\n", - "bulbul\n", - "bulbuls\n", - "bulge\n", - "bulged\n", - "bulger\n", - "bulgers\n", - "bulges\n", - "bulgier\n", - "bulgiest\n", - "bulging\n", - "bulgur\n", - "bulgurs\n", - "bulgy\n", - "bulimia\n", - "bulimiac\n", - "bulimias\n", - "bulimic\n", - "bulk\n", - "bulkage\n", - "bulkages\n", - "bulked\n", - "bulkhead\n", - "bulkheads\n", - "bulkier\n", - "bulkiest\n", - "bulkily\n", - "bulking\n", - "bulks\n", - "bulky\n", - "bull\n", - "bulla\n", - "bullace\n", - "bullaces\n", - "bullae\n", - "bullate\n", - "bullbat\n", - "bullbats\n", - "bulldog\n", - "bulldogged\n", - "bulldogging\n", - "bulldogs\n", - "bulldoze\n", - "bulldozed\n", - "bulldozer\n", - "bulldozers\n", - "bulldozes\n", - "bulldozing\n", - "bulled\n", - "bullet\n", - "bulleted\n", - "bulletin\n", - "bulletined\n", - "bulleting\n", - "bulletining\n", - "bulletins\n", - "bulletproof\n", - "bulletproofs\n", - "bullets\n", - "bullfight\n", - "bullfighter\n", - "bullfighters\n", - "bullfights\n", - "bullfinch\n", - "bullfinches\n", - "bullfrog\n", - "bullfrogs\n", - "bullhead\n", - "bullheaded\n", - "bullheads\n", - "bullhorn\n", - "bullhorns\n", - "bullied\n", - "bullier\n", - "bullies\n", - "bulliest\n", - "bulling\n", - "bullion\n", - "bullions\n", - "bullish\n", - "bullneck\n", - "bullnecks\n", - "bullnose\n", - "bullnoses\n", - "bullock\n", - "bullocks\n", - "bullocky\n", - "bullous\n", - "bullpen\n", - "bullpens\n", - "bullpout\n", - "bullpouts\n", - "bullring\n", - "bullrings\n", - "bullrush\n", - "bullrushes\n", - "bulls\n", - "bullweed\n", - "bullweeds\n", - "bullwhip\n", - "bullwhipped\n", - "bullwhipping\n", - "bullwhips\n", - "bully\n", - "bullyboy\n", - "bullyboys\n", - "bullying\n", - "bullyrag\n", - "bullyragged\n", - "bullyragging\n", - "bullyrags\n", - "bulrush\n", - "bulrushes\n", - "bulwark\n", - "bulwarked\n", - "bulwarking\n", - "bulwarks\n", - "bum\n", - "bumble\n", - "bumblebee\n", - "bumblebees\n", - "bumbled\n", - "bumbler\n", - "bumblers\n", - "bumbles\n", - "bumbling\n", - "bumblings\n", - "bumboat\n", - "bumboats\n", - "bumf\n", - "bumfs\n", - "bumkin\n", - "bumkins\n", - "bummed\n", - "bummer\n", - "bummers\n", - "bumming\n", - "bump\n", - "bumped\n", - "bumper\n", - "bumpered\n", - "bumpering\n", - "bumpers\n", - "bumpier\n", - "bumpiest\n", - "bumpily\n", - "bumping\n", - "bumpkin\n", - "bumpkins\n", - "bumps\n", - "bumpy\n", - "bums\n", - "bun\n", - "bunch\n", - "bunched\n", - "bunches\n", - "bunchier\n", - "bunchiest\n", - "bunchily\n", - "bunching\n", - "bunchy\n", - "bunco\n", - "buncoed\n", - "buncoing\n", - "buncombe\n", - "buncombes\n", - "buncos\n", - "bund\n", - "bundist\n", - "bundists\n", - "bundle\n", - "bundled\n", - "bundler\n", - "bundlers\n", - "bundles\n", - "bundling\n", - "bundlings\n", - "bunds\n", - "bung\n", - "bungalow\n", - "bungalows\n", - "bunged\n", - "bunghole\n", - "bungholes\n", - "bunging\n", - "bungle\n", - "bungled\n", - "bungler\n", - "bunglers\n", - "bungles\n", - "bungling\n", - "bunglings\n", - "bungs\n", - "bunion\n", - "bunions\n", - "bunk\n", - "bunked\n", - "bunker\n", - "bunkered\n", - "bunkering\n", - "bunkers\n", - "bunking\n", - "bunkmate\n", - "bunkmates\n", - "bunko\n", - "bunkoed\n", - "bunkoing\n", - "bunkos\n", - "bunks\n", - "bunkum\n", - "bunkums\n", - "bunky\n", - "bunn\n", - "bunnies\n", - "bunns\n", - "bunny\n", - "buns\n", - "bunt\n", - "bunted\n", - "bunter\n", - "bunters\n", - "bunting\n", - "buntings\n", - "buntline\n", - "buntlines\n", - "bunts\n", - "bunya\n", - "bunyas\n", - "buoy\n", - "buoyage\n", - "buoyages\n", - "buoyance\n", - "buoyances\n", - "buoyancies\n", - "buoyancy\n", - "buoyant\n", - "buoyed\n", - "buoying\n", - "buoys\n", - "buqsha\n", - "buqshas\n", - "bur\n", - "bura\n", - "buran\n", - "burans\n", - "buras\n", - "burble\n", - "burbled\n", - "burbler\n", - "burblers\n", - "burbles\n", - "burblier\n", - "burbliest\n", - "burbling\n", - "burbly\n", - "burbot\n", - "burbots\n", - "burd\n", - "burden\n", - "burdened\n", - "burdener\n", - "burdeners\n", - "burdening\n", - "burdens\n", - "burdensome\n", - "burdie\n", - "burdies\n", - "burdock\n", - "burdocks\n", - "burds\n", - "bureau\n", - "bureaucracies\n", - "bureaucracy\n", - "bureaucrat\n", - "bureaucratic\n", - "bureaucrats\n", - "bureaus\n", - "bureaux\n", - "buret\n", - "burets\n", - "burette\n", - "burettes\n", - "burg\n", - "burgage\n", - "burgages\n", - "burgee\n", - "burgees\n", - "burgeon\n", - "burgeoned\n", - "burgeoning\n", - "burgeons\n", - "burger\n", - "burgers\n", - "burgess\n", - "burgesses\n", - "burgh\n", - "burghal\n", - "burgher\n", - "burghers\n", - "burghs\n", - "burglar\n", - "burglaries\n", - "burglarize\n", - "burglarized\n", - "burglarizes\n", - "burglarizing\n", - "burglars\n", - "burglary\n", - "burgle\n", - "burgled\n", - "burgles\n", - "burgling\n", - "burgonet\n", - "burgonets\n", - "burgoo\n", - "burgoos\n", - "burgout\n", - "burgouts\n", - "burgrave\n", - "burgraves\n", - "burgs\n", - "burgundies\n", - "burgundy\n", - "burial\n", - "burials\n", - "buried\n", - "burier\n", - "buriers\n", - "buries\n", - "burin\n", - "burins\n", - "burke\n", - "burked\n", - "burker\n", - "burkers\n", - "burkes\n", - "burking\n", - "burkite\n", - "burkites\n", - "burl\n", - "burlap\n", - "burlaps\n", - "burled\n", - "burler\n", - "burlers\n", - "burlesk\n", - "burlesks\n", - "burlesque\n", - "burlesqued\n", - "burlesques\n", - "burlesquing\n", - "burley\n", - "burleys\n", - "burlier\n", - "burliest\n", - "burlily\n", - "burling\n", - "burls\n", - "burly\n", - "burn\n", - "burnable\n", - "burned\n", - "burner\n", - "burners\n", - "burnet\n", - "burnets\n", - "burnie\n", - "burnies\n", - "burning\n", - "burnings\n", - "burnish\n", - "burnished\n", - "burnishes\n", - "burnishing\n", - "burnoose\n", - "burnooses\n", - "burnous\n", - "burnouses\n", - "burnout\n", - "burnouts\n", - "burns\n", - "burnt\n", - "burp\n", - "burped\n", - "burping\n", - "burps\n", - "burr\n", - "burred\n", - "burrer\n", - "burrers\n", - "burrier\n", - "burriest\n", - "burring\n", - "burro\n", - "burros\n", - "burrow\n", - "burrowed\n", - "burrower\n", - "burrowers\n", - "burrowing\n", - "burrows\n", - "burrs\n", - "burry\n", - "burs\n", - "bursa\n", - "bursae\n", - "bursal\n", - "bursar\n", - "bursaries\n", - "bursars\n", - "bursary\n", - "bursas\n", - "bursate\n", - "burse\n", - "burseed\n", - "burseeds\n", - "burses\n", - "bursitis\n", - "bursitises\n", - "burst\n", - "bursted\n", - "burster\n", - "bursters\n", - "bursting\n", - "burstone\n", - "burstones\n", - "bursts\n", - "burthen\n", - "burthened\n", - "burthening\n", - "burthens\n", - "burton\n", - "burtons\n", - "burweed\n", - "burweeds\n", - "bury\n", - "burying\n", - "bus\n", - "busbies\n", - "busboy\n", - "busboys\n", - "busby\n", - "bused\n", - "buses\n", - "bush\n", - "bushbuck\n", - "bushbucks\n", - "bushed\n", - "bushel\n", - "busheled\n", - "busheler\n", - "bushelers\n", - "busheling\n", - "bushelled\n", - "bushelling\n", - "bushels\n", - "busher\n", - "bushers\n", - "bushes\n", - "bushfire\n", - "bushfires\n", - "bushgoat\n", - "bushgoats\n", - "bushido\n", - "bushidos\n", - "bushier\n", - "bushiest\n", - "bushily\n", - "bushing\n", - "bushings\n", - "bushland\n", - "bushlands\n", - "bushless\n", - "bushlike\n", - "bushman\n", - "bushmen\n", - "bushtit\n", - "bushtits\n", - "bushy\n", - "busied\n", - "busier\n", - "busies\n", - "busiest\n", - "busily\n", - "business\n", - "businesses\n", - "businessman\n", - "businessmen\n", - "businesswoman\n", - "businesswomen\n", - "busing\n", - "busings\n", - "busk\n", - "busked\n", - "busker\n", - "buskers\n", - "buskin\n", - "buskined\n", - "busking\n", - "buskins\n", - "busks\n", - "busman\n", - "busmen\n", - "buss\n", - "bussed\n", - "busses\n", - "bussing\n", - "bussings\n", - "bust\n", - "bustard\n", - "bustards\n", - "busted\n", - "buster\n", - "busters\n", - "bustic\n", - "bustics\n", - "bustier\n", - "bustiest\n", - "busting\n", - "bustle\n", - "bustled\n", - "bustles\n", - "bustling\n", - "busts\n", - "busty\n", - "busulfan\n", - "busulfans\n", - "busy\n", - "busybodies\n", - "busybody\n", - "busying\n", - "busyness\n", - "busynesses\n", - "busywork\n", - "busyworks\n", - "but\n", - "butane\n", - "butanes\n", - "butanol\n", - "butanols\n", - "butanone\n", - "butanones\n", - "butch\n", - "butcher\n", - "butchered\n", - "butcheries\n", - "butchering\n", - "butchers\n", - "butchery\n", - "butches\n", - "butene\n", - "butenes\n", - "buteo\n", - "buteos\n", - "butler\n", - "butleries\n", - "butlers\n", - "butlery\n", - "buts\n", - "butt\n", - "buttals\n", - "butte\n", - "butted\n", - "butter\n", - "buttercup\n", - "buttercups\n", - "buttered\n", - "butterfat\n", - "butterfats\n", - "butterflies\n", - "butterfly\n", - "butterier\n", - "butteries\n", - "butteriest\n", - "buttering\n", - "buttermilk\n", - "butternut\n", - "butternuts\n", - "butters\n", - "butterscotch\n", - "butterscotches\n", - "buttery\n", - "buttes\n", - "butties\n", - "butting\n", - "buttock\n", - "buttocks\n", - "button\n", - "buttoned\n", - "buttoner\n", - "buttoners\n", - "buttonhole\n", - "buttonholes\n", - "buttoning\n", - "buttons\n", - "buttony\n", - "buttress\n", - "buttressed\n", - "buttresses\n", - "buttressing\n", - "butts\n", - "butty\n", - "butut\n", - "bututs\n", - "butyl\n", - "butylate\n", - "butylated\n", - "butylates\n", - "butylating\n", - "butylene\n", - "butylenes\n", - "butyls\n", - "butyral\n", - "butyrals\n", - "butyrate\n", - "butyrates\n", - "butyric\n", - "butyrin\n", - "butyrins\n", - "butyrous\n", - "butyryl\n", - "butyryls\n", - "buxom\n", - "buxomer\n", - "buxomest\n", - "buxomly\n", - "buy\n", - "buyable\n", - "buyer\n", - "buyers\n", - "buying\n", - "buys\n", - "buzz\n", - "buzzard\n", - "buzzards\n", - "buzzed\n", - "buzzer\n", - "buzzers\n", - "buzzes\n", - "buzzing\n", - "buzzwig\n", - "buzzwigs\n", - "buzzword\n", - "buzzwords\n", - "buzzy\n", - "bwana\n", - "bwanas\n", - "by\n", - "bye\n", - "byelaw\n", - "byelaws\n", - "byes\n", - "bygone\n", - "bygones\n", - "bylaw\n", - "bylaws\n", - "byline\n", - "bylined\n", - "byliner\n", - "byliners\n", - "bylines\n", - "bylining\n", - "byname\n", - "bynames\n", - "bypass\n", - "bypassed\n", - "bypasses\n", - "bypassing\n", - "bypast\n", - "bypath\n", - "bypaths\n", - "byplay\n", - "byplays\n", - "byre\n", - "byres\n", - "byrl\n", - "byrled\n", - "byrling\n", - "byrls\n", - "byrnie\n", - "byrnies\n", - "byroad\n", - "byroads\n", - "bys\n", - "byssi\n", - "byssus\n", - "byssuses\n", - "bystander\n", - "bystanders\n", - "bystreet\n", - "bystreets\n", - "bytalk\n", - "bytalks\n", - "byte\n", - "bytes\n", - "byway\n", - "byways\n", - "byword\n", - "bywords\n", - "bywork\n", - "byworks\n", - "byzant\n", - "byzants\n", - "cab\n", - "cabal\n", - "cabala\n", - "cabalas\n", - "cabalism\n", - "cabalisms\n", - "cabalist\n", - "cabalists\n", - "caballed\n", - "caballing\n", - "cabals\n", - "cabana\n", - "cabanas\n", - "cabaret\n", - "cabarets\n", - "cabbage\n", - "cabbaged\n", - "cabbages\n", - "cabbaging\n", - "cabbala\n", - "cabbalah\n", - "cabbalahs\n", - "cabbalas\n", - "cabbie\n", - "cabbies\n", - "cabby\n", - "caber\n", - "cabers\n", - "cabestro\n", - "cabestros\n", - "cabezon\n", - "cabezone\n", - "cabezones\n", - "cabezons\n", - "cabildo\n", - "cabildos\n", - "cabin\n", - "cabined\n", - "cabinet\n", - "cabinetmaker\n", - "cabinetmakers\n", - "cabinetmaking\n", - "cabinetmakings\n", - "cabinets\n", - "cabinetwork\n", - "cabinetworks\n", - "cabining\n", - "cabins\n", - "cable\n", - "cabled\n", - "cablegram\n", - "cablegrams\n", - "cables\n", - "cablet\n", - "cablets\n", - "cableway\n", - "cableways\n", - "cabling\n", - "cabman\n", - "cabmen\n", - "cabob\n", - "cabobs\n", - "caboched\n", - "cabochon\n", - "cabochons\n", - "caboodle\n", - "caboodles\n", - "caboose\n", - "cabooses\n", - "caboshed\n", - "cabotage\n", - "cabotages\n", - "cabresta\n", - "cabrestas\n", - "cabresto\n", - "cabrestos\n", - "cabretta\n", - "cabrettas\n", - "cabrilla\n", - "cabrillas\n", - "cabriole\n", - "cabrioles\n", - "cabs\n", - "cabstand\n", - "cabstands\n", - "cacao\n", - "cacaos\n", - "cachalot\n", - "cachalots\n", - "cache\n", - "cached\n", - "cachepot\n", - "cachepots\n", - "caches\n", - "cachet\n", - "cachets\n", - "cachexia\n", - "cachexias\n", - "cachexic\n", - "cachexies\n", - "cachexy\n", - "caching\n", - "cachou\n", - "cachous\n", - "cachucha\n", - "cachuchas\n", - "cacique\n", - "caciques\n", - "cackle\n", - "cackled\n", - "cackler\n", - "cacklers\n", - "cackles\n", - "cackling\n", - "cacodyl\n", - "cacodyls\n", - "cacomixl\n", - "cacomixls\n", - "cacophonies\n", - "cacophonous\n", - "cacophony\n", - "cacti\n", - "cactoid\n", - "cactus\n", - "cactuses\n", - "cad\n", - "cadaster\n", - "cadasters\n", - "cadastre\n", - "cadastres\n", - "cadaver\n", - "cadavers\n", - "caddice\n", - "caddices\n", - "caddie\n", - "caddied\n", - "caddies\n", - "caddis\n", - "caddises\n", - "caddish\n", - "caddishly\n", - "caddishness\n", - "caddishnesses\n", - "caddy\n", - "caddying\n", - "cade\n", - "cadelle\n", - "cadelles\n", - "cadence\n", - "cadenced\n", - "cadences\n", - "cadencies\n", - "cadencing\n", - "cadency\n", - "cadent\n", - "cadenza\n", - "cadenzas\n", - "cades\n", - "cadet\n", - "cadets\n", - "cadge\n", - "cadged\n", - "cadger\n", - "cadgers\n", - "cadges\n", - "cadging\n", - "cadgy\n", - "cadi\n", - "cadis\n", - "cadmic\n", - "cadmium\n", - "cadmiums\n", - "cadre\n", - "cadres\n", - "cads\n", - "caducean\n", - "caducei\n", - "caduceus\n", - "caducities\n", - "caducity\n", - "caducous\n", - "caeca\n", - "caecal\n", - "caecally\n", - "caecum\n", - "caeoma\n", - "caeomas\n", - "caesium\n", - "caesiums\n", - "caestus\n", - "caestuses\n", - "caesura\n", - "caesurae\n", - "caesural\n", - "caesuras\n", - "caesuric\n", - "cafe\n", - "cafes\n", - "cafeteria\n", - "cafeterias\n", - "caffein\n", - "caffeine\n", - "caffeines\n", - "caffeins\n", - "caftan\n", - "caftans\n", - "cage\n", - "caged\n", - "cageling\n", - "cagelings\n", - "cager\n", - "cages\n", - "cagey\n", - "cagier\n", - "cagiest\n", - "cagily\n", - "caginess\n", - "caginesses\n", - "caging\n", - "cagy\n", - "cahier\n", - "cahiers\n", - "cahoot\n", - "cahoots\n", - "cahow\n", - "cahows\n", - "caid\n", - "caids\n", - "caiman\n", - "caimans\n", - "cain\n", - "cains\n", - "caique\n", - "caiques\n", - "caird\n", - "cairds\n", - "cairn\n", - "cairned\n", - "cairns\n", - "cairny\n", - "caisson\n", - "caissons\n", - "caitiff\n", - "caitiffs\n", - "cajaput\n", - "cajaputs\n", - "cajeput\n", - "cajeputs\n", - "cajole\n", - "cajoled\n", - "cajoler\n", - "cajoleries\n", - "cajolers\n", - "cajolery\n", - "cajoles\n", - "cajoling\n", - "cajon\n", - "cajones\n", - "cajuput\n", - "cajuputs\n", - "cake\n", - "caked\n", - "cakes\n", - "cakewalk\n", - "cakewalked\n", - "cakewalking\n", - "cakewalks\n", - "caking\n", - "calabash\n", - "calabashes\n", - "caladium\n", - "caladiums\n", - "calamar\n", - "calamaries\n", - "calamars\n", - "calamary\n", - "calami\n", - "calamine\n", - "calamined\n", - "calamines\n", - "calamining\n", - "calamint\n", - "calamints\n", - "calamite\n", - "calamites\n", - "calamities\n", - "calamitous\n", - "calamitously\n", - "calamitousness\n", - "calamitousnesses\n", - "calamity\n", - "calamus\n", - "calando\n", - "calash\n", - "calashes\n", - "calathi\n", - "calathos\n", - "calathus\n", - "calcanea\n", - "calcanei\n", - "calcar\n", - "calcaria\n", - "calcars\n", - "calceate\n", - "calces\n", - "calcic\n", - "calcific\n", - "calcification\n", - "calcifications\n", - "calcified\n", - "calcifies\n", - "calcify\n", - "calcifying\n", - "calcine\n", - "calcined\n", - "calcines\n", - "calcining\n", - "calcite\n", - "calcites\n", - "calcitic\n", - "calcium\n", - "calciums\n", - "calcspar\n", - "calcspars\n", - "calctufa\n", - "calctufas\n", - "calctuff\n", - "calctuffs\n", - "calculable\n", - "calculably\n", - "calculate\n", - "calculated\n", - "calculates\n", - "calculating\n", - "calculation\n", - "calculations\n", - "calculator\n", - "calculators\n", - "calculi\n", - "calculus\n", - "calculuses\n", - "caldera\n", - "calderas\n", - "caldron\n", - "caldrons\n", - "caleche\n", - "caleches\n", - "calendal\n", - "calendar\n", - "calendared\n", - "calendaring\n", - "calendars\n", - "calender\n", - "calendered\n", - "calendering\n", - "calenders\n", - "calends\n", - "calesa\n", - "calesas\n", - "calf\n", - "calflike\n", - "calfs\n", - "calfskin\n", - "calfskins\n", - "caliber\n", - "calibers\n", - "calibrate\n", - "calibrated\n", - "calibrates\n", - "calibrating\n", - "calibration\n", - "calibrations\n", - "calibrator\n", - "calibrators\n", - "calibre\n", - "calibred\n", - "calibres\n", - "calices\n", - "caliche\n", - "caliches\n", - "calicle\n", - "calicles\n", - "calico\n", - "calicoes\n", - "calicos\n", - "calif\n", - "califate\n", - "califates\n", - "california\n", - "califs\n", - "calipash\n", - "calipashes\n", - "calipee\n", - "calipees\n", - "caliper\n", - "calipered\n", - "calipering\n", - "calipers\n", - "caliph\n", - "caliphal\n", - "caliphate\n", - "caliphates\n", - "caliphs\n", - "calisaya\n", - "calisayas\n", - "calisthenic\n", - "calisthenics\n", - "calix\n", - "calk\n", - "calked\n", - "calker\n", - "calkers\n", - "calkin\n", - "calking\n", - "calkins\n", - "calks\n", - "call\n", - "calla\n", - "callable\n", - "callan\n", - "callans\n", - "callant\n", - "callants\n", - "callas\n", - "callback\n", - "callbacks\n", - "callboy\n", - "callboys\n", - "called\n", - "caller\n", - "callers\n", - "callet\n", - "callets\n", - "calli\n", - "calling\n", - "callings\n", - "calliope\n", - "calliopes\n", - "callipee\n", - "callipees\n", - "calliper\n", - "callipered\n", - "callipering\n", - "callipers\n", - "callose\n", - "calloses\n", - "callosities\n", - "callosity\n", - "callous\n", - "calloused\n", - "callouses\n", - "callousing\n", - "callously\n", - "callousness\n", - "callousnesses\n", - "callow\n", - "callower\n", - "callowest\n", - "callowness\n", - "callownesses\n", - "calls\n", - "callus\n", - "callused\n", - "calluses\n", - "callusing\n", - "calm\n", - "calmed\n", - "calmer\n", - "calmest\n", - "calming\n", - "calmly\n", - "calmness\n", - "calmnesses\n", - "calms\n", - "calomel\n", - "calomels\n", - "caloric\n", - "calorics\n", - "calorie\n", - "calories\n", - "calory\n", - "calotte\n", - "calottes\n", - "caloyer\n", - "caloyers\n", - "calpac\n", - "calpack\n", - "calpacks\n", - "calpacs\n", - "calque\n", - "calqued\n", - "calques\n", - "calquing\n", - "calthrop\n", - "calthrops\n", - "caltrap\n", - "caltraps\n", - "caltrop\n", - "caltrops\n", - "calumet\n", - "calumets\n", - "calumniate\n", - "calumniated\n", - "calumniates\n", - "calumniating\n", - "calumniation\n", - "calumniations\n", - "calumnies\n", - "calumnious\n", - "calumny\n", - "calutron\n", - "calutrons\n", - "calvados\n", - "calvadoses\n", - "calvaria\n", - "calvarias\n", - "calvaries\n", - "calvary\n", - "calve\n", - "calved\n", - "calves\n", - "calving\n", - "calx\n", - "calxes\n", - "calycate\n", - "calyceal\n", - "calyces\n", - "calycine\n", - "calycle\n", - "calycles\n", - "calyculi\n", - "calypso\n", - "calypsoes\n", - "calypsos\n", - "calypter\n", - "calypters\n", - "calyptra\n", - "calyptras\n", - "calyx\n", - "calyxes\n", - "cam\n", - "camail\n", - "camailed\n", - "camails\n", - "camaraderie\n", - "camaraderies\n", - "camas\n", - "camases\n", - "camass\n", - "camasses\n", - "camber\n", - "cambered\n", - "cambering\n", - "cambers\n", - "cambia\n", - "cambial\n", - "cambism\n", - "cambisms\n", - "cambist\n", - "cambists\n", - "cambium\n", - "cambiums\n", - "cambogia\n", - "cambogias\n", - "cambric\n", - "cambrics\n", - "cambridge\n", - "came\n", - "camel\n", - "cameleer\n", - "cameleers\n", - "camelia\n", - "camelias\n", - "camellia\n", - "camellias\n", - "camels\n", - "cameo\n", - "cameoed\n", - "cameoing\n", - "cameos\n", - "camera\n", - "camerae\n", - "cameral\n", - "cameraman\n", - "cameramen\n", - "cameras\n", - "cames\n", - "camion\n", - "camions\n", - "camisa\n", - "camisade\n", - "camisades\n", - "camisado\n", - "camisadoes\n", - "camisados\n", - "camisas\n", - "camise\n", - "camises\n", - "camisia\n", - "camisias\n", - "camisole\n", - "camisoles\n", - "camlet\n", - "camlets\n", - "camomile\n", - "camomiles\n", - "camorra\n", - "camorras\n", - "camouflage\n", - "camouflaged\n", - "camouflages\n", - "camouflaging\n", - "camp\n", - "campagna\n", - "campagne\n", - "campaign\n", - "campaigned\n", - "campaigner\n", - "campaigners\n", - "campaigning\n", - "campaigns\n", - "campanile\n", - "campaniles\n", - "campanili\n", - "camped\n", - "camper\n", - "campers\n", - "campfire\n", - "campfires\n", - "campground\n", - "campgrounds\n", - "camphene\n", - "camphenes\n", - "camphine\n", - "camphines\n", - "camphol\n", - "camphols\n", - "camphor\n", - "camphors\n", - "campi\n", - "campier\n", - "campiest\n", - "campily\n", - "camping\n", - "campings\n", - "campion\n", - "campions\n", - "campo\n", - "campong\n", - "campongs\n", - "camporee\n", - "camporees\n", - "campos\n", - "camps\n", - "campsite\n", - "campsites\n", - "campus\n", - "campuses\n", - "campy\n", - "cams\n", - "camshaft\n", - "camshafts\n", - "can\n", - "canaille\n", - "canailles\n", - "canakin\n", - "canakins\n", - "canal\n", - "canaled\n", - "canaling\n", - "canalise\n", - "canalised\n", - "canalises\n", - "canalising\n", - "canalize\n", - "canalized\n", - "canalizes\n", - "canalizing\n", - "canalled\n", - "canaller\n", - "canallers\n", - "canalling\n", - "canals\n", - "canape\n", - "canapes\n", - "canard\n", - "canards\n", - "canaries\n", - "canary\n", - "canasta\n", - "canastas\n", - "cancan\n", - "cancans\n", - "cancel\n", - "canceled\n", - "canceler\n", - "cancelers\n", - "canceling\n", - "cancellation\n", - "cancellations\n", - "cancelled\n", - "cancelling\n", - "cancels\n", - "cancer\n", - "cancerlog\n", - "cancerous\n", - "cancerously\n", - "cancers\n", - "cancha\n", - "canchas\n", - "cancroid\n", - "cancroids\n", - "candela\n", - "candelabra\n", - "candelabras\n", - "candelabrum\n", - "candelas\n", - "candent\n", - "candid\n", - "candida\n", - "candidacies\n", - "candidacy\n", - "candidas\n", - "candidate\n", - "candidates\n", - "candider\n", - "candidest\n", - "candidly\n", - "candidness\n", - "candidnesses\n", - "candids\n", - "candied\n", - "candies\n", - "candle\n", - "candled\n", - "candlelight\n", - "candlelights\n", - "candler\n", - "candlers\n", - "candles\n", - "candlestick\n", - "candlesticks\n", - "candling\n", - "candor\n", - "candors\n", - "candour\n", - "candours\n", - "candy\n", - "candying\n", - "cane\n", - "caned\n", - "canella\n", - "canellas\n", - "caner\n", - "caners\n", - "canes\n", - "caneware\n", - "canewares\n", - "canfield\n", - "canfields\n", - "canful\n", - "canfuls\n", - "cangue\n", - "cangues\n", - "canikin\n", - "canikins\n", - "canine\n", - "canines\n", - "caning\n", - "caninities\n", - "caninity\n", - "canister\n", - "canisters\n", - "canities\n", - "canker\n", - "cankered\n", - "cankering\n", - "cankerous\n", - "cankers\n", - "canna\n", - "cannabic\n", - "cannabin\n", - "cannabins\n", - "cannabis\n", - "cannabises\n", - "cannas\n", - "canned\n", - "cannel\n", - "cannelon\n", - "cannelons\n", - "cannels\n", - "canner\n", - "canneries\n", - "canners\n", - "cannery\n", - "cannibal\n", - "cannibalism\n", - "cannibalisms\n", - "cannibalistic\n", - "cannibalize\n", - "cannibalized\n", - "cannibalizes\n", - "cannibalizing\n", - "cannibals\n", - "cannie\n", - "cannier\n", - "canniest\n", - "cannikin\n", - "cannikins\n", - "cannily\n", - "canniness\n", - "canninesses\n", - "canning\n", - "cannings\n", - "cannon\n", - "cannonade\n", - "cannonaded\n", - "cannonades\n", - "cannonading\n", - "cannonball\n", - "cannonballs\n", - "cannoned\n", - "cannoneer\n", - "cannoneers\n", - "cannoning\n", - "cannonries\n", - "cannonry\n", - "cannons\n", - "cannot\n", - "cannula\n", - "cannulae\n", - "cannular\n", - "cannulas\n", - "canny\n", - "canoe\n", - "canoed\n", - "canoeing\n", - "canoeist\n", - "canoeists\n", - "canoes\n", - "canon\n", - "canoness\n", - "canonesses\n", - "canonic\n", - "canonical\n", - "canonically\n", - "canonise\n", - "canonised\n", - "canonises\n", - "canonising\n", - "canonist\n", - "canonists\n", - "canonization\n", - "canonizations\n", - "canonize\n", - "canonized\n", - "canonizes\n", - "canonizing\n", - "canonries\n", - "canonry\n", - "canons\n", - "canopied\n", - "canopies\n", - "canopy\n", - "canopying\n", - "canorous\n", - "cans\n", - "cansful\n", - "canso\n", - "cansos\n", - "canst\n", - "cant\n", - "cantala\n", - "cantalas\n", - "cantaloupe\n", - "cantaloupes\n", - "cantankerous\n", - "cantankerously\n", - "cantankerousness\n", - "cantankerousnesses\n", - "cantata\n", - "cantatas\n", - "cantdog\n", - "cantdogs\n", - "canted\n", - "canteen\n", - "canteens\n", - "canter\n", - "cantered\n", - "cantering\n", - "canters\n", - "canthal\n", - "canthi\n", - "canthus\n", - "cantic\n", - "canticle\n", - "canticles\n", - "cantilever\n", - "cantilevers\n", - "cantina\n", - "cantinas\n", - "canting\n", - "cantle\n", - "cantles\n", - "canto\n", - "canton\n", - "cantonal\n", - "cantoned\n", - "cantoning\n", - "cantons\n", - "cantor\n", - "cantors\n", - "cantos\n", - "cantraip\n", - "cantraips\n", - "cantrap\n", - "cantraps\n", - "cantrip\n", - "cantrips\n", - "cants\n", - "cantus\n", - "canty\n", - "canula\n", - "canulae\n", - "canulas\n", - "canulate\n", - "canulated\n", - "canulates\n", - "canulating\n", - "canvas\n", - "canvased\n", - "canvaser\n", - "canvasers\n", - "canvases\n", - "canvasing\n", - "canvass\n", - "canvassed\n", - "canvasser\n", - "canvassers\n", - "canvasses\n", - "canvassing\n", - "canyon\n", - "canyons\n", - "canzona\n", - "canzonas\n", - "canzone\n", - "canzones\n", - "canzonet\n", - "canzonets\n", - "canzoni\n", - "cap\n", - "capabilities\n", - "capability\n", - "capable\n", - "capabler\n", - "capablest\n", - "capably\n", - "capacious\n", - "capacitance\n", - "capacitances\n", - "capacities\n", - "capacitor\n", - "capacitors\n", - "capacity\n", - "cape\n", - "caped\n", - "capelan\n", - "capelans\n", - "capelet\n", - "capelets\n", - "capelin\n", - "capelins\n", - "caper\n", - "capered\n", - "caperer\n", - "caperers\n", - "capering\n", - "capers\n", - "capes\n", - "capeskin\n", - "capeskins\n", - "capework\n", - "capeworks\n", - "capful\n", - "capfuls\n", - "caph\n", - "caphs\n", - "capias\n", - "capiases\n", - "capillaries\n", - "capillary\n", - "capita\n", - "capital\n", - "capitalism\n", - "capitalist\n", - "capitalistic\n", - "capitalistically\n", - "capitalists\n", - "capitalization\n", - "capitalizations\n", - "capitalize\n", - "capitalized\n", - "capitalizes\n", - "capitalizing\n", - "capitals\n", - "capitate\n", - "capitol\n", - "capitols\n", - "capitula\n", - "capitulate\n", - "capitulated\n", - "capitulates\n", - "capitulating\n", - "capitulation\n", - "capitulations\n", - "capless\n", - "caplin\n", - "caplins\n", - "capmaker\n", - "capmakers\n", - "capo\n", - "capon\n", - "caponier\n", - "caponiers\n", - "caponize\n", - "caponized\n", - "caponizes\n", - "caponizing\n", - "capons\n", - "caporal\n", - "caporals\n", - "capos\n", - "capote\n", - "capotes\n", - "capouch\n", - "capouches\n", - "capped\n", - "capper\n", - "cappers\n", - "capping\n", - "cappings\n", - "capric\n", - "capricci\n", - "caprice\n", - "caprices\n", - "capricious\n", - "caprifig\n", - "caprifigs\n", - "caprine\n", - "capriole\n", - "caprioled\n", - "caprioles\n", - "caprioling\n", - "caps\n", - "capsicin\n", - "capsicins\n", - "capsicum\n", - "capsicums\n", - "capsid\n", - "capsidal\n", - "capsids\n", - "capsize\n", - "capsized\n", - "capsizes\n", - "capsizing\n", - "capstan\n", - "capstans\n", - "capstone\n", - "capstones\n", - "capsular\n", - "capsulate\n", - "capsulated\n", - "capsule\n", - "capsuled\n", - "capsules\n", - "capsuling\n", - "captain\n", - "captaincies\n", - "captaincy\n", - "captained\n", - "captaining\n", - "captains\n", - "captainship\n", - "captainships\n", - "captan\n", - "captans\n", - "caption\n", - "captioned\n", - "captioning\n", - "captions\n", - "captious\n", - "captiously\n", - "captivate\n", - "captivated\n", - "captivates\n", - "captivating\n", - "captivation\n", - "captivations\n", - "captivator\n", - "captivators\n", - "captive\n", - "captives\n", - "captivities\n", - "captivity\n", - "captor\n", - "captors\n", - "capture\n", - "captured\n", - "capturer\n", - "capturers\n", - "captures\n", - "capturing\n", - "capuche\n", - "capuched\n", - "capuches\n", - "capuchin\n", - "capuchins\n", - "caput\n", - "capybara\n", - "capybaras\n", - "car\n", - "carabao\n", - "carabaos\n", - "carabid\n", - "carabids\n", - "carabin\n", - "carabine\n", - "carabines\n", - "carabins\n", - "caracal\n", - "caracals\n", - "caracara\n", - "caracaras\n", - "carack\n", - "caracks\n", - "caracol\n", - "caracole\n", - "caracoled\n", - "caracoles\n", - "caracoling\n", - "caracolled\n", - "caracolling\n", - "caracols\n", - "caracul\n", - "caraculs\n", - "carafe\n", - "carafes\n", - "caragana\n", - "caraganas\n", - "carageen\n", - "carageens\n", - "caramel\n", - "caramels\n", - "carangid\n", - "carangids\n", - "carapace\n", - "carapaces\n", - "carapax\n", - "carapaxes\n", - "carassow\n", - "carassows\n", - "carat\n", - "carate\n", - "carates\n", - "carats\n", - "caravan\n", - "caravaned\n", - "caravaning\n", - "caravanned\n", - "caravanning\n", - "caravans\n", - "caravel\n", - "caravels\n", - "caraway\n", - "caraways\n", - "carbamic\n", - "carbamyl\n", - "carbamyls\n", - "carbarn\n", - "carbarns\n", - "carbaryl\n", - "carbaryls\n", - "carbide\n", - "carbides\n", - "carbine\n", - "carbines\n", - "carbinol\n", - "carbinols\n", - "carbohydrate\n", - "carbohydrates\n", - "carbon\n", - "carbonate\n", - "carbonated\n", - "carbonates\n", - "carbonating\n", - "carbonation\n", - "carbonations\n", - "carbonic\n", - "carbons\n", - "carbonyl\n", - "carbonyls\n", - "carbora\n", - "carboras\n", - "carboxyl\n", - "carboxyls\n", - "carboy\n", - "carboyed\n", - "carboys\n", - "carbuncle\n", - "carbuncles\n", - "carburet\n", - "carbureted\n", - "carbureting\n", - "carburetor\n", - "carburetors\n", - "carburets\n", - "carburetted\n", - "carburetting\n", - "carcajou\n", - "carcajous\n", - "carcanet\n", - "carcanets\n", - "carcase\n", - "carcases\n", - "carcass\n", - "carcasses\n", - "carcel\n", - "carcels\n", - "carcinogen\n", - "carcinogenic\n", - "carcinogenics\n", - "carcinogens\n", - "carcinoma\n", - "carcinomas\n", - "carcinomata\n", - "carcinomatous\n", - "card\n", - "cardamom\n", - "cardamoms\n", - "cardamon\n", - "cardamons\n", - "cardamum\n", - "cardamums\n", - "cardboard\n", - "cardboards\n", - "cardcase\n", - "cardcases\n", - "carded\n", - "carder\n", - "carders\n", - "cardia\n", - "cardiac\n", - "cardiacs\n", - "cardiae\n", - "cardias\n", - "cardigan\n", - "cardigans\n", - "cardinal\n", - "cardinals\n", - "carding\n", - "cardings\n", - "cardiogram\n", - "cardiograms\n", - "cardiograph\n", - "cardiographic\n", - "cardiographies\n", - "cardiographs\n", - "cardiography\n", - "cardioid\n", - "cardioids\n", - "cardiologies\n", - "cardiologist\n", - "cardiologists\n", - "cardiology\n", - "cardiotoxicities\n", - "cardiotoxicity\n", - "cardiovascular\n", - "carditic\n", - "carditis\n", - "carditises\n", - "cardoon\n", - "cardoons\n", - "cards\n", - "care\n", - "cared\n", - "careen\n", - "careened\n", - "careener\n", - "careeners\n", - "careening\n", - "careens\n", - "career\n", - "careered\n", - "careerer\n", - "careerers\n", - "careering\n", - "careers\n", - "carefree\n", - "careful\n", - "carefuller\n", - "carefullest\n", - "carefully\n", - "carefulness\n", - "carefulnesses\n", - "careless\n", - "carelessly\n", - "carelessness\n", - "carelessnesses\n", - "carer\n", - "carers\n", - "cares\n", - "caress\n", - "caressed\n", - "caresser\n", - "caressers\n", - "caresses\n", - "caressing\n", - "caret\n", - "caretaker\n", - "caretakers\n", - "carets\n", - "careworn\n", - "carex\n", - "carfare\n", - "carfares\n", - "carful\n", - "carfuls\n", - "cargo\n", - "cargoes\n", - "cargos\n", - "carhop\n", - "carhops\n", - "caribe\n", - "caribes\n", - "caribou\n", - "caribous\n", - "caricature\n", - "caricatured\n", - "caricatures\n", - "caricaturing\n", - "caricaturist\n", - "caricaturists\n", - "carices\n", - "caried\n", - "caries\n", - "carillon\n", - "carillonned\n", - "carillonning\n", - "carillons\n", - "carina\n", - "carinae\n", - "carinal\n", - "carinas\n", - "carinate\n", - "caring\n", - "carioca\n", - "cariocas\n", - "cariole\n", - "carioles\n", - "carious\n", - "cark\n", - "carked\n", - "carking\n", - "carks\n", - "carl\n", - "carle\n", - "carles\n", - "carless\n", - "carlin\n", - "carline\n", - "carlines\n", - "carling\n", - "carlings\n", - "carlins\n", - "carlish\n", - "carload\n", - "carloads\n", - "carls\n", - "carmaker\n", - "carmakers\n", - "carman\n", - "carmen\n", - "carmine\n", - "carmines\n", - "carn\n", - "carnage\n", - "carnages\n", - "carnal\n", - "carnalities\n", - "carnality\n", - "carnally\n", - "carnation\n", - "carnations\n", - "carnauba\n", - "carnaubas\n", - "carney\n", - "carneys\n", - "carnie\n", - "carnies\n", - "carnified\n", - "carnifies\n", - "carnify\n", - "carnifying\n", - "carnival\n", - "carnivals\n", - "carnivore\n", - "carnivores\n", - "carnivorous\n", - "carnivorously\n", - "carnivorousness\n", - "carnivorousnesses\n", - "carns\n", - "carny\n", - "caroach\n", - "caroaches\n", - "carob\n", - "carobs\n", - "caroch\n", - "caroche\n", - "caroches\n", - "carol\n", - "caroled\n", - "caroler\n", - "carolers\n", - "caroli\n", - "caroling\n", - "carolled\n", - "caroller\n", - "carollers\n", - "carolling\n", - "carols\n", - "carolus\n", - "caroluses\n", - "carom\n", - "caromed\n", - "caroming\n", - "caroms\n", - "carotene\n", - "carotenes\n", - "carotid\n", - "carotids\n", - "carotin\n", - "carotins\n", - "carousal\n", - "carousals\n", - "carouse\n", - "caroused\n", - "carousel\n", - "carousels\n", - "carouser\n", - "carousers\n", - "carouses\n", - "carousing\n", - "carp\n", - "carpal\n", - "carpale\n", - "carpalia\n", - "carpals\n", - "carped\n", - "carpel\n", - "carpels\n", - "carpenter\n", - "carpentered\n", - "carpentering\n", - "carpenters\n", - "carpentries\n", - "carpentry\n", - "carper\n", - "carpers\n", - "carpet\n", - "carpeted\n", - "carpeting\n", - "carpets\n", - "carpi\n", - "carping\n", - "carpings\n", - "carport\n", - "carports\n", - "carps\n", - "carpus\n", - "carrack\n", - "carracks\n", - "carrel\n", - "carrell\n", - "carrells\n", - "carrels\n", - "carriage\n", - "carriages\n", - "carried\n", - "carrier\n", - "carriers\n", - "carries\n", - "carriole\n", - "carrioles\n", - "carrion\n", - "carrions\n", - "carritch\n", - "carritches\n", - "carroch\n", - "carroches\n", - "carrom\n", - "carromed\n", - "carroming\n", - "carroms\n", - "carrot\n", - "carrotier\n", - "carrotiest\n", - "carrotin\n", - "carrotins\n", - "carrots\n", - "carroty\n", - "carrousel\n", - "carrousels\n", - "carry\n", - "carryall\n", - "carryalls\n", - "carrying\n", - "carryon\n", - "carryons\n", - "carryout\n", - "carryouts\n", - "cars\n", - "carse\n", - "carses\n", - "carsick\n", - "cart\n", - "cartable\n", - "cartage\n", - "cartages\n", - "carte\n", - "carted\n", - "cartel\n", - "cartels\n", - "carter\n", - "carters\n", - "cartes\n", - "cartilage\n", - "cartilages\n", - "cartilaginous\n", - "carting\n", - "cartload\n", - "cartloads\n", - "cartographer\n", - "cartographers\n", - "cartographies\n", - "cartography\n", - "carton\n", - "cartoned\n", - "cartoning\n", - "cartons\n", - "cartoon\n", - "cartooned\n", - "cartooning\n", - "cartoonist\n", - "cartoonists\n", - "cartoons\n", - "cartop\n", - "cartouch\n", - "cartouches\n", - "cartridge\n", - "cartridges\n", - "carts\n", - "caruncle\n", - "caruncles\n", - "carve\n", - "carved\n", - "carvel\n", - "carvels\n", - "carven\n", - "carver\n", - "carvers\n", - "carves\n", - "carving\n", - "carvings\n", - "caryatid\n", - "caryatides\n", - "caryatids\n", - "caryotin\n", - "caryotins\n", - "casa\n", - "casaba\n", - "casabas\n", - "casas\n", - "casava\n", - "casavas\n", - "cascabel\n", - "cascabels\n", - "cascable\n", - "cascables\n", - "cascade\n", - "cascaded\n", - "cascades\n", - "cascading\n", - "cascara\n", - "cascaras\n", - "case\n", - "casease\n", - "caseases\n", - "caseate\n", - "caseated\n", - "caseates\n", - "caseating\n", - "casebook\n", - "casebooks\n", - "cased\n", - "casefied\n", - "casefies\n", - "casefy\n", - "casefying\n", - "caseic\n", - "casein\n", - "caseins\n", - "casemate\n", - "casemates\n", - "casement\n", - "casements\n", - "caseose\n", - "caseoses\n", - "caseous\n", - "casern\n", - "caserne\n", - "casernes\n", - "caserns\n", - "cases\n", - "casette\n", - "casettes\n", - "casework\n", - "caseworks\n", - "caseworm\n", - "caseworms\n", - "cash\n", - "cashable\n", - "cashaw\n", - "cashaws\n", - "cashbook\n", - "cashbooks\n", - "cashbox\n", - "cashboxes\n", - "cashed\n", - "cashes\n", - "cashew\n", - "cashews\n", - "cashier\n", - "cashiered\n", - "cashiering\n", - "cashiers\n", - "cashing\n", - "cashless\n", - "cashmere\n", - "cashmeres\n", - "cashoo\n", - "cashoos\n", - "casimere\n", - "casimeres\n", - "casimire\n", - "casimires\n", - "casing\n", - "casings\n", - "casino\n", - "casinos\n", - "cask\n", - "casked\n", - "casket\n", - "casketed\n", - "casketing\n", - "caskets\n", - "casking\n", - "casks\n", - "casky\n", - "casque\n", - "casqued\n", - "casques\n", - "cassaba\n", - "cassabas\n", - "cassava\n", - "cassavas\n", - "casserole\n", - "casseroles\n", - "cassette\n", - "cassettes\n", - "cassia\n", - "cassias\n", - "cassino\n", - "cassinos\n", - "cassis\n", - "cassises\n", - "cassock\n", - "cassocks\n", - "cast\n", - "castanet\n", - "castanets\n", - "castaway\n", - "castaways\n", - "caste\n", - "casteism\n", - "casteisms\n", - "caster\n", - "casters\n", - "castes\n", - "castigate\n", - "castigated\n", - "castigates\n", - "castigating\n", - "castigation\n", - "castigations\n", - "castigator\n", - "castigators\n", - "casting\n", - "castings\n", - "castle\n", - "castled\n", - "castles\n", - "castling\n", - "castoff\n", - "castoffs\n", - "castor\n", - "castors\n", - "castrate\n", - "castrated\n", - "castrates\n", - "castrati\n", - "castrating\n", - "castration\n", - "castrations\n", - "castrato\n", - "casts\n", - "casual\n", - "casually\n", - "casualness\n", - "casualnesses\n", - "casuals\n", - "casualties\n", - "casualty\n", - "casuist\n", - "casuistries\n", - "casuistry\n", - "casuists\n", - "casus\n", - "cat\n", - "cataclysm\n", - "cataclysms\n", - "catacomb\n", - "catacombs\n", - "catacylsmic\n", - "catalase\n", - "catalases\n", - "catalo\n", - "cataloes\n", - "catalog\n", - "cataloged\n", - "cataloger\n", - "catalogers\n", - "cataloging\n", - "catalogs\n", - "cataloguer\n", - "cataloguers\n", - "catalos\n", - "catalpa\n", - "catalpas\n", - "catalyses\n", - "catalysis\n", - "catalyst\n", - "catalysts\n", - "catalytic\n", - "catalyze\n", - "catalyzed\n", - "catalyzes\n", - "catalyzing\n", - "catamaran\n", - "catamarans\n", - "catamite\n", - "catamites\n", - "catamount\n", - "catamounts\n", - "catapult\n", - "catapulted\n", - "catapulting\n", - "catapults\n", - "cataract\n", - "cataracts\n", - "catarrh\n", - "catarrhs\n", - "catastrophe\n", - "catastrophes\n", - "catastrophic\n", - "catastrophically\n", - "catbird\n", - "catbirds\n", - "catboat\n", - "catboats\n", - "catbrier\n", - "catbriers\n", - "catcall\n", - "catcalled\n", - "catcalling\n", - "catcalls\n", - "catch\n", - "catchall\n", - "catchalls\n", - "catcher\n", - "catchers\n", - "catches\n", - "catchflies\n", - "catchfly\n", - "catchier\n", - "catchiest\n", - "catching\n", - "catchup\n", - "catchups\n", - "catchword\n", - "catchwords\n", - "catchy\n", - "cate\n", - "catechin\n", - "catechins\n", - "catechism\n", - "catechisms\n", - "catechist\n", - "catechists\n", - "catechize\n", - "catechized\n", - "catechizes\n", - "catechizing\n", - "catechol\n", - "catechols\n", - "catechu\n", - "catechus\n", - "categorical\n", - "categorically\n", - "categories\n", - "categorization\n", - "categorizations\n", - "categorize\n", - "categorized\n", - "categorizes\n", - "categorizing\n", - "category\n", - "catena\n", - "catenae\n", - "catenaries\n", - "catenary\n", - "catenas\n", - "catenate\n", - "catenated\n", - "catenates\n", - "catenating\n", - "catenoid\n", - "catenoids\n", - "cater\n", - "cateran\n", - "caterans\n", - "catercorner\n", - "catered\n", - "caterer\n", - "caterers\n", - "cateress\n", - "cateresses\n", - "catering\n", - "caterpillar\n", - "caterpillars\n", - "caters\n", - "caterwaul\n", - "caterwauled\n", - "caterwauling\n", - "caterwauls\n", - "cates\n", - "catface\n", - "catfaces\n", - "catfall\n", - "catfalls\n", - "catfish\n", - "catfishes\n", - "catgut\n", - "catguts\n", - "catharses\n", - "catharsis\n", - "cathartic\n", - "cathead\n", - "catheads\n", - "cathect\n", - "cathected\n", - "cathecting\n", - "cathects\n", - "cathedra\n", - "cathedrae\n", - "cathedral\n", - "cathedrals\n", - "cathedras\n", - "catheter\n", - "catheterization\n", - "catheters\n", - "cathexes\n", - "cathexis\n", - "cathode\n", - "cathodes\n", - "cathodic\n", - "catholic\n", - "cathouse\n", - "cathouses\n", - "cation\n", - "cationic\n", - "cations\n", - "catkin\n", - "catkins\n", - "catlike\n", - "catlin\n", - "catling\n", - "catlings\n", - "catlins\n", - "catmint\n", - "catmints\n", - "catnap\n", - "catnaper\n", - "catnapers\n", - "catnapped\n", - "catnapping\n", - "catnaps\n", - "catnip\n", - "catnips\n", - "cats\n", - "catspaw\n", - "catspaws\n", - "catsup\n", - "catsups\n", - "cattail\n", - "cattails\n", - "cattalo\n", - "cattaloes\n", - "cattalos\n", - "catted\n", - "cattie\n", - "cattier\n", - "catties\n", - "cattiest\n", - "cattily\n", - "cattiness\n", - "cattinesses\n", - "catting\n", - "cattish\n", - "cattle\n", - "cattleman\n", - "cattlemen\n", - "cattleya\n", - "cattleyas\n", - "catty\n", - "catwalk\n", - "catwalks\n", - "caucus\n", - "caucused\n", - "caucuses\n", - "caucusing\n", - "caucussed\n", - "caucusses\n", - "caucussing\n", - "caudad\n", - "caudal\n", - "caudally\n", - "caudate\n", - "caudated\n", - "caudex\n", - "caudexes\n", - "caudices\n", - "caudillo\n", - "caudillos\n", - "caudle\n", - "caudles\n", - "caught\n", - "caul\n", - "cauld\n", - "cauldron\n", - "cauldrons\n", - "caulds\n", - "caules\n", - "caulicle\n", - "caulicles\n", - "cauliflower\n", - "cauliflowers\n", - "cauline\n", - "caulis\n", - "caulk\n", - "caulked\n", - "caulker\n", - "caulkers\n", - "caulking\n", - "caulkings\n", - "caulks\n", - "cauls\n", - "causable\n", - "causal\n", - "causaless\n", - "causality\n", - "causally\n", - "causals\n", - "causation\n", - "causations\n", - "causative\n", - "cause\n", - "caused\n", - "causer\n", - "causerie\n", - "causeries\n", - "causers\n", - "causes\n", - "causeway\n", - "causewayed\n", - "causewaying\n", - "causeways\n", - "causey\n", - "causeys\n", - "causing\n", - "caustic\n", - "caustics\n", - "cauteries\n", - "cauterization\n", - "cauterizations\n", - "cauterize\n", - "cauterized\n", - "cauterizes\n", - "cauterizing\n", - "cautery\n", - "caution\n", - "cautionary\n", - "cautioned\n", - "cautioning\n", - "cautions\n", - "cautious\n", - "cautiously\n", - "cautiousness\n", - "cautiousnesses\n", - "cavalcade\n", - "cavalcades\n", - "cavalero\n", - "cavaleros\n", - "cavalier\n", - "cavaliered\n", - "cavaliering\n", - "cavalierly\n", - "cavalierness\n", - "cavaliernesses\n", - "cavaliers\n", - "cavalla\n", - "cavallas\n", - "cavallies\n", - "cavally\n", - "cavalries\n", - "cavalry\n", - "cavalryman\n", - "cavalrymen\n", - "cavatina\n", - "cavatinas\n", - "cavatine\n", - "cave\n", - "caveat\n", - "caveator\n", - "caveators\n", - "caveats\n", - "caved\n", - "cavefish\n", - "cavefishes\n", - "cavelike\n", - "caveman\n", - "cavemen\n", - "caver\n", - "cavern\n", - "caverned\n", - "caverning\n", - "cavernous\n", - "cavernously\n", - "caverns\n", - "cavers\n", - "caves\n", - "cavetti\n", - "cavetto\n", - "cavettos\n", - "caviar\n", - "caviare\n", - "caviares\n", - "caviars\n", - "cavicorn\n", - "cavie\n", - "cavies\n", - "cavil\n", - "caviled\n", - "caviler\n", - "cavilers\n", - "caviling\n", - "cavilled\n", - "caviller\n", - "cavillers\n", - "cavilling\n", - "cavils\n", - "caving\n", - "cavitary\n", - "cavitate\n", - "cavitated\n", - "cavitates\n", - "cavitating\n", - "cavitied\n", - "cavities\n", - "cavity\n", - "cavort\n", - "cavorted\n", - "cavorter\n", - "cavorters\n", - "cavorting\n", - "cavorts\n", - "cavy\n", - "caw\n", - "cawed\n", - "cawing\n", - "caws\n", - "cay\n", - "cayenne\n", - "cayenned\n", - "cayennes\n", - "cayman\n", - "caymans\n", - "cays\n", - "cayuse\n", - "cayuses\n", - "cazique\n", - "caziques\n", - "cease\n", - "ceased\n", - "ceases\n", - "ceasing\n", - "cebid\n", - "cebids\n", - "ceboid\n", - "ceboids\n", - "ceca\n", - "cecal\n", - "cecally\n", - "cecum\n", - "cedar\n", - "cedarn\n", - "cedars\n", - "cede\n", - "ceded\n", - "ceder\n", - "ceders\n", - "cedes\n", - "cedi\n", - "cedilla\n", - "cedillas\n", - "ceding\n", - "cedis\n", - "cedula\n", - "cedulas\n", - "cee\n", - "cees\n", - "ceiba\n", - "ceibas\n", - "ceil\n", - "ceiled\n", - "ceiler\n", - "ceilers\n", - "ceiling\n", - "ceilings\n", - "ceils\n", - "ceinture\n", - "ceintures\n", - "celadon\n", - "celadons\n", - "celeb\n", - "celebrant\n", - "celebrants\n", - "celebrate\n", - "celebrated\n", - "celebrates\n", - "celebrating\n", - "celebration\n", - "celebrations\n", - "celebrator\n", - "celebrators\n", - "celebrities\n", - "celebrity\n", - "celebs\n", - "celeriac\n", - "celeriacs\n", - "celeries\n", - "celerities\n", - "celerity\n", - "celery\n", - "celesta\n", - "celestas\n", - "celeste\n", - "celestes\n", - "celestial\n", - "celiac\n", - "celibacies\n", - "celibacy\n", - "celibate\n", - "celibates\n", - "cell\n", - "cella\n", - "cellae\n", - "cellar\n", - "cellared\n", - "cellarer\n", - "cellarers\n", - "cellaret\n", - "cellarets\n", - "cellaring\n", - "cellars\n", - "celled\n", - "celli\n", - "celling\n", - "cellist\n", - "cellists\n", - "cello\n", - "cellophane\n", - "cellophanes\n", - "cellos\n", - "cells\n", - "cellular\n", - "cellule\n", - "cellules\n", - "cellulose\n", - "celluloses\n", - "celom\n", - "celomata\n", - "celoms\n", - "celt\n", - "celts\n", - "cembali\n", - "cembalo\n", - "cembalos\n", - "cement\n", - "cementa\n", - "cementation\n", - "cementations\n", - "cemented\n", - "cementer\n", - "cementers\n", - "cementing\n", - "cements\n", - "cementum\n", - "cemeteries\n", - "cemetery\n", - "cenacle\n", - "cenacles\n", - "cenobite\n", - "cenobites\n", - "cenotaph\n", - "cenotaphs\n", - "cenote\n", - "cenotes\n", - "cense\n", - "censed\n", - "censer\n", - "censers\n", - "censes\n", - "censing\n", - "censor\n", - "censored\n", - "censorial\n", - "censoring\n", - "censorious\n", - "censoriously\n", - "censoriousness\n", - "censoriousnesses\n", - "censors\n", - "censorship\n", - "censorships\n", - "censual\n", - "censure\n", - "censured\n", - "censurer\n", - "censurers\n", - "censures\n", - "censuring\n", - "census\n", - "censused\n", - "censuses\n", - "censusing\n", - "cent\n", - "cental\n", - "centals\n", - "centare\n", - "centares\n", - "centaur\n", - "centauries\n", - "centaurs\n", - "centaury\n", - "centavo\n", - "centavos\n", - "centennial\n", - "centennials\n", - "center\n", - "centered\n", - "centering\n", - "centerpiece\n", - "centerpieces\n", - "centers\n", - "centeses\n", - "centesis\n", - "centiare\n", - "centiares\n", - "centigrade\n", - "centile\n", - "centiles\n", - "centime\n", - "centimes\n", - "centimeter\n", - "centimeters\n", - "centimo\n", - "centimos\n", - "centipede\n", - "centipedes\n", - "centner\n", - "centners\n", - "cento\n", - "centones\n", - "centos\n", - "centra\n", - "central\n", - "centraler\n", - "centralest\n", - "centralization\n", - "centralizations\n", - "centralize\n", - "centralized\n", - "centralizer\n", - "centralizers\n", - "centralizes\n", - "centralizing\n", - "centrally\n", - "centrals\n", - "centre\n", - "centred\n", - "centres\n", - "centric\n", - "centrifugal\n", - "centrifugally\n", - "centrifuge\n", - "centrifuges\n", - "centring\n", - "centrings\n", - "centripetal\n", - "centripetally\n", - "centrism\n", - "centrisms\n", - "centrist\n", - "centrists\n", - "centroid\n", - "centroids\n", - "centrum\n", - "centrums\n", - "cents\n", - "centum\n", - "centums\n", - "centuple\n", - "centupled\n", - "centuples\n", - "centupling\n", - "centuries\n", - "centurion\n", - "centurions\n", - "century\n", - "ceorl\n", - "ceorlish\n", - "ceorls\n", - "cephalad\n", - "cephalic\n", - "cephalin\n", - "cephalins\n", - "ceramal\n", - "ceramals\n", - "ceramic\n", - "ceramics\n", - "ceramist\n", - "ceramists\n", - "cerastes\n", - "cerate\n", - "cerated\n", - "cerates\n", - "ceratin\n", - "ceratins\n", - "ceratoid\n", - "cercaria\n", - "cercariae\n", - "cercarias\n", - "cerci\n", - "cercis\n", - "cercises\n", - "cercus\n", - "cere\n", - "cereal\n", - "cereals\n", - "cerebella\n", - "cerebellar\n", - "cerebellum\n", - "cerebellums\n", - "cerebra\n", - "cerebral\n", - "cerebrals\n", - "cerebrate\n", - "cerebrated\n", - "cerebrates\n", - "cerebrating\n", - "cerebration\n", - "cerebrations\n", - "cerebric\n", - "cerebrospinal\n", - "cerebrum\n", - "cerebrums\n", - "cered\n", - "cerement\n", - "cerements\n", - "ceremonial\n", - "ceremonies\n", - "ceremonious\n", - "ceremony\n", - "ceres\n", - "cereus\n", - "cereuses\n", - "ceria\n", - "cerias\n", - "ceric\n", - "cering\n", - "ceriph\n", - "ceriphs\n", - "cerise\n", - "cerises\n", - "cerite\n", - "cerites\n", - "cerium\n", - "ceriums\n", - "cermet\n", - "cermets\n", - "cernuous\n", - "cero\n", - "ceros\n", - "cerotic\n", - "cerotype\n", - "cerotypes\n", - "cerous\n", - "certain\n", - "certainer\n", - "certainest\n", - "certainly\n", - "certainties\n", - "certainty\n", - "certes\n", - "certifiable\n", - "certifiably\n", - "certificate\n", - "certificates\n", - "certification\n", - "certifications\n", - "certified\n", - "certifier\n", - "certifiers\n", - "certifies\n", - "certify\n", - "certifying\n", - "certitude\n", - "certitudes\n", - "cerulean\n", - "ceruleans\n", - "cerumen\n", - "cerumens\n", - "ceruse\n", - "ceruses\n", - "cerusite\n", - "cerusites\n", - "cervelat\n", - "cervelats\n", - "cervical\n", - "cervices\n", - "cervine\n", - "cervix\n", - "cervixes\n", - "cesarean\n", - "cesareans\n", - "cesarian\n", - "cesarians\n", - "cesium\n", - "cesiums\n", - "cess\n", - "cessation\n", - "cessations\n", - "cessed\n", - "cesses\n", - "cessing\n", - "cession\n", - "cessions\n", - "cesspit\n", - "cesspits\n", - "cesspool\n", - "cesspools\n", - "cesta\n", - "cestas\n", - "cesti\n", - "cestode\n", - "cestodes\n", - "cestoi\n", - "cestoid\n", - "cestoids\n", - "cestos\n", - "cestus\n", - "cestuses\n", - "cesura\n", - "cesurae\n", - "cesuras\n", - "cetacean\n", - "cetaceans\n", - "cetane\n", - "cetanes\n", - "cete\n", - "cetes\n", - "cetologies\n", - "cetology\n", - "chabouk\n", - "chabouks\n", - "chabuk\n", - "chabuks\n", - "chacma\n", - "chacmas\n", - "chaconne\n", - "chaconnes\n", - "chad\n", - "chadarim\n", - "chadless\n", - "chads\n", - "chaeta\n", - "chaetae\n", - "chaetal\n", - "chafe\n", - "chafed\n", - "chafer\n", - "chafers\n", - "chafes\n", - "chaff\n", - "chaffed\n", - "chaffer\n", - "chaffered\n", - "chaffering\n", - "chaffers\n", - "chaffier\n", - "chaffiest\n", - "chaffing\n", - "chaffs\n", - "chaffy\n", - "chafing\n", - "chagrin\n", - "chagrined\n", - "chagrining\n", - "chagrinned\n", - "chagrinning\n", - "chagrins\n", - "chain\n", - "chaine\n", - "chained\n", - "chaines\n", - "chaining\n", - "chainman\n", - "chainmen\n", - "chains\n", - "chair\n", - "chaired\n", - "chairing\n", - "chairman\n", - "chairmaned\n", - "chairmaning\n", - "chairmanned\n", - "chairmanning\n", - "chairmans\n", - "chairmanship\n", - "chairmanships\n", - "chairmen\n", - "chairs\n", - "chairwoman\n", - "chairwomen\n", - "chaise\n", - "chaises\n", - "chalah\n", - "chalahs\n", - "chalaza\n", - "chalazae\n", - "chalazal\n", - "chalazas\n", - "chalcid\n", - "chalcids\n", - "chaldron\n", - "chaldrons\n", - "chaleh\n", - "chalehs\n", - "chalet\n", - "chalets\n", - "chalice\n", - "chaliced\n", - "chalices\n", - "chalk\n", - "chalkboard\n", - "chalkboards\n", - "chalked\n", - "chalkier\n", - "chalkiest\n", - "chalking\n", - "chalks\n", - "chalky\n", - "challah\n", - "challahs\n", - "challenge\n", - "challenged\n", - "challenger\n", - "challengers\n", - "challenges\n", - "challenging\n", - "challie\n", - "challies\n", - "challis\n", - "challises\n", - "challot\n", - "challoth\n", - "chally\n", - "chalone\n", - "chalones\n", - "chalot\n", - "chaloth\n", - "chalutz\n", - "chalutzim\n", - "cham\n", - "chamade\n", - "chamades\n", - "chamber\n", - "chambered\n", - "chambering\n", - "chambermaid\n", - "chambermaids\n", - "chambers\n", - "chambray\n", - "chambrays\n", - "chameleon\n", - "chameleons\n", - "chamfer\n", - "chamfered\n", - "chamfering\n", - "chamfers\n", - "chamfron\n", - "chamfrons\n", - "chamise\n", - "chamises\n", - "chamiso\n", - "chamisos\n", - "chammied\n", - "chammies\n", - "chammy\n", - "chammying\n", - "chamois\n", - "chamoised\n", - "chamoises\n", - "chamoising\n", - "chamoix\n", - "champ\n", - "champac\n", - "champacs\n", - "champagne\n", - "champagnes\n", - "champak\n", - "champaks\n", - "champed\n", - "champer\n", - "champers\n", - "champing\n", - "champion\n", - "championed\n", - "championing\n", - "champions\n", - "championship\n", - "championships\n", - "champs\n", - "champy\n", - "chams\n", - "chance\n", - "chanced\n", - "chancel\n", - "chancelleries\n", - "chancellery\n", - "chancellor\n", - "chancellories\n", - "chancellors\n", - "chancellorship\n", - "chancellorships\n", - "chancellory\n", - "chancels\n", - "chanceries\n", - "chancery\n", - "chances\n", - "chancier\n", - "chanciest\n", - "chancily\n", - "chancing\n", - "chancre\n", - "chancres\n", - "chancy\n", - "chandelier\n", - "chandeliers\n", - "chandler\n", - "chandlers\n", - "chanfron\n", - "chanfrons\n", - "chang\n", - "change\n", - "changeable\n", - "changed\n", - "changeless\n", - "changer\n", - "changers\n", - "changes\n", - "changing\n", - "changs\n", - "channel\n", - "channeled\n", - "channeling\n", - "channelled\n", - "channelling\n", - "channels\n", - "chanson\n", - "chansons\n", - "chant\n", - "chantage\n", - "chantages\n", - "chanted\n", - "chanter\n", - "chanters\n", - "chantey\n", - "chanteys\n", - "chanties\n", - "chanting\n", - "chantor\n", - "chantors\n", - "chantries\n", - "chantry\n", - "chants\n", - "chanty\n", - "chaos\n", - "chaoses\n", - "chaotic\n", - "chaotically\n", - "chap\n", - "chapbook\n", - "chapbooks\n", - "chape\n", - "chapeau\n", - "chapeaus\n", - "chapeaux\n", - "chapel\n", - "chapels\n", - "chaperon\n", - "chaperonage\n", - "chaperonages\n", - "chaperone\n", - "chaperoned\n", - "chaperones\n", - "chaperoning\n", - "chaperons\n", - "chapes\n", - "chapiter\n", - "chapiters\n", - "chaplain\n", - "chaplaincies\n", - "chaplaincy\n", - "chaplains\n", - "chaplet\n", - "chaplets\n", - "chapman\n", - "chapmen\n", - "chapped\n", - "chapping\n", - "chaps\n", - "chapt\n", - "chapter\n", - "chaptered\n", - "chaptering\n", - "chapters\n", - "chaqueta\n", - "chaquetas\n", - "char\n", - "characid\n", - "characids\n", - "characin\n", - "characins\n", - "character\n", - "characteristic\n", - "characteristically\n", - "characteristics\n", - "characterization\n", - "characterizations\n", - "characterize\n", - "characterized\n", - "characterizes\n", - "characterizing\n", - "characters\n", - "charade\n", - "charades\n", - "charas\n", - "charases\n", - "charcoal\n", - "charcoaled\n", - "charcoaling\n", - "charcoals\n", - "chard\n", - "chards\n", - "chare\n", - "chared\n", - "chares\n", - "charge\n", - "chargeable\n", - "charged\n", - "charger\n", - "chargers\n", - "charges\n", - "charging\n", - "charier\n", - "chariest\n", - "charily\n", - "charing\n", - "chariot\n", - "charioted\n", - "charioting\n", - "chariots\n", - "charism\n", - "charisma\n", - "charismata\n", - "charismatic\n", - "charisms\n", - "charities\n", - "charity\n", - "chark\n", - "charka\n", - "charkas\n", - "charked\n", - "charkha\n", - "charkhas\n", - "charking\n", - "charks\n", - "charladies\n", - "charlady\n", - "charlatan\n", - "charlatans\n", - "charleston\n", - "charlock\n", - "charlocks\n", - "charm\n", - "charmed\n", - "charmer\n", - "charmers\n", - "charming\n", - "charminger\n", - "charmingest\n", - "charmingly\n", - "charms\n", - "charnel\n", - "charnels\n", - "charpai\n", - "charpais\n", - "charpoy\n", - "charpoys\n", - "charqui\n", - "charquid\n", - "charquis\n", - "charr\n", - "charred\n", - "charrier\n", - "charriest\n", - "charring\n", - "charro\n", - "charros\n", - "charrs\n", - "charry\n", - "chars\n", - "chart\n", - "charted\n", - "charter\n", - "chartered\n", - "chartering\n", - "charters\n", - "charting\n", - "chartist\n", - "chartists\n", - "chartreuse\n", - "chartreuses\n", - "charts\n", - "charwoman\n", - "charwomen\n", - "chary\n", - "chase\n", - "chased\n", - "chaser\n", - "chasers\n", - "chases\n", - "chasing\n", - "chasings\n", - "chasm\n", - "chasmal\n", - "chasmed\n", - "chasmic\n", - "chasms\n", - "chasmy\n", - "chasse\n", - "chassed\n", - "chasseing\n", - "chasses\n", - "chasseur\n", - "chasseurs\n", - "chassis\n", - "chaste\n", - "chastely\n", - "chasten\n", - "chastened\n", - "chasteness\n", - "chastenesses\n", - "chastening\n", - "chastens\n", - "chaster\n", - "chastest\n", - "chastise\n", - "chastised\n", - "chastisement\n", - "chastisements\n", - "chastises\n", - "chastising\n", - "chastities\n", - "chastity\n", - "chasuble\n", - "chasubles\n", - "chat\n", - "chateau\n", - "chateaus\n", - "chateaux\n", - "chats\n", - "chatted\n", - "chattel\n", - "chattels\n", - "chatter\n", - "chatterbox\n", - "chatterboxes\n", - "chattered\n", - "chatterer\n", - "chatterers\n", - "chattering\n", - "chatters\n", - "chattery\n", - "chattier\n", - "chattiest\n", - "chattily\n", - "chatting\n", - "chatty\n", - "chaufer\n", - "chaufers\n", - "chauffer\n", - "chauffers\n", - "chauffeur\n", - "chauffeured\n", - "chauffeuring\n", - "chauffeurs\n", - "chaunt\n", - "chaunted\n", - "chaunter\n", - "chaunters\n", - "chaunting\n", - "chaunts\n", - "chausses\n", - "chauvinism\n", - "chauvinisms\n", - "chauvinist\n", - "chauvinistic\n", - "chauvinists\n", - "chaw\n", - "chawed\n", - "chawer\n", - "chawers\n", - "chawing\n", - "chaws\n", - "chayote\n", - "chayotes\n", - "chazan\n", - "chazanim\n", - "chazans\n", - "chazzen\n", - "chazzenim\n", - "chazzens\n", - "cheap\n", - "cheapen\n", - "cheapened\n", - "cheapening\n", - "cheapens\n", - "cheaper\n", - "cheapest\n", - "cheapie\n", - "cheapies\n", - "cheapish\n", - "cheaply\n", - "cheapness\n", - "cheapnesses\n", - "cheaps\n", - "cheapskate\n", - "cheapskates\n", - "cheat\n", - "cheated\n", - "cheater\n", - "cheaters\n", - "cheating\n", - "cheats\n", - "chebec\n", - "chebecs\n", - "chechako\n", - "chechakos\n", - "check\n", - "checked\n", - "checker\n", - "checkerboard\n", - "checkerboards\n", - "checkered\n", - "checkering\n", - "checkers\n", - "checking\n", - "checklist\n", - "checklists\n", - "checkmate\n", - "checkmated\n", - "checkmates\n", - "checkmating\n", - "checkoff\n", - "checkoffs\n", - "checkout\n", - "checkouts\n", - "checkpoint\n", - "checkpoints\n", - "checkrow\n", - "checkrowed\n", - "checkrowing\n", - "checkrows\n", - "checks\n", - "checkup\n", - "checkups\n", - "cheddar\n", - "cheddars\n", - "cheddite\n", - "cheddites\n", - "cheder\n", - "cheders\n", - "chedite\n", - "chedites\n", - "cheek\n", - "cheeked\n", - "cheekful\n", - "cheekfuls\n", - "cheekier\n", - "cheekiest\n", - "cheekily\n", - "cheeking\n", - "cheeks\n", - "cheeky\n", - "cheep\n", - "cheeped\n", - "cheeper\n", - "cheepers\n", - "cheeping\n", - "cheeps\n", - "cheer\n", - "cheered\n", - "cheerer\n", - "cheerers\n", - "cheerful\n", - "cheerfuller\n", - "cheerfullest\n", - "cheerfully\n", - "cheerfulness\n", - "cheerfulnesses\n", - "cheerier\n", - "cheeriest\n", - "cheerily\n", - "cheeriness\n", - "cheerinesses\n", - "cheering\n", - "cheerio\n", - "cheerios\n", - "cheerleader\n", - "cheerleaders\n", - "cheerless\n", - "cheerlessly\n", - "cheerlessness\n", - "cheerlessnesses\n", - "cheero\n", - "cheeros\n", - "cheers\n", - "cheery\n", - "cheese\n", - "cheesecloth\n", - "cheesecloths\n", - "cheesed\n", - "cheeses\n", - "cheesier\n", - "cheesiest\n", - "cheesily\n", - "cheesing\n", - "cheesy\n", - "cheetah\n", - "cheetahs\n", - "chef\n", - "chefdom\n", - "chefdoms\n", - "chefs\n", - "chegoe\n", - "chegoes\n", - "chela\n", - "chelae\n", - "chelas\n", - "chelate\n", - "chelated\n", - "chelates\n", - "chelating\n", - "chelator\n", - "chelators\n", - "cheloid\n", - "cheloids\n", - "chemic\n", - "chemical\n", - "chemically\n", - "chemicals\n", - "chemics\n", - "chemise\n", - "chemises\n", - "chemism\n", - "chemisms\n", - "chemist\n", - "chemistries\n", - "chemistry\n", - "chemists\n", - "chemotherapeutic\n", - "chemotherapeutical\n", - "chemotherapies\n", - "chemotherapy\n", - "chemurgies\n", - "chemurgy\n", - "chenille\n", - "chenilles\n", - "chenopod\n", - "chenopods\n", - "cheque\n", - "chequer\n", - "chequered\n", - "chequering\n", - "chequers\n", - "cheques\n", - "cherish\n", - "cherished\n", - "cherishes\n", - "cherishing\n", - "cheroot\n", - "cheroots\n", - "cherries\n", - "cherry\n", - "chert\n", - "chertier\n", - "chertiest\n", - "cherts\n", - "cherty\n", - "cherub\n", - "cherubic\n", - "cherubim\n", - "cherubs\n", - "chervil\n", - "chervils\n", - "chess\n", - "chessboard\n", - "chessboards\n", - "chesses\n", - "chessman\n", - "chessmen\n", - "chessplayer\n", - "chessplayers\n", - "chest\n", - "chested\n", - "chestful\n", - "chestfuls\n", - "chestier\n", - "chestiest\n", - "chestnut\n", - "chestnuts\n", - "chests\n", - "chesty\n", - "chetah\n", - "chetahs\n", - "cheth\n", - "cheths\n", - "chevalet\n", - "chevalets\n", - "cheveron\n", - "cheverons\n", - "chevied\n", - "chevies\n", - "cheviot\n", - "cheviots\n", - "chevron\n", - "chevrons\n", - "chevy\n", - "chevying\n", - "chew\n", - "chewable\n", - "chewed\n", - "chewer\n", - "chewers\n", - "chewier\n", - "chewiest\n", - "chewing\n", - "chewink\n", - "chewinks\n", - "chews\n", - "chewy\n", - "chez\n", - "chi\n", - "chia\n", - "chiao\n", - "chias\n", - "chiasm\n", - "chiasma\n", - "chiasmal\n", - "chiasmas\n", - "chiasmata\n", - "chiasmi\n", - "chiasmic\n", - "chiasms\n", - "chiasmus\n", - "chiastic\n", - "chiaus\n", - "chiauses\n", - "chibouk\n", - "chibouks\n", - "chic\n", - "chicane\n", - "chicaned\n", - "chicaner\n", - "chicaneries\n", - "chicaners\n", - "chicanery\n", - "chicanes\n", - "chicaning\n", - "chiccories\n", - "chiccory\n", - "chichi\n", - "chichis\n", - "chick\n", - "chickadee\n", - "chickadees\n", - "chicken\n", - "chickened\n", - "chickening\n", - "chickens\n", - "chickpea\n", - "chickpeas\n", - "chicks\n", - "chicle\n", - "chicles\n", - "chicly\n", - "chicness\n", - "chicnesses\n", - "chico\n", - "chicories\n", - "chicory\n", - "chicos\n", - "chics\n", - "chid\n", - "chidden\n", - "chide\n", - "chided\n", - "chider\n", - "chiders\n", - "chides\n", - "chiding\n", - "chief\n", - "chiefdom\n", - "chiefdoms\n", - "chiefer\n", - "chiefest\n", - "chiefly\n", - "chiefs\n", - "chieftain\n", - "chieftaincies\n", - "chieftaincy\n", - "chieftains\n", - "chiel\n", - "chield\n", - "chields\n", - "chiels\n", - "chiffon\n", - "chiffons\n", - "chigetai\n", - "chigetais\n", - "chigger\n", - "chiggers\n", - "chignon\n", - "chignons\n", - "chigoe\n", - "chigoes\n", - "chilblain\n", - "chilblains\n", - "child\n", - "childbearing\n", - "childbed\n", - "childbeds\n", - "childbirth\n", - "childbirths\n", - "childe\n", - "childes\n", - "childhood\n", - "childhoods\n", - "childing\n", - "childish\n", - "childishly\n", - "childishness\n", - "childishnesses\n", - "childless\n", - "childlessness\n", - "childlessnesses\n", - "childlier\n", - "childliest\n", - "childlike\n", - "childly\n", - "children\n", - "chile\n", - "chiles\n", - "chili\n", - "chiliad\n", - "chiliads\n", - "chiliasm\n", - "chiliasms\n", - "chiliast\n", - "chiliasts\n", - "chilies\n", - "chill\n", - "chilled\n", - "chiller\n", - "chillers\n", - "chillest\n", - "chilli\n", - "chillier\n", - "chillies\n", - "chilliest\n", - "chillily\n", - "chilliness\n", - "chillinesses\n", - "chilling\n", - "chills\n", - "chillum\n", - "chillums\n", - "chilly\n", - "chilopod\n", - "chilopods\n", - "chimaera\n", - "chimaeras\n", - "chimar\n", - "chimars\n", - "chimb\n", - "chimbley\n", - "chimbleys\n", - "chimblies\n", - "chimbly\n", - "chimbs\n", - "chime\n", - "chimed\n", - "chimer\n", - "chimera\n", - "chimeras\n", - "chimere\n", - "chimeres\n", - "chimeric\n", - "chimerical\n", - "chimers\n", - "chimes\n", - "chiming\n", - "chimla\n", - "chimlas\n", - "chimley\n", - "chimleys\n", - "chimney\n", - "chimneys\n", - "chimp\n", - "chimpanzee\n", - "chimpanzees\n", - "chimps\n", - "chin\n", - "china\n", - "chinas\n", - "chinbone\n", - "chinbones\n", - "chinch\n", - "chinches\n", - "chinchier\n", - "chinchiest\n", - "chinchilla\n", - "chinchillas\n", - "chinchy\n", - "chine\n", - "chined\n", - "chines\n", - "chining\n", - "chink\n", - "chinked\n", - "chinkier\n", - "chinkiest\n", - "chinking\n", - "chinks\n", - "chinky\n", - "chinless\n", - "chinned\n", - "chinning\n", - "chino\n", - "chinone\n", - "chinones\n", - "chinook\n", - "chinooks\n", - "chinos\n", - "chins\n", - "chints\n", - "chintses\n", - "chintz\n", - "chintzes\n", - "chintzier\n", - "chintziest\n", - "chintzy\n", - "chip\n", - "chipmuck\n", - "chipmucks\n", - "chipmunk\n", - "chipmunks\n", - "chipped\n", - "chipper\n", - "chippered\n", - "chippering\n", - "chippers\n", - "chippie\n", - "chippies\n", - "chipping\n", - "chippy\n", - "chips\n", - "chirk\n", - "chirked\n", - "chirker\n", - "chirkest\n", - "chirking\n", - "chirks\n", - "chirm\n", - "chirmed\n", - "chirming\n", - "chirms\n", - "chiro\n", - "chiropodies\n", - "chiropodist\n", - "chiropodists\n", - "chiropody\n", - "chiropractic\n", - "chiropractics\n", - "chiropractor\n", - "chiropractors\n", - "chiros\n", - "chirp\n", - "chirped\n", - "chirper\n", - "chirpers\n", - "chirpier\n", - "chirpiest\n", - "chirpily\n", - "chirping\n", - "chirps\n", - "chirpy\n", - "chirr\n", - "chirre\n", - "chirred\n", - "chirres\n", - "chirring\n", - "chirrs\n", - "chirrup\n", - "chirruped\n", - "chirruping\n", - "chirrups\n", - "chirrupy\n", - "chis\n", - "chisel\n", - "chiseled\n", - "chiseler\n", - "chiselers\n", - "chiseling\n", - "chiselled\n", - "chiselling\n", - "chisels\n", - "chit\n", - "chital\n", - "chitchat\n", - "chitchats\n", - "chitchatted\n", - "chitchatting\n", - "chitin\n", - "chitins\n", - "chitlin\n", - "chitling\n", - "chitlings\n", - "chitlins\n", - "chiton\n", - "chitons\n", - "chits\n", - "chitter\n", - "chittered\n", - "chittering\n", - "chitters\n", - "chitties\n", - "chitty\n", - "chivalric\n", - "chivalries\n", - "chivalrous\n", - "chivalrously\n", - "chivalrousness\n", - "chivalrousnesses\n", - "chivalry\n", - "chivaree\n", - "chivareed\n", - "chivareeing\n", - "chivarees\n", - "chivari\n", - "chivaried\n", - "chivariing\n", - "chivaris\n", - "chive\n", - "chives\n", - "chivied\n", - "chivies\n", - "chivvied\n", - "chivvies\n", - "chivvy\n", - "chivvying\n", - "chivy\n", - "chivying\n", - "chlamydes\n", - "chlamys\n", - "chlamyses\n", - "chloral\n", - "chlorals\n", - "chlorambucil\n", - "chlorate\n", - "chlorates\n", - "chlordan\n", - "chlordans\n", - "chloric\n", - "chlorid\n", - "chloride\n", - "chlorides\n", - "chlorids\n", - "chlorin\n", - "chlorinate\n", - "chlorinated\n", - "chlorinates\n", - "chlorinating\n", - "chlorination\n", - "chlorinations\n", - "chlorinator\n", - "chlorinators\n", - "chlorine\n", - "chlorines\n", - "chlorins\n", - "chlorite\n", - "chlorites\n", - "chloroform\n", - "chloroformed\n", - "chloroforming\n", - "chloroforms\n", - "chlorophyll\n", - "chlorophylls\n", - "chlorous\n", - "chock\n", - "chocked\n", - "chockfull\n", - "chocking\n", - "chocks\n", - "chocolate\n", - "chocolates\n", - "choice\n", - "choicely\n", - "choicer\n", - "choices\n", - "choicest\n", - "choir\n", - "choirboy\n", - "choirboys\n", - "choired\n", - "choiring\n", - "choirmaster\n", - "choirmasters\n", - "choirs\n", - "choke\n", - "choked\n", - "choker\n", - "chokers\n", - "chokes\n", - "chokey\n", - "chokier\n", - "chokiest\n", - "choking\n", - "choky\n", - "cholate\n", - "cholates\n", - "choler\n", - "cholera\n", - "choleras\n", - "choleric\n", - "cholers\n", - "cholesterol\n", - "cholesterols\n", - "choline\n", - "cholines\n", - "cholla\n", - "chollas\n", - "chomp\n", - "chomped\n", - "chomping\n", - "chomps\n", - "chon\n", - "choose\n", - "chooser\n", - "choosers\n", - "chooses\n", - "choosey\n", - "choosier\n", - "choosiest\n", - "choosing\n", - "choosy\n", - "chop\n", - "chopin\n", - "chopine\n", - "chopines\n", - "chopins\n", - "chopped\n", - "chopper\n", - "choppers\n", - "choppier\n", - "choppiest\n", - "choppily\n", - "choppiness\n", - "choppinesses\n", - "chopping\n", - "choppy\n", - "chops\n", - "chopsticks\n", - "choragi\n", - "choragic\n", - "choragus\n", - "choraguses\n", - "choral\n", - "chorale\n", - "chorales\n", - "chorally\n", - "chorals\n", - "chord\n", - "chordal\n", - "chordate\n", - "chordates\n", - "chorded\n", - "chording\n", - "chords\n", - "chore\n", - "chorea\n", - "choreal\n", - "choreas\n", - "chored\n", - "choregi\n", - "choregus\n", - "choreguses\n", - "choreic\n", - "choreman\n", - "choremen\n", - "choreograph\n", - "choreographed\n", - "choreographer\n", - "choreographers\n", - "choreographic\n", - "choreographies\n", - "choreographing\n", - "choreographs\n", - "choreography\n", - "choreoid\n", - "chores\n", - "chorial\n", - "choriamb\n", - "choriambs\n", - "choric\n", - "chorine\n", - "chorines\n", - "choring\n", - "chorioid\n", - "chorioids\n", - "chorion\n", - "chorions\n", - "chorister\n", - "choristers\n", - "chorizo\n", - "chorizos\n", - "choroid\n", - "choroids\n", - "chortle\n", - "chortled\n", - "chortler\n", - "chortlers\n", - "chortles\n", - "chortling\n", - "chorus\n", - "chorused\n", - "choruses\n", - "chorusing\n", - "chorussed\n", - "chorusses\n", - "chorussing\n", - "chose\n", - "chosen\n", - "choses\n", - "chott\n", - "chotts\n", - "chough\n", - "choughs\n", - "chouse\n", - "choused\n", - "chouser\n", - "chousers\n", - "chouses\n", - "choush\n", - "choushes\n", - "chousing\n", - "chow\n", - "chowchow\n", - "chowchows\n", - "chowder\n", - "chowdered\n", - "chowdering\n", - "chowders\n", - "chowed\n", - "chowing\n", - "chows\n", - "chowse\n", - "chowsed\n", - "chowses\n", - "chowsing\n", - "chowtime\n", - "chowtimes\n", - "chresard\n", - "chresards\n", - "chrism\n", - "chrisma\n", - "chrismal\n", - "chrismon\n", - "chrismons\n", - "chrisms\n", - "chrisom\n", - "chrisoms\n", - "christen\n", - "christened\n", - "christening\n", - "christenings\n", - "christens\n", - "christie\n", - "christies\n", - "christy\n", - "chroma\n", - "chromas\n", - "chromate\n", - "chromates\n", - "chromatic\n", - "chrome\n", - "chromed\n", - "chromes\n", - "chromic\n", - "chromide\n", - "chromides\n", - "chroming\n", - "chromite\n", - "chromites\n", - "chromium\n", - "chromiums\n", - "chromize\n", - "chromized\n", - "chromizes\n", - "chromizing\n", - "chromo\n", - "chromos\n", - "chromosomal\n", - "chromosome\n", - "chromosomes\n", - "chromous\n", - "chromyl\n", - "chronaxies\n", - "chronaxy\n", - "chronic\n", - "chronicle\n", - "chronicled\n", - "chronicler\n", - "chroniclers\n", - "chronicles\n", - "chronicling\n", - "chronics\n", - "chronologic\n", - "chronological\n", - "chronologically\n", - "chronologies\n", - "chronology\n", - "chronometer\n", - "chronometers\n", - "chronon\n", - "chronons\n", - "chrysalides\n", - "chrysalis\n", - "chrysalises\n", - "chrysanthemum\n", - "chrysanthemums\n", - "chthonic\n", - "chub\n", - "chubasco\n", - "chubascos\n", - "chubbier\n", - "chubbiest\n", - "chubbily\n", - "chubbiness\n", - "chubbinesses\n", - "chubby\n", - "chubs\n", - "chuck\n", - "chucked\n", - "chuckies\n", - "chucking\n", - "chuckle\n", - "chuckled\n", - "chuckler\n", - "chucklers\n", - "chuckles\n", - "chuckling\n", - "chucks\n", - "chucky\n", - "chuddah\n", - "chuddahs\n", - "chuddar\n", - "chuddars\n", - "chudder\n", - "chudders\n", - "chufa\n", - "chufas\n", - "chuff\n", - "chuffed\n", - "chuffer\n", - "chuffest\n", - "chuffier\n", - "chuffiest\n", - "chuffing\n", - "chuffs\n", - "chuffy\n", - "chug\n", - "chugged\n", - "chugger\n", - "chuggers\n", - "chugging\n", - "chugs\n", - "chukar\n", - "chukars\n", - "chukka\n", - "chukkar\n", - "chukkars\n", - "chukkas\n", - "chukker\n", - "chukkers\n", - "chum\n", - "chummed\n", - "chummier\n", - "chummiest\n", - "chummily\n", - "chumming\n", - "chummy\n", - "chump\n", - "chumped\n", - "chumping\n", - "chumps\n", - "chums\n", - "chumship\n", - "chumships\n", - "chunk\n", - "chunked\n", - "chunkier\n", - "chunkiest\n", - "chunkily\n", - "chunking\n", - "chunks\n", - "chunky\n", - "chunter\n", - "chuntered\n", - "chuntering\n", - "chunters\n", - "church\n", - "churched\n", - "churches\n", - "churchgoer\n", - "churchgoers\n", - "churchgoing\n", - "churchgoings\n", - "churchier\n", - "churchiest\n", - "churching\n", - "churchlier\n", - "churchliest\n", - "churchly\n", - "churchy\n", - "churchyard\n", - "churchyards\n", - "churl\n", - "churlish\n", - "churls\n", - "churn\n", - "churned\n", - "churner\n", - "churners\n", - "churning\n", - "churnings\n", - "churns\n", - "churr\n", - "churred\n", - "churring\n", - "churrs\n", - "chute\n", - "chuted\n", - "chutes\n", - "chuting\n", - "chutist\n", - "chutists\n", - "chutnee\n", - "chutnees\n", - "chutney\n", - "chutneys\n", - "chutzpa\n", - "chutzpah\n", - "chutzpahs\n", - "chutzpas\n", - "chyle\n", - "chyles\n", - "chylous\n", - "chyme\n", - "chymes\n", - "chymic\n", - "chymics\n", - "chymist\n", - "chymists\n", - "chymosin\n", - "chymosins\n", - "chymous\n", - "ciao\n", - "cibol\n", - "cibols\n", - "ciboria\n", - "ciborium\n", - "ciboule\n", - "ciboules\n", - "cicada\n", - "cicadae\n", - "cicadas\n", - "cicala\n", - "cicalas\n", - "cicale\n", - "cicatrices\n", - "cicatrix\n", - "cicelies\n", - "cicely\n", - "cicero\n", - "cicerone\n", - "cicerones\n", - "ciceroni\n", - "ciceros\n", - "cichlid\n", - "cichlidae\n", - "cichlids\n", - "cicisbei\n", - "cicisbeo\n", - "cicoree\n", - "cicorees\n", - "cider\n", - "ciders\n", - "cigar\n", - "cigaret\n", - "cigarets\n", - "cigarette\n", - "cigarettes\n", - "cigars\n", - "cilantro\n", - "cilantros\n", - "cilia\n", - "ciliary\n", - "ciliate\n", - "ciliated\n", - "ciliates\n", - "cilice\n", - "cilices\n", - "cilium\n", - "cimex\n", - "cimices\n", - "cinch\n", - "cinched\n", - "cinches\n", - "cinching\n", - "cinchona\n", - "cinchonas\n", - "cincture\n", - "cinctured\n", - "cinctures\n", - "cincturing\n", - "cinder\n", - "cindered\n", - "cindering\n", - "cinders\n", - "cindery\n", - "cine\n", - "cineast\n", - "cineaste\n", - "cineastes\n", - "cineasts\n", - "cinema\n", - "cinemas\n", - "cinematic\n", - "cineol\n", - "cineole\n", - "cineoles\n", - "cineols\n", - "cinerary\n", - "cinerin\n", - "cinerins\n", - "cines\n", - "cingula\n", - "cingulum\n", - "cinnabar\n", - "cinnabars\n", - "cinnamic\n", - "cinnamon\n", - "cinnamons\n", - "cinnamyl\n", - "cinnamyls\n", - "cinquain\n", - "cinquains\n", - "cinque\n", - "cinques\n", - "cion\n", - "cions\n", - "cipher\n", - "ciphered\n", - "ciphering\n", - "ciphers\n", - "ciphonies\n", - "ciphony\n", - "cipolin\n", - "cipolins\n", - "circa\n", - "circle\n", - "circled\n", - "circler\n", - "circlers\n", - "circles\n", - "circlet\n", - "circlets\n", - "circling\n", - "circuit\n", - "circuited\n", - "circuities\n", - "circuiting\n", - "circuitous\n", - "circuitries\n", - "circuitry\n", - "circuits\n", - "circuity\n", - "circular\n", - "circularities\n", - "circularity\n", - "circularly\n", - "circulars\n", - "circulate\n", - "circulated\n", - "circulates\n", - "circulating\n", - "circulation\n", - "circulations\n", - "circulatory\n", - "circumcise\n", - "circumcised\n", - "circumcises\n", - "circumcising\n", - "circumcision\n", - "circumcisions\n", - "circumference\n", - "circumferences\n", - "circumflex\n", - "circumflexes\n", - "circumlocution\n", - "circumlocutions\n", - "circumnavigate\n", - "circumnavigated\n", - "circumnavigates\n", - "circumnavigating\n", - "circumnavigation\n", - "circumnavigations\n", - "circumscribe\n", - "circumscribed\n", - "circumscribes\n", - "circumscribing\n", - "circumspect\n", - "circumspection\n", - "circumspections\n", - "circumstance\n", - "circumstances\n", - "circumstantial\n", - "circumvent\n", - "circumvented\n", - "circumventing\n", - "circumvents\n", - "circus\n", - "circuses\n", - "circusy\n", - "cirque\n", - "cirques\n", - "cirrate\n", - "cirrhoses\n", - "cirrhosis\n", - "cirrhotic\n", - "cirri\n", - "cirriped\n", - "cirripeds\n", - "cirrose\n", - "cirrous\n", - "cirrus\n", - "cirsoid\n", - "cisco\n", - "ciscoes\n", - "ciscos\n", - "cislunar\n", - "cissoid\n", - "cissoids\n", - "cist\n", - "cistern\n", - "cisterna\n", - "cisternae\n", - "cisterns\n", - "cistron\n", - "cistrons\n", - "cists\n", - "citable\n", - "citadel\n", - "citadels\n", - "citation\n", - "citations\n", - "citatory\n", - "cite\n", - "citeable\n", - "cited\n", - "citer\n", - "citers\n", - "cites\n", - "cithara\n", - "citharas\n", - "cither\n", - "cithern\n", - "citherns\n", - "cithers\n", - "cithren\n", - "cithrens\n", - "citied\n", - "cities\n", - "citified\n", - "citifies\n", - "citify\n", - "citifying\n", - "citing\n", - "citizen\n", - "citizenries\n", - "citizenry\n", - "citizens\n", - "citizenship\n", - "citizenships\n", - "citola\n", - "citolas\n", - "citole\n", - "citoles\n", - "citral\n", - "citrals\n", - "citrate\n", - "citrated\n", - "citrates\n", - "citreous\n", - "citric\n", - "citrin\n", - "citrine\n", - "citrines\n", - "citrins\n", - "citron\n", - "citrons\n", - "citrous\n", - "citrus\n", - "citruses\n", - "cittern\n", - "citterns\n", - "city\n", - "cityfied\n", - "cityward\n", - "civet\n", - "civets\n", - "civic\n", - "civicism\n", - "civicisms\n", - "civics\n", - "civie\n", - "civies\n", - "civil\n", - "civilian\n", - "civilians\n", - "civilise\n", - "civilised\n", - "civilises\n", - "civilising\n", - "civilities\n", - "civility\n", - "civilization\n", - "civilizations\n", - "civilize\n", - "civilized\n", - "civilizes\n", - "civilizing\n", - "civilly\n", - "civism\n", - "civisms\n", - "civvies\n", - "civvy\n", - "clabber\n", - "clabbered\n", - "clabbering\n", - "clabbers\n", - "clach\n", - "clachan\n", - "clachans\n", - "clachs\n", - "clack\n", - "clacked\n", - "clacker\n", - "clackers\n", - "clacking\n", - "clacks\n", - "clad\n", - "cladding\n", - "claddings\n", - "cladode\n", - "cladodes\n", - "clads\n", - "clag\n", - "clagged\n", - "clagging\n", - "clags\n", - "claim\n", - "claimant\n", - "claimants\n", - "claimed\n", - "claimer\n", - "claimers\n", - "claiming\n", - "claims\n", - "clairvoyance\n", - "clairvoyances\n", - "clairvoyant\n", - "clairvoyants\n", - "clam\n", - "clamant\n", - "clambake\n", - "clambakes\n", - "clamber\n", - "clambered\n", - "clambering\n", - "clambers\n", - "clammed\n", - "clammier\n", - "clammiest\n", - "clammily\n", - "clamminess\n", - "clamminesses\n", - "clamming\n", - "clammy\n", - "clamor\n", - "clamored\n", - "clamorer\n", - "clamorers\n", - "clamoring\n", - "clamorous\n", - "clamors\n", - "clamour\n", - "clamoured\n", - "clamouring\n", - "clamours\n", - "clamp\n", - "clamped\n", - "clamper\n", - "clampers\n", - "clamping\n", - "clamps\n", - "clams\n", - "clamworm\n", - "clamworms\n", - "clan\n", - "clandestine\n", - "clang\n", - "clanged\n", - "clanging\n", - "clangor\n", - "clangored\n", - "clangoring\n", - "clangors\n", - "clangour\n", - "clangoured\n", - "clangouring\n", - "clangours\n", - "clangs\n", - "clank\n", - "clanked\n", - "clanking\n", - "clanks\n", - "clannish\n", - "clannishness\n", - "clannishnesses\n", - "clans\n", - "clansman\n", - "clansmen\n", - "clap\n", - "clapboard\n", - "clapboards\n", - "clapped\n", - "clapper\n", - "clappers\n", - "clapping\n", - "claps\n", - "clapt\n", - "claptrap\n", - "claptraps\n", - "claque\n", - "claquer\n", - "claquers\n", - "claques\n", - "claqueur\n", - "claqueurs\n", - "clarence\n", - "clarences\n", - "claret\n", - "clarets\n", - "claries\n", - "clarification\n", - "clarifications\n", - "clarified\n", - "clarifies\n", - "clarify\n", - "clarifying\n", - "clarinet\n", - "clarinetist\n", - "clarinetists\n", - "clarinets\n", - "clarinettist\n", - "clarinettists\n", - "clarion\n", - "clarioned\n", - "clarioning\n", - "clarions\n", - "clarities\n", - "clarity\n", - "clarkia\n", - "clarkias\n", - "claro\n", - "claroes\n", - "claros\n", - "clary\n", - "clash\n", - "clashed\n", - "clasher\n", - "clashers\n", - "clashes\n", - "clashing\n", - "clasp\n", - "clasped\n", - "clasper\n", - "claspers\n", - "clasping\n", - "clasps\n", - "claspt\n", - "class\n", - "classed\n", - "classer\n", - "classers\n", - "classes\n", - "classic\n", - "classical\n", - "classically\n", - "classicism\n", - "classicisms\n", - "classicist\n", - "classicists\n", - "classics\n", - "classier\n", - "classiest\n", - "classification\n", - "classifications\n", - "classified\n", - "classifies\n", - "classify\n", - "classifying\n", - "classily\n", - "classing\n", - "classis\n", - "classless\n", - "classmate\n", - "classmates\n", - "classroom\n", - "classrooms\n", - "classy\n", - "clast\n", - "clastic\n", - "clastics\n", - "clasts\n", - "clatter\n", - "clattered\n", - "clattering\n", - "clatters\n", - "clattery\n", - "claucht\n", - "claught\n", - "claughted\n", - "claughting\n", - "claughts\n", - "clausal\n", - "clause\n", - "clauses\n", - "claustrophobia\n", - "claustrophobias\n", - "clavate\n", - "clave\n", - "claver\n", - "clavered\n", - "clavering\n", - "clavers\n", - "clavichord\n", - "clavichords\n", - "clavicle\n", - "clavicles\n", - "clavier\n", - "claviers\n", - "claw\n", - "clawed\n", - "clawer\n", - "clawers\n", - "clawing\n", - "clawless\n", - "claws\n", - "claxon\n", - "claxons\n", - "clay\n", - "claybank\n", - "claybanks\n", - "clayed\n", - "clayey\n", - "clayier\n", - "clayiest\n", - "claying\n", - "clayish\n", - "claylike\n", - "claymore\n", - "claymores\n", - "claypan\n", - "claypans\n", - "clays\n", - "clayware\n", - "claywares\n", - "clean\n", - "cleaned\n", - "cleaner\n", - "cleaners\n", - "cleanest\n", - "cleaning\n", - "cleanlier\n", - "cleanliest\n", - "cleanliness\n", - "cleanlinesses\n", - "cleanly\n", - "cleanness\n", - "cleannesses\n", - "cleans\n", - "cleanse\n", - "cleansed\n", - "cleanser\n", - "cleansers\n", - "cleanses\n", - "cleansing\n", - "cleanup\n", - "cleanups\n", - "clear\n", - "clearance\n", - "clearances\n", - "cleared\n", - "clearer\n", - "clearers\n", - "clearest\n", - "clearing\n", - "clearings\n", - "clearly\n", - "clearness\n", - "clearnesses\n", - "clears\n", - "cleat\n", - "cleated\n", - "cleating\n", - "cleats\n", - "cleavage\n", - "cleavages\n", - "cleave\n", - "cleaved\n", - "cleaver\n", - "cleavers\n", - "cleaves\n", - "cleaving\n", - "cleek\n", - "cleeked\n", - "cleeking\n", - "cleeks\n", - "clef\n", - "clefs\n", - "cleft\n", - "clefts\n", - "clematis\n", - "clematises\n", - "clemencies\n", - "clemency\n", - "clement\n", - "clench\n", - "clenched\n", - "clenches\n", - "clenching\n", - "cleome\n", - "cleomes\n", - "clepe\n", - "cleped\n", - "clepes\n", - "cleping\n", - "clept\n", - "clergies\n", - "clergy\n", - "clergyman\n", - "clergymen\n", - "cleric\n", - "clerical\n", - "clericals\n", - "clerics\n", - "clerid\n", - "clerids\n", - "clerihew\n", - "clerihews\n", - "clerisies\n", - "clerisy\n", - "clerk\n", - "clerkdom\n", - "clerkdoms\n", - "clerked\n", - "clerking\n", - "clerkish\n", - "clerklier\n", - "clerkliest\n", - "clerkly\n", - "clerks\n", - "clerkship\n", - "clerkships\n", - "cleveite\n", - "cleveites\n", - "clever\n", - "cleverer\n", - "cleverest\n", - "cleverly\n", - "cleverness\n", - "clevernesses\n", - "clevis\n", - "clevises\n", - "clew\n", - "clewed\n", - "clewing\n", - "clews\n", - "cliche\n", - "cliched\n", - "cliches\n", - "click\n", - "clicked\n", - "clicker\n", - "clickers\n", - "clicking\n", - "clicks\n", - "client\n", - "cliental\n", - "clients\n", - "cliff\n", - "cliffier\n", - "cliffiest\n", - "cliffs\n", - "cliffy\n", - "clift\n", - "clifts\n", - "climactic\n", - "climatal\n", - "climate\n", - "climates\n", - "climatic\n", - "climax\n", - "climaxed\n", - "climaxes\n", - "climaxing\n", - "climb\n", - "climbed\n", - "climber\n", - "climbers\n", - "climbing\n", - "climbs\n", - "clime\n", - "climes\n", - "clinal\n", - "clinally\n", - "clinch\n", - "clinched\n", - "clincher\n", - "clinchers\n", - "clinches\n", - "clinching\n", - "cline\n", - "clines\n", - "cling\n", - "clinged\n", - "clinger\n", - "clingers\n", - "clingier\n", - "clingiest\n", - "clinging\n", - "clings\n", - "clingy\n", - "clinic\n", - "clinical\n", - "clinically\n", - "clinician\n", - "clinicians\n", - "clinics\n", - "clink\n", - "clinked\n", - "clinker\n", - "clinkered\n", - "clinkering\n", - "clinkers\n", - "clinking\n", - "clinks\n", - "clip\n", - "clipboard\n", - "clipboards\n", - "clipped\n", - "clipper\n", - "clippers\n", - "clipping\n", - "clippings\n", - "clips\n", - "clipt\n", - "clique\n", - "cliqued\n", - "cliqueier\n", - "cliqueiest\n", - "cliques\n", - "cliquey\n", - "cliquier\n", - "cliquiest\n", - "cliquing\n", - "cliquish\n", - "cliquy\n", - "clitella\n", - "clitoral\n", - "clitoric\n", - "clitoris\n", - "clitorises\n", - "clivers\n", - "cloaca\n", - "cloacae\n", - "cloacal\n", - "cloak\n", - "cloaked\n", - "cloaking\n", - "cloaks\n", - "clobber\n", - "clobbered\n", - "clobbering\n", - "clobbers\n", - "cloche\n", - "cloches\n", - "clock\n", - "clocked\n", - "clocker\n", - "clockers\n", - "clocking\n", - "clocks\n", - "clockwise\n", - "clockwork\n", - "clod\n", - "cloddier\n", - "cloddiest\n", - "cloddish\n", - "cloddy\n", - "clodpate\n", - "clodpates\n", - "clodpole\n", - "clodpoles\n", - "clodpoll\n", - "clodpolls\n", - "clods\n", - "clog\n", - "clogged\n", - "cloggier\n", - "cloggiest\n", - "clogging\n", - "cloggy\n", - "clogs\n", - "cloister\n", - "cloistered\n", - "cloistering\n", - "cloisters\n", - "clomb\n", - "clomp\n", - "clomped\n", - "clomping\n", - "clomps\n", - "clon\n", - "clonal\n", - "clonally\n", - "clone\n", - "cloned\n", - "clones\n", - "clonic\n", - "cloning\n", - "clonism\n", - "clonisms\n", - "clonk\n", - "clonked\n", - "clonking\n", - "clonks\n", - "clons\n", - "clonus\n", - "clonuses\n", - "cloot\n", - "cloots\n", - "clop\n", - "clopped\n", - "clopping\n", - "clops\n", - "closable\n", - "close\n", - "closed\n", - "closely\n", - "closeness\n", - "closenesses\n", - "closeout\n", - "closeouts\n", - "closer\n", - "closers\n", - "closes\n", - "closest\n", - "closet\n", - "closeted\n", - "closeting\n", - "closets\n", - "closing\n", - "closings\n", - "closure\n", - "closured\n", - "closures\n", - "closuring\n", - "clot\n", - "cloth\n", - "clothe\n", - "clothed\n", - "clothes\n", - "clothier\n", - "clothiers\n", - "clothing\n", - "clothings\n", - "cloths\n", - "clots\n", - "clotted\n", - "clotting\n", - "clotty\n", - "cloture\n", - "clotured\n", - "clotures\n", - "cloturing\n", - "cloud\n", - "cloudburst\n", - "cloudbursts\n", - "clouded\n", - "cloudier\n", - "cloudiest\n", - "cloudily\n", - "cloudiness\n", - "cloudinesses\n", - "clouding\n", - "cloudless\n", - "cloudlet\n", - "cloudlets\n", - "clouds\n", - "cloudy\n", - "clough\n", - "cloughs\n", - "clour\n", - "cloured\n", - "clouring\n", - "clours\n", - "clout\n", - "clouted\n", - "clouter\n", - "clouters\n", - "clouting\n", - "clouts\n", - "clove\n", - "cloven\n", - "clover\n", - "clovers\n", - "cloves\n", - "clowder\n", - "clowders\n", - "clown\n", - "clowned\n", - "clowneries\n", - "clownery\n", - "clowning\n", - "clownish\n", - "clownishly\n", - "clownishness\n", - "clownishnesses\n", - "clowns\n", - "cloy\n", - "cloyed\n", - "cloying\n", - "cloys\n", - "cloze\n", - "club\n", - "clubable\n", - "clubbed\n", - "clubber\n", - "clubbers\n", - "clubbier\n", - "clubbiest\n", - "clubbing\n", - "clubby\n", - "clubfeet\n", - "clubfoot\n", - "clubfooted\n", - "clubhand\n", - "clubhands\n", - "clubhaul\n", - "clubhauled\n", - "clubhauling\n", - "clubhauls\n", - "clubman\n", - "clubmen\n", - "clubroot\n", - "clubroots\n", - "clubs\n", - "cluck\n", - "clucked\n", - "clucking\n", - "clucks\n", - "clue\n", - "clued\n", - "clueing\n", - "clues\n", - "cluing\n", - "clumber\n", - "clumbers\n", - "clump\n", - "clumped\n", - "clumpier\n", - "clumpiest\n", - "clumping\n", - "clumpish\n", - "clumps\n", - "clumpy\n", - "clumsier\n", - "clumsiest\n", - "clumsily\n", - "clumsiness\n", - "clumsinesses\n", - "clumsy\n", - "clung\n", - "clunk\n", - "clunked\n", - "clunker\n", - "clunkers\n", - "clunking\n", - "clunks\n", - "clupeid\n", - "clupeids\n", - "clupeoid\n", - "clupeoids\n", - "cluster\n", - "clustered\n", - "clustering\n", - "clusters\n", - "clustery\n", - "clutch\n", - "clutched\n", - "clutches\n", - "clutching\n", - "clutchy\n", - "clutter\n", - "cluttered\n", - "cluttering\n", - "clutters\n", - "clypeal\n", - "clypeate\n", - "clypei\n", - "clypeus\n", - "clyster\n", - "clysters\n", - "coach\n", - "coached\n", - "coacher\n", - "coachers\n", - "coaches\n", - "coaching\n", - "coachman\n", - "coachmen\n", - "coact\n", - "coacted\n", - "coacting\n", - "coaction\n", - "coactions\n", - "coactive\n", - "coacts\n", - "coadmire\n", - "coadmired\n", - "coadmires\n", - "coadmiring\n", - "coadmit\n", - "coadmits\n", - "coadmitted\n", - "coadmitting\n", - "coaeval\n", - "coaevals\n", - "coagencies\n", - "coagency\n", - "coagent\n", - "coagents\n", - "coagula\n", - "coagulant\n", - "coagulants\n", - "coagulate\n", - "coagulated\n", - "coagulates\n", - "coagulating\n", - "coagulation\n", - "coagulations\n", - "coagulum\n", - "coagulums\n", - "coal\n", - "coala\n", - "coalas\n", - "coalbin\n", - "coalbins\n", - "coalbox\n", - "coalboxes\n", - "coaled\n", - "coaler\n", - "coalers\n", - "coalesce\n", - "coalesced\n", - "coalescent\n", - "coalesces\n", - "coalescing\n", - "coalfield\n", - "coalfields\n", - "coalfish\n", - "coalfishes\n", - "coalhole\n", - "coalholes\n", - "coalified\n", - "coalifies\n", - "coalify\n", - "coalifying\n", - "coaling\n", - "coalition\n", - "coalitions\n", - "coalless\n", - "coalpit\n", - "coalpits\n", - "coals\n", - "coalsack\n", - "coalsacks\n", - "coalshed\n", - "coalsheds\n", - "coalyard\n", - "coalyards\n", - "coaming\n", - "coamings\n", - "coannex\n", - "coannexed\n", - "coannexes\n", - "coannexing\n", - "coappear\n", - "coappeared\n", - "coappearing\n", - "coappears\n", - "coapt\n", - "coapted\n", - "coapting\n", - "coapts\n", - "coarse\n", - "coarsely\n", - "coarsen\n", - "coarsened\n", - "coarseness\n", - "coarsenesses\n", - "coarsening\n", - "coarsens\n", - "coarser\n", - "coarsest\n", - "coassist\n", - "coassisted\n", - "coassisting\n", - "coassists\n", - "coassume\n", - "coassumed\n", - "coassumes\n", - "coassuming\n", - "coast\n", - "coastal\n", - "coasted\n", - "coaster\n", - "coasters\n", - "coasting\n", - "coastings\n", - "coastline\n", - "coastlines\n", - "coasts\n", - "coat\n", - "coated\n", - "coatee\n", - "coatees\n", - "coater\n", - "coaters\n", - "coati\n", - "coating\n", - "coatings\n", - "coatis\n", - "coatless\n", - "coatrack\n", - "coatracks\n", - "coatroom\n", - "coatrooms\n", - "coats\n", - "coattail\n", - "coattails\n", - "coattend\n", - "coattended\n", - "coattending\n", - "coattends\n", - "coattest\n", - "coattested\n", - "coattesting\n", - "coattests\n", - "coauthor\n", - "coauthored\n", - "coauthoring\n", - "coauthors\n", - "coauthorship\n", - "coauthorships\n", - "coax\n", - "coaxal\n", - "coaxed\n", - "coaxer\n", - "coaxers\n", - "coaxes\n", - "coaxial\n", - "coaxing\n", - "cob\n", - "cobalt\n", - "cobaltic\n", - "cobalts\n", - "cobb\n", - "cobber\n", - "cobbers\n", - "cobbier\n", - "cobbiest\n", - "cobble\n", - "cobbled\n", - "cobbler\n", - "cobblers\n", - "cobbles\n", - "cobblestone\n", - "cobblestones\n", - "cobbling\n", - "cobbs\n", - "cobby\n", - "cobia\n", - "cobias\n", - "coble\n", - "cobles\n", - "cobnut\n", - "cobnuts\n", - "cobra\n", - "cobras\n", - "cobs\n", - "cobweb\n", - "cobwebbed\n", - "cobwebbier\n", - "cobwebbiest\n", - "cobwebbing\n", - "cobwebby\n", - "cobwebs\n", - "coca\n", - "cocain\n", - "cocaine\n", - "cocaines\n", - "cocains\n", - "cocaptain\n", - "cocaptains\n", - "cocas\n", - "coccal\n", - "cocci\n", - "coccic\n", - "coccid\n", - "coccidia\n", - "coccids\n", - "coccoid\n", - "coccoids\n", - "coccous\n", - "coccus\n", - "coccyges\n", - "coccyx\n", - "coccyxes\n", - "cochair\n", - "cochaired\n", - "cochairing\n", - "cochairman\n", - "cochairmen\n", - "cochairs\n", - "cochampion\n", - "cochampions\n", - "cochin\n", - "cochins\n", - "cochlea\n", - "cochleae\n", - "cochlear\n", - "cochleas\n", - "cocinera\n", - "cocineras\n", - "cock\n", - "cockade\n", - "cockaded\n", - "cockades\n", - "cockatoo\n", - "cockatoos\n", - "cockbill\n", - "cockbilled\n", - "cockbilling\n", - "cockbills\n", - "cockboat\n", - "cockboats\n", - "cockcrow\n", - "cockcrows\n", - "cocked\n", - "cocker\n", - "cockered\n", - "cockerel\n", - "cockerels\n", - "cockering\n", - "cockers\n", - "cockeye\n", - "cockeyed\n", - "cockeyes\n", - "cockfight\n", - "cockfights\n", - "cockier\n", - "cockiest\n", - "cockily\n", - "cockiness\n", - "cockinesses\n", - "cocking\n", - "cockish\n", - "cockle\n", - "cockled\n", - "cockles\n", - "cocklike\n", - "cockling\n", - "cockloft\n", - "cocklofts\n", - "cockney\n", - "cockneys\n", - "cockpit\n", - "cockpits\n", - "cockroach\n", - "cockroaches\n", - "cocks\n", - "cockshies\n", - "cockshut\n", - "cockshuts\n", - "cockshy\n", - "cockspur\n", - "cockspurs\n", - "cocksure\n", - "cocktail\n", - "cocktailed\n", - "cocktailing\n", - "cocktails\n", - "cockup\n", - "cockups\n", - "cocky\n", - "coco\n", - "cocoa\n", - "cocoanut\n", - "cocoanuts\n", - "cocoas\n", - "cocobola\n", - "cocobolas\n", - "cocobolo\n", - "cocobolos\n", - "cocomat\n", - "cocomats\n", - "cocomposer\n", - "cocomposers\n", - "coconspirator\n", - "coconspirators\n", - "coconut\n", - "coconuts\n", - "cocoon\n", - "cocooned\n", - "cocooning\n", - "cocoons\n", - "cocos\n", - "cocotte\n", - "cocottes\n", - "cocreate\n", - "cocreated\n", - "cocreates\n", - "cocreating\n", - "cocreator\n", - "cocreators\n", - "cod\n", - "coda\n", - "codable\n", - "codas\n", - "codder\n", - "codders\n", - "coddle\n", - "coddled\n", - "coddler\n", - "coddlers\n", - "coddles\n", - "coddling\n", - "code\n", - "codebtor\n", - "codebtors\n", - "coded\n", - "codefendant\n", - "codefendants\n", - "codeia\n", - "codeias\n", - "codein\n", - "codeina\n", - "codeinas\n", - "codeine\n", - "codeines\n", - "codeins\n", - "codeless\n", - "coden\n", - "codens\n", - "coder\n", - "coderive\n", - "coderived\n", - "coderives\n", - "coderiving\n", - "coders\n", - "codes\n", - "codesigner\n", - "codesigners\n", - "codevelop\n", - "codeveloped\n", - "codeveloper\n", - "codevelopers\n", - "codeveloping\n", - "codevelops\n", - "codex\n", - "codfish\n", - "codfishes\n", - "codger\n", - "codgers\n", - "codices\n", - "codicil\n", - "codicils\n", - "codification\n", - "codifications\n", - "codified\n", - "codifier\n", - "codifiers\n", - "codifies\n", - "codify\n", - "codifying\n", - "coding\n", - "codirector\n", - "codirectors\n", - "codiscoverer\n", - "codiscoverers\n", - "codlin\n", - "codling\n", - "codlings\n", - "codlins\n", - "codon\n", - "codons\n", - "codpiece\n", - "codpieces\n", - "cods\n", - "coed\n", - "coeditor\n", - "coeditors\n", - "coeds\n", - "coeducation\n", - "coeducational\n", - "coeducations\n", - "coeffect\n", - "coeffects\n", - "coefficient\n", - "coefficients\n", - "coeliac\n", - "coelom\n", - "coelomata\n", - "coelome\n", - "coelomes\n", - "coelomic\n", - "coeloms\n", - "coembodied\n", - "coembodies\n", - "coembody\n", - "coembodying\n", - "coemploy\n", - "coemployed\n", - "coemploying\n", - "coemploys\n", - "coempt\n", - "coempted\n", - "coempting\n", - "coempts\n", - "coenact\n", - "coenacted\n", - "coenacting\n", - "coenacts\n", - "coenamor\n", - "coenamored\n", - "coenamoring\n", - "coenamors\n", - "coendure\n", - "coendured\n", - "coendures\n", - "coenduring\n", - "coenure\n", - "coenures\n", - "coenuri\n", - "coenurus\n", - "coenzyme\n", - "coenzymes\n", - "coequal\n", - "coequals\n", - "coequate\n", - "coequated\n", - "coequates\n", - "coequating\n", - "coerce\n", - "coerced\n", - "coercer\n", - "coercers\n", - "coerces\n", - "coercing\n", - "coercion\n", - "coercions\n", - "coercive\n", - "coerect\n", - "coerected\n", - "coerecting\n", - "coerects\n", - "coeval\n", - "coevally\n", - "coevals\n", - "coexecutor\n", - "coexecutors\n", - "coexert\n", - "coexerted\n", - "coexerting\n", - "coexerts\n", - "coexist\n", - "coexisted\n", - "coexistence\n", - "coexistences\n", - "coexistent\n", - "coexisting\n", - "coexists\n", - "coextend\n", - "coextended\n", - "coextending\n", - "coextends\n", - "cofactor\n", - "cofactors\n", - "cofeature\n", - "cofeatures\n", - "coff\n", - "coffee\n", - "coffeehouse\n", - "coffeehouses\n", - "coffeepot\n", - "coffeepots\n", - "coffees\n", - "coffer\n", - "coffered\n", - "coffering\n", - "coffers\n", - "coffin\n", - "coffined\n", - "coffing\n", - "coffining\n", - "coffins\n", - "coffle\n", - "coffled\n", - "coffles\n", - "coffling\n", - "coffret\n", - "coffrets\n", - "coffs\n", - "cofinance\n", - "cofinanced\n", - "cofinances\n", - "cofinancing\n", - "cofounder\n", - "cofounders\n", - "coft\n", - "cog\n", - "cogencies\n", - "cogency\n", - "cogent\n", - "cogently\n", - "cogged\n", - "cogging\n", - "cogitate\n", - "cogitated\n", - "cogitates\n", - "cogitating\n", - "cogitation\n", - "cogitations\n", - "cogitative\n", - "cogito\n", - "cogitos\n", - "cognac\n", - "cognacs\n", - "cognate\n", - "cognates\n", - "cognise\n", - "cognised\n", - "cognises\n", - "cognising\n", - "cognition\n", - "cognitions\n", - "cognitive\n", - "cognizable\n", - "cognizance\n", - "cognizances\n", - "cognizant\n", - "cognize\n", - "cognized\n", - "cognizer\n", - "cognizers\n", - "cognizes\n", - "cognizing\n", - "cognomen\n", - "cognomens\n", - "cognomina\n", - "cognovit\n", - "cognovits\n", - "cogon\n", - "cogons\n", - "cogs\n", - "cogway\n", - "cogways\n", - "cogweel\n", - "cogweels\n", - "cohabit\n", - "cohabitation\n", - "cohabitations\n", - "cohabited\n", - "cohabiting\n", - "cohabits\n", - "coheir\n", - "coheiress\n", - "coheiresses\n", - "coheirs\n", - "cohere\n", - "cohered\n", - "coherence\n", - "coherences\n", - "coherent\n", - "coherently\n", - "coherer\n", - "coherers\n", - "coheres\n", - "cohering\n", - "cohesion\n", - "cohesions\n", - "cohesive\n", - "coho\n", - "cohobate\n", - "cohobated\n", - "cohobates\n", - "cohobating\n", - "cohog\n", - "cohogs\n", - "cohort\n", - "cohorts\n", - "cohos\n", - "cohosh\n", - "cohoshes\n", - "cohostess\n", - "cohostesses\n", - "cohune\n", - "cohunes\n", - "coif\n", - "coifed\n", - "coiffe\n", - "coiffed\n", - "coiffes\n", - "coiffeur\n", - "coiffeurs\n", - "coiffing\n", - "coiffure\n", - "coiffured\n", - "coiffures\n", - "coiffuring\n", - "coifing\n", - "coifs\n", - "coign\n", - "coigne\n", - "coigned\n", - "coignes\n", - "coigning\n", - "coigns\n", - "coil\n", - "coiled\n", - "coiler\n", - "coilers\n", - "coiling\n", - "coils\n", - "coin\n", - "coinable\n", - "coinage\n", - "coinages\n", - "coincide\n", - "coincided\n", - "coincidence\n", - "coincidences\n", - "coincident\n", - "coincidental\n", - "coincides\n", - "coinciding\n", - "coined\n", - "coiner\n", - "coiners\n", - "coinfer\n", - "coinferred\n", - "coinferring\n", - "coinfers\n", - "coinhere\n", - "coinhered\n", - "coinheres\n", - "coinhering\n", - "coining\n", - "coinmate\n", - "coinmates\n", - "coins\n", - "coinsure\n", - "coinsured\n", - "coinsures\n", - "coinsuring\n", - "cointer\n", - "cointerred\n", - "cointerring\n", - "cointers\n", - "coinventor\n", - "coinventors\n", - "coinvestigator\n", - "coinvestigators\n", - "coir\n", - "coirs\n", - "coistrel\n", - "coistrels\n", - "coistril\n", - "coistrils\n", - "coital\n", - "coitally\n", - "coition\n", - "coitions\n", - "coitus\n", - "coituses\n", - "coke\n", - "coked\n", - "cokes\n", - "coking\n", - "col\n", - "cola\n", - "colander\n", - "colanders\n", - "colas\n", - "cold\n", - "colder\n", - "coldest\n", - "coldish\n", - "coldly\n", - "coldness\n", - "coldnesses\n", - "colds\n", - "cole\n", - "coles\n", - "coleseed\n", - "coleseeds\n", - "coleslaw\n", - "coleslaws\n", - "colessee\n", - "colessees\n", - "colessor\n", - "colessors\n", - "coleus\n", - "coleuses\n", - "colewort\n", - "coleworts\n", - "colic\n", - "colicin\n", - "colicine\n", - "colicines\n", - "colicins\n", - "colicky\n", - "colics\n", - "colies\n", - "coliform\n", - "coliforms\n", - "colin\n", - "colinear\n", - "colins\n", - "coliseum\n", - "coliseums\n", - "colistin\n", - "colistins\n", - "colitic\n", - "colitis\n", - "colitises\n", - "collaborate\n", - "collaborated\n", - "collaborates\n", - "collaborating\n", - "collaboration\n", - "collaborations\n", - "collaborative\n", - "collaborator\n", - "collaborators\n", - "collage\n", - "collagen\n", - "collagens\n", - "collages\n", - "collapse\n", - "collapsed\n", - "collapses\n", - "collapsible\n", - "collapsing\n", - "collar\n", - "collarbone\n", - "collarbones\n", - "collard\n", - "collards\n", - "collared\n", - "collaret\n", - "collarets\n", - "collaring\n", - "collarless\n", - "collars\n", - "collate\n", - "collated\n", - "collateral\n", - "collaterals\n", - "collates\n", - "collating\n", - "collator\n", - "collators\n", - "colleague\n", - "colleagues\n", - "collect\n", - "collectable\n", - "collected\n", - "collectible\n", - "collecting\n", - "collection\n", - "collections\n", - "collectivism\n", - "collector\n", - "collectors\n", - "collects\n", - "colleen\n", - "colleens\n", - "college\n", - "colleger\n", - "collegers\n", - "colleges\n", - "collegia\n", - "collegian\n", - "collegians\n", - "collegiate\n", - "collet\n", - "colleted\n", - "colleting\n", - "collets\n", - "collide\n", - "collided\n", - "collides\n", - "colliding\n", - "collie\n", - "collied\n", - "collier\n", - "collieries\n", - "colliers\n", - "colliery\n", - "collies\n", - "collins\n", - "collinses\n", - "collision\n", - "collisions\n", - "collogue\n", - "collogued\n", - "collogues\n", - "colloguing\n", - "colloid\n", - "colloidal\n", - "colloids\n", - "collop\n", - "collops\n", - "colloquial\n", - "colloquialism\n", - "colloquialisms\n", - "colloquies\n", - "colloquy\n", - "collude\n", - "colluded\n", - "colluder\n", - "colluders\n", - "colludes\n", - "colluding\n", - "collusion\n", - "collusions\n", - "colluvia\n", - "colly\n", - "collying\n", - "collyria\n", - "colocate\n", - "colocated\n", - "colocates\n", - "colocating\n", - "colog\n", - "cologne\n", - "cologned\n", - "colognes\n", - "cologs\n", - "colon\n", - "colonel\n", - "colonels\n", - "colones\n", - "coloni\n", - "colonial\n", - "colonials\n", - "colonic\n", - "colonies\n", - "colonise\n", - "colonised\n", - "colonises\n", - "colonising\n", - "colonist\n", - "colonists\n", - "colonize\n", - "colonized\n", - "colonizes\n", - "colonizing\n", - "colonnade\n", - "colonnades\n", - "colons\n", - "colonus\n", - "colony\n", - "colophon\n", - "colophons\n", - "color\n", - "colorado\n", - "colorant\n", - "colorants\n", - "colored\n", - "coloreds\n", - "colorer\n", - "colorers\n", - "colorfast\n", - "colorful\n", - "coloring\n", - "colorings\n", - "colorism\n", - "colorisms\n", - "colorist\n", - "colorists\n", - "colorless\n", - "colors\n", - "colossal\n", - "colossi\n", - "colossus\n", - "colossuses\n", - "colotomies\n", - "colotomy\n", - "colour\n", - "coloured\n", - "colourer\n", - "colourers\n", - "colouring\n", - "colours\n", - "colpitis\n", - "colpitises\n", - "cols\n", - "colt\n", - "colter\n", - "colters\n", - "coltish\n", - "colts\n", - "colubrid\n", - "colubrids\n", - "colugo\n", - "colugos\n", - "columbic\n", - "columel\n", - "columels\n", - "column\n", - "columnal\n", - "columnar\n", - "columned\n", - "columnist\n", - "columnists\n", - "columns\n", - "colure\n", - "colures\n", - "coly\n", - "colza\n", - "colzas\n", - "coma\n", - "comae\n", - "comaker\n", - "comakers\n", - "comal\n", - "comanagement\n", - "comanagements\n", - "comanager\n", - "comanagers\n", - "comas\n", - "comate\n", - "comates\n", - "comatic\n", - "comatik\n", - "comatiks\n", - "comatose\n", - "comatula\n", - "comatulae\n", - "comb\n", - "combat\n", - "combatant\n", - "combatants\n", - "combated\n", - "combater\n", - "combaters\n", - "combating\n", - "combative\n", - "combats\n", - "combatted\n", - "combatting\n", - "combe\n", - "combed\n", - "comber\n", - "combers\n", - "combes\n", - "combination\n", - "combinations\n", - "combine\n", - "combined\n", - "combiner\n", - "combiners\n", - "combines\n", - "combing\n", - "combings\n", - "combining\n", - "comblike\n", - "combo\n", - "combos\n", - "combs\n", - "combust\n", - "combusted\n", - "combustibilities\n", - "combustibility\n", - "combustible\n", - "combusting\n", - "combustion\n", - "combustions\n", - "combustive\n", - "combusts\n", - "comby\n", - "come\n", - "comeback\n", - "comebacks\n", - "comedian\n", - "comedians\n", - "comedic\n", - "comedienne\n", - "comediennes\n", - "comedies\n", - "comedo\n", - "comedones\n", - "comedos\n", - "comedown\n", - "comedowns\n", - "comedy\n", - "comelier\n", - "comeliest\n", - "comelily\n", - "comely\n", - "comer\n", - "comers\n", - "comes\n", - "comet\n", - "cometary\n", - "cometh\n", - "comether\n", - "comethers\n", - "cometic\n", - "comets\n", - "comfier\n", - "comfiest\n", - "comfit\n", - "comfits\n", - "comfort\n", - "comfortable\n", - "comfortably\n", - "comforted\n", - "comforter\n", - "comforters\n", - "comforting\n", - "comfortless\n", - "comforts\n", - "comfrey\n", - "comfreys\n", - "comfy\n", - "comic\n", - "comical\n", - "comics\n", - "coming\n", - "comings\n", - "comitia\n", - "comitial\n", - "comities\n", - "comity\n", - "comma\n", - "command\n", - "commandant\n", - "commandants\n", - "commanded\n", - "commandeer\n", - "commandeered\n", - "commandeering\n", - "commandeers\n", - "commander\n", - "commanders\n", - "commanding\n", - "commandment\n", - "commandments\n", - "commando\n", - "commandoes\n", - "commandos\n", - "commands\n", - "commas\n", - "commata\n", - "commemorate\n", - "commemorated\n", - "commemorates\n", - "commemorating\n", - "commemoration\n", - "commemorations\n", - "commemorative\n", - "commence\n", - "commenced\n", - "commencement\n", - "commencements\n", - "commences\n", - "commencing\n", - "commend\n", - "commendable\n", - "commendation\n", - "commendations\n", - "commended\n", - "commending\n", - "commends\n", - "comment\n", - "commentaries\n", - "commentary\n", - "commentator\n", - "commentators\n", - "commented\n", - "commenting\n", - "comments\n", - "commerce\n", - "commerced\n", - "commerces\n", - "commercial\n", - "commercialize\n", - "commercialized\n", - "commercializes\n", - "commercializing\n", - "commercially\n", - "commercials\n", - "commercing\n", - "commie\n", - "commies\n", - "commiserate\n", - "commiserated\n", - "commiserates\n", - "commiserating\n", - "commiseration\n", - "commiserations\n", - "commissaries\n", - "commissary\n", - "commission\n", - "commissioned\n", - "commissioner\n", - "commissioners\n", - "commissioning\n", - "commissions\n", - "commit\n", - "commitment\n", - "commitments\n", - "commits\n", - "committal\n", - "committals\n", - "committed\n", - "committee\n", - "committees\n", - "committing\n", - "commix\n", - "commixed\n", - "commixes\n", - "commixing\n", - "commixt\n", - "commode\n", - "commodes\n", - "commodious\n", - "commodities\n", - "commodity\n", - "commodore\n", - "commodores\n", - "common\n", - "commoner\n", - "commoners\n", - "commonest\n", - "commonly\n", - "commonplace\n", - "commonplaces\n", - "commons\n", - "commonweal\n", - "commonweals\n", - "commonwealth\n", - "commonwealths\n", - "commotion\n", - "commotions\n", - "commove\n", - "commoved\n", - "commoves\n", - "commoving\n", - "communal\n", - "commune\n", - "communed\n", - "communes\n", - "communicable\n", - "communicate\n", - "communicated\n", - "communicates\n", - "communicating\n", - "communication\n", - "communications\n", - "communicative\n", - "communing\n", - "communion\n", - "communions\n", - "communique\n", - "communiques\n", - "communism\n", - "communist\n", - "communistic\n", - "communists\n", - "communities\n", - "community\n", - "commutation\n", - "commutations\n", - "commute\n", - "commuted\n", - "commuter\n", - "commuters\n", - "commutes\n", - "commuting\n", - "commy\n", - "comose\n", - "comous\n", - "comp\n", - "compact\n", - "compacted\n", - "compacter\n", - "compactest\n", - "compacting\n", - "compactly\n", - "compactness\n", - "compactnesses\n", - "compacts\n", - "compadre\n", - "compadres\n", - "companied\n", - "companies\n", - "companion\n", - "companions\n", - "companionship\n", - "companionships\n", - "company\n", - "companying\n", - "comparable\n", - "comparative\n", - "comparatively\n", - "compare\n", - "compared\n", - "comparer\n", - "comparers\n", - "compares\n", - "comparing\n", - "comparison\n", - "comparisons\n", - "compart\n", - "comparted\n", - "comparting\n", - "compartment\n", - "compartments\n", - "comparts\n", - "compass\n", - "compassed\n", - "compasses\n", - "compassing\n", - "compassion\n", - "compassionate\n", - "compassions\n", - "compatability\n", - "compatable\n", - "compatibilities\n", - "compatibility\n", - "compatible\n", - "compatriot\n", - "compatriots\n", - "comped\n", - "compeer\n", - "compeered\n", - "compeering\n", - "compeers\n", - "compel\n", - "compelled\n", - "compelling\n", - "compels\n", - "compend\n", - "compendia\n", - "compendium\n", - "compends\n", - "compensate\n", - "compensated\n", - "compensates\n", - "compensating\n", - "compensation\n", - "compensations\n", - "compensatory\n", - "compere\n", - "compered\n", - "comperes\n", - "compering\n", - "compete\n", - "competed\n", - "competence\n", - "competences\n", - "competencies\n", - "competency\n", - "competent\n", - "competently\n", - "competes\n", - "competing\n", - "competition\n", - "competitions\n", - "competitive\n", - "competitor\n", - "competitors\n", - "compilation\n", - "compilations\n", - "compile\n", - "compiled\n", - "compiler\n", - "compilers\n", - "compiles\n", - "compiling\n", - "comping\n", - "complacence\n", - "complacences\n", - "complacencies\n", - "complacency\n", - "complacent\n", - "complain\n", - "complainant\n", - "complainants\n", - "complained\n", - "complainer\n", - "complainers\n", - "complaining\n", - "complains\n", - "complaint\n", - "complaints\n", - "compleat\n", - "complect\n", - "complected\n", - "complecting\n", - "complects\n", - "complement\n", - "complementary\n", - "complemented\n", - "complementing\n", - "complements\n", - "complete\n", - "completed\n", - "completely\n", - "completeness\n", - "completenesses\n", - "completer\n", - "completes\n", - "completest\n", - "completing\n", - "completion\n", - "completions\n", - "complex\n", - "complexed\n", - "complexer\n", - "complexes\n", - "complexest\n", - "complexing\n", - "complexion\n", - "complexioned\n", - "complexions\n", - "complexity\n", - "compliance\n", - "compliances\n", - "compliant\n", - "complicate\n", - "complicated\n", - "complicates\n", - "complicating\n", - "complication\n", - "complications\n", - "complice\n", - "complices\n", - "complicities\n", - "complicity\n", - "complied\n", - "complier\n", - "compliers\n", - "complies\n", - "compliment\n", - "complimentary\n", - "compliments\n", - "complin\n", - "compline\n", - "complines\n", - "complins\n", - "complot\n", - "complots\n", - "complotted\n", - "complotting\n", - "comply\n", - "complying\n", - "compo\n", - "compone\n", - "component\n", - "components\n", - "compony\n", - "comport\n", - "comported\n", - "comporting\n", - "comportment\n", - "comportments\n", - "comports\n", - "compos\n", - "compose\n", - "composed\n", - "composer\n", - "composers\n", - "composes\n", - "composing\n", - "composite\n", - "composites\n", - "composition\n", - "compositions\n", - "compost\n", - "composted\n", - "composting\n", - "composts\n", - "composure\n", - "compote\n", - "compotes\n", - "compound\n", - "compounded\n", - "compounding\n", - "compounds\n", - "comprehend\n", - "comprehended\n", - "comprehending\n", - "comprehends\n", - "comprehensible\n", - "comprehension\n", - "comprehensions\n", - "comprehensive\n", - "comprehensiveness\n", - "comprehensivenesses\n", - "compress\n", - "compressed\n", - "compresses\n", - "compressing\n", - "compression\n", - "compressions\n", - "compressor\n", - "compressors\n", - "comprise\n", - "comprised\n", - "comprises\n", - "comprising\n", - "comprize\n", - "comprized\n", - "comprizes\n", - "comprizing\n", - "compromise\n", - "compromised\n", - "compromises\n", - "compromising\n", - "comps\n", - "compt\n", - "compted\n", - "compting\n", - "comptroller\n", - "comptrollers\n", - "compts\n", - "compulsion\n", - "compulsions\n", - "compulsive\n", - "compulsory\n", - "compunction\n", - "compunctions\n", - "computation\n", - "computations\n", - "compute\n", - "computed\n", - "computer\n", - "computerize\n", - "computerized\n", - "computerizes\n", - "computerizing\n", - "computers\n", - "computes\n", - "computing\n", - "comrade\n", - "comrades\n", - "comradeship\n", - "comradeships\n", - "comte\n", - "comtemplate\n", - "comtemplated\n", - "comtemplates\n", - "comtemplating\n", - "comtes\n", - "con\n", - "conation\n", - "conations\n", - "conative\n", - "conatus\n", - "concannon\n", - "concatenate\n", - "concatenated\n", - "concatenates\n", - "concatenating\n", - "concave\n", - "concaved\n", - "concaves\n", - "concaving\n", - "concavities\n", - "concavity\n", - "conceal\n", - "concealed\n", - "concealing\n", - "concealment\n", - "concealments\n", - "conceals\n", - "concede\n", - "conceded\n", - "conceder\n", - "conceders\n", - "concedes\n", - "conceding\n", - "conceit\n", - "conceited\n", - "conceiting\n", - "conceits\n", - "conceivable\n", - "conceivably\n", - "conceive\n", - "conceived\n", - "conceives\n", - "conceiving\n", - "concent\n", - "concentrate\n", - "concentrated\n", - "concentrates\n", - "concentrating\n", - "concentration\n", - "concentrations\n", - "concentric\n", - "concents\n", - "concept\n", - "conception\n", - "conceptions\n", - "concepts\n", - "conceptual\n", - "conceptualize\n", - "conceptualized\n", - "conceptualizes\n", - "conceptualizing\n", - "conceptually\n", - "concern\n", - "concerned\n", - "concerning\n", - "concerns\n", - "concert\n", - "concerted\n", - "concerti\n", - "concertina\n", - "concerting\n", - "concerto\n", - "concertos\n", - "concerts\n", - "concession\n", - "concessions\n", - "conch\n", - "concha\n", - "conchae\n", - "conchal\n", - "conches\n", - "conchies\n", - "conchoid\n", - "conchoids\n", - "conchs\n", - "conchy\n", - "conciliate\n", - "conciliated\n", - "conciliates\n", - "conciliating\n", - "conciliation\n", - "conciliations\n", - "conciliatory\n", - "concise\n", - "concisely\n", - "conciseness\n", - "concisenesses\n", - "conciser\n", - "concisest\n", - "conclave\n", - "conclaves\n", - "conclude\n", - "concluded\n", - "concludes\n", - "concluding\n", - "conclusion\n", - "conclusions\n", - "conclusive\n", - "conclusively\n", - "concoct\n", - "concocted\n", - "concocting\n", - "concoction\n", - "concoctions\n", - "concocts\n", - "concomitant\n", - "concomitantly\n", - "concomitants\n", - "concord\n", - "concordance\n", - "concordances\n", - "concordant\n", - "concords\n", - "concrete\n", - "concreted\n", - "concretes\n", - "concreting\n", - "concretion\n", - "concretions\n", - "concubine\n", - "concubines\n", - "concur\n", - "concurred\n", - "concurrence\n", - "concurrences\n", - "concurrent\n", - "concurrently\n", - "concurring\n", - "concurs\n", - "concuss\n", - "concussed\n", - "concusses\n", - "concussing\n", - "concussion\n", - "concussions\n", - "condemn\n", - "condemnation\n", - "condemnations\n", - "condemned\n", - "condemning\n", - "condemns\n", - "condensation\n", - "condensations\n", - "condense\n", - "condensed\n", - "condenses\n", - "condensing\n", - "condescend\n", - "condescended\n", - "condescending\n", - "condescends\n", - "condescension\n", - "condescensions\n", - "condign\n", - "condiment\n", - "condiments\n", - "condition\n", - "conditional\n", - "conditionally\n", - "conditioned\n", - "conditioner\n", - "conditioners\n", - "conditioning\n", - "conditions\n", - "condole\n", - "condoled\n", - "condolence\n", - "condolences\n", - "condoler\n", - "condolers\n", - "condoles\n", - "condoling\n", - "condom\n", - "condominium\n", - "condominiums\n", - "condoms\n", - "condone\n", - "condoned\n", - "condoner\n", - "condoners\n", - "condones\n", - "condoning\n", - "condor\n", - "condores\n", - "condors\n", - "conduce\n", - "conduced\n", - "conducer\n", - "conducers\n", - "conduces\n", - "conducing\n", - "conduct\n", - "conducted\n", - "conducting\n", - "conduction\n", - "conductions\n", - "conductive\n", - "conductor\n", - "conductors\n", - "conducts\n", - "conduit\n", - "conduits\n", - "condylar\n", - "condyle\n", - "condyles\n", - "cone\n", - "coned\n", - "conelrad\n", - "conelrads\n", - "conenose\n", - "conenoses\n", - "conepate\n", - "conepates\n", - "conepatl\n", - "conepatls\n", - "cones\n", - "coney\n", - "coneys\n", - "confab\n", - "confabbed\n", - "confabbing\n", - "confabs\n", - "confect\n", - "confected\n", - "confecting\n", - "confects\n", - "confederacies\n", - "confederacy\n", - "confer\n", - "conferee\n", - "conferees\n", - "conference\n", - "conferences\n", - "conferred\n", - "conferring\n", - "confers\n", - "conferva\n", - "confervae\n", - "confervas\n", - "confess\n", - "confessed\n", - "confesses\n", - "confessing\n", - "confession\n", - "confessional\n", - "confessionals\n", - "confessions\n", - "confessor\n", - "confessors\n", - "confetti\n", - "confetto\n", - "confidant\n", - "confidants\n", - "confide\n", - "confided\n", - "confidence\n", - "confidences\n", - "confident\n", - "confidential\n", - "confidentiality\n", - "confider\n", - "confiders\n", - "confides\n", - "confiding\n", - "configuration\n", - "configurations\n", - "configure\n", - "configured\n", - "configures\n", - "configuring\n", - "confine\n", - "confined\n", - "confinement\n", - "confinements\n", - "confiner\n", - "confiners\n", - "confines\n", - "confining\n", - "confirm\n", - "confirmation\n", - "confirmations\n", - "confirmed\n", - "confirming\n", - "confirms\n", - "confiscate\n", - "confiscated\n", - "confiscates\n", - "confiscating\n", - "confiscation\n", - "confiscations\n", - "conflagration\n", - "conflagrations\n", - "conflate\n", - "conflated\n", - "conflates\n", - "conflating\n", - "conflict\n", - "conflicted\n", - "conflicting\n", - "conflicts\n", - "conflux\n", - "confluxes\n", - "confocal\n", - "conform\n", - "conformed\n", - "conforming\n", - "conformities\n", - "conformity\n", - "conforms\n", - "confound\n", - "confounded\n", - "confounding\n", - "confounds\n", - "confrere\n", - "confreres\n", - "confront\n", - "confrontation\n", - "confrontations\n", - "confronted\n", - "confronting\n", - "confronts\n", - "confuse\n", - "confused\n", - "confuses\n", - "confusing\n", - "confusion\n", - "confusions\n", - "confute\n", - "confuted\n", - "confuter\n", - "confuters\n", - "confutes\n", - "confuting\n", - "conga\n", - "congaed\n", - "congaing\n", - "congas\n", - "conge\n", - "congeal\n", - "congealed\n", - "congealing\n", - "congeals\n", - "congee\n", - "congeed\n", - "congeeing\n", - "congees\n", - "congener\n", - "congeners\n", - "congenial\n", - "congenialities\n", - "congeniality\n", - "congenital\n", - "conger\n", - "congers\n", - "conges\n", - "congest\n", - "congested\n", - "congesting\n", - "congestion\n", - "congestions\n", - "congestive\n", - "congests\n", - "congii\n", - "congius\n", - "conglobe\n", - "conglobed\n", - "conglobes\n", - "conglobing\n", - "conglomerate\n", - "conglomerated\n", - "conglomerates\n", - "conglomerating\n", - "conglomeration\n", - "conglomerations\n", - "congo\n", - "congoes\n", - "congos\n", - "congou\n", - "congous\n", - "congratulate\n", - "congratulated\n", - "congratulates\n", - "congratulating\n", - "congratulation\n", - "congratulations\n", - "congratulatory\n", - "congregate\n", - "congregated\n", - "congregates\n", - "congregating\n", - "congregation\n", - "congregational\n", - "congregations\n", - "congresional\n", - "congress\n", - "congressed\n", - "congresses\n", - "congressing\n", - "congressman\n", - "congressmen\n", - "congresswoman\n", - "congresswomen\n", - "congruence\n", - "congruences\n", - "congruent\n", - "congruities\n", - "congruity\n", - "congruous\n", - "coni\n", - "conic\n", - "conical\n", - "conicities\n", - "conicity\n", - "conics\n", - "conidia\n", - "conidial\n", - "conidian\n", - "conidium\n", - "conies\n", - "conifer\n", - "coniferous\n", - "conifers\n", - "coniine\n", - "coniines\n", - "conin\n", - "conine\n", - "conines\n", - "coning\n", - "conins\n", - "conium\n", - "coniums\n", - "conjectural\n", - "conjecture\n", - "conjectured\n", - "conjectures\n", - "conjecturing\n", - "conjoin\n", - "conjoined\n", - "conjoining\n", - "conjoins\n", - "conjoint\n", - "conjugal\n", - "conjugate\n", - "conjugated\n", - "conjugates\n", - "conjugating\n", - "conjugation\n", - "conjugations\n", - "conjunct\n", - "conjunction\n", - "conjunctions\n", - "conjunctive\n", - "conjunctivitis\n", - "conjuncts\n", - "conjure\n", - "conjured\n", - "conjurer\n", - "conjurers\n", - "conjures\n", - "conjuring\n", - "conjuror\n", - "conjurors\n", - "conk\n", - "conked\n", - "conker\n", - "conkers\n", - "conking\n", - "conks\n", - "conky\n", - "conn\n", - "connate\n", - "connect\n", - "connected\n", - "connecting\n", - "connection\n", - "connections\n", - "connective\n", - "connector\n", - "connectors\n", - "connects\n", - "conned\n", - "conner\n", - "conners\n", - "conning\n", - "connivance\n", - "connivances\n", - "connive\n", - "connived\n", - "conniver\n", - "connivers\n", - "connives\n", - "conniving\n", - "connoisseur\n", - "connoisseurs\n", - "connotation\n", - "connotations\n", - "connote\n", - "connoted\n", - "connotes\n", - "connoting\n", - "conns\n", - "connubial\n", - "conodont\n", - "conodonts\n", - "conoid\n", - "conoidal\n", - "conoids\n", - "conquer\n", - "conquered\n", - "conquering\n", - "conqueror\n", - "conquerors\n", - "conquers\n", - "conquest\n", - "conquests\n", - "conquian\n", - "conquians\n", - "cons\n", - "conscience\n", - "consciences\n", - "conscientious\n", - "conscientiously\n", - "conscious\n", - "consciously\n", - "consciousness\n", - "consciousnesses\n", - "conscript\n", - "conscripted\n", - "conscripting\n", - "conscription\n", - "conscriptions\n", - "conscripts\n", - "consecrate\n", - "consecrated\n", - "consecrates\n", - "consecrating\n", - "consecration\n", - "consecrations\n", - "consecutive\n", - "consecutively\n", - "consensus\n", - "consensuses\n", - "consent\n", - "consented\n", - "consenting\n", - "consents\n", - "consequence\n", - "consequences\n", - "consequent\n", - "consequential\n", - "consequently\n", - "consequents\n", - "conservation\n", - "conservationist\n", - "conservationists\n", - "conservations\n", - "conservatism\n", - "conservatisms\n", - "conservative\n", - "conservatives\n", - "conservatories\n", - "conservatory\n", - "conserve\n", - "conserved\n", - "conserves\n", - "conserving\n", - "consider\n", - "considerable\n", - "considerably\n", - "considerate\n", - "considerately\n", - "considerateness\n", - "consideratenesses\n", - "consideration\n", - "considerations\n", - "considered\n", - "considering\n", - "considers\n", - "consign\n", - "consigned\n", - "consignee\n", - "consignees\n", - "consigning\n", - "consignment\n", - "consignments\n", - "consignor\n", - "consignors\n", - "consigns\n", - "consist\n", - "consisted\n", - "consistencies\n", - "consistency\n", - "consistent\n", - "consistently\n", - "consisting\n", - "consists\n", - "consol\n", - "consolation\n", - "console\n", - "consoled\n", - "consoler\n", - "consolers\n", - "consoles\n", - "consolidate\n", - "consolidated\n", - "consolidates\n", - "consolidating\n", - "consolidation\n", - "consolidations\n", - "consoling\n", - "consols\n", - "consomme\n", - "consommes\n", - "consonance\n", - "consonances\n", - "consonant\n", - "consonantal\n", - "consonants\n", - "consort\n", - "consorted\n", - "consorting\n", - "consortium\n", - "consortiums\n", - "consorts\n", - "conspicuous\n", - "conspicuously\n", - "conspiracies\n", - "conspiracy\n", - "conspirator\n", - "conspirators\n", - "conspire\n", - "conspired\n", - "conspires\n", - "conspiring\n", - "constable\n", - "constables\n", - "constabularies\n", - "constabulary\n", - "constancies\n", - "constancy\n", - "constant\n", - "constantly\n", - "constants\n", - "constellation\n", - "constellations\n", - "consternation\n", - "consternations\n", - "constipate\n", - "constipated\n", - "constipates\n", - "constipating\n", - "constipation\n", - "constipations\n", - "constituent\n", - "constituents\n", - "constitute\n", - "constituted\n", - "constitutes\n", - "constituting\n", - "constitution\n", - "constitutional\n", - "constitutionality\n", - "constrain\n", - "constrained\n", - "constraining\n", - "constrains\n", - "constraint\n", - "constraints\n", - "constriction\n", - "constrictions\n", - "constrictive\n", - "construct\n", - "constructed\n", - "constructing\n", - "construction\n", - "constructions\n", - "constructive\n", - "constructs\n", - "construe\n", - "construed\n", - "construes\n", - "construing\n", - "consul\n", - "consular\n", - "consulate\n", - "consulates\n", - "consuls\n", - "consult\n", - "consultant\n", - "consultants\n", - "consultation\n", - "consultations\n", - "consulted\n", - "consulting\n", - "consults\n", - "consumable\n", - "consume\n", - "consumed\n", - "consumer\n", - "consumers\n", - "consumes\n", - "consuming\n", - "consummate\n", - "consummated\n", - "consummates\n", - "consummating\n", - "consummation\n", - "consummations\n", - "consumption\n", - "consumptions\n", - "consumptive\n", - "contact\n", - "contacted\n", - "contacting\n", - "contacts\n", - "contagia\n", - "contagion\n", - "contagions\n", - "contagious\n", - "contain\n", - "contained\n", - "container\n", - "containers\n", - "containing\n", - "containment\n", - "containments\n", - "contains\n", - "contaminate\n", - "contaminated\n", - "contaminates\n", - "contaminating\n", - "contamination\n", - "contaminations\n", - "conte\n", - "contemn\n", - "contemned\n", - "contemning\n", - "contemns\n", - "contemplate\n", - "contemplated\n", - "contemplates\n", - "contemplating\n", - "contemplation\n", - "contemplations\n", - "contemplative\n", - "contemporaneous\n", - "contemporaries\n", - "contemporary\n", - "contempt\n", - "contemptible\n", - "contempts\n", - "contemptuous\n", - "contemptuously\n", - "contend\n", - "contended\n", - "contender\n", - "contenders\n", - "contending\n", - "contends\n", - "content\n", - "contented\n", - "contentedly\n", - "contentedness\n", - "contentednesses\n", - "contenting\n", - "contention\n", - "contentions\n", - "contentious\n", - "contentment\n", - "contentments\n", - "contents\n", - "contes\n", - "contest\n", - "contestable\n", - "contestably\n", - "contestant\n", - "contestants\n", - "contested\n", - "contesting\n", - "contests\n", - "context\n", - "contexts\n", - "contiguities\n", - "contiguity\n", - "contiguous\n", - "continence\n", - "continences\n", - "continent\n", - "continental\n", - "continents\n", - "contingencies\n", - "contingency\n", - "contingent\n", - "contingents\n", - "continua\n", - "continual\n", - "continually\n", - "continuance\n", - "continuances\n", - "continuation\n", - "continuations\n", - "continue\n", - "continued\n", - "continues\n", - "continuing\n", - "continuities\n", - "continuity\n", - "continuo\n", - "continuos\n", - "continuous\n", - "continuousities\n", - "continuousity\n", - "conto\n", - "contort\n", - "contorted\n", - "contorting\n", - "contortion\n", - "contortions\n", - "contorts\n", - "contos\n", - "contour\n", - "contoured\n", - "contouring\n", - "contours\n", - "contra\n", - "contraband\n", - "contrabands\n", - "contraception\n", - "contraceptions\n", - "contraceptive\n", - "contraceptives\n", - "contract\n", - "contracted\n", - "contracting\n", - "contraction\n", - "contractions\n", - "contractor\n", - "contractors\n", - "contracts\n", - "contractual\n", - "contradict\n", - "contradicted\n", - "contradicting\n", - "contradiction\n", - "contradictions\n", - "contradictory\n", - "contradicts\n", - "contrail\n", - "contrails\n", - "contraindicate\n", - "contraindicated\n", - "contraindicates\n", - "contraindicating\n", - "contraption\n", - "contraptions\n", - "contraries\n", - "contrarily\n", - "contrariwise\n", - "contrary\n", - "contrast\n", - "contrasted\n", - "contrasting\n", - "contrasts\n", - "contravene\n", - "contravened\n", - "contravenes\n", - "contravening\n", - "contribute\n", - "contributed\n", - "contributes\n", - "contributing\n", - "contribution\n", - "contributions\n", - "contributor\n", - "contributors\n", - "contributory\n", - "contrite\n", - "contrition\n", - "contritions\n", - "contrivance\n", - "contrivances\n", - "contrive\n", - "contrived\n", - "contriver\n", - "contrivers\n", - "contrives\n", - "contriving\n", - "control\n", - "controllable\n", - "controlled\n", - "controller\n", - "controllers\n", - "controlling\n", - "controls\n", - "controversial\n", - "controversies\n", - "controversy\n", - "controvert\n", - "controverted\n", - "controvertible\n", - "controverting\n", - "controverts\n", - "contumaceous\n", - "contumacies\n", - "contumacy\n", - "contumelies\n", - "contumely\n", - "contuse\n", - "contused\n", - "contuses\n", - "contusing\n", - "contusion\n", - "contusions\n", - "conundrum\n", - "conundrums\n", - "conus\n", - "convalesce\n", - "convalesced\n", - "convalescence\n", - "convalescences\n", - "convalescent\n", - "convalesces\n", - "convalescing\n", - "convect\n", - "convected\n", - "convecting\n", - "convection\n", - "convectional\n", - "convections\n", - "convective\n", - "convects\n", - "convene\n", - "convened\n", - "convener\n", - "conveners\n", - "convenes\n", - "convenience\n", - "conveniences\n", - "convenient\n", - "conveniently\n", - "convening\n", - "convent\n", - "convented\n", - "conventing\n", - "convention\n", - "conventional\n", - "conventionally\n", - "conventions\n", - "convents\n", - "converge\n", - "converged\n", - "convergence\n", - "convergences\n", - "convergencies\n", - "convergency\n", - "convergent\n", - "converges\n", - "converging\n", - "conversant\n", - "conversation\n", - "conversational\n", - "conversations\n", - "converse\n", - "conversed\n", - "conversely\n", - "converses\n", - "conversing\n", - "conversion\n", - "conversions\n", - "convert\n", - "converted\n", - "converter\n", - "converters\n", - "convertible\n", - "convertibles\n", - "converting\n", - "convertor\n", - "convertors\n", - "converts\n", - "convex\n", - "convexes\n", - "convexities\n", - "convexity\n", - "convexly\n", - "convey\n", - "conveyance\n", - "conveyances\n", - "conveyed\n", - "conveyer\n", - "conveyers\n", - "conveying\n", - "conveyor\n", - "conveyors\n", - "conveys\n", - "convict\n", - "convicted\n", - "convicting\n", - "conviction\n", - "convictions\n", - "convicts\n", - "convince\n", - "convinced\n", - "convinces\n", - "convincing\n", - "convivial\n", - "convivialities\n", - "conviviality\n", - "convocation\n", - "convocations\n", - "convoke\n", - "convoked\n", - "convoker\n", - "convokers\n", - "convokes\n", - "convoking\n", - "convoluted\n", - "convolution\n", - "convolutions\n", - "convolve\n", - "convolved\n", - "convolves\n", - "convolving\n", - "convoy\n", - "convoyed\n", - "convoying\n", - "convoys\n", - "convulse\n", - "convulsed\n", - "convulses\n", - "convulsing\n", - "convulsion\n", - "convulsions\n", - "convulsive\n", - "cony\n", - "coo\n", - "cooch\n", - "cooches\n", - "cooed\n", - "cooee\n", - "cooeed\n", - "cooeeing\n", - "cooees\n", - "cooer\n", - "cooers\n", - "cooey\n", - "cooeyed\n", - "cooeying\n", - "cooeys\n", - "coof\n", - "coofs\n", - "cooing\n", - "cooingly\n", - "cook\n", - "cookable\n", - "cookbook\n", - "cookbooks\n", - "cooked\n", - "cooker\n", - "cookeries\n", - "cookers\n", - "cookery\n", - "cookey\n", - "cookeys\n", - "cookie\n", - "cookies\n", - "cooking\n", - "cookings\n", - "cookless\n", - "cookout\n", - "cookouts\n", - "cooks\n", - "cookshop\n", - "cookshops\n", - "cookware\n", - "cookwares\n", - "cooky\n", - "cool\n", - "coolant\n", - "coolants\n", - "cooled\n", - "cooler\n", - "coolers\n", - "coolest\n", - "coolie\n", - "coolies\n", - "cooling\n", - "coolish\n", - "coolly\n", - "coolness\n", - "coolnesses\n", - "cools\n", - "cooly\n", - "coomb\n", - "coombe\n", - "coombes\n", - "coombs\n", - "coon\n", - "cooncan\n", - "cooncans\n", - "coons\n", - "coonskin\n", - "coonskins\n", - "coontie\n", - "coonties\n", - "coop\n", - "cooped\n", - "cooper\n", - "cooperate\n", - "cooperated\n", - "cooperates\n", - "cooperating\n", - "cooperation\n", - "cooperative\n", - "cooperatives\n", - "coopered\n", - "cooperies\n", - "coopering\n", - "coopers\n", - "coopery\n", - "cooping\n", - "coops\n", - "coopt\n", - "coopted\n", - "coopting\n", - "cooption\n", - "cooptions\n", - "coopts\n", - "coordinate\n", - "coordinated\n", - "coordinates\n", - "coordinating\n", - "coordination\n", - "coordinations\n", - "coordinator\n", - "coordinators\n", - "coos\n", - "coot\n", - "cootie\n", - "cooties\n", - "coots\n", - "cop\n", - "copaiba\n", - "copaibas\n", - "copal\n", - "copalm\n", - "copalms\n", - "copals\n", - "coparent\n", - "coparents\n", - "copartner\n", - "copartners\n", - "copartnership\n", - "copartnerships\n", - "copastor\n", - "copastors\n", - "copatron\n", - "copatrons\n", - "cope\n", - "copeck\n", - "copecks\n", - "coped\n", - "copemate\n", - "copemates\n", - "copen\n", - "copens\n", - "copepod\n", - "copepods\n", - "coper\n", - "copers\n", - "copes\n", - "copied\n", - "copier\n", - "copiers\n", - "copies\n", - "copihue\n", - "copihues\n", - "copilot\n", - "copilots\n", - "coping\n", - "copings\n", - "copious\n", - "copiously\n", - "copiousness\n", - "copiousnesses\n", - "coplanar\n", - "coplot\n", - "coplots\n", - "coplotted\n", - "coplotting\n", - "copped\n", - "copper\n", - "copperah\n", - "copperahs\n", - "copperas\n", - "copperases\n", - "coppered\n", - "copperhead\n", - "copperheads\n", - "coppering\n", - "coppers\n", - "coppery\n", - "coppice\n", - "coppiced\n", - "coppices\n", - "copping\n", - "coppra\n", - "coppras\n", - "copra\n", - "coprah\n", - "coprahs\n", - "copras\n", - "copremia\n", - "copremias\n", - "copremic\n", - "copresident\n", - "copresidents\n", - "coprincipal\n", - "coprincipals\n", - "coprisoner\n", - "coprisoners\n", - "coproduce\n", - "coproduced\n", - "coproducer\n", - "coproducers\n", - "coproduces\n", - "coproducing\n", - "coproduction\n", - "coproductions\n", - "copromote\n", - "copromoted\n", - "copromoter\n", - "copromoters\n", - "copromotes\n", - "copromoting\n", - "coproprietor\n", - "coproprietors\n", - "coproprietorship\n", - "coproprietorships\n", - "cops\n", - "copse\n", - "copses\n", - "copter\n", - "copters\n", - "copublish\n", - "copublished\n", - "copublisher\n", - "copublishers\n", - "copublishes\n", - "copublishing\n", - "copula\n", - "copulae\n", - "copular\n", - "copulas\n", - "copulate\n", - "copulated\n", - "copulates\n", - "copulating\n", - "copulation\n", - "copulations\n", - "copulative\n", - "copulatives\n", - "copy\n", - "copybook\n", - "copybooks\n", - "copyboy\n", - "copyboys\n", - "copycat\n", - "copycats\n", - "copycatted\n", - "copycatting\n", - "copydesk\n", - "copydesks\n", - "copyhold\n", - "copyholds\n", - "copying\n", - "copyist\n", - "copyists\n", - "copyright\n", - "copyrighted\n", - "copyrighting\n", - "copyrights\n", - "coquet\n", - "coquetries\n", - "coquetry\n", - "coquets\n", - "coquette\n", - "coquetted\n", - "coquettes\n", - "coquetting\n", - "coquille\n", - "coquilles\n", - "coquina\n", - "coquinas\n", - "coquito\n", - "coquitos\n", - "coracle\n", - "coracles\n", - "coracoid\n", - "coracoids\n", - "coral\n", - "corals\n", - "coranto\n", - "corantoes\n", - "corantos\n", - "corban\n", - "corbans\n", - "corbeil\n", - "corbeils\n", - "corbel\n", - "corbeled\n", - "corbeling\n", - "corbelled\n", - "corbelling\n", - "corbels\n", - "corbie\n", - "corbies\n", - "corbina\n", - "corbinas\n", - "corby\n", - "cord\n", - "cordage\n", - "cordages\n", - "cordate\n", - "corded\n", - "corder\n", - "corders\n", - "cordial\n", - "cordialities\n", - "cordiality\n", - "cordially\n", - "cordials\n", - "cording\n", - "cordite\n", - "cordites\n", - "cordless\n", - "cordlike\n", - "cordoba\n", - "cordobas\n", - "cordon\n", - "cordoned\n", - "cordoning\n", - "cordons\n", - "cordovan\n", - "cordovans\n", - "cords\n", - "corduroy\n", - "corduroyed\n", - "corduroying\n", - "corduroys\n", - "cordwain\n", - "cordwains\n", - "cordwood\n", - "cordwoods\n", - "cordy\n", - "core\n", - "corecipient\n", - "corecipients\n", - "cored\n", - "coredeem\n", - "coredeemed\n", - "coredeeming\n", - "coredeems\n", - "coreign\n", - "coreigns\n", - "corelate\n", - "corelated\n", - "corelates\n", - "corelating\n", - "coreless\n", - "coremia\n", - "coremium\n", - "corer\n", - "corers\n", - "cores\n", - "coresident\n", - "coresidents\n", - "corf\n", - "corgi\n", - "corgis\n", - "coria\n", - "coring\n", - "corium\n", - "cork\n", - "corkage\n", - "corkages\n", - "corked\n", - "corker\n", - "corkers\n", - "corkier\n", - "corkiest\n", - "corking\n", - "corklike\n", - "corks\n", - "corkscrew\n", - "corkscrews\n", - "corkwood\n", - "corkwoods\n", - "corky\n", - "corm\n", - "cormel\n", - "cormels\n", - "cormlike\n", - "cormoid\n", - "cormorant\n", - "cormorants\n", - "cormous\n", - "corms\n", - "corn\n", - "cornball\n", - "cornballs\n", - "corncake\n", - "corncakes\n", - "corncob\n", - "corncobs\n", - "corncrib\n", - "corncribs\n", - "cornea\n", - "corneal\n", - "corneas\n", - "corned\n", - "cornel\n", - "cornels\n", - "corneous\n", - "corner\n", - "cornered\n", - "cornering\n", - "corners\n", - "cornerstone\n", - "cornerstones\n", - "cornet\n", - "cornetcies\n", - "cornetcy\n", - "cornets\n", - "cornfed\n", - "cornhusk\n", - "cornhusks\n", - "cornice\n", - "corniced\n", - "cornices\n", - "corniche\n", - "corniches\n", - "cornicing\n", - "cornicle\n", - "cornicles\n", - "cornier\n", - "corniest\n", - "cornily\n", - "corning\n", - "cornmeal\n", - "cornmeals\n", - "corns\n", - "cornstalk\n", - "cornstalks\n", - "cornstarch\n", - "cornstarches\n", - "cornu\n", - "cornua\n", - "cornual\n", - "cornucopia\n", - "cornucopias\n", - "cornus\n", - "cornuses\n", - "cornute\n", - "cornuted\n", - "cornuto\n", - "cornutos\n", - "corny\n", - "corodies\n", - "corody\n", - "corolla\n", - "corollaries\n", - "corollary\n", - "corollas\n", - "corona\n", - "coronach\n", - "coronachs\n", - "coronae\n", - "coronal\n", - "coronals\n", - "coronaries\n", - "coronary\n", - "coronas\n", - "coronation\n", - "coronations\n", - "coronel\n", - "coronels\n", - "coroner\n", - "coroners\n", - "coronet\n", - "coronets\n", - "corotate\n", - "corotated\n", - "corotates\n", - "corotating\n", - "corpora\n", - "corporal\n", - "corporals\n", - "corporate\n", - "corporation\n", - "corporations\n", - "corporeal\n", - "corporeally\n", - "corps\n", - "corpse\n", - "corpses\n", - "corpsman\n", - "corpsmen\n", - "corpulence\n", - "corpulences\n", - "corpulencies\n", - "corpulency\n", - "corpulent\n", - "corpus\n", - "corpuscle\n", - "corpuscles\n", - "corrade\n", - "corraded\n", - "corrades\n", - "corrading\n", - "corral\n", - "corralled\n", - "corralling\n", - "corrals\n", - "correct\n", - "corrected\n", - "correcter\n", - "correctest\n", - "correcting\n", - "correction\n", - "corrections\n", - "corrective\n", - "correctly\n", - "correctness\n", - "correctnesses\n", - "corrects\n", - "correlate\n", - "correlated\n", - "correlates\n", - "correlating\n", - "correlation\n", - "correlations\n", - "correlative\n", - "correlatives\n", - "correspond\n", - "corresponded\n", - "correspondence\n", - "correspondences\n", - "correspondent\n", - "correspondents\n", - "corresponding\n", - "corresponds\n", - "corrida\n", - "corridas\n", - "corridor\n", - "corridors\n", - "corrie\n", - "corries\n", - "corrival\n", - "corrivals\n", - "corroborate\n", - "corroborated\n", - "corroborates\n", - "corroborating\n", - "corroboration\n", - "corroborations\n", - "corrode\n", - "corroded\n", - "corrodes\n", - "corrodies\n", - "corroding\n", - "corrody\n", - "corrosion\n", - "corrosions\n", - "corrosive\n", - "corrugate\n", - "corrugated\n", - "corrugates\n", - "corrugating\n", - "corrugation\n", - "corrugations\n", - "corrupt\n", - "corrupted\n", - "corrupter\n", - "corruptest\n", - "corruptible\n", - "corrupting\n", - "corruption\n", - "corruptions\n", - "corrupts\n", - "corsac\n", - "corsacs\n", - "corsage\n", - "corsages\n", - "corsair\n", - "corsairs\n", - "corse\n", - "corselet\n", - "corselets\n", - "corses\n", - "corset\n", - "corseted\n", - "corseting\n", - "corsets\n", - "corslet\n", - "corslets\n", - "cortege\n", - "corteges\n", - "cortex\n", - "cortexes\n", - "cortical\n", - "cortices\n", - "cortin\n", - "cortins\n", - "cortisol\n", - "cortisols\n", - "cortisone\n", - "cortisones\n", - "corundum\n", - "corundums\n", - "corvee\n", - "corvees\n", - "corves\n", - "corvet\n", - "corvets\n", - "corvette\n", - "corvettes\n", - "corvina\n", - "corvinas\n", - "corvine\n", - "corymb\n", - "corymbed\n", - "corymbs\n", - "coryphee\n", - "coryphees\n", - "coryza\n", - "coryzal\n", - "coryzas\n", - "cos\n", - "cosec\n", - "cosecant\n", - "cosecants\n", - "cosecs\n", - "coses\n", - "coset\n", - "cosets\n", - "cosey\n", - "coseys\n", - "cosh\n", - "coshed\n", - "cosher\n", - "coshered\n", - "coshering\n", - "coshers\n", - "coshes\n", - "coshing\n", - "cosie\n", - "cosier\n", - "cosies\n", - "cosiest\n", - "cosign\n", - "cosignatories\n", - "cosignatory\n", - "cosigned\n", - "cosigner\n", - "cosigners\n", - "cosigning\n", - "cosigns\n", - "cosily\n", - "cosine\n", - "cosines\n", - "cosiness\n", - "cosinesses\n", - "cosmetic\n", - "cosmetics\n", - "cosmic\n", - "cosmical\n", - "cosmism\n", - "cosmisms\n", - "cosmist\n", - "cosmists\n", - "cosmonaut\n", - "cosmonauts\n", - "cosmopolitan\n", - "cosmopolitans\n", - "cosmos\n", - "cosmoses\n", - "cosponsor\n", - "cosponsors\n", - "coss\n", - "cossack\n", - "cossacks\n", - "cosset\n", - "cosseted\n", - "cosseting\n", - "cossets\n", - "cost\n", - "costa\n", - "costae\n", - "costal\n", - "costar\n", - "costard\n", - "costards\n", - "costarred\n", - "costarring\n", - "costars\n", - "costate\n", - "costed\n", - "coster\n", - "costers\n", - "costing\n", - "costive\n", - "costless\n", - "costlier\n", - "costliest\n", - "costliness\n", - "costlinesses\n", - "costly\n", - "costmaries\n", - "costmary\n", - "costrel\n", - "costrels\n", - "costs\n", - "costume\n", - "costumed\n", - "costumer\n", - "costumers\n", - "costumes\n", - "costumey\n", - "costuming\n", - "cosy\n", - "cot\n", - "cotan\n", - "cotans\n", - "cote\n", - "coteau\n", - "coteaux\n", - "coted\n", - "cotenant\n", - "cotenants\n", - "coterie\n", - "coteries\n", - "cotes\n", - "cothurn\n", - "cothurni\n", - "cothurns\n", - "cotidal\n", - "cotillion\n", - "cotillions\n", - "cotillon\n", - "cotillons\n", - "coting\n", - "cotquean\n", - "cotqueans\n", - "cots\n", - "cotta\n", - "cottae\n", - "cottage\n", - "cottager\n", - "cottagers\n", - "cottages\n", - "cottagey\n", - "cottar\n", - "cottars\n", - "cottas\n", - "cotter\n", - "cotters\n", - "cottier\n", - "cottiers\n", - "cotton\n", - "cottoned\n", - "cottoning\n", - "cottonmouth\n", - "cottonmouths\n", - "cottons\n", - "cottonseed\n", - "cottonseeds\n", - "cottony\n", - "cotyloid\n", - "cotype\n", - "cotypes\n", - "couch\n", - "couchant\n", - "couched\n", - "coucher\n", - "couchers\n", - "couches\n", - "couching\n", - "couchings\n", - "coude\n", - "cougar\n", - "cougars\n", - "cough\n", - "coughed\n", - "cougher\n", - "coughers\n", - "coughing\n", - "coughs\n", - "could\n", - "couldest\n", - "couldst\n", - "coulee\n", - "coulees\n", - "coulisse\n", - "coulisses\n", - "couloir\n", - "couloirs\n", - "coulomb\n", - "coulombs\n", - "coulter\n", - "coulters\n", - "coumaric\n", - "coumarin\n", - "coumarins\n", - "coumarou\n", - "coumarous\n", - "council\n", - "councillor\n", - "councillors\n", - "councilman\n", - "councilmen\n", - "councilor\n", - "councilors\n", - "councils\n", - "councilwoman\n", - "counsel\n", - "counseled\n", - "counseling\n", - "counselled\n", - "counselling\n", - "counsellor\n", - "counsellors\n", - "counselor\n", - "counselors\n", - "counsels\n", - "count\n", - "countable\n", - "counted\n", - "countenance\n", - "countenanced\n", - "countenances\n", - "countenancing\n", - "counter\n", - "counteraccusation\n", - "counteraccusations\n", - "counteract\n", - "counteracted\n", - "counteracting\n", - "counteracts\n", - "counteraggression\n", - "counteraggressions\n", - "counterargue\n", - "counterargued\n", - "counterargues\n", - "counterarguing\n", - "counterassault\n", - "counterassaults\n", - "counterattack\n", - "counterattacked\n", - "counterattacking\n", - "counterattacks\n", - "counterbalance\n", - "counterbalanced\n", - "counterbalances\n", - "counterbalancing\n", - "counterbid\n", - "counterbids\n", - "counterblockade\n", - "counterblockades\n", - "counterblow\n", - "counterblows\n", - "countercampaign\n", - "countercampaigns\n", - "counterchallenge\n", - "counterchallenges\n", - "countercharge\n", - "countercharges\n", - "counterclaim\n", - "counterclaims\n", - "counterclockwise\n", - "countercomplaint\n", - "countercomplaints\n", - "countercoup\n", - "countercoups\n", - "countercriticism\n", - "countercriticisms\n", - "counterdemand\n", - "counterdemands\n", - "counterdemonstration\n", - "counterdemonstrations\n", - "counterdemonstrator\n", - "counterdemonstrators\n", - "countered\n", - "countereffect\n", - "countereffects\n", - "countereffort\n", - "counterefforts\n", - "counterembargo\n", - "counterembargos\n", - "counterevidence\n", - "counterevidences\n", - "counterfeit\n", - "counterfeited\n", - "counterfeiter\n", - "counterfeiters\n", - "counterfeiting\n", - "counterfeits\n", - "counterguerrila\n", - "counterinflationary\n", - "counterinfluence\n", - "counterinfluences\n", - "countering\n", - "counterintrigue\n", - "counterintrigues\n", - "countermand\n", - "countermanded\n", - "countermanding\n", - "countermands\n", - "countermeasure\n", - "countermeasures\n", - "countermove\n", - "countermovement\n", - "countermovements\n", - "countermoves\n", - "counteroffer\n", - "counteroffers\n", - "counterpart\n", - "counterparts\n", - "counterpetition\n", - "counterpetitions\n", - "counterploy\n", - "counterploys\n", - "counterpoint\n", - "counterpoints\n", - "counterpower\n", - "counterpowers\n", - "counterpressure\n", - "counterpressures\n", - "counterpropagation\n", - "counterpropagations\n", - "counterproposal\n", - "counterproposals\n", - "counterprotest\n", - "counterprotests\n", - "counterquestion\n", - "counterquestions\n", - "counterraid\n", - "counterraids\n", - "counterrallies\n", - "counterrally\n", - "counterrebuttal\n", - "counterrebuttals\n", - "counterreform\n", - "counterreforms\n", - "counterresponse\n", - "counterresponses\n", - "counterretaliation\n", - "counterretaliations\n", - "counterrevolution\n", - "counterrevolutions\n", - "counters\n", - "countersign\n", - "countersigns\n", - "counterstrategies\n", - "counterstrategy\n", - "counterstyle\n", - "counterstyles\n", - "countersue\n", - "countersued\n", - "countersues\n", - "countersuggestion\n", - "countersuggestions\n", - "countersuing\n", - "countersuit\n", - "countersuits\n", - "countertendencies\n", - "countertendency\n", - "counterterror\n", - "counterterrorism\n", - "counterterrorisms\n", - "counterterrorist\n", - "counterterrorists\n", - "counterterrors\n", - "counterthreat\n", - "counterthreats\n", - "counterthrust\n", - "counterthrusts\n", - "countertrend\n", - "countertrends\n", - "countess\n", - "countesses\n", - "countian\n", - "countians\n", - "counties\n", - "counting\n", - "countless\n", - "countries\n", - "country\n", - "countryman\n", - "countrymen\n", - "countryside\n", - "countrysides\n", - "counts\n", - "county\n", - "coup\n", - "coupe\n", - "couped\n", - "coupes\n", - "couping\n", - "couple\n", - "coupled\n", - "coupler\n", - "couplers\n", - "couples\n", - "couplet\n", - "couplets\n", - "coupling\n", - "couplings\n", - "coupon\n", - "coupons\n", - "coups\n", - "courage\n", - "courageous\n", - "courages\n", - "courant\n", - "courante\n", - "courantes\n", - "couranto\n", - "courantoes\n", - "courantos\n", - "courants\n", - "courier\n", - "couriers\n", - "courlan\n", - "courlans\n", - "course\n", - "coursed\n", - "courser\n", - "coursers\n", - "courses\n", - "coursing\n", - "coursings\n", - "court\n", - "courted\n", - "courteous\n", - "courteously\n", - "courtesied\n", - "courtesies\n", - "courtesy\n", - "courtesying\n", - "courthouse\n", - "courthouses\n", - "courtier\n", - "courtiers\n", - "courting\n", - "courtlier\n", - "courtliest\n", - "courtly\n", - "courtroom\n", - "courtrooms\n", - "courts\n", - "courtship\n", - "courtships\n", - "courtyard\n", - "courtyards\n", - "couscous\n", - "couscouses\n", - "cousin\n", - "cousinly\n", - "cousinries\n", - "cousinry\n", - "cousins\n", - "couteau\n", - "couteaux\n", - "couter\n", - "couters\n", - "couth\n", - "couther\n", - "couthest\n", - "couthie\n", - "couthier\n", - "couthiest\n", - "couths\n", - "couture\n", - "coutures\n", - "couvade\n", - "couvades\n", - "covalent\n", - "cove\n", - "coved\n", - "coven\n", - "covenant\n", - "covenanted\n", - "covenanting\n", - "covenants\n", - "covens\n", - "cover\n", - "coverage\n", - "coverages\n", - "coverall\n", - "coveralls\n", - "covered\n", - "coverer\n", - "coverers\n", - "covering\n", - "coverings\n", - "coverlet\n", - "coverlets\n", - "coverlid\n", - "coverlids\n", - "covers\n", - "covert\n", - "covertly\n", - "coverts\n", - "coves\n", - "covet\n", - "coveted\n", - "coveter\n", - "coveters\n", - "coveting\n", - "covetous\n", - "covets\n", - "covey\n", - "coveys\n", - "coving\n", - "covings\n", - "cow\n", - "cowage\n", - "cowages\n", - "coward\n", - "cowardice\n", - "cowardices\n", - "cowardly\n", - "cowards\n", - "cowbane\n", - "cowbanes\n", - "cowbell\n", - "cowbells\n", - "cowberries\n", - "cowberry\n", - "cowbind\n", - "cowbinds\n", - "cowbird\n", - "cowbirds\n", - "cowboy\n", - "cowboys\n", - "cowed\n", - "cowedly\n", - "cower\n", - "cowered\n", - "cowering\n", - "cowers\n", - "cowfish\n", - "cowfishes\n", - "cowgirl\n", - "cowgirls\n", - "cowhage\n", - "cowhages\n", - "cowhand\n", - "cowhands\n", - "cowherb\n", - "cowherbs\n", - "cowherd\n", - "cowherds\n", - "cowhide\n", - "cowhided\n", - "cowhides\n", - "cowhiding\n", - "cowier\n", - "cowiest\n", - "cowing\n", - "cowinner\n", - "cowinners\n", - "cowl\n", - "cowled\n", - "cowlick\n", - "cowlicks\n", - "cowling\n", - "cowlings\n", - "cowls\n", - "cowman\n", - "cowmen\n", - "coworker\n", - "coworkers\n", - "cowpat\n", - "cowpats\n", - "cowpea\n", - "cowpeas\n", - "cowpoke\n", - "cowpokes\n", - "cowpox\n", - "cowpoxes\n", - "cowrie\n", - "cowries\n", - "cowry\n", - "cows\n", - "cowshed\n", - "cowsheds\n", - "cowskin\n", - "cowskins\n", - "cowslip\n", - "cowslips\n", - "cowy\n", - "cox\n", - "coxa\n", - "coxae\n", - "coxal\n", - "coxalgia\n", - "coxalgias\n", - "coxalgic\n", - "coxalgies\n", - "coxalgy\n", - "coxcomb\n", - "coxcombs\n", - "coxed\n", - "coxes\n", - "coxing\n", - "coxswain\n", - "coxswained\n", - "coxswaining\n", - "coxswains\n", - "coy\n", - "coyed\n", - "coyer\n", - "coyest\n", - "coying\n", - "coyish\n", - "coyly\n", - "coyness\n", - "coynesses\n", - "coyote\n", - "coyotes\n", - "coypou\n", - "coypous\n", - "coypu\n", - "coypus\n", - "coys\n", - "coz\n", - "cozen\n", - "cozenage\n", - "cozenages\n", - "cozened\n", - "cozener\n", - "cozeners\n", - "cozening\n", - "cozens\n", - "cozes\n", - "cozey\n", - "cozeys\n", - "cozie\n", - "cozier\n", - "cozies\n", - "coziest\n", - "cozily\n", - "coziness\n", - "cozinesses\n", - "cozy\n", - "cozzes\n", - "craal\n", - "craaled\n", - "craaling\n", - "craals\n", - "crab\n", - "crabbed\n", - "crabber\n", - "crabbers\n", - "crabbier\n", - "crabbiest\n", - "crabbing\n", - "crabby\n", - "crabs\n", - "crabwise\n", - "crack\n", - "crackdown\n", - "crackdowns\n", - "cracked\n", - "cracker\n", - "crackers\n", - "cracking\n", - "crackings\n", - "crackle\n", - "crackled\n", - "crackles\n", - "cracklier\n", - "crackliest\n", - "crackling\n", - "crackly\n", - "cracknel\n", - "cracknels\n", - "crackpot\n", - "crackpots\n", - "cracks\n", - "crackup\n", - "crackups\n", - "cracky\n", - "cradle\n", - "cradled\n", - "cradler\n", - "cradlers\n", - "cradles\n", - "cradling\n", - "craft\n", - "crafted\n", - "craftier\n", - "craftiest\n", - "craftily\n", - "craftiness\n", - "craftinesses\n", - "crafting\n", - "crafts\n", - "craftsman\n", - "craftsmanship\n", - "craftsmanships\n", - "craftsmen\n", - "craftsmenship\n", - "craftsmenships\n", - "crafty\n", - "crag\n", - "cragged\n", - "craggier\n", - "craggiest\n", - "craggily\n", - "craggy\n", - "crags\n", - "cragsman\n", - "cragsmen\n", - "crake\n", - "crakes\n", - "cram\n", - "crambe\n", - "crambes\n", - "crambo\n", - "cramboes\n", - "crambos\n", - "crammed\n", - "crammer\n", - "crammers\n", - "cramming\n", - "cramoisies\n", - "cramoisy\n", - "cramp\n", - "cramped\n", - "cramping\n", - "crampit\n", - "crampits\n", - "crampon\n", - "crampons\n", - "crampoon\n", - "crampoons\n", - "cramps\n", - "crams\n", - "cranberries\n", - "cranberry\n", - "cranch\n", - "cranched\n", - "cranches\n", - "cranching\n", - "crane\n", - "craned\n", - "cranes\n", - "crania\n", - "cranial\n", - "craniate\n", - "craniates\n", - "craning\n", - "cranium\n", - "craniums\n", - "crank\n", - "cranked\n", - "cranker\n", - "crankest\n", - "crankier\n", - "crankiest\n", - "crankily\n", - "cranking\n", - "crankle\n", - "crankled\n", - "crankles\n", - "crankling\n", - "crankly\n", - "crankous\n", - "crankpin\n", - "crankpins\n", - "cranks\n", - "cranky\n", - "crannied\n", - "crannies\n", - "crannog\n", - "crannoge\n", - "crannoges\n", - "crannogs\n", - "cranny\n", - "crap\n", - "crape\n", - "craped\n", - "crapes\n", - "craping\n", - "crapped\n", - "crapper\n", - "crappers\n", - "crappie\n", - "crappier\n", - "crappies\n", - "crappiest\n", - "crapping\n", - "crappy\n", - "craps\n", - "crapshooter\n", - "crapshooters\n", - "crases\n", - "crash\n", - "crashed\n", - "crasher\n", - "crashers\n", - "crashes\n", - "crashing\n", - "crasis\n", - "crass\n", - "crasser\n", - "crassest\n", - "crassly\n", - "cratch\n", - "cratches\n", - "crate\n", - "crated\n", - "crater\n", - "cratered\n", - "cratering\n", - "craters\n", - "crates\n", - "crating\n", - "craton\n", - "cratonic\n", - "cratons\n", - "craunch\n", - "craunched\n", - "craunches\n", - "craunching\n", - "cravat\n", - "cravats\n", - "crave\n", - "craved\n", - "craven\n", - "cravened\n", - "cravening\n", - "cravenly\n", - "cravens\n", - "craver\n", - "cravers\n", - "craves\n", - "craving\n", - "cravings\n", - "craw\n", - "crawdad\n", - "crawdads\n", - "crawfish\n", - "crawfished\n", - "crawfishes\n", - "crawfishing\n", - "crawl\n", - "crawled\n", - "crawler\n", - "crawlers\n", - "crawlier\n", - "crawliest\n", - "crawling\n", - "crawls\n", - "crawlway\n", - "crawlways\n", - "crawly\n", - "craws\n", - "crayfish\n", - "crayfishes\n", - "crayon\n", - "crayoned\n", - "crayoning\n", - "crayons\n", - "craze\n", - "crazed\n", - "crazes\n", - "crazier\n", - "craziest\n", - "crazily\n", - "craziness\n", - "crazinesses\n", - "crazing\n", - "crazy\n", - "creak\n", - "creaked\n", - "creakier\n", - "creakiest\n", - "creakily\n", - "creaking\n", - "creaks\n", - "creaky\n", - "cream\n", - "creamed\n", - "creamer\n", - "creameries\n", - "creamers\n", - "creamery\n", - "creamier\n", - "creamiest\n", - "creamily\n", - "creaming\n", - "creams\n", - "creamy\n", - "crease\n", - "creased\n", - "creaser\n", - "creasers\n", - "creases\n", - "creasier\n", - "creasiest\n", - "creasing\n", - "creasy\n", - "create\n", - "created\n", - "creates\n", - "creatin\n", - "creatine\n", - "creatines\n", - "creating\n", - "creatinine\n", - "creatins\n", - "creation\n", - "creations\n", - "creative\n", - "creativities\n", - "creativity\n", - "creator\n", - "creators\n", - "creature\n", - "creatures\n", - "creche\n", - "creches\n", - "credal\n", - "credence\n", - "credences\n", - "credenda\n", - "credent\n", - "credentials\n", - "credenza\n", - "credenzas\n", - "credibilities\n", - "credibility\n", - "credible\n", - "credibly\n", - "credit\n", - "creditable\n", - "creditably\n", - "credited\n", - "crediting\n", - "creditor\n", - "creditors\n", - "credits\n", - "credo\n", - "credos\n", - "credulities\n", - "credulity\n", - "credulous\n", - "creed\n", - "creedal\n", - "creeds\n", - "creek\n", - "creeks\n", - "creel\n", - "creels\n", - "creep\n", - "creepage\n", - "creepages\n", - "creeper\n", - "creepers\n", - "creepie\n", - "creepier\n", - "creepies\n", - "creepiest\n", - "creepily\n", - "creeping\n", - "creeps\n", - "creepy\n", - "creese\n", - "creeses\n", - "creesh\n", - "creeshed\n", - "creeshes\n", - "creeshing\n", - "cremains\n", - "cremate\n", - "cremated\n", - "cremates\n", - "cremating\n", - "cremation\n", - "cremations\n", - "cremator\n", - "cremators\n", - "crematory\n", - "creme\n", - "cremes\n", - "crenate\n", - "crenated\n", - "crenel\n", - "creneled\n", - "creneling\n", - "crenelle\n", - "crenelled\n", - "crenelles\n", - "crenelling\n", - "crenels\n", - "creodont\n", - "creodonts\n", - "creole\n", - "creoles\n", - "creosol\n", - "creosols\n", - "creosote\n", - "creosoted\n", - "creosotes\n", - "creosoting\n", - "crepe\n", - "creped\n", - "crepes\n", - "crepey\n", - "crepier\n", - "crepiest\n", - "creping\n", - "crept\n", - "crepy\n", - "crescendo\n", - "crescendos\n", - "crescent\n", - "crescents\n", - "cresive\n", - "cresol\n", - "cresols\n", - "cress\n", - "cresses\n", - "cresset\n", - "cressets\n", - "crest\n", - "crestal\n", - "crested\n", - "crestfallen\n", - "crestfallens\n", - "cresting\n", - "crestings\n", - "crests\n", - "cresyl\n", - "cresylic\n", - "cresyls\n", - "cretic\n", - "cretics\n", - "cretin\n", - "cretins\n", - "cretonne\n", - "cretonnes\n", - "crevalle\n", - "crevalles\n", - "crevasse\n", - "crevassed\n", - "crevasses\n", - "crevassing\n", - "crevice\n", - "creviced\n", - "crevices\n", - "crew\n", - "crewed\n", - "crewel\n", - "crewels\n", - "crewing\n", - "crewless\n", - "crewman\n", - "crewmen\n", - "crews\n", - "crib\n", - "cribbage\n", - "cribbages\n", - "cribbed\n", - "cribber\n", - "cribbers\n", - "cribbing\n", - "cribbings\n", - "cribbled\n", - "cribrous\n", - "cribs\n", - "cribwork\n", - "cribworks\n", - "cricetid\n", - "cricetids\n", - "crick\n", - "cricked\n", - "cricket\n", - "cricketed\n", - "cricketing\n", - "crickets\n", - "cricking\n", - "cricks\n", - "cricoid\n", - "cricoids\n", - "cried\n", - "crier\n", - "criers\n", - "cries\n", - "crime\n", - "crimes\n", - "criminal\n", - "criminals\n", - "crimmer\n", - "crimmers\n", - "crimp\n", - "crimped\n", - "crimper\n", - "crimpers\n", - "crimpier\n", - "crimpiest\n", - "crimping\n", - "crimple\n", - "crimpled\n", - "crimples\n", - "crimpling\n", - "crimps\n", - "crimpy\n", - "crimson\n", - "crimsoned\n", - "crimsoning\n", - "crimsons\n", - "cringe\n", - "cringed\n", - "cringer\n", - "cringers\n", - "cringes\n", - "cringing\n", - "cringle\n", - "cringles\n", - "crinite\n", - "crinites\n", - "crinkle\n", - "crinkled\n", - "crinkles\n", - "crinklier\n", - "crinkliest\n", - "crinkling\n", - "crinkly\n", - "crinoid\n", - "crinoids\n", - "crinoline\n", - "crinolines\n", - "crinum\n", - "crinums\n", - "criollo\n", - "criollos\n", - "cripple\n", - "crippled\n", - "crippler\n", - "cripplers\n", - "cripples\n", - "crippling\n", - "cris\n", - "crises\n", - "crisic\n", - "crisis\n", - "crisp\n", - "crispate\n", - "crisped\n", - "crispen\n", - "crispened\n", - "crispening\n", - "crispens\n", - "crisper\n", - "crispers\n", - "crispest\n", - "crispier\n", - "crispiest\n", - "crispily\n", - "crisping\n", - "crisply\n", - "crispness\n", - "crispnesses\n", - "crisps\n", - "crispy\n", - "crissa\n", - "crissal\n", - "crisscross\n", - "crisscrossed\n", - "crisscrosses\n", - "crisscrossing\n", - "crissum\n", - "crista\n", - "cristae\n", - "cristate\n", - "criteria\n", - "criterion\n", - "critic\n", - "critical\n", - "criticism\n", - "criticisms\n", - "criticize\n", - "criticized\n", - "criticizes\n", - "criticizing\n", - "critics\n", - "critique\n", - "critiqued\n", - "critiques\n", - "critiquing\n", - "critter\n", - "critters\n", - "crittur\n", - "critturs\n", - "croak\n", - "croaked\n", - "croaker\n", - "croakers\n", - "croakier\n", - "croakiest\n", - "croakily\n", - "croaking\n", - "croaks\n", - "croaky\n", - "crocein\n", - "croceine\n", - "croceines\n", - "croceins\n", - "crochet\n", - "crocheted\n", - "crocheting\n", - "crochets\n", - "croci\n", - "crocine\n", - "crock\n", - "crocked\n", - "crockeries\n", - "crockery\n", - "crocket\n", - "crockets\n", - "crocking\n", - "crocks\n", - "crocodile\n", - "crocodiles\n", - "crocoite\n", - "crocoites\n", - "crocus\n", - "crocuses\n", - "croft\n", - "crofter\n", - "crofters\n", - "crofts\n", - "crojik\n", - "crojiks\n", - "cromlech\n", - "cromlechs\n", - "crone\n", - "crones\n", - "cronies\n", - "crony\n", - "cronyism\n", - "cronyisms\n", - "crook\n", - "crooked\n", - "crookeder\n", - "crookedest\n", - "crookedness\n", - "crookednesses\n", - "crooking\n", - "crooks\n", - "croon\n", - "crooned\n", - "crooner\n", - "crooners\n", - "crooning\n", - "croons\n", - "crop\n", - "cropland\n", - "croplands\n", - "cropless\n", - "cropped\n", - "cropper\n", - "croppers\n", - "cropping\n", - "crops\n", - "croquet\n", - "croqueted\n", - "croqueting\n", - "croquets\n", - "croquette\n", - "croquettes\n", - "croquis\n", - "crore\n", - "crores\n", - "crosier\n", - "crosiers\n", - "cross\n", - "crossarm\n", - "crossarms\n", - "crossbar\n", - "crossbarred\n", - "crossbarring\n", - "crossbars\n", - "crossbow\n", - "crossbows\n", - "crossbreed\n", - "crossbreeded\n", - "crossbreeding\n", - "crossbreeds\n", - "crosscut\n", - "crosscuts\n", - "crosscutting\n", - "crosse\n", - "crossed\n", - "crosser\n", - "crossers\n", - "crosses\n", - "crossest\n", - "crossing\n", - "crossings\n", - "crosslet\n", - "crosslets\n", - "crossly\n", - "crossover\n", - "crossovers\n", - "crossroads\n", - "crosstie\n", - "crossties\n", - "crosswalk\n", - "crosswalks\n", - "crossway\n", - "crossways\n", - "crosswise\n", - "crotch\n", - "crotched\n", - "crotches\n", - "crotchet\n", - "crotchets\n", - "crotchety\n", - "croton\n", - "crotons\n", - "crouch\n", - "crouched\n", - "crouches\n", - "crouching\n", - "croup\n", - "croupe\n", - "croupes\n", - "croupier\n", - "croupiers\n", - "croupiest\n", - "croupily\n", - "croupous\n", - "croups\n", - "croupy\n", - "crouse\n", - "crousely\n", - "crouton\n", - "croutons\n", - "crow\n", - "crowbar\n", - "crowbars\n", - "crowd\n", - "crowded\n", - "crowder\n", - "crowders\n", - "crowdie\n", - "crowdies\n", - "crowding\n", - "crowds\n", - "crowdy\n", - "crowed\n", - "crower\n", - "crowers\n", - "crowfeet\n", - "crowfoot\n", - "crowfoots\n", - "crowing\n", - "crown\n", - "crowned\n", - "crowner\n", - "crowners\n", - "crownet\n", - "crownets\n", - "crowning\n", - "crowns\n", - "crows\n", - "crowstep\n", - "crowsteps\n", - "croze\n", - "crozer\n", - "crozers\n", - "crozes\n", - "crozier\n", - "croziers\n", - "cruces\n", - "crucial\n", - "crucian\n", - "crucians\n", - "cruciate\n", - "crucible\n", - "crucibles\n", - "crucifer\n", - "crucifers\n", - "crucified\n", - "crucifies\n", - "crucifix\n", - "crucifixes\n", - "crucifixion\n", - "crucify\n", - "crucifying\n", - "crud\n", - "crudded\n", - "crudding\n", - "cruddy\n", - "crude\n", - "crudely\n", - "cruder\n", - "crudes\n", - "crudest\n", - "crudities\n", - "crudity\n", - "cruds\n", - "cruel\n", - "crueler\n", - "cruelest\n", - "crueller\n", - "cruellest\n", - "cruelly\n", - "cruelties\n", - "cruelty\n", - "cruet\n", - "cruets\n", - "cruise\n", - "cruised\n", - "cruiser\n", - "cruisers\n", - "cruises\n", - "cruising\n", - "cruller\n", - "crullers\n", - "crumb\n", - "crumbed\n", - "crumber\n", - "crumbers\n", - "crumbier\n", - "crumbiest\n", - "crumbing\n", - "crumble\n", - "crumbled\n", - "crumbles\n", - "crumblier\n", - "crumbliest\n", - "crumbling\n", - "crumbly\n", - "crumbs\n", - "crumby\n", - "crummie\n", - "crummier\n", - "crummies\n", - "crummiest\n", - "crummy\n", - "crump\n", - "crumped\n", - "crumpet\n", - "crumpets\n", - "crumping\n", - "crumple\n", - "crumpled\n", - "crumples\n", - "crumpling\n", - "crumply\n", - "crumps\n", - "crunch\n", - "crunched\n", - "cruncher\n", - "crunchers\n", - "crunches\n", - "crunchier\n", - "crunchiest\n", - "crunching\n", - "crunchy\n", - "crunodal\n", - "crunode\n", - "crunodes\n", - "cruor\n", - "cruors\n", - "crupper\n", - "cruppers\n", - "crura\n", - "crural\n", - "crus\n", - "crusade\n", - "crusaded\n", - "crusader\n", - "crusaders\n", - "crusades\n", - "crusading\n", - "crusado\n", - "crusadoes\n", - "crusados\n", - "cruse\n", - "cruses\n", - "cruset\n", - "crusets\n", - "crush\n", - "crushed\n", - "crusher\n", - "crushers\n", - "crushes\n", - "crushing\n", - "crusily\n", - "crust\n", - "crustacean\n", - "crustaceans\n", - "crustal\n", - "crusted\n", - "crustier\n", - "crustiest\n", - "crustily\n", - "crusting\n", - "crustose\n", - "crusts\n", - "crusty\n", - "crutch\n", - "crutched\n", - "crutches\n", - "crutching\n", - "crux\n", - "cruxes\n", - "cruzado\n", - "cruzadoes\n", - "cruzados\n", - "cruzeiro\n", - "cruzeiros\n", - "crwth\n", - "crwths\n", - "cry\n", - "crybabies\n", - "crybaby\n", - "crying\n", - "cryingly\n", - "cryogen\n", - "cryogenies\n", - "cryogens\n", - "cryogeny\n", - "cryolite\n", - "cryolites\n", - "cryonic\n", - "cryonics\n", - "cryostat\n", - "cryostats\n", - "cryotron\n", - "cryotrons\n", - "crypt\n", - "cryptal\n", - "cryptic\n", - "crypto\n", - "cryptographic\n", - "cryptographies\n", - "cryptography\n", - "cryptos\n", - "crypts\n", - "crystal\n", - "crystallization\n", - "crystallizations\n", - "crystallize\n", - "crystallized\n", - "crystallizes\n", - "crystallizing\n", - "crystals\n", - "ctenidia\n", - "ctenoid\n", - "cub\n", - "cubage\n", - "cubages\n", - "cubature\n", - "cubatures\n", - "cubbies\n", - "cubbish\n", - "cubby\n", - "cubbyhole\n", - "cubbyholes\n", - "cube\n", - "cubeb\n", - "cubebs\n", - "cubed\n", - "cuber\n", - "cubers\n", - "cubes\n", - "cubic\n", - "cubical\n", - "cubicities\n", - "cubicity\n", - "cubicle\n", - "cubicles\n", - "cubicly\n", - "cubics\n", - "cubicula\n", - "cubiform\n", - "cubing\n", - "cubism\n", - "cubisms\n", - "cubist\n", - "cubistic\n", - "cubists\n", - "cubit\n", - "cubital\n", - "cubits\n", - "cuboid\n", - "cuboidal\n", - "cuboids\n", - "cubs\n", - "cuckold\n", - "cuckolded\n", - "cuckolding\n", - "cuckolds\n", - "cuckoo\n", - "cuckooed\n", - "cuckooing\n", - "cuckoos\n", - "cucumber\n", - "cucumbers\n", - "cucurbit\n", - "cucurbits\n", - "cud\n", - "cudbear\n", - "cudbears\n", - "cuddie\n", - "cuddies\n", - "cuddle\n", - "cuddled\n", - "cuddles\n", - "cuddlier\n", - "cuddliest\n", - "cuddling\n", - "cuddly\n", - "cuddy\n", - "cudgel\n", - "cudgeled\n", - "cudgeler\n", - "cudgelers\n", - "cudgeling\n", - "cudgelled\n", - "cudgelling\n", - "cudgels\n", - "cuds\n", - "cudweed\n", - "cudweeds\n", - "cue\n", - "cued\n", - "cueing\n", - "cues\n", - "cuesta\n", - "cuestas\n", - "cuff\n", - "cuffed\n", - "cuffing\n", - "cuffless\n", - "cuffs\n", - "cuif\n", - "cuifs\n", - "cuing\n", - "cuirass\n", - "cuirassed\n", - "cuirasses\n", - "cuirassing\n", - "cuish\n", - "cuishes\n", - "cuisine\n", - "cuisines\n", - "cuisse\n", - "cuisses\n", - "cuittle\n", - "cuittled\n", - "cuittles\n", - "cuittling\n", - "cuke\n", - "cukes\n", - "culch\n", - "culches\n", - "culet\n", - "culets\n", - "culex\n", - "culices\n", - "culicid\n", - "culicids\n", - "culicine\n", - "culicines\n", - "culinary\n", - "cull\n", - "cullay\n", - "cullays\n", - "culled\n", - "culler\n", - "cullers\n", - "cullet\n", - "cullets\n", - "cullied\n", - "cullies\n", - "culling\n", - "cullion\n", - "cullions\n", - "cullis\n", - "cullises\n", - "culls\n", - "cully\n", - "cullying\n", - "culm\n", - "culmed\n", - "culminatation\n", - "culminatations\n", - "culminate\n", - "culminated\n", - "culminates\n", - "culminating\n", - "culming\n", - "culms\n", - "culotte\n", - "culottes\n", - "culpa\n", - "culpable\n", - "culpably\n", - "culpae\n", - "culprit\n", - "culprits\n", - "cult\n", - "cultch\n", - "cultches\n", - "culti\n", - "cultic\n", - "cultigen\n", - "cultigens\n", - "cultism\n", - "cultisms\n", - "cultist\n", - "cultists\n", - "cultivar\n", - "cultivars\n", - "cultivatation\n", - "cultivatations\n", - "cultivate\n", - "cultivated\n", - "cultivates\n", - "cultivating\n", - "cultrate\n", - "cults\n", - "cultural\n", - "culture\n", - "cultured\n", - "cultures\n", - "culturing\n", - "cultus\n", - "cultuses\n", - "culver\n", - "culverin\n", - "culverins\n", - "culvers\n", - "culvert\n", - "culverts\n", - "cum\n", - "cumarin\n", - "cumarins\n", - "cumber\n", - "cumbered\n", - "cumberer\n", - "cumberers\n", - "cumbering\n", - "cumbers\n", - "cumbersome\n", - "cumbrous\n", - "cumin\n", - "cumins\n", - "cummer\n", - "cummers\n", - "cummin\n", - "cummins\n", - "cumquat\n", - "cumquats\n", - "cumshaw\n", - "cumshaws\n", - "cumulate\n", - "cumulated\n", - "cumulates\n", - "cumulating\n", - "cumulative\n", - "cumuli\n", - "cumulous\n", - "cumulus\n", - "cundum\n", - "cundums\n", - "cuneal\n", - "cuneate\n", - "cuneated\n", - "cuneatic\n", - "cuniform\n", - "cuniforms\n", - "cunner\n", - "cunners\n", - "cunning\n", - "cunninger\n", - "cunningest\n", - "cunningly\n", - "cunnings\n", - "cup\n", - "cupboard\n", - "cupboards\n", - "cupcake\n", - "cupcakes\n", - "cupel\n", - "cupeled\n", - "cupeler\n", - "cupelers\n", - "cupeling\n", - "cupelled\n", - "cupeller\n", - "cupellers\n", - "cupelling\n", - "cupels\n", - "cupful\n", - "cupfuls\n", - "cupid\n", - "cupidities\n", - "cupidity\n", - "cupids\n", - "cuplike\n", - "cupola\n", - "cupolaed\n", - "cupolaing\n", - "cupolas\n", - "cuppa\n", - "cuppas\n", - "cupped\n", - "cupper\n", - "cuppers\n", - "cuppier\n", - "cuppiest\n", - "cupping\n", - "cuppings\n", - "cuppy\n", - "cupreous\n", - "cupric\n", - "cuprite\n", - "cuprites\n", - "cuprous\n", - "cuprum\n", - "cuprums\n", - "cups\n", - "cupsful\n", - "cupula\n", - "cupulae\n", - "cupular\n", - "cupulate\n", - "cupule\n", - "cupules\n", - "cur\n", - "curable\n", - "curably\n", - "curacao\n", - "curacaos\n", - "curacies\n", - "curacoa\n", - "curacoas\n", - "curacy\n", - "curagh\n", - "curaghs\n", - "curara\n", - "curaras\n", - "curare\n", - "curares\n", - "curari\n", - "curarine\n", - "curarines\n", - "curaris\n", - "curarize\n", - "curarized\n", - "curarizes\n", - "curarizing\n", - "curassow\n", - "curassows\n", - "curate\n", - "curates\n", - "curative\n", - "curatives\n", - "curator\n", - "curators\n", - "curb\n", - "curbable\n", - "curbed\n", - "curber\n", - "curbers\n", - "curbing\n", - "curbings\n", - "curbs\n", - "curch\n", - "curches\n", - "curculio\n", - "curculios\n", - "curcuma\n", - "curcumas\n", - "curd\n", - "curded\n", - "curdier\n", - "curdiest\n", - "curding\n", - "curdle\n", - "curdled\n", - "curdler\n", - "curdlers\n", - "curdles\n", - "curdling\n", - "curds\n", - "curdy\n", - "cure\n", - "cured\n", - "cureless\n", - "curer\n", - "curers\n", - "cures\n", - "curet\n", - "curets\n", - "curette\n", - "curetted\n", - "curettes\n", - "curetting\n", - "curf\n", - "curfew\n", - "curfews\n", - "curfs\n", - "curia\n", - "curiae\n", - "curial\n", - "curie\n", - "curies\n", - "curing\n", - "curio\n", - "curios\n", - "curiosa\n", - "curiosities\n", - "curiosity\n", - "curious\n", - "curiouser\n", - "curiousest\n", - "curite\n", - "curites\n", - "curium\n", - "curiums\n", - "curl\n", - "curled\n", - "curler\n", - "curlers\n", - "curlew\n", - "curlews\n", - "curlicue\n", - "curlicued\n", - "curlicues\n", - "curlicuing\n", - "curlier\n", - "curliest\n", - "curlily\n", - "curling\n", - "curlings\n", - "curls\n", - "curly\n", - "curlycue\n", - "curlycues\n", - "curmudgeon\n", - "curmudgeons\n", - "curn\n", - "curns\n", - "curr\n", - "currach\n", - "currachs\n", - "curragh\n", - "curraghs\n", - "curran\n", - "currans\n", - "currant\n", - "currants\n", - "curred\n", - "currencies\n", - "currency\n", - "current\n", - "currently\n", - "currents\n", - "curricle\n", - "curricles\n", - "curriculum\n", - "currie\n", - "curried\n", - "currier\n", - "currieries\n", - "curriers\n", - "curriery\n", - "curries\n", - "curring\n", - "currish\n", - "currs\n", - "curry\n", - "currying\n", - "curs\n", - "curse\n", - "cursed\n", - "curseder\n", - "cursedest\n", - "cursedly\n", - "curser\n", - "cursers\n", - "curses\n", - "cursing\n", - "cursive\n", - "cursives\n", - "cursory\n", - "curst\n", - "curt\n", - "curtail\n", - "curtailed\n", - "curtailing\n", - "curtailment\n", - "curtailments\n", - "curtails\n", - "curtain\n", - "curtained\n", - "curtaining\n", - "curtains\n", - "curtal\n", - "curtalax\n", - "curtalaxes\n", - "curtals\n", - "curtate\n", - "curter\n", - "curtesies\n", - "curtest\n", - "curtesy\n", - "curtly\n", - "curtness\n", - "curtnesses\n", - "curtsey\n", - "curtseyed\n", - "curtseying\n", - "curtseys\n", - "curtsied\n", - "curtsies\n", - "curtsy\n", - "curtsying\n", - "curule\n", - "curve\n", - "curved\n", - "curves\n", - "curvet\n", - "curveted\n", - "curveting\n", - "curvets\n", - "curvetted\n", - "curvetting\n", - "curvey\n", - "curvier\n", - "curviest\n", - "curving\n", - "curvy\n", - "cuscus\n", - "cuscuses\n", - "cusec\n", - "cusecs\n", - "cushat\n", - "cushats\n", - "cushaw\n", - "cushaws\n", - "cushier\n", - "cushiest\n", - "cushily\n", - "cushion\n", - "cushioned\n", - "cushioning\n", - "cushions\n", - "cushiony\n", - "cushy\n", - "cusk\n", - "cusks\n", - "cusp\n", - "cuspate\n", - "cuspated\n", - "cusped\n", - "cuspid\n", - "cuspidal\n", - "cuspides\n", - "cuspidor\n", - "cuspidors\n", - "cuspids\n", - "cuspis\n", - "cusps\n", - "cuss\n", - "cussed\n", - "cussedly\n", - "cusser\n", - "cussers\n", - "cusses\n", - "cussing\n", - "cusso\n", - "cussos\n", - "cussword\n", - "cusswords\n", - "custard\n", - "custards\n", - "custodes\n", - "custodial\n", - "custodian\n", - "custodians\n", - "custodies\n", - "custody\n", - "custom\n", - "customarily\n", - "customary\n", - "customer\n", - "customers\n", - "customize\n", - "customized\n", - "customizes\n", - "customizing\n", - "customs\n", - "custos\n", - "custumal\n", - "custumals\n", - "cut\n", - "cutaneous\n", - "cutaway\n", - "cutaways\n", - "cutback\n", - "cutbacks\n", - "cutch\n", - "cutcheries\n", - "cutchery\n", - "cutches\n", - "cutdown\n", - "cutdowns\n", - "cute\n", - "cutely\n", - "cuteness\n", - "cutenesses\n", - "cuter\n", - "cutes\n", - "cutesier\n", - "cutesiest\n", - "cutest\n", - "cutesy\n", - "cutey\n", - "cuteys\n", - "cutgrass\n", - "cutgrasses\n", - "cuticle\n", - "cuticles\n", - "cuticula\n", - "cuticulae\n", - "cutie\n", - "cuties\n", - "cutin\n", - "cutinise\n", - "cutinised\n", - "cutinises\n", - "cutinising\n", - "cutinize\n", - "cutinized\n", - "cutinizes\n", - "cutinizing\n", - "cutins\n", - "cutis\n", - "cutises\n", - "cutlas\n", - "cutlases\n", - "cutlass\n", - "cutlasses\n", - "cutler\n", - "cutleries\n", - "cutlers\n", - "cutlery\n", - "cutlet\n", - "cutlets\n", - "cutline\n", - "cutlines\n", - "cutoff\n", - "cutoffs\n", - "cutout\n", - "cutouts\n", - "cutover\n", - "cutpurse\n", - "cutpurses\n", - "cuts\n", - "cuttable\n", - "cuttage\n", - "cuttages\n", - "cutter\n", - "cutters\n", - "cutthroat\n", - "cutthroats\n", - "cutties\n", - "cutting\n", - "cuttings\n", - "cuttle\n", - "cuttled\n", - "cuttles\n", - "cuttling\n", - "cutty\n", - "cutup\n", - "cutups\n", - "cutwater\n", - "cutwaters\n", - "cutwork\n", - "cutworks\n", - "cutworm\n", - "cutworms\n", - "cuvette\n", - "cuvettes\n", - "cwm\n", - "cwms\n", - "cyan\n", - "cyanamid\n", - "cyanamids\n", - "cyanate\n", - "cyanates\n", - "cyanic\n", - "cyanid\n", - "cyanide\n", - "cyanided\n", - "cyanides\n", - "cyaniding\n", - "cyanids\n", - "cyanin\n", - "cyanine\n", - "cyanines\n", - "cyanins\n", - "cyanite\n", - "cyanites\n", - "cyanitic\n", - "cyano\n", - "cyanogen\n", - "cyanogens\n", - "cyanosed\n", - "cyanoses\n", - "cyanosis\n", - "cyanotic\n", - "cyans\n", - "cyborg\n", - "cyborgs\n", - "cycad\n", - "cycads\n", - "cycas\n", - "cycases\n", - "cycasin\n", - "cycasins\n", - "cyclamen\n", - "cyclamens\n", - "cyclase\n", - "cyclases\n", - "cycle\n", - "cyclecar\n", - "cyclecars\n", - "cycled\n", - "cycler\n", - "cyclers\n", - "cycles\n", - "cyclic\n", - "cyclical\n", - "cyclicly\n", - "cycling\n", - "cyclings\n", - "cyclist\n", - "cyclists\n", - "cyclitol\n", - "cyclitols\n", - "cyclize\n", - "cyclized\n", - "cyclizes\n", - "cyclizing\n", - "cyclo\n", - "cycloid\n", - "cycloids\n", - "cyclonal\n", - "cyclone\n", - "cyclones\n", - "cyclonic\n", - "cyclopaedia\n", - "cyclopaedias\n", - "cyclopedia\n", - "cyclopedias\n", - "cyclophosphamide\n", - "cyclophosphamides\n", - "cyclops\n", - "cyclorama\n", - "cycloramas\n", - "cyclos\n", - "cycloses\n", - "cyclosis\n", - "cyder\n", - "cyders\n", - "cyeses\n", - "cyesis\n", - "cygnet\n", - "cygnets\n", - "cylices\n", - "cylinder\n", - "cylindered\n", - "cylindering\n", - "cylinders\n", - "cylix\n", - "cyma\n", - "cymae\n", - "cymar\n", - "cymars\n", - "cymas\n", - "cymatia\n", - "cymatium\n", - "cymbal\n", - "cymbaler\n", - "cymbalers\n", - "cymbals\n", - "cymbling\n", - "cymblings\n", - "cyme\n", - "cymene\n", - "cymenes\n", - "cymes\n", - "cymlin\n", - "cymling\n", - "cymlings\n", - "cymlins\n", - "cymogene\n", - "cymogenes\n", - "cymoid\n", - "cymol\n", - "cymols\n", - "cymose\n", - "cymosely\n", - "cymous\n", - "cynic\n", - "cynical\n", - "cynicism\n", - "cynicisms\n", - "cynics\n", - "cynosure\n", - "cynosures\n", - "cypher\n", - "cyphered\n", - "cyphering\n", - "cyphers\n", - "cypres\n", - "cypreses\n", - "cypress\n", - "cypresses\n", - "cyprian\n", - "cyprians\n", - "cyprinid\n", - "cyprinids\n", - "cyprus\n", - "cypruses\n", - "cypsela\n", - "cypselae\n", - "cyst\n", - "cystein\n", - "cysteine\n", - "cysteines\n", - "cysteins\n", - "cystic\n", - "cystine\n", - "cystines\n", - "cystitides\n", - "cystitis\n", - "cystoid\n", - "cystoids\n", - "cysts\n", - "cytaster\n", - "cytasters\n", - "cytidine\n", - "cytidines\n", - "cytogenies\n", - "cytogeny\n", - "cytologies\n", - "cytology\n", - "cyton\n", - "cytons\n", - "cytopathological\n", - "cytosine\n", - "cytosines\n", - "czar\n", - "czardas\n", - "czardom\n", - "czardoms\n", - "czarevna\n", - "czarevnas\n", - "czarina\n", - "czarinas\n", - "czarism\n", - "czarisms\n", - "czarist\n", - "czarists\n", - "czaritza\n", - "czaritzas\n", - "czars\n", - "da\n", - "dab\n", - "dabbed\n", - "dabber\n", - "dabbers\n", - "dabbing\n", - "dabble\n", - "dabbled\n", - "dabbler\n", - "dabblers\n", - "dabbles\n", - "dabbling\n", - "dabblings\n", - "dabchick\n", - "dabchicks\n", - "dabs\n", - "dabster\n", - "dabsters\n", - "dace\n", - "daces\n", - "dacha\n", - "dachas\n", - "dachshund\n", - "dachshunds\n", - "dacker\n", - "dackered\n", - "dackering\n", - "dackers\n", - "dacoit\n", - "dacoities\n", - "dacoits\n", - "dacoity\n", - "dactyl\n", - "dactyli\n", - "dactylic\n", - "dactylics\n", - "dactyls\n", - "dactylus\n", - "dad\n", - "dada\n", - "dadaism\n", - "dadaisms\n", - "dadaist\n", - "dadaists\n", - "dadas\n", - "daddies\n", - "daddle\n", - "daddled\n", - "daddles\n", - "daddling\n", - "daddy\n", - "dado\n", - "dadoed\n", - "dadoes\n", - "dadoing\n", - "dados\n", - "dads\n", - "daedal\n", - "daemon\n", - "daemonic\n", - "daemons\n", - "daff\n", - "daffed\n", - "daffier\n", - "daffiest\n", - "daffing\n", - "daffodil\n", - "daffodils\n", - "daffs\n", - "daffy\n", - "daft\n", - "dafter\n", - "daftest\n", - "daftly\n", - "daftness\n", - "daftnesses\n", - "dag\n", - "dagger\n", - "daggered\n", - "daggering\n", - "daggers\n", - "daggle\n", - "daggled\n", - "daggles\n", - "daggling\n", - "daglock\n", - "daglocks\n", - "dago\n", - "dagoba\n", - "dagobas\n", - "dagoes\n", - "dagos\n", - "dags\n", - "dah\n", - "dahabeah\n", - "dahabeahs\n", - "dahabiah\n", - "dahabiahs\n", - "dahabieh\n", - "dahabiehs\n", - "dahabiya\n", - "dahabiyas\n", - "dahlia\n", - "dahlias\n", - "dahoon\n", - "dahoons\n", - "dahs\n", - "daiker\n", - "daikered\n", - "daikering\n", - "daikers\n", - "dailies\n", - "daily\n", - "daimen\n", - "daimio\n", - "daimios\n", - "daimon\n", - "daimones\n", - "daimonic\n", - "daimons\n", - "daimyo\n", - "daimyos\n", - "daintier\n", - "dainties\n", - "daintiest\n", - "daintily\n", - "daintiness\n", - "daintinesses\n", - "dainty\n", - "daiquiri\n", - "daiquiris\n", - "dairies\n", - "dairy\n", - "dairying\n", - "dairyings\n", - "dairymaid\n", - "dairymaids\n", - "dairyman\n", - "dairymen\n", - "dais\n", - "daises\n", - "daishiki\n", - "daishikis\n", - "daisied\n", - "daisies\n", - "daisy\n", - "dak\n", - "dakerhen\n", - "dakerhens\n", - "dakoit\n", - "dakoities\n", - "dakoits\n", - "dakoity\n", - "daks\n", - "dalapon\n", - "dalapons\n", - "dalasi\n", - "dale\n", - "dales\n", - "dalesman\n", - "dalesmen\n", - "daleth\n", - "daleths\n", - "dalles\n", - "dalliance\n", - "dalliances\n", - "dallied\n", - "dallier\n", - "dalliers\n", - "dallies\n", - "dally\n", - "dallying\n", - "dalmatian\n", - "dalmatians\n", - "dalmatic\n", - "dalmatics\n", - "daltonic\n", - "dam\n", - "damage\n", - "damaged\n", - "damager\n", - "damagers\n", - "damages\n", - "damaging\n", - "daman\n", - "damans\n", - "damar\n", - "damars\n", - "damask\n", - "damasked\n", - "damasking\n", - "damasks\n", - "dame\n", - "dames\n", - "damewort\n", - "dameworts\n", - "dammar\n", - "dammars\n", - "dammed\n", - "dammer\n", - "dammers\n", - "damming\n", - "damn\n", - "damnable\n", - "damnably\n", - "damnation\n", - "damnations\n", - "damndest\n", - "damndests\n", - "damned\n", - "damneder\n", - "damnedest\n", - "damner\n", - "damners\n", - "damnified\n", - "damnifies\n", - "damnify\n", - "damnifying\n", - "damning\n", - "damns\n", - "damosel\n", - "damosels\n", - "damozel\n", - "damozels\n", - "damp\n", - "damped\n", - "dampen\n", - "dampened\n", - "dampener\n", - "dampeners\n", - "dampening\n", - "dampens\n", - "damper\n", - "dampers\n", - "dampest\n", - "damping\n", - "dampish\n", - "damply\n", - "dampness\n", - "dampnesses\n", - "damps\n", - "dams\n", - "damsel\n", - "damsels\n", - "damson\n", - "damsons\n", - "dance\n", - "danced\n", - "dancer\n", - "dancers\n", - "dances\n", - "dancing\n", - "dandelion\n", - "dandelions\n", - "dander\n", - "dandered\n", - "dandering\n", - "danders\n", - "dandier\n", - "dandies\n", - "dandiest\n", - "dandified\n", - "dandifies\n", - "dandify\n", - "dandifying\n", - "dandily\n", - "dandle\n", - "dandled\n", - "dandler\n", - "dandlers\n", - "dandles\n", - "dandling\n", - "dandriff\n", - "dandriffs\n", - "dandruff\n", - "dandruffs\n", - "dandy\n", - "dandyish\n", - "dandyism\n", - "dandyisms\n", - "danegeld\n", - "danegelds\n", - "daneweed\n", - "daneweeds\n", - "danewort\n", - "daneworts\n", - "dang\n", - "danged\n", - "danger\n", - "dangered\n", - "dangering\n", - "dangerous\n", - "dangerously\n", - "dangers\n", - "danging\n", - "dangle\n", - "dangled\n", - "dangler\n", - "danglers\n", - "dangles\n", - "dangling\n", - "dangs\n", - "danio\n", - "danios\n", - "dank\n", - "danker\n", - "dankest\n", - "dankly\n", - "dankness\n", - "danknesses\n", - "danseur\n", - "danseurs\n", - "danseuse\n", - "danseuses\n", - "dap\n", - "daphne\n", - "daphnes\n", - "daphnia\n", - "daphnias\n", - "dapped\n", - "dapper\n", - "dapperer\n", - "dapperest\n", - "dapperly\n", - "dapping\n", - "dapple\n", - "dappled\n", - "dapples\n", - "dappling\n", - "daps\n", - "darb\n", - "darbies\n", - "darbs\n", - "dare\n", - "dared\n", - "daredevil\n", - "daredevils\n", - "dareful\n", - "darer\n", - "darers\n", - "dares\n", - "daresay\n", - "daric\n", - "darics\n", - "daring\n", - "daringly\n", - "darings\n", - "dariole\n", - "darioles\n", - "dark\n", - "darked\n", - "darken\n", - "darkened\n", - "darkener\n", - "darkeners\n", - "darkening\n", - "darkens\n", - "darker\n", - "darkest\n", - "darkey\n", - "darkeys\n", - "darkie\n", - "darkies\n", - "darking\n", - "darkish\n", - "darkle\n", - "darkled\n", - "darkles\n", - "darklier\n", - "darkliest\n", - "darkling\n", - "darkly\n", - "darkness\n", - "darknesses\n", - "darkroom\n", - "darkrooms\n", - "darks\n", - "darksome\n", - "darky\n", - "darling\n", - "darlings\n", - "darn\n", - "darndest\n", - "darndests\n", - "darned\n", - "darneder\n", - "darnedest\n", - "darnel\n", - "darnels\n", - "darner\n", - "darners\n", - "darning\n", - "darnings\n", - "darns\n", - "dart\n", - "darted\n", - "darter\n", - "darters\n", - "darting\n", - "dartle\n", - "dartled\n", - "dartles\n", - "dartling\n", - "dartmouth\n", - "darts\n", - "dash\n", - "dashboard\n", - "dashboards\n", - "dashed\n", - "dasheen\n", - "dasheens\n", - "dasher\n", - "dashers\n", - "dashes\n", - "dashier\n", - "dashiest\n", - "dashiki\n", - "dashikis\n", - "dashing\n", - "dashpot\n", - "dashpots\n", - "dashy\n", - "dassie\n", - "dassies\n", - "dastard\n", - "dastardly\n", - "dastards\n", - "dasyure\n", - "dasyures\n", - "data\n", - "datable\n", - "datamedia\n", - "datapoint\n", - "dataries\n", - "datary\n", - "datcha\n", - "datchas\n", - "date\n", - "dateable\n", - "dated\n", - "datedly\n", - "dateless\n", - "dateline\n", - "datelined\n", - "datelines\n", - "datelining\n", - "dater\n", - "daters\n", - "dates\n", - "dating\n", - "datival\n", - "dative\n", - "datively\n", - "datives\n", - "dato\n", - "datos\n", - "datto\n", - "dattos\n", - "datum\n", - "datums\n", - "datura\n", - "daturas\n", - "daturic\n", - "daub\n", - "daube\n", - "daubed\n", - "dauber\n", - "dauberies\n", - "daubers\n", - "daubery\n", - "daubes\n", - "daubier\n", - "daubiest\n", - "daubing\n", - "daubries\n", - "daubry\n", - "daubs\n", - "dauby\n", - "daughter\n", - "daughterly\n", - "daughters\n", - "daunder\n", - "daundered\n", - "daundering\n", - "daunders\n", - "daunt\n", - "daunted\n", - "daunter\n", - "daunters\n", - "daunting\n", - "dauntless\n", - "daunts\n", - "dauphin\n", - "dauphine\n", - "dauphines\n", - "dauphins\n", - "daut\n", - "dauted\n", - "dautie\n", - "dauties\n", - "dauting\n", - "dauts\n", - "daven\n", - "davened\n", - "davening\n", - "davenport\n", - "davenports\n", - "davens\n", - "davies\n", - "davit\n", - "davits\n", - "davy\n", - "daw\n", - "dawdle\n", - "dawdled\n", - "dawdler\n", - "dawdlers\n", - "dawdles\n", - "dawdling\n", - "dawed\n", - "dawen\n", - "dawing\n", - "dawk\n", - "dawks\n", - "dawn\n", - "dawned\n", - "dawning\n", - "dawnlike\n", - "dawns\n", - "daws\n", - "dawt\n", - "dawted\n", - "dawtie\n", - "dawties\n", - "dawting\n", - "dawts\n", - "day\n", - "daybed\n", - "daybeds\n", - "daybook\n", - "daybooks\n", - "daybreak\n", - "daybreaks\n", - "daydream\n", - "daydreamed\n", - "daydreaming\n", - "daydreams\n", - "daydreamt\n", - "dayflies\n", - "dayfly\n", - "dayglow\n", - "dayglows\n", - "daylight\n", - "daylighted\n", - "daylighting\n", - "daylights\n", - "daylilies\n", - "daylily\n", - "daylit\n", - "daylong\n", - "daymare\n", - "daymares\n", - "dayroom\n", - "dayrooms\n", - "days\n", - "dayside\n", - "daysides\n", - "daysman\n", - "daysmen\n", - "daystar\n", - "daystars\n", - "daytime\n", - "daytimes\n", - "daze\n", - "dazed\n", - "dazedly\n", - "dazes\n", - "dazing\n", - "dazzle\n", - "dazzled\n", - "dazzler\n", - "dazzlers\n", - "dazzles\n", - "dazzling\n", - "de\n", - "deacon\n", - "deaconed\n", - "deaconess\n", - "deaconesses\n", - "deaconing\n", - "deaconries\n", - "deaconry\n", - "deacons\n", - "dead\n", - "deadbeat\n", - "deadbeats\n", - "deaden\n", - "deadened\n", - "deadener\n", - "deadeners\n", - "deadening\n", - "deadens\n", - "deader\n", - "deadest\n", - "deadeye\n", - "deadeyes\n", - "deadfall\n", - "deadfalls\n", - "deadhead\n", - "deadheaded\n", - "deadheading\n", - "deadheads\n", - "deadlier\n", - "deadliest\n", - "deadline\n", - "deadlines\n", - "deadliness\n", - "deadlinesses\n", - "deadlock\n", - "deadlocked\n", - "deadlocking\n", - "deadlocks\n", - "deadly\n", - "deadness\n", - "deadnesses\n", - "deadpan\n", - "deadpanned\n", - "deadpanning\n", - "deadpans\n", - "deads\n", - "deadwood\n", - "deadwoods\n", - "deaerate\n", - "deaerated\n", - "deaerates\n", - "deaerating\n", - "deaf\n", - "deafen\n", - "deafened\n", - "deafening\n", - "deafens\n", - "deafer\n", - "deafest\n", - "deafish\n", - "deafly\n", - "deafness\n", - "deafnesses\n", - "deair\n", - "deaired\n", - "deairing\n", - "deairs\n", - "deal\n", - "dealate\n", - "dealated\n", - "dealates\n", - "dealer\n", - "dealers\n", - "dealfish\n", - "dealfishes\n", - "dealing\n", - "dealings\n", - "deals\n", - "dealt\n", - "dean\n", - "deaned\n", - "deaneries\n", - "deanery\n", - "deaning\n", - "deans\n", - "deanship\n", - "deanships\n", - "dear\n", - "dearer\n", - "dearest\n", - "dearie\n", - "dearies\n", - "dearly\n", - "dearness\n", - "dearnesses\n", - "dears\n", - "dearth\n", - "dearths\n", - "deary\n", - "deash\n", - "deashed\n", - "deashes\n", - "deashing\n", - "deasil\n", - "death\n", - "deathbed\n", - "deathbeds\n", - "deathcup\n", - "deathcups\n", - "deathful\n", - "deathless\n", - "deathly\n", - "deaths\n", - "deathy\n", - "deave\n", - "deaved\n", - "deaves\n", - "deaving\n", - "deb\n", - "debacle\n", - "debacles\n", - "debar\n", - "debark\n", - "debarkation\n", - "debarkations\n", - "debarked\n", - "debarking\n", - "debarks\n", - "debarred\n", - "debarring\n", - "debars\n", - "debase\n", - "debased\n", - "debasement\n", - "debasements\n", - "debaser\n", - "debasers\n", - "debases\n", - "debasing\n", - "debatable\n", - "debate\n", - "debated\n", - "debater\n", - "debaters\n", - "debates\n", - "debating\n", - "debauch\n", - "debauched\n", - "debaucheries\n", - "debauchery\n", - "debauches\n", - "debauching\n", - "debilitate\n", - "debilitated\n", - "debilitates\n", - "debilitating\n", - "debilities\n", - "debility\n", - "debit\n", - "debited\n", - "debiting\n", - "debits\n", - "debonair\n", - "debone\n", - "deboned\n", - "deboner\n", - "deboners\n", - "debones\n", - "deboning\n", - "debouch\n", - "debouche\n", - "debouched\n", - "debouches\n", - "debouching\n", - "debrief\n", - "debriefed\n", - "debriefing\n", - "debriefs\n", - "debris\n", - "debruise\n", - "debruised\n", - "debruises\n", - "debruising\n", - "debs\n", - "debt\n", - "debtless\n", - "debtor\n", - "debtors\n", - "debts\n", - "debug\n", - "debugged\n", - "debugging\n", - "debugs\n", - "debunk\n", - "debunked\n", - "debunker\n", - "debunkers\n", - "debunking\n", - "debunks\n", - "debut\n", - "debutant\n", - "debutante\n", - "debutantes\n", - "debutants\n", - "debuted\n", - "debuting\n", - "debuts\n", - "debye\n", - "debyes\n", - "decadal\n", - "decade\n", - "decadence\n", - "decadent\n", - "decadents\n", - "decades\n", - "decagon\n", - "decagons\n", - "decagram\n", - "decagrams\n", - "decal\n", - "decals\n", - "decamp\n", - "decamped\n", - "decamping\n", - "decamps\n", - "decanal\n", - "decane\n", - "decanes\n", - "decant\n", - "decanted\n", - "decanter\n", - "decanters\n", - "decanting\n", - "decants\n", - "decapitatation\n", - "decapitatations\n", - "decapitate\n", - "decapitated\n", - "decapitates\n", - "decapitating\n", - "decapod\n", - "decapods\n", - "decare\n", - "decares\n", - "decay\n", - "decayed\n", - "decayer\n", - "decayers\n", - "decaying\n", - "decays\n", - "decease\n", - "deceased\n", - "deceases\n", - "deceasing\n", - "decedent\n", - "decedents\n", - "deceit\n", - "deceitful\n", - "deceitfully\n", - "deceitfulness\n", - "deceitfulnesses\n", - "deceits\n", - "deceive\n", - "deceived\n", - "deceiver\n", - "deceivers\n", - "deceives\n", - "deceiving\n", - "decelerate\n", - "decelerated\n", - "decelerates\n", - "decelerating\n", - "decemvir\n", - "decemviri\n", - "decemvirs\n", - "decenaries\n", - "decenary\n", - "decencies\n", - "decency\n", - "decennia\n", - "decent\n", - "decenter\n", - "decentered\n", - "decentering\n", - "decenters\n", - "decentest\n", - "decently\n", - "decentralization\n", - "decentre\n", - "decentred\n", - "decentres\n", - "decentring\n", - "deception\n", - "deceptions\n", - "deceptively\n", - "decern\n", - "decerned\n", - "decerning\n", - "decerns\n", - "deciare\n", - "deciares\n", - "decibel\n", - "decibels\n", - "decide\n", - "decided\n", - "decidedly\n", - "decider\n", - "deciders\n", - "decides\n", - "deciding\n", - "decidua\n", - "deciduae\n", - "decidual\n", - "deciduas\n", - "deciduous\n", - "decigram\n", - "decigrams\n", - "decile\n", - "deciles\n", - "decimal\n", - "decimally\n", - "decimals\n", - "decimate\n", - "decimated\n", - "decimates\n", - "decimating\n", - "decipher\n", - "decipherable\n", - "deciphered\n", - "deciphering\n", - "deciphers\n", - "decision\n", - "decisions\n", - "decisive\n", - "decisively\n", - "decisiveness\n", - "decisivenesses\n", - "deck\n", - "decked\n", - "deckel\n", - "deckels\n", - "decker\n", - "deckers\n", - "deckhand\n", - "deckhands\n", - "decking\n", - "deckings\n", - "deckle\n", - "deckles\n", - "decks\n", - "declaim\n", - "declaimed\n", - "declaiming\n", - "declaims\n", - "declamation\n", - "declamations\n", - "declaration\n", - "declarations\n", - "declarative\n", - "declaratory\n", - "declare\n", - "declared\n", - "declarer\n", - "declarers\n", - "declares\n", - "declaring\n", - "declass\n", - "declasse\n", - "declassed\n", - "declasses\n", - "declassing\n", - "declension\n", - "declensions\n", - "declination\n", - "declinations\n", - "decline\n", - "declined\n", - "decliner\n", - "decliners\n", - "declines\n", - "declining\n", - "decoct\n", - "decocted\n", - "decocting\n", - "decocts\n", - "decode\n", - "decoded\n", - "decoder\n", - "decoders\n", - "decodes\n", - "decoding\n", - "decolor\n", - "decolored\n", - "decoloring\n", - "decolors\n", - "decolour\n", - "decoloured\n", - "decolouring\n", - "decolours\n", - "decompose\n", - "decomposed\n", - "decomposes\n", - "decomposing\n", - "decomposition\n", - "decompositions\n", - "decongestant\n", - "decongestants\n", - "decor\n", - "decorate\n", - "decorated\n", - "decorates\n", - "decorating\n", - "decoration\n", - "decorations\n", - "decorative\n", - "decorator\n", - "decorators\n", - "decorous\n", - "decorously\n", - "decorousness\n", - "decorousnesses\n", - "decors\n", - "decorum\n", - "decorums\n", - "decoy\n", - "decoyed\n", - "decoyer\n", - "decoyers\n", - "decoying\n", - "decoys\n", - "decrease\n", - "decreased\n", - "decreases\n", - "decreasing\n", - "decree\n", - "decreed\n", - "decreeing\n", - "decreer\n", - "decreers\n", - "decrees\n", - "decrepit\n", - "decrescendo\n", - "decretal\n", - "decretals\n", - "decrial\n", - "decrials\n", - "decried\n", - "decrier\n", - "decriers\n", - "decries\n", - "decrown\n", - "decrowned\n", - "decrowning\n", - "decrowns\n", - "decry\n", - "decrying\n", - "decrypt\n", - "decrypted\n", - "decrypting\n", - "decrypts\n", - "decuman\n", - "decuple\n", - "decupled\n", - "decuples\n", - "decupling\n", - "decuries\n", - "decurion\n", - "decurions\n", - "decurve\n", - "decurved\n", - "decurves\n", - "decurving\n", - "decury\n", - "dedal\n", - "dedans\n", - "dedicate\n", - "dedicated\n", - "dedicates\n", - "dedicating\n", - "dedication\n", - "dedications\n", - "dedicatory\n", - "deduce\n", - "deduced\n", - "deduces\n", - "deducible\n", - "deducing\n", - "deduct\n", - "deducted\n", - "deductible\n", - "deducting\n", - "deduction\n", - "deductions\n", - "deductive\n", - "deducts\n", - "dee\n", - "deed\n", - "deeded\n", - "deedier\n", - "deediest\n", - "deeding\n", - "deedless\n", - "deeds\n", - "deedy\n", - "deejay\n", - "deejays\n", - "deem\n", - "deemed\n", - "deeming\n", - "deems\n", - "deemster\n", - "deemsters\n", - "deep\n", - "deepen\n", - "deepened\n", - "deepener\n", - "deepeners\n", - "deepening\n", - "deepens\n", - "deeper\n", - "deepest\n", - "deeply\n", - "deepness\n", - "deepnesses\n", - "deeps\n", - "deer\n", - "deerflies\n", - "deerfly\n", - "deers\n", - "deerskin\n", - "deerskins\n", - "deerweed\n", - "deerweeds\n", - "deeryard\n", - "deeryards\n", - "dees\n", - "deewan\n", - "deewans\n", - "deface\n", - "defaced\n", - "defacement\n", - "defacements\n", - "defacer\n", - "defacers\n", - "defaces\n", - "defacing\n", - "defamation\n", - "defamations\n", - "defamatory\n", - "defame\n", - "defamed\n", - "defamer\n", - "defamers\n", - "defames\n", - "defaming\n", - "defat\n", - "defats\n", - "defatted\n", - "defatting\n", - "default\n", - "defaulted\n", - "defaulting\n", - "defaults\n", - "defeat\n", - "defeated\n", - "defeater\n", - "defeaters\n", - "defeating\n", - "defeats\n", - "defecate\n", - "defecated\n", - "defecates\n", - "defecating\n", - "defecation\n", - "defecations\n", - "defect\n", - "defected\n", - "defecting\n", - "defection\n", - "defections\n", - "defective\n", - "defectives\n", - "defector\n", - "defectors\n", - "defects\n", - "defence\n", - "defences\n", - "defend\n", - "defendant\n", - "defendants\n", - "defended\n", - "defender\n", - "defenders\n", - "defending\n", - "defends\n", - "defense\n", - "defensed\n", - "defenseless\n", - "defenses\n", - "defensible\n", - "defensing\n", - "defensive\n", - "defer\n", - "deference\n", - "deferences\n", - "deferent\n", - "deferential\n", - "deferents\n", - "deferment\n", - "deferments\n", - "deferrable\n", - "deferral\n", - "deferrals\n", - "deferred\n", - "deferrer\n", - "deferrers\n", - "deferring\n", - "defers\n", - "defi\n", - "defiance\n", - "defiances\n", - "defiant\n", - "deficiencies\n", - "deficiency\n", - "deficient\n", - "deficit\n", - "deficits\n", - "defied\n", - "defier\n", - "defiers\n", - "defies\n", - "defilade\n", - "defiladed\n", - "defilades\n", - "defilading\n", - "defile\n", - "defiled\n", - "defilement\n", - "defilements\n", - "defiler\n", - "defilers\n", - "defiles\n", - "defiling\n", - "definable\n", - "definably\n", - "define\n", - "defined\n", - "definer\n", - "definers\n", - "defines\n", - "defining\n", - "definite\n", - "definitely\n", - "definition\n", - "definitions\n", - "definitive\n", - "defis\n", - "deflate\n", - "deflated\n", - "deflates\n", - "deflating\n", - "deflation\n", - "deflations\n", - "deflator\n", - "deflators\n", - "deflea\n", - "defleaed\n", - "defleaing\n", - "defleas\n", - "deflect\n", - "deflected\n", - "deflecting\n", - "deflection\n", - "deflections\n", - "deflects\n", - "deflexed\n", - "deflower\n", - "deflowered\n", - "deflowering\n", - "deflowers\n", - "defoam\n", - "defoamed\n", - "defoamer\n", - "defoamers\n", - "defoaming\n", - "defoams\n", - "defog\n", - "defogged\n", - "defogger\n", - "defoggers\n", - "defogging\n", - "defogs\n", - "defoliant\n", - "defoliants\n", - "defoliate\n", - "defoliated\n", - "defoliates\n", - "defoliating\n", - "defoliation\n", - "defoliations\n", - "deforce\n", - "deforced\n", - "deforces\n", - "deforcing\n", - "deforest\n", - "deforested\n", - "deforesting\n", - "deforests\n", - "deform\n", - "deformation\n", - "deformations\n", - "deformed\n", - "deformer\n", - "deformers\n", - "deforming\n", - "deformities\n", - "deformity\n", - "deforms\n", - "defraud\n", - "defrauded\n", - "defrauding\n", - "defrauds\n", - "defray\n", - "defrayal\n", - "defrayals\n", - "defrayed\n", - "defrayer\n", - "defrayers\n", - "defraying\n", - "defrays\n", - "defrock\n", - "defrocked\n", - "defrocking\n", - "defrocks\n", - "defrost\n", - "defrosted\n", - "defroster\n", - "defrosters\n", - "defrosting\n", - "defrosts\n", - "deft\n", - "defter\n", - "deftest\n", - "deftly\n", - "deftness\n", - "deftnesses\n", - "defunct\n", - "defuse\n", - "defused\n", - "defuses\n", - "defusing\n", - "defuze\n", - "defuzed\n", - "defuzes\n", - "defuzing\n", - "defy\n", - "defying\n", - "degage\n", - "degame\n", - "degames\n", - "degami\n", - "degamis\n", - "degas\n", - "degases\n", - "degassed\n", - "degasser\n", - "degassers\n", - "degasses\n", - "degassing\n", - "degauss\n", - "degaussed\n", - "degausses\n", - "degaussing\n", - "degeneracies\n", - "degeneracy\n", - "degenerate\n", - "degenerated\n", - "degenerates\n", - "degenerating\n", - "degeneration\n", - "degenerations\n", - "degenerative\n", - "degerm\n", - "degermed\n", - "degerming\n", - "degerms\n", - "deglaze\n", - "deglazed\n", - "deglazes\n", - "deglazing\n", - "degradable\n", - "degradation\n", - "degradations\n", - "degrade\n", - "degraded\n", - "degrader\n", - "degraders\n", - "degrades\n", - "degrading\n", - "degrease\n", - "degreased\n", - "degreases\n", - "degreasing\n", - "degree\n", - "degreed\n", - "degrees\n", - "degum\n", - "degummed\n", - "degumming\n", - "degums\n", - "degust\n", - "degusted\n", - "degusting\n", - "degusts\n", - "dehisce\n", - "dehisced\n", - "dehisces\n", - "dehiscing\n", - "dehorn\n", - "dehorned\n", - "dehorner\n", - "dehorners\n", - "dehorning\n", - "dehorns\n", - "dehort\n", - "dehorted\n", - "dehorting\n", - "dehorts\n", - "dehydrate\n", - "dehydrated\n", - "dehydrates\n", - "dehydrating\n", - "dehydration\n", - "dehydrations\n", - "dei\n", - "deice\n", - "deiced\n", - "deicer\n", - "deicers\n", - "deices\n", - "deicidal\n", - "deicide\n", - "deicides\n", - "deicing\n", - "deictic\n", - "deific\n", - "deifical\n", - "deification\n", - "deifications\n", - "deified\n", - "deifier\n", - "deifies\n", - "deiform\n", - "deify\n", - "deifying\n", - "deign\n", - "deigned\n", - "deigning\n", - "deigns\n", - "deil\n", - "deils\n", - "deionize\n", - "deionized\n", - "deionizes\n", - "deionizing\n", - "deism\n", - "deisms\n", - "deist\n", - "deistic\n", - "deists\n", - "deities\n", - "deity\n", - "deject\n", - "dejecta\n", - "dejected\n", - "dejecting\n", - "dejection\n", - "dejections\n", - "dejects\n", - "dejeuner\n", - "dejeuners\n", - "dekagram\n", - "dekagrams\n", - "dekare\n", - "dekares\n", - "deke\n", - "deked\n", - "dekes\n", - "deking\n", - "del\n", - "delaine\n", - "delaines\n", - "delate\n", - "delated\n", - "delates\n", - "delating\n", - "delation\n", - "delations\n", - "delator\n", - "delators\n", - "delay\n", - "delayed\n", - "delayer\n", - "delayers\n", - "delaying\n", - "delays\n", - "dele\n", - "delead\n", - "deleaded\n", - "deleading\n", - "deleads\n", - "deled\n", - "delegacies\n", - "delegacy\n", - "delegate\n", - "delegated\n", - "delegates\n", - "delegating\n", - "delegation\n", - "delegations\n", - "deleing\n", - "deles\n", - "delete\n", - "deleted\n", - "deleterious\n", - "deletes\n", - "deleting\n", - "deletion\n", - "deletions\n", - "delf\n", - "delfs\n", - "delft\n", - "delfts\n", - "deli\n", - "deliberate\n", - "deliberated\n", - "deliberately\n", - "deliberateness\n", - "deliberatenesses\n", - "deliberates\n", - "deliberating\n", - "deliberation\n", - "deliberations\n", - "deliberative\n", - "delicacies\n", - "delicacy\n", - "delicate\n", - "delicates\n", - "delicatessen\n", - "delicatessens\n", - "delicious\n", - "deliciously\n", - "delict\n", - "delicts\n", - "delight\n", - "delighted\n", - "delighting\n", - "delights\n", - "delime\n", - "delimed\n", - "delimes\n", - "deliming\n", - "delimit\n", - "delimited\n", - "delimiter\n", - "delimiters\n", - "delimiting\n", - "delimits\n", - "delineate\n", - "delineated\n", - "delineates\n", - "delineating\n", - "delineation\n", - "delineations\n", - "delinquencies\n", - "delinquency\n", - "delinquent\n", - "delinquents\n", - "deliria\n", - "delirious\n", - "delirium\n", - "deliriums\n", - "delis\n", - "delist\n", - "delisted\n", - "delisting\n", - "delists\n", - "deliver\n", - "deliverance\n", - "deliverances\n", - "delivered\n", - "deliverer\n", - "deliverers\n", - "deliveries\n", - "delivering\n", - "delivers\n", - "delivery\n", - "dell\n", - "dellies\n", - "dells\n", - "delly\n", - "delouse\n", - "deloused\n", - "delouses\n", - "delousing\n", - "dels\n", - "delta\n", - "deltaic\n", - "deltas\n", - "deltic\n", - "deltoid\n", - "deltoids\n", - "delude\n", - "deluded\n", - "deluder\n", - "deluders\n", - "deludes\n", - "deluding\n", - "deluge\n", - "deluged\n", - "deluges\n", - "deluging\n", - "delusion\n", - "delusions\n", - "delusive\n", - "delusory\n", - "deluster\n", - "delustered\n", - "delustering\n", - "delusters\n", - "deluxe\n", - "delve\n", - "delved\n", - "delver\n", - "delvers\n", - "delves\n", - "delving\n", - "demagog\n", - "demagogies\n", - "demagogs\n", - "demagogue\n", - "demagogueries\n", - "demagoguery\n", - "demagogues\n", - "demagogy\n", - "demand\n", - "demanded\n", - "demander\n", - "demanders\n", - "demanding\n", - "demands\n", - "demarcation\n", - "demarcations\n", - "demarche\n", - "demarches\n", - "demark\n", - "demarked\n", - "demarking\n", - "demarks\n", - "demast\n", - "demasted\n", - "demasting\n", - "demasts\n", - "deme\n", - "demean\n", - "demeaned\n", - "demeaning\n", - "demeanor\n", - "demeanors\n", - "demeans\n", - "dement\n", - "demented\n", - "dementia\n", - "dementias\n", - "dementing\n", - "dements\n", - "demerit\n", - "demerited\n", - "demeriting\n", - "demerits\n", - "demes\n", - "demesne\n", - "demesnes\n", - "demies\n", - "demigod\n", - "demigods\n", - "demijohn\n", - "demijohns\n", - "demilune\n", - "demilunes\n", - "demirep\n", - "demireps\n", - "demise\n", - "demised\n", - "demises\n", - "demising\n", - "demit\n", - "demitasse\n", - "demitasses\n", - "demits\n", - "demitted\n", - "demitting\n", - "demiurge\n", - "demiurges\n", - "demivolt\n", - "demivolts\n", - "demo\n", - "demob\n", - "demobbed\n", - "demobbing\n", - "demobilization\n", - "demobilizations\n", - "demobilize\n", - "demobilized\n", - "demobilizes\n", - "demobilizing\n", - "demobs\n", - "democracies\n", - "democracy\n", - "democrat\n", - "democratic\n", - "democratize\n", - "democratized\n", - "democratizes\n", - "democratizing\n", - "democrats\n", - "demode\n", - "demoded\n", - "demographic\n", - "demography\n", - "demolish\n", - "demolished\n", - "demolishes\n", - "demolishing\n", - "demolition\n", - "demolitions\n", - "demon\n", - "demoness\n", - "demonesses\n", - "demoniac\n", - "demoniacs\n", - "demonian\n", - "demonic\n", - "demonise\n", - "demonised\n", - "demonises\n", - "demonising\n", - "demonism\n", - "demonisms\n", - "demonist\n", - "demonists\n", - "demonize\n", - "demonized\n", - "demonizes\n", - "demonizing\n", - "demons\n", - "demonstrable\n", - "demonstrate\n", - "demonstrated\n", - "demonstrates\n", - "demonstrating\n", - "demonstration\n", - "demonstrations\n", - "demonstrative\n", - "demonstrator\n", - "demonstrators\n", - "demoralize\n", - "demoralized\n", - "demoralizes\n", - "demoralizing\n", - "demos\n", - "demoses\n", - "demote\n", - "demoted\n", - "demotes\n", - "demotic\n", - "demotics\n", - "demoting\n", - "demotion\n", - "demotions\n", - "demotist\n", - "demotists\n", - "demount\n", - "demounted\n", - "demounting\n", - "demounts\n", - "dempster\n", - "dempsters\n", - "demur\n", - "demure\n", - "demurely\n", - "demurer\n", - "demurest\n", - "demurral\n", - "demurrals\n", - "demurred\n", - "demurrer\n", - "demurrers\n", - "demurring\n", - "demurs\n", - "demy\n", - "den\n", - "denarii\n", - "denarius\n", - "denary\n", - "denature\n", - "denatured\n", - "denatures\n", - "denaturing\n", - "denazified\n", - "denazifies\n", - "denazify\n", - "denazifying\n", - "dendrite\n", - "dendrites\n", - "dendroid\n", - "dendron\n", - "dendrons\n", - "dene\n", - "denes\n", - "dengue\n", - "dengues\n", - "deniable\n", - "deniably\n", - "denial\n", - "denials\n", - "denied\n", - "denier\n", - "deniers\n", - "denies\n", - "denim\n", - "denims\n", - "denizen\n", - "denizened\n", - "denizening\n", - "denizens\n", - "denned\n", - "denning\n", - "denomination\n", - "denominational\n", - "denominations\n", - "denominator\n", - "denominators\n", - "denotation\n", - "denotations\n", - "denotative\n", - "denote\n", - "denoted\n", - "denotes\n", - "denoting\n", - "denotive\n", - "denouement\n", - "denouements\n", - "denounce\n", - "denounced\n", - "denounces\n", - "denouncing\n", - "dens\n", - "dense\n", - "densely\n", - "denseness\n", - "densenesses\n", - "denser\n", - "densest\n", - "densified\n", - "densifies\n", - "densify\n", - "densifying\n", - "densities\n", - "density\n", - "dent\n", - "dental\n", - "dentalia\n", - "dentally\n", - "dentals\n", - "dentate\n", - "dentated\n", - "dented\n", - "denticle\n", - "denticles\n", - "dentifrice\n", - "dentifrices\n", - "dentil\n", - "dentils\n", - "dentin\n", - "dentinal\n", - "dentine\n", - "dentines\n", - "denting\n", - "dentins\n", - "dentist\n", - "dentistries\n", - "dentistry\n", - "dentists\n", - "dentition\n", - "dentitions\n", - "dentoid\n", - "dents\n", - "dentural\n", - "denture\n", - "dentures\n", - "denudate\n", - "denudated\n", - "denudates\n", - "denudating\n", - "denude\n", - "denuded\n", - "denuder\n", - "denuders\n", - "denudes\n", - "denuding\n", - "denunciation\n", - "denunciations\n", - "deny\n", - "denying\n", - "deodand\n", - "deodands\n", - "deodar\n", - "deodara\n", - "deodaras\n", - "deodars\n", - "deodorant\n", - "deodorants\n", - "deodorize\n", - "deodorized\n", - "deodorizes\n", - "deodorizing\n", - "depaint\n", - "depainted\n", - "depainting\n", - "depaints\n", - "depart\n", - "departed\n", - "departing\n", - "department\n", - "departmental\n", - "departments\n", - "departs\n", - "departure\n", - "departures\n", - "depend\n", - "dependabilities\n", - "dependability\n", - "dependable\n", - "depended\n", - "dependence\n", - "dependences\n", - "dependencies\n", - "dependency\n", - "dependent\n", - "dependents\n", - "depending\n", - "depends\n", - "deperm\n", - "depermed\n", - "deperming\n", - "deperms\n", - "depict\n", - "depicted\n", - "depicter\n", - "depicters\n", - "depicting\n", - "depiction\n", - "depictions\n", - "depictor\n", - "depictors\n", - "depicts\n", - "depilate\n", - "depilated\n", - "depilates\n", - "depilating\n", - "deplane\n", - "deplaned\n", - "deplanes\n", - "deplaning\n", - "deplete\n", - "depleted\n", - "depletes\n", - "depleting\n", - "depletion\n", - "depletions\n", - "deplorable\n", - "deplore\n", - "deplored\n", - "deplorer\n", - "deplorers\n", - "deplores\n", - "deploring\n", - "deploy\n", - "deployed\n", - "deploying\n", - "deployment\n", - "deployments\n", - "deploys\n", - "deplume\n", - "deplumed\n", - "deplumes\n", - "depluming\n", - "depolish\n", - "depolished\n", - "depolishes\n", - "depolishing\n", - "depone\n", - "deponed\n", - "deponent\n", - "deponents\n", - "depones\n", - "deponing\n", - "deport\n", - "deportation\n", - "deportations\n", - "deported\n", - "deportee\n", - "deportees\n", - "deporting\n", - "deportment\n", - "deportments\n", - "deports\n", - "deposal\n", - "deposals\n", - "depose\n", - "deposed\n", - "deposer\n", - "deposers\n", - "deposes\n", - "deposing\n", - "deposit\n", - "deposited\n", - "depositing\n", - "deposition\n", - "depositions\n", - "depositor\n", - "depositories\n", - "depositors\n", - "depository\n", - "deposits\n", - "depot\n", - "depots\n", - "depravation\n", - "depravations\n", - "deprave\n", - "depraved\n", - "depraver\n", - "depravers\n", - "depraves\n", - "depraving\n", - "depravities\n", - "depravity\n", - "deprecate\n", - "deprecated\n", - "deprecates\n", - "deprecating\n", - "deprecation\n", - "deprecations\n", - "deprecatory\n", - "depreciate\n", - "depreciated\n", - "depreciates\n", - "depreciating\n", - "depreciation\n", - "depreciations\n", - "depredation\n", - "depredations\n", - "depress\n", - "depressant\n", - "depressants\n", - "depressed\n", - "depresses\n", - "depressing\n", - "depression\n", - "depressions\n", - "depressive\n", - "depressor\n", - "depressors\n", - "deprival\n", - "deprivals\n", - "deprive\n", - "deprived\n", - "depriver\n", - "deprivers\n", - "deprives\n", - "depriving\n", - "depside\n", - "depsides\n", - "depth\n", - "depths\n", - "depurate\n", - "depurated\n", - "depurates\n", - "depurating\n", - "deputation\n", - "deputations\n", - "depute\n", - "deputed\n", - "deputes\n", - "deputies\n", - "deputing\n", - "deputize\n", - "deputized\n", - "deputizes\n", - "deputizing\n", - "deputy\n", - "deraign\n", - "deraigned\n", - "deraigning\n", - "deraigns\n", - "derail\n", - "derailed\n", - "derailing\n", - "derails\n", - "derange\n", - "deranged\n", - "derangement\n", - "derangements\n", - "deranges\n", - "deranging\n", - "derat\n", - "derats\n", - "deratted\n", - "deratting\n", - "deray\n", - "derays\n", - "derbies\n", - "derby\n", - "dere\n", - "derelict\n", - "dereliction\n", - "derelictions\n", - "derelicts\n", - "deride\n", - "derided\n", - "derider\n", - "deriders\n", - "derides\n", - "deriding\n", - "deringer\n", - "deringers\n", - "derision\n", - "derisions\n", - "derisive\n", - "derisory\n", - "derivate\n", - "derivates\n", - "derivation\n", - "derivations\n", - "derivative\n", - "derivatives\n", - "derive\n", - "derived\n", - "deriver\n", - "derivers\n", - "derives\n", - "deriving\n", - "derm\n", - "derma\n", - "dermal\n", - "dermas\n", - "dermatitis\n", - "dermatologies\n", - "dermatologist\n", - "dermatologists\n", - "dermatology\n", - "dermic\n", - "dermis\n", - "dermises\n", - "dermoid\n", - "derms\n", - "dernier\n", - "derogate\n", - "derogated\n", - "derogates\n", - "derogating\n", - "derogatory\n", - "derrick\n", - "derricks\n", - "derriere\n", - "derrieres\n", - "derries\n", - "derris\n", - "derrises\n", - "derry\n", - "dervish\n", - "dervishes\n", - "des\n", - "desalt\n", - "desalted\n", - "desalter\n", - "desalters\n", - "desalting\n", - "desalts\n", - "desand\n", - "desanded\n", - "desanding\n", - "desands\n", - "descant\n", - "descanted\n", - "descanting\n", - "descants\n", - "descend\n", - "descendant\n", - "descendants\n", - "descended\n", - "descendent\n", - "descendents\n", - "descending\n", - "descends\n", - "descent\n", - "descents\n", - "describable\n", - "describably\n", - "describe\n", - "described\n", - "describes\n", - "describing\n", - "descried\n", - "descrier\n", - "descriers\n", - "descries\n", - "description\n", - "descriptions\n", - "descriptive\n", - "descriptor\n", - "descriptors\n", - "descry\n", - "descrying\n", - "desecrate\n", - "desecrated\n", - "desecrates\n", - "desecrating\n", - "desecration\n", - "desecrations\n", - "desegregate\n", - "desegregated\n", - "desegregates\n", - "desegregating\n", - "desegregation\n", - "desegregations\n", - "deselect\n", - "deselected\n", - "deselecting\n", - "deselects\n", - "desert\n", - "deserted\n", - "deserter\n", - "deserters\n", - "desertic\n", - "deserting\n", - "deserts\n", - "deserve\n", - "deserved\n", - "deserver\n", - "deservers\n", - "deserves\n", - "deserving\n", - "desex\n", - "desexed\n", - "desexes\n", - "desexing\n", - "desiccate\n", - "desiccated\n", - "desiccates\n", - "desiccating\n", - "desiccation\n", - "desiccations\n", - "design\n", - "designate\n", - "designated\n", - "designates\n", - "designating\n", - "designation\n", - "designations\n", - "designed\n", - "designee\n", - "designees\n", - "designer\n", - "designers\n", - "designing\n", - "designs\n", - "desilver\n", - "desilvered\n", - "desilvering\n", - "desilvers\n", - "desinent\n", - "desirabilities\n", - "desirability\n", - "desirable\n", - "desire\n", - "desired\n", - "desirer\n", - "desirers\n", - "desires\n", - "desiring\n", - "desirous\n", - "desist\n", - "desisted\n", - "desisting\n", - "desists\n", - "desk\n", - "deskman\n", - "deskmen\n", - "desks\n", - "desman\n", - "desmans\n", - "desmid\n", - "desmids\n", - "desmoid\n", - "desmoids\n", - "desolate\n", - "desolated\n", - "desolates\n", - "desolating\n", - "desolation\n", - "desolations\n", - "desorb\n", - "desorbed\n", - "desorbing\n", - "desorbs\n", - "despair\n", - "despaired\n", - "despairing\n", - "despairs\n", - "despatch\n", - "despatched\n", - "despatches\n", - "despatching\n", - "desperado\n", - "desperadoes\n", - "desperados\n", - "desperate\n", - "desperately\n", - "desperation\n", - "desperations\n", - "despicable\n", - "despise\n", - "despised\n", - "despiser\n", - "despisers\n", - "despises\n", - "despising\n", - "despite\n", - "despited\n", - "despites\n", - "despiting\n", - "despoil\n", - "despoiled\n", - "despoiling\n", - "despoils\n", - "despond\n", - "desponded\n", - "despondencies\n", - "despondency\n", - "despondent\n", - "desponding\n", - "desponds\n", - "despot\n", - "despotic\n", - "despotism\n", - "despotisms\n", - "despots\n", - "desquamation\n", - "desquamations\n", - "dessert\n", - "desserts\n", - "destain\n", - "destained\n", - "destaining\n", - "destains\n", - "destination\n", - "destinations\n", - "destine\n", - "destined\n", - "destines\n", - "destinies\n", - "destining\n", - "destiny\n", - "destitute\n", - "destitution\n", - "destitutions\n", - "destrier\n", - "destriers\n", - "destroy\n", - "destroyed\n", - "destroyer\n", - "destroyers\n", - "destroying\n", - "destroys\n", - "destruct\n", - "destructed\n", - "destructibilities\n", - "destructibility\n", - "destructible\n", - "destructing\n", - "destruction\n", - "destructions\n", - "destructive\n", - "destructs\n", - "desugar\n", - "desugared\n", - "desugaring\n", - "desugars\n", - "desulfur\n", - "desulfured\n", - "desulfuring\n", - "desulfurs\n", - "desultory\n", - "detach\n", - "detached\n", - "detacher\n", - "detachers\n", - "detaches\n", - "detaching\n", - "detachment\n", - "detachments\n", - "detail\n", - "detailed\n", - "detailer\n", - "detailers\n", - "detailing\n", - "details\n", - "detain\n", - "detained\n", - "detainee\n", - "detainees\n", - "detainer\n", - "detainers\n", - "detaining\n", - "detains\n", - "detect\n", - "detectable\n", - "detected\n", - "detecter\n", - "detecters\n", - "detecting\n", - "detection\n", - "detections\n", - "detective\n", - "detectives\n", - "detector\n", - "detectors\n", - "detects\n", - "detent\n", - "detente\n", - "detentes\n", - "detention\n", - "detentions\n", - "detents\n", - "deter\n", - "deterge\n", - "deterged\n", - "detergent\n", - "detergents\n", - "deterger\n", - "detergers\n", - "deterges\n", - "deterging\n", - "deteriorate\n", - "deteriorated\n", - "deteriorates\n", - "deteriorating\n", - "deterioration\n", - "deteriorations\n", - "determinant\n", - "determinants\n", - "determination\n", - "determinations\n", - "determine\n", - "determined\n", - "determines\n", - "determining\n", - "deterred\n", - "deterrence\n", - "deterrences\n", - "deterrent\n", - "deterrents\n", - "deterrer\n", - "deterrers\n", - "deterring\n", - "deters\n", - "detest\n", - "detestable\n", - "detestation\n", - "detestations\n", - "detested\n", - "detester\n", - "detesters\n", - "detesting\n", - "detests\n", - "dethrone\n", - "dethroned\n", - "dethrones\n", - "dethroning\n", - "detick\n", - "deticked\n", - "deticker\n", - "detickers\n", - "deticking\n", - "deticks\n", - "detinue\n", - "detinues\n", - "detonate\n", - "detonated\n", - "detonates\n", - "detonating\n", - "detonation\n", - "detonations\n", - "detonator\n", - "detonators\n", - "detour\n", - "detoured\n", - "detouring\n", - "detours\n", - "detoxified\n", - "detoxifies\n", - "detoxify\n", - "detoxifying\n", - "detract\n", - "detracted\n", - "detracting\n", - "detraction\n", - "detractions\n", - "detractor\n", - "detractors\n", - "detracts\n", - "detrain\n", - "detrained\n", - "detraining\n", - "detrains\n", - "detriment\n", - "detrimental\n", - "detrimentally\n", - "detriments\n", - "detrital\n", - "detritus\n", - "detrude\n", - "detruded\n", - "detrudes\n", - "detruding\n", - "deuce\n", - "deuced\n", - "deucedly\n", - "deuces\n", - "deucing\n", - "deuteric\n", - "deuteron\n", - "deuterons\n", - "deutzia\n", - "deutzias\n", - "dev\n", - "deva\n", - "devaluation\n", - "devaluations\n", - "devalue\n", - "devalued\n", - "devalues\n", - "devaluing\n", - "devas\n", - "devastate\n", - "devastated\n", - "devastates\n", - "devastating\n", - "devastation\n", - "devastations\n", - "devein\n", - "deveined\n", - "deveining\n", - "deveins\n", - "devel\n", - "develed\n", - "develing\n", - "develop\n", - "develope\n", - "developed\n", - "developer\n", - "developers\n", - "developes\n", - "developing\n", - "development\n", - "developmental\n", - "developments\n", - "develops\n", - "devels\n", - "devest\n", - "devested\n", - "devesting\n", - "devests\n", - "deviance\n", - "deviances\n", - "deviancies\n", - "deviancy\n", - "deviant\n", - "deviants\n", - "deviate\n", - "deviated\n", - "deviates\n", - "deviating\n", - "deviation\n", - "deviations\n", - "deviator\n", - "deviators\n", - "device\n", - "devices\n", - "devil\n", - "deviled\n", - "deviling\n", - "devilish\n", - "devilkin\n", - "devilkins\n", - "devilled\n", - "devilling\n", - "devilries\n", - "devilry\n", - "devils\n", - "deviltries\n", - "deviltry\n", - "devious\n", - "devisal\n", - "devisals\n", - "devise\n", - "devised\n", - "devisee\n", - "devisees\n", - "deviser\n", - "devisers\n", - "devises\n", - "devising\n", - "devisor\n", - "devisors\n", - "devoice\n", - "devoiced\n", - "devoices\n", - "devoicing\n", - "devoid\n", - "devoir\n", - "devoirs\n", - "devolve\n", - "devolved\n", - "devolves\n", - "devolving\n", - "devon\n", - "devons\n", - "devote\n", - "devoted\n", - "devotee\n", - "devotees\n", - "devotes\n", - "devoting\n", - "devotion\n", - "devotional\n", - "devotions\n", - "devour\n", - "devoured\n", - "devourer\n", - "devourers\n", - "devouring\n", - "devours\n", - "devout\n", - "devoutly\n", - "devoutness\n", - "devoutnesses\n", - "devs\n", - "dew\n", - "dewan\n", - "dewans\n", - "dewater\n", - "dewatered\n", - "dewatering\n", - "dewaters\n", - "dewax\n", - "dewaxed\n", - "dewaxes\n", - "dewaxing\n", - "dewberries\n", - "dewberry\n", - "dewclaw\n", - "dewclaws\n", - "dewdrop\n", - "dewdrops\n", - "dewed\n", - "dewfall\n", - "dewfalls\n", - "dewier\n", - "dewiest\n", - "dewily\n", - "dewiness\n", - "dewinesses\n", - "dewing\n", - "dewlap\n", - "dewlaps\n", - "dewless\n", - "dewool\n", - "dewooled\n", - "dewooling\n", - "dewools\n", - "deworm\n", - "dewormed\n", - "deworming\n", - "deworms\n", - "dews\n", - "dewy\n", - "dex\n", - "dexes\n", - "dexies\n", - "dexter\n", - "dexterous\n", - "dexterously\n", - "dextral\n", - "dextran\n", - "dextrans\n", - "dextrin\n", - "dextrine\n", - "dextrines\n", - "dextrins\n", - "dextro\n", - "dextrose\n", - "dextroses\n", - "dextrous\n", - "dey\n", - "deys\n", - "dezinc\n", - "dezinced\n", - "dezincing\n", - "dezincked\n", - "dezincking\n", - "dezincs\n", - "dhak\n", - "dhaks\n", - "dharma\n", - "dharmas\n", - "dharmic\n", - "dharna\n", - "dharnas\n", - "dhole\n", - "dholes\n", - "dhoolies\n", - "dhooly\n", - "dhoora\n", - "dhooras\n", - "dhooti\n", - "dhootie\n", - "dhooties\n", - "dhootis\n", - "dhoti\n", - "dhotis\n", - "dhourra\n", - "dhourras\n", - "dhow\n", - "dhows\n", - "dhurna\n", - "dhurnas\n", - "dhuti\n", - "dhutis\n", - "diabase\n", - "diabases\n", - "diabasic\n", - "diabetes\n", - "diabetic\n", - "diabetics\n", - "diableries\n", - "diablery\n", - "diabolic\n", - "diabolical\n", - "diabolo\n", - "diabolos\n", - "diacetyl\n", - "diacetyls\n", - "diacid\n", - "diacidic\n", - "diacids\n", - "diaconal\n", - "diadem\n", - "diademed\n", - "diademing\n", - "diadems\n", - "diagnose\n", - "diagnosed\n", - "diagnoses\n", - "diagnosing\n", - "diagnosis\n", - "diagnostic\n", - "diagnostics\n", - "diagonal\n", - "diagonally\n", - "diagonals\n", - "diagram\n", - "diagramed\n", - "diagraming\n", - "diagrammatic\n", - "diagrammed\n", - "diagramming\n", - "diagrams\n", - "diagraph\n", - "diagraphs\n", - "dial\n", - "dialect\n", - "dialectic\n", - "dialects\n", - "dialed\n", - "dialer\n", - "dialers\n", - "dialing\n", - "dialings\n", - "dialist\n", - "dialists\n", - "diallage\n", - "diallages\n", - "dialled\n", - "diallel\n", - "dialler\n", - "diallers\n", - "dialling\n", - "diallings\n", - "diallist\n", - "diallists\n", - "dialog\n", - "dialoger\n", - "dialogers\n", - "dialogged\n", - "dialogging\n", - "dialogic\n", - "dialogs\n", - "dialogue\n", - "dialogued\n", - "dialogues\n", - "dialoguing\n", - "dials\n", - "dialyse\n", - "dialysed\n", - "dialyser\n", - "dialysers\n", - "dialyses\n", - "dialysing\n", - "dialysis\n", - "dialytic\n", - "dialyze\n", - "dialyzed\n", - "dialyzer\n", - "dialyzers\n", - "dialyzes\n", - "dialyzing\n", - "diameter\n", - "diameters\n", - "diametric\n", - "diametrical\n", - "diametrically\n", - "diamide\n", - "diamides\n", - "diamin\n", - "diamine\n", - "diamines\n", - "diamins\n", - "diamond\n", - "diamonded\n", - "diamonding\n", - "diamonds\n", - "dianthus\n", - "dianthuses\n", - "diapason\n", - "diapasons\n", - "diapause\n", - "diapaused\n", - "diapauses\n", - "diapausing\n", - "diaper\n", - "diapered\n", - "diapering\n", - "diapers\n", - "diaphone\n", - "diaphones\n", - "diaphonies\n", - "diaphony\n", - "diaphragm\n", - "diaphragmatic\n", - "diaphragms\n", - "diapir\n", - "diapiric\n", - "diapirs\n", - "diapsid\n", - "diarchic\n", - "diarchies\n", - "diarchy\n", - "diaries\n", - "diarist\n", - "diarists\n", - "diarrhea\n", - "diarrheas\n", - "diarrhoea\n", - "diarrhoeas\n", - "diary\n", - "diaspora\n", - "diasporas\n", - "diaspore\n", - "diaspores\n", - "diastase\n", - "diastases\n", - "diastema\n", - "diastemata\n", - "diaster\n", - "diasters\n", - "diastole\n", - "diastoles\n", - "diastral\n", - "diatom\n", - "diatomic\n", - "diatoms\n", - "diatonic\n", - "diatribe\n", - "diatribes\n", - "diazepam\n", - "diazepams\n", - "diazin\n", - "diazine\n", - "diazines\n", - "diazins\n", - "diazo\n", - "diazole\n", - "diazoles\n", - "dib\n", - "dibasic\n", - "dibbed\n", - "dibber\n", - "dibbers\n", - "dibbing\n", - "dibble\n", - "dibbled\n", - "dibbler\n", - "dibblers\n", - "dibbles\n", - "dibbling\n", - "dibbuk\n", - "dibbukim\n", - "dibbuks\n", - "dibs\n", - "dicast\n", - "dicastic\n", - "dicasts\n", - "dice\n", - "diced\n", - "dicentra\n", - "dicentras\n", - "dicer\n", - "dicers\n", - "dices\n", - "dicey\n", - "dichasia\n", - "dichotic\n", - "dichroic\n", - "dicier\n", - "diciest\n", - "dicing\n", - "dick\n", - "dickens\n", - "dickenses\n", - "dicker\n", - "dickered\n", - "dickering\n", - "dickers\n", - "dickey\n", - "dickeys\n", - "dickie\n", - "dickies\n", - "dicks\n", - "dicky\n", - "diclinies\n", - "dicliny\n", - "dicot\n", - "dicots\n", - "dicotyl\n", - "dicotyls\n", - "dicrotal\n", - "dicrotic\n", - "dicta\n", - "dictate\n", - "dictated\n", - "dictates\n", - "dictating\n", - "dictation\n", - "dictations\n", - "dictator\n", - "dictatorial\n", - "dictators\n", - "dictatorship\n", - "dictatorships\n", - "diction\n", - "dictionaries\n", - "dictionary\n", - "dictions\n", - "dictum\n", - "dictums\n", - "dicyclic\n", - "dicyclies\n", - "dicycly\n", - "did\n", - "didact\n", - "didactic\n", - "didacts\n", - "didactyl\n", - "didapper\n", - "didappers\n", - "diddle\n", - "diddled\n", - "diddler\n", - "diddlers\n", - "diddles\n", - "diddling\n", - "didies\n", - "dido\n", - "didoes\n", - "didos\n", - "didst\n", - "didy\n", - "didymium\n", - "didymiums\n", - "didymous\n", - "didynamies\n", - "didynamy\n", - "die\n", - "dieback\n", - "diebacks\n", - "diecious\n", - "died\n", - "diehard\n", - "diehards\n", - "dieing\n", - "diel\n", - "dieldrin\n", - "dieldrins\n", - "diemaker\n", - "diemakers\n", - "diene\n", - "dienes\n", - "diereses\n", - "dieresis\n", - "dieretic\n", - "dies\n", - "diesel\n", - "diesels\n", - "dieses\n", - "diesis\n", - "diester\n", - "diesters\n", - "diestock\n", - "diestocks\n", - "diestrum\n", - "diestrums\n", - "diestrus\n", - "diestruses\n", - "diet\n", - "dietaries\n", - "dietary\n", - "dieted\n", - "dieter\n", - "dieters\n", - "dietetic\n", - "dietetics\n", - "dietician\n", - "dieticians\n", - "dieting\n", - "diets\n", - "differ\n", - "differed\n", - "difference\n", - "differences\n", - "different\n", - "differential\n", - "differentials\n", - "differentiate\n", - "differentiated\n", - "differentiates\n", - "differentiating\n", - "differentiation\n", - "differently\n", - "differing\n", - "differs\n", - "difficult\n", - "difficulties\n", - "difficulty\n", - "diffidence\n", - "diffidences\n", - "diffident\n", - "diffract\n", - "diffracted\n", - "diffracting\n", - "diffracts\n", - "diffuse\n", - "diffused\n", - "diffuser\n", - "diffusers\n", - "diffuses\n", - "diffusing\n", - "diffusion\n", - "diffusions\n", - "diffusor\n", - "diffusors\n", - "dig\n", - "digamies\n", - "digamist\n", - "digamists\n", - "digamma\n", - "digammas\n", - "digamous\n", - "digamy\n", - "digest\n", - "digested\n", - "digester\n", - "digesters\n", - "digesting\n", - "digestion\n", - "digestions\n", - "digestive\n", - "digestor\n", - "digestors\n", - "digests\n", - "digged\n", - "digger\n", - "diggers\n", - "digging\n", - "diggings\n", - "dight\n", - "dighted\n", - "dighting\n", - "dights\n", - "digit\n", - "digital\n", - "digitalis\n", - "digitally\n", - "digitals\n", - "digitate\n", - "digitize\n", - "digitized\n", - "digitizes\n", - "digitizing\n", - "digits\n", - "diglot\n", - "diglots\n", - "dignified\n", - "dignifies\n", - "dignify\n", - "dignifying\n", - "dignitaries\n", - "dignitary\n", - "dignities\n", - "dignity\n", - "digoxin\n", - "digoxins\n", - "digraph\n", - "digraphs\n", - "digress\n", - "digressed\n", - "digresses\n", - "digressing\n", - "digression\n", - "digressions\n", - "digs\n", - "dihedral\n", - "dihedrals\n", - "dihedron\n", - "dihedrons\n", - "dihybrid\n", - "dihybrids\n", - "dihydric\n", - "dikdik\n", - "dikdiks\n", - "dike\n", - "diked\n", - "diker\n", - "dikers\n", - "dikes\n", - "diking\n", - "diktat\n", - "diktats\n", - "dilapidated\n", - "dilapidation\n", - "dilapidations\n", - "dilatant\n", - "dilatants\n", - "dilatate\n", - "dilatation\n", - "dilatations\n", - "dilate\n", - "dilated\n", - "dilater\n", - "dilaters\n", - "dilates\n", - "dilating\n", - "dilation\n", - "dilations\n", - "dilative\n", - "dilator\n", - "dilators\n", - "dilatory\n", - "dildo\n", - "dildoe\n", - "dildoes\n", - "dildos\n", - "dilemma\n", - "dilemmas\n", - "dilemmic\n", - "dilettante\n", - "dilettantes\n", - "dilettanti\n", - "diligence\n", - "diligences\n", - "diligent\n", - "diligently\n", - "dill\n", - "dillies\n", - "dills\n", - "dilly\n", - "dillydallied\n", - "dillydallies\n", - "dillydally\n", - "dillydallying\n", - "diluent\n", - "diluents\n", - "dilute\n", - "diluted\n", - "diluter\n", - "diluters\n", - "dilutes\n", - "diluting\n", - "dilution\n", - "dilutions\n", - "dilutive\n", - "dilutor\n", - "dilutors\n", - "diluvia\n", - "diluvial\n", - "diluvian\n", - "diluvion\n", - "diluvions\n", - "diluvium\n", - "diluviums\n", - "dim\n", - "dime\n", - "dimension\n", - "dimensional\n", - "dimensions\n", - "dimer\n", - "dimeric\n", - "dimerism\n", - "dimerisms\n", - "dimerize\n", - "dimerized\n", - "dimerizes\n", - "dimerizing\n", - "dimerous\n", - "dimers\n", - "dimes\n", - "dimeter\n", - "dimeters\n", - "dimethyl\n", - "dimethyls\n", - "dimetric\n", - "diminish\n", - "diminished\n", - "diminishes\n", - "diminishing\n", - "diminutive\n", - "dimities\n", - "dimity\n", - "dimly\n", - "dimmable\n", - "dimmed\n", - "dimmer\n", - "dimmers\n", - "dimmest\n", - "dimming\n", - "dimness\n", - "dimnesses\n", - "dimorph\n", - "dimorphs\n", - "dimout\n", - "dimouts\n", - "dimple\n", - "dimpled\n", - "dimples\n", - "dimplier\n", - "dimpliest\n", - "dimpling\n", - "dimply\n", - "dims\n", - "dimwit\n", - "dimwits\n", - "din\n", - "dinar\n", - "dinars\n", - "dindle\n", - "dindled\n", - "dindles\n", - "dindling\n", - "dine\n", - "dined\n", - "diner\n", - "dineric\n", - "dinero\n", - "dineros\n", - "diners\n", - "dines\n", - "dinette\n", - "dinettes\n", - "ding\n", - "dingbat\n", - "dingbats\n", - "dingdong\n", - "dingdonged\n", - "dingdonging\n", - "dingdongs\n", - "dinged\n", - "dingey\n", - "dingeys\n", - "dinghies\n", - "dinghy\n", - "dingier\n", - "dingies\n", - "dingiest\n", - "dingily\n", - "dinginess\n", - "dinginesses\n", - "dinging\n", - "dingle\n", - "dingles\n", - "dingo\n", - "dingoes\n", - "dings\n", - "dingus\n", - "dinguses\n", - "dingy\n", - "dining\n", - "dink\n", - "dinked\n", - "dinkey\n", - "dinkeys\n", - "dinkier\n", - "dinkies\n", - "dinkiest\n", - "dinking\n", - "dinkly\n", - "dinks\n", - "dinkum\n", - "dinky\n", - "dinned\n", - "dinner\n", - "dinners\n", - "dinning\n", - "dinosaur\n", - "dinosaurs\n", - "dins\n", - "dint\n", - "dinted\n", - "dinting\n", - "dints\n", - "diobol\n", - "diobolon\n", - "diobolons\n", - "diobols\n", - "diocesan\n", - "diocesans\n", - "diocese\n", - "dioceses\n", - "diode\n", - "diodes\n", - "dioecism\n", - "dioecisms\n", - "dioicous\n", - "diol\n", - "diolefin\n", - "diolefins\n", - "diols\n", - "diopside\n", - "diopsides\n", - "dioptase\n", - "dioptases\n", - "diopter\n", - "diopters\n", - "dioptral\n", - "dioptre\n", - "dioptres\n", - "dioptric\n", - "diorama\n", - "dioramas\n", - "dioramic\n", - "diorite\n", - "diorites\n", - "dioritic\n", - "dioxane\n", - "dioxanes\n", - "dioxid\n", - "dioxide\n", - "dioxides\n", - "dioxids\n", - "dip\n", - "diphase\n", - "diphasic\n", - "diphenyl\n", - "diphenyls\n", - "diphtheria\n", - "diphtherias\n", - "diphthong\n", - "diphthongs\n", - "diplegia\n", - "diplegias\n", - "diplex\n", - "diploe\n", - "diploes\n", - "diploic\n", - "diploid\n", - "diploidies\n", - "diploids\n", - "diploidy\n", - "diploma\n", - "diplomacies\n", - "diplomacy\n", - "diplomaed\n", - "diplomaing\n", - "diplomas\n", - "diplomat\n", - "diplomata\n", - "diplomatic\n", - "diplomats\n", - "diplont\n", - "diplonts\n", - "diplopia\n", - "diplopias\n", - "diplopic\n", - "diplopod\n", - "diplopods\n", - "diploses\n", - "diplosis\n", - "dipnoan\n", - "dipnoans\n", - "dipodic\n", - "dipodies\n", - "dipody\n", - "dipolar\n", - "dipole\n", - "dipoles\n", - "dippable\n", - "dipped\n", - "dipper\n", - "dippers\n", - "dippier\n", - "dippiest\n", - "dipping\n", - "dippy\n", - "dips\n", - "dipsades\n", - "dipsas\n", - "dipstick\n", - "dipsticks\n", - "dipt\n", - "diptera\n", - "dipteral\n", - "dipteran\n", - "dipterans\n", - "dipteron\n", - "dipththeria\n", - "dipththerias\n", - "diptyca\n", - "diptycas\n", - "diptych\n", - "diptychs\n", - "diquat\n", - "diquats\n", - "dirdum\n", - "dirdums\n", - "dire\n", - "direct\n", - "directed\n", - "directer\n", - "directest\n", - "directing\n", - "direction\n", - "directional\n", - "directions\n", - "directive\n", - "directives\n", - "directly\n", - "directness\n", - "director\n", - "directories\n", - "directors\n", - "directory\n", - "directs\n", - "direful\n", - "direly\n", - "direness\n", - "direnesses\n", - "direr\n", - "direst\n", - "dirge\n", - "dirgeful\n", - "dirges\n", - "dirham\n", - "dirhams\n", - "dirigible\n", - "dirigibles\n", - "diriment\n", - "dirk\n", - "dirked\n", - "dirking\n", - "dirks\n", - "dirl\n", - "dirled\n", - "dirling\n", - "dirls\n", - "dirndl\n", - "dirndls\n", - "dirt\n", - "dirtied\n", - "dirtier\n", - "dirties\n", - "dirtiest\n", - "dirtily\n", - "dirtiness\n", - "dirtinesses\n", - "dirts\n", - "dirty\n", - "dirtying\n", - "disabilities\n", - "disability\n", - "disable\n", - "disabled\n", - "disables\n", - "disabling\n", - "disabuse\n", - "disabused\n", - "disabuses\n", - "disabusing\n", - "disadvantage\n", - "disadvantageous\n", - "disadvantages\n", - "disaffect\n", - "disaffected\n", - "disaffecting\n", - "disaffection\n", - "disaffections\n", - "disaffects\n", - "disagree\n", - "disagreeable\n", - "disagreeables\n", - "disagreed\n", - "disagreeing\n", - "disagreement\n", - "disagreements\n", - "disagrees\n", - "disallow\n", - "disallowed\n", - "disallowing\n", - "disallows\n", - "disannul\n", - "disannulled\n", - "disannulling\n", - "disannuls\n", - "disappear\n", - "disappearance\n", - "disappearances\n", - "disappeared\n", - "disappearing\n", - "disappears\n", - "disappoint\n", - "disappointed\n", - "disappointing\n", - "disappointment\n", - "disappointments\n", - "disappoints\n", - "disapproval\n", - "disapprovals\n", - "disapprove\n", - "disapproved\n", - "disapproves\n", - "disapproving\n", - "disarm\n", - "disarmament\n", - "disarmaments\n", - "disarmed\n", - "disarmer\n", - "disarmers\n", - "disarming\n", - "disarms\n", - "disarrange\n", - "disarranged\n", - "disarrangement\n", - "disarrangements\n", - "disarranges\n", - "disarranging\n", - "disarray\n", - "disarrayed\n", - "disarraying\n", - "disarrays\n", - "disaster\n", - "disasters\n", - "disastrous\n", - "disavow\n", - "disavowal\n", - "disavowals\n", - "disavowed\n", - "disavowing\n", - "disavows\n", - "disband\n", - "disbanded\n", - "disbanding\n", - "disbands\n", - "disbar\n", - "disbarment\n", - "disbarments\n", - "disbarred\n", - "disbarring\n", - "disbars\n", - "disbelief\n", - "disbeliefs\n", - "disbelieve\n", - "disbelieved\n", - "disbelieves\n", - "disbelieving\n", - "disbosom\n", - "disbosomed\n", - "disbosoming\n", - "disbosoms\n", - "disbound\n", - "disbowel\n", - "disboweled\n", - "disboweling\n", - "disbowelled\n", - "disbowelling\n", - "disbowels\n", - "disbud\n", - "disbudded\n", - "disbudding\n", - "disbuds\n", - "disburse\n", - "disbursed\n", - "disbursement\n", - "disbursements\n", - "disburses\n", - "disbursing\n", - "disc\n", - "discant\n", - "discanted\n", - "discanting\n", - "discants\n", - "discard\n", - "discarded\n", - "discarding\n", - "discards\n", - "discase\n", - "discased\n", - "discases\n", - "discasing\n", - "disced\n", - "discept\n", - "discepted\n", - "discepting\n", - "discepts\n", - "discern\n", - "discerned\n", - "discernible\n", - "discerning\n", - "discernment\n", - "discernments\n", - "discerns\n", - "discharge\n", - "discharged\n", - "discharges\n", - "discharging\n", - "disci\n", - "discing\n", - "disciple\n", - "discipled\n", - "disciples\n", - "disciplinarian\n", - "disciplinarians\n", - "disciplinary\n", - "discipline\n", - "disciplined\n", - "disciplines\n", - "discipling\n", - "disciplining\n", - "disclaim\n", - "disclaimed\n", - "disclaiming\n", - "disclaims\n", - "disclike\n", - "disclose\n", - "disclosed\n", - "discloses\n", - "disclosing\n", - "disclosure\n", - "disclosures\n", - "disco\n", - "discoid\n", - "discoids\n", - "discolor\n", - "discoloration\n", - "discolorations\n", - "discolored\n", - "discoloring\n", - "discolors\n", - "discomfit\n", - "discomfited\n", - "discomfiting\n", - "discomfits\n", - "discomfiture\n", - "discomfitures\n", - "discomfort\n", - "discomforts\n", - "disconcert\n", - "disconcerted\n", - "disconcerting\n", - "disconcerts\n", - "disconnect\n", - "disconnected\n", - "disconnecting\n", - "disconnects\n", - "disconsolate\n", - "discontent\n", - "discontented\n", - "discontents\n", - "discontinuance\n", - "discontinuances\n", - "discontinuation\n", - "discontinue\n", - "discontinued\n", - "discontinues\n", - "discontinuing\n", - "discord\n", - "discordant\n", - "discorded\n", - "discording\n", - "discords\n", - "discos\n", - "discount\n", - "discounted\n", - "discounting\n", - "discounts\n", - "discourage\n", - "discouraged\n", - "discouragement\n", - "discouragements\n", - "discourages\n", - "discouraging\n", - "discourteous\n", - "discourteously\n", - "discourtesies\n", - "discourtesy\n", - "discover\n", - "discovered\n", - "discoverer\n", - "discoverers\n", - "discoveries\n", - "discovering\n", - "discovers\n", - "discovery\n", - "discredit\n", - "discreditable\n", - "discredited\n", - "discrediting\n", - "discredits\n", - "discreet\n", - "discreeter\n", - "discreetest\n", - "discreetly\n", - "discrepancies\n", - "discrepancy\n", - "discrete\n", - "discretion\n", - "discretionary\n", - "discretions\n", - "discriminate\n", - "discriminated\n", - "discriminates\n", - "discriminating\n", - "discrimination\n", - "discriminations\n", - "discriminatory\n", - "discrown\n", - "discrowned\n", - "discrowning\n", - "discrowns\n", - "discs\n", - "discursive\n", - "discursiveness\n", - "discursivenesses\n", - "discus\n", - "discuses\n", - "discuss\n", - "discussed\n", - "discusses\n", - "discussing\n", - "discussion\n", - "discussions\n", - "disdain\n", - "disdained\n", - "disdainful\n", - "disdainfully\n", - "disdaining\n", - "disdains\n", - "disease\n", - "diseased\n", - "diseases\n", - "diseasing\n", - "disembark\n", - "disembarkation\n", - "disembarkations\n", - "disembarked\n", - "disembarking\n", - "disembarks\n", - "disembodied\n", - "disenchant\n", - "disenchanted\n", - "disenchanting\n", - "disenchantment\n", - "disenchantments\n", - "disenchants\n", - "disendow\n", - "disendowed\n", - "disendowing\n", - "disendows\n", - "disentangle\n", - "disentangled\n", - "disentangles\n", - "disentangling\n", - "diseuse\n", - "diseuses\n", - "disfavor\n", - "disfavored\n", - "disfavoring\n", - "disfavors\n", - "disfigure\n", - "disfigured\n", - "disfigurement\n", - "disfigurements\n", - "disfigures\n", - "disfiguring\n", - "disfranchise\n", - "disfranchised\n", - "disfranchisement\n", - "disfranchisements\n", - "disfranchises\n", - "disfranchising\n", - "disfrock\n", - "disfrocked\n", - "disfrocking\n", - "disfrocks\n", - "disgorge\n", - "disgorged\n", - "disgorges\n", - "disgorging\n", - "disgrace\n", - "disgraced\n", - "disgraceful\n", - "disgracefully\n", - "disgraces\n", - "disgracing\n", - "disguise\n", - "disguised\n", - "disguises\n", - "disguising\n", - "disgust\n", - "disgusted\n", - "disgustedly\n", - "disgusting\n", - "disgustingly\n", - "disgusts\n", - "dish\n", - "disharmonies\n", - "disharmonious\n", - "disharmony\n", - "dishcloth\n", - "dishcloths\n", - "dishearten\n", - "disheartened\n", - "disheartening\n", - "disheartens\n", - "dished\n", - "dishelm\n", - "dishelmed\n", - "dishelming\n", - "dishelms\n", - "disherit\n", - "disherited\n", - "disheriting\n", - "disherits\n", - "dishes\n", - "dishevel\n", - "disheveled\n", - "disheveling\n", - "dishevelled\n", - "dishevelling\n", - "dishevels\n", - "dishful\n", - "dishfuls\n", - "dishier\n", - "dishiest\n", - "dishing\n", - "dishlike\n", - "dishonest\n", - "dishonesties\n", - "dishonestly\n", - "dishonesty\n", - "dishonor\n", - "dishonorable\n", - "dishonorably\n", - "dishonored\n", - "dishonoring\n", - "dishonors\n", - "dishpan\n", - "dishpans\n", - "dishrag\n", - "dishrags\n", - "dishware\n", - "dishwares\n", - "dishwasher\n", - "dishwashers\n", - "dishwater\n", - "dishwaters\n", - "dishy\n", - "disillusion\n", - "disillusioned\n", - "disillusioning\n", - "disillusionment\n", - "disillusionments\n", - "disillusions\n", - "disinclination\n", - "disinclinations\n", - "disincline\n", - "disinclined\n", - "disinclines\n", - "disinclining\n", - "disinfect\n", - "disinfectant\n", - "disinfectants\n", - "disinfected\n", - "disinfecting\n", - "disinfection\n", - "disinfections\n", - "disinfects\n", - "disinherit\n", - "disinherited\n", - "disinheriting\n", - "disinherits\n", - "disintegrate\n", - "disintegrated\n", - "disintegrates\n", - "disintegrating\n", - "disintegration\n", - "disintegrations\n", - "disinter\n", - "disinterested\n", - "disinterestedness\n", - "disinterestednesses\n", - "disinterred\n", - "disinterring\n", - "disinters\n", - "disject\n", - "disjected\n", - "disjecting\n", - "disjects\n", - "disjoin\n", - "disjoined\n", - "disjoining\n", - "disjoins\n", - "disjoint\n", - "disjointed\n", - "disjointing\n", - "disjoints\n", - "disjunct\n", - "disjuncts\n", - "disk\n", - "disked\n", - "disking\n", - "disklike\n", - "disks\n", - "dislike\n", - "disliked\n", - "disliker\n", - "dislikers\n", - "dislikes\n", - "disliking\n", - "dislimn\n", - "dislimned\n", - "dislimning\n", - "dislimns\n", - "dislocate\n", - "dislocated\n", - "dislocates\n", - "dislocating\n", - "dislocation\n", - "dislocations\n", - "dislodge\n", - "dislodged\n", - "dislodges\n", - "dislodging\n", - "disloyal\n", - "disloyalties\n", - "disloyalty\n", - "dismal\n", - "dismaler\n", - "dismalest\n", - "dismally\n", - "dismals\n", - "dismantle\n", - "dismantled\n", - "dismantles\n", - "dismantling\n", - "dismast\n", - "dismasted\n", - "dismasting\n", - "dismasts\n", - "dismay\n", - "dismayed\n", - "dismaying\n", - "dismays\n", - "disme\n", - "dismember\n", - "dismembered\n", - "dismembering\n", - "dismemberment\n", - "dismemberments\n", - "dismembers\n", - "dismes\n", - "dismiss\n", - "dismissal\n", - "dismissals\n", - "dismissed\n", - "dismisses\n", - "dismissing\n", - "dismount\n", - "dismounted\n", - "dismounting\n", - "dismounts\n", - "disobedience\n", - "disobediences\n", - "disobedient\n", - "disobey\n", - "disobeyed\n", - "disobeying\n", - "disobeys\n", - "disomic\n", - "disorder\n", - "disordered\n", - "disordering\n", - "disorderliness\n", - "disorderlinesses\n", - "disorderly\n", - "disorders\n", - "disorganization\n", - "disorganizations\n", - "disorganize\n", - "disorganized\n", - "disorganizes\n", - "disorganizing\n", - "disown\n", - "disowned\n", - "disowning\n", - "disowns\n", - "disparage\n", - "disparaged\n", - "disparagement\n", - "disparagements\n", - "disparages\n", - "disparaging\n", - "disparate\n", - "disparities\n", - "disparity\n", - "dispart\n", - "disparted\n", - "disparting\n", - "disparts\n", - "dispassion\n", - "dispassionate\n", - "dispassions\n", - "dispatch\n", - "dispatched\n", - "dispatcher\n", - "dispatchers\n", - "dispatches\n", - "dispatching\n", - "dispel\n", - "dispelled\n", - "dispelling\n", - "dispels\n", - "dispend\n", - "dispended\n", - "dispending\n", - "dispends\n", - "dispensable\n", - "dispensaries\n", - "dispensary\n", - "dispensation\n", - "dispensations\n", - "dispense\n", - "dispensed\n", - "dispenser\n", - "dispensers\n", - "dispenses\n", - "dispensing\n", - "dispersal\n", - "dispersals\n", - "disperse\n", - "dispersed\n", - "disperses\n", - "dispersing\n", - "dispersion\n", - "dispersions\n", - "dispirit\n", - "dispirited\n", - "dispiriting\n", - "dispirits\n", - "displace\n", - "displaced\n", - "displacement\n", - "displacements\n", - "displaces\n", - "displacing\n", - "displant\n", - "displanted\n", - "displanting\n", - "displants\n", - "display\n", - "displayed\n", - "displaying\n", - "displays\n", - "displease\n", - "displeased\n", - "displeases\n", - "displeasing\n", - "displeasure\n", - "displeasures\n", - "displode\n", - "disploded\n", - "displodes\n", - "disploding\n", - "displume\n", - "displumed\n", - "displumes\n", - "displuming\n", - "disport\n", - "disported\n", - "disporting\n", - "disports\n", - "disposable\n", - "disposal\n", - "disposals\n", - "dispose\n", - "disposed\n", - "disposer\n", - "disposers\n", - "disposes\n", - "disposing\n", - "disposition\n", - "dispositions\n", - "dispossess\n", - "dispossessed\n", - "dispossesses\n", - "dispossessing\n", - "dispossession\n", - "dispossessions\n", - "dispread\n", - "dispreading\n", - "dispreads\n", - "disprize\n", - "disprized\n", - "disprizes\n", - "disprizing\n", - "disproof\n", - "disproofs\n", - "disproportion\n", - "disproportionate\n", - "disproportions\n", - "disprove\n", - "disproved\n", - "disproves\n", - "disproving\n", - "disputable\n", - "disputably\n", - "disputation\n", - "disputations\n", - "dispute\n", - "disputed\n", - "disputer\n", - "disputers\n", - "disputes\n", - "disputing\n", - "disqualification\n", - "disqualifications\n", - "disqualified\n", - "disqualifies\n", - "disqualify\n", - "disqualifying\n", - "disquiet\n", - "disquieted\n", - "disquieting\n", - "disquiets\n", - "disrate\n", - "disrated\n", - "disrates\n", - "disrating\n", - "disregard\n", - "disregarded\n", - "disregarding\n", - "disregards\n", - "disrepair\n", - "disrepairs\n", - "disreputable\n", - "disrepute\n", - "disreputes\n", - "disrespect\n", - "disrespectful\n", - "disrespects\n", - "disrobe\n", - "disrobed\n", - "disrober\n", - "disrobers\n", - "disrobes\n", - "disrobing\n", - "disroot\n", - "disrooted\n", - "disrooting\n", - "disroots\n", - "disrupt\n", - "disrupted\n", - "disrupting\n", - "disruption\n", - "disruptions\n", - "disruptive\n", - "disrupts\n", - "dissatisfaction\n", - "dissatisfactions\n", - "dissatisfies\n", - "dissatisfy\n", - "dissave\n", - "dissaved\n", - "dissaves\n", - "dissaving\n", - "disseat\n", - "disseated\n", - "disseating\n", - "disseats\n", - "dissect\n", - "dissected\n", - "dissecting\n", - "dissection\n", - "dissections\n", - "dissects\n", - "disseise\n", - "disseised\n", - "disseises\n", - "disseising\n", - "disseize\n", - "disseized\n", - "disseizes\n", - "disseizing\n", - "dissemble\n", - "dissembled\n", - "dissembler\n", - "dissemblers\n", - "dissembles\n", - "dissembling\n", - "disseminate\n", - "disseminated\n", - "disseminates\n", - "disseminating\n", - "dissemination\n", - "dissent\n", - "dissented\n", - "dissenter\n", - "dissenters\n", - "dissentient\n", - "dissentients\n", - "dissenting\n", - "dissention\n", - "dissentions\n", - "dissents\n", - "dissert\n", - "dissertation\n", - "dissertations\n", - "disserted\n", - "disserting\n", - "disserts\n", - "disserve\n", - "disserved\n", - "disserves\n", - "disservice\n", - "disserving\n", - "dissever\n", - "dissevered\n", - "dissevering\n", - "dissevers\n", - "dissidence\n", - "dissidences\n", - "dissident\n", - "dissidents\n", - "dissimilar\n", - "dissimilarities\n", - "dissimilarity\n", - "dissipate\n", - "dissipated\n", - "dissipates\n", - "dissipating\n", - "dissipation\n", - "dissipations\n", - "dissociate\n", - "dissociated\n", - "dissociates\n", - "dissociating\n", - "dissociation\n", - "dissociations\n", - "dissolute\n", - "dissolution\n", - "dissolutions\n", - "dissolve\n", - "dissolved\n", - "dissolves\n", - "dissolving\n", - "dissonance\n", - "dissonances\n", - "dissonant\n", - "dissuade\n", - "dissuaded\n", - "dissuades\n", - "dissuading\n", - "dissuasion\n", - "dissuasions\n", - "distaff\n", - "distaffs\n", - "distain\n", - "distained\n", - "distaining\n", - "distains\n", - "distal\n", - "distally\n", - "distance\n", - "distanced\n", - "distances\n", - "distancing\n", - "distant\n", - "distaste\n", - "distasted\n", - "distasteful\n", - "distastes\n", - "distasting\n", - "distaves\n", - "distemper\n", - "distempers\n", - "distend\n", - "distended\n", - "distending\n", - "distends\n", - "distension\n", - "distensions\n", - "distent\n", - "distention\n", - "distentions\n", - "distich\n", - "distichs\n", - "distil\n", - "distill\n", - "distillate\n", - "distillates\n", - "distillation\n", - "distillations\n", - "distilled\n", - "distiller\n", - "distilleries\n", - "distillers\n", - "distillery\n", - "distilling\n", - "distills\n", - "distils\n", - "distinct\n", - "distincter\n", - "distinctest\n", - "distinction\n", - "distinctions\n", - "distinctive\n", - "distinctively\n", - "distinctiveness\n", - "distinctivenesses\n", - "distinctly\n", - "distinctness\n", - "distinctnesses\n", - "distinguish\n", - "distinguishable\n", - "distinguished\n", - "distinguishes\n", - "distinguishing\n", - "distome\n", - "distomes\n", - "distort\n", - "distorted\n", - "distorting\n", - "distortion\n", - "distortions\n", - "distorts\n", - "distract\n", - "distracted\n", - "distracting\n", - "distraction\n", - "distractions\n", - "distracts\n", - "distrain\n", - "distrained\n", - "distraining\n", - "distrains\n", - "distrait\n", - "distraught\n", - "distress\n", - "distressed\n", - "distresses\n", - "distressful\n", - "distressing\n", - "distribute\n", - "distributed\n", - "distributes\n", - "distributing\n", - "distribution\n", - "distributions\n", - "distributive\n", - "distributor\n", - "distributors\n", - "district\n", - "districted\n", - "districting\n", - "districts\n", - "distrust\n", - "distrusted\n", - "distrustful\n", - "distrusting\n", - "distrusts\n", - "disturb\n", - "disturbance\n", - "disturbances\n", - "disturbed\n", - "disturber\n", - "disturbers\n", - "disturbing\n", - "disturbs\n", - "disulfid\n", - "disulfids\n", - "disunion\n", - "disunions\n", - "disunite\n", - "disunited\n", - "disunites\n", - "disunities\n", - "disuniting\n", - "disunity\n", - "disuse\n", - "disused\n", - "disuses\n", - "disusing\n", - "disvalue\n", - "disvalued\n", - "disvalues\n", - "disvaluing\n", - "disyoke\n", - "disyoked\n", - "disyokes\n", - "disyoking\n", - "dit\n", - "dita\n", - "ditas\n", - "ditch\n", - "ditched\n", - "ditcher\n", - "ditchers\n", - "ditches\n", - "ditching\n", - "dite\n", - "dites\n", - "ditheism\n", - "ditheisms\n", - "ditheist\n", - "ditheists\n", - "dither\n", - "dithered\n", - "dithering\n", - "dithers\n", - "dithery\n", - "dithiol\n", - "dits\n", - "dittanies\n", - "dittany\n", - "ditties\n", - "ditto\n", - "dittoed\n", - "dittoing\n", - "dittos\n", - "ditty\n", - "diureses\n", - "diuresis\n", - "diuretic\n", - "diuretics\n", - "diurnal\n", - "diurnals\n", - "diuron\n", - "diurons\n", - "diva\n", - "divagate\n", - "divagated\n", - "divagates\n", - "divagating\n", - "divalent\n", - "divan\n", - "divans\n", - "divas\n", - "dive\n", - "dived\n", - "diver\n", - "diverge\n", - "diverged\n", - "divergence\n", - "divergences\n", - "divergent\n", - "diverges\n", - "diverging\n", - "divers\n", - "diverse\n", - "diversification\n", - "diversifications\n", - "diversify\n", - "diversion\n", - "diversions\n", - "diversities\n", - "diversity\n", - "divert\n", - "diverted\n", - "diverter\n", - "diverters\n", - "diverting\n", - "diverts\n", - "dives\n", - "divest\n", - "divested\n", - "divesting\n", - "divests\n", - "divide\n", - "divided\n", - "dividend\n", - "dividends\n", - "divider\n", - "dividers\n", - "divides\n", - "dividing\n", - "dividual\n", - "divination\n", - "divinations\n", - "divine\n", - "divined\n", - "divinely\n", - "diviner\n", - "diviners\n", - "divines\n", - "divinest\n", - "diving\n", - "divining\n", - "divinise\n", - "divinised\n", - "divinises\n", - "divinising\n", - "divinities\n", - "divinity\n", - "divinize\n", - "divinized\n", - "divinizes\n", - "divinizing\n", - "divisibilities\n", - "divisibility\n", - "divisible\n", - "division\n", - "divisional\n", - "divisions\n", - "divisive\n", - "divisor\n", - "divisors\n", - "divorce\n", - "divorced\n", - "divorcee\n", - "divorcees\n", - "divorcer\n", - "divorcers\n", - "divorces\n", - "divorcing\n", - "divot\n", - "divots\n", - "divulge\n", - "divulged\n", - "divulger\n", - "divulgers\n", - "divulges\n", - "divulging\n", - "divvied\n", - "divvies\n", - "divvy\n", - "divvying\n", - "diwan\n", - "diwans\n", - "dixit\n", - "dixits\n", - "dizen\n", - "dizened\n", - "dizening\n", - "dizens\n", - "dizygous\n", - "dizzied\n", - "dizzier\n", - "dizzies\n", - "dizziest\n", - "dizzily\n", - "dizziness\n", - "dizzy\n", - "dizzying\n", - "djebel\n", - "djebels\n", - "djellaba\n", - "djellabas\n", - "djin\n", - "djinn\n", - "djinni\n", - "djinns\n", - "djinny\n", - "djins\n", - "do\n", - "doable\n", - "doat\n", - "doated\n", - "doating\n", - "doats\n", - "dobber\n", - "dobbers\n", - "dobbies\n", - "dobbin\n", - "dobbins\n", - "dobby\n", - "dobie\n", - "dobies\n", - "dobla\n", - "doblas\n", - "doblon\n", - "doblones\n", - "doblons\n", - "dobra\n", - "dobras\n", - "dobson\n", - "dobsons\n", - "doby\n", - "doc\n", - "docent\n", - "docents\n", - "docetic\n", - "docile\n", - "docilely\n", - "docilities\n", - "docility\n", - "dock\n", - "dockage\n", - "dockages\n", - "docked\n", - "docker\n", - "dockers\n", - "docket\n", - "docketed\n", - "docketing\n", - "dockets\n", - "dockhand\n", - "dockhands\n", - "docking\n", - "dockland\n", - "docklands\n", - "docks\n", - "dockside\n", - "docksides\n", - "dockworker\n", - "dockworkers\n", - "dockyard\n", - "dockyards\n", - "docs\n", - "doctor\n", - "doctoral\n", - "doctored\n", - "doctoring\n", - "doctors\n", - "doctrinal\n", - "doctrine\n", - "doctrines\n", - "document\n", - "documentaries\n", - "documentary\n", - "documentation\n", - "documentations\n", - "documented\n", - "documenter\n", - "documenters\n", - "documenting\n", - "documents\n", - "dodder\n", - "doddered\n", - "dodderer\n", - "dodderers\n", - "doddering\n", - "dodders\n", - "doddery\n", - "dodge\n", - "dodged\n", - "dodger\n", - "dodgeries\n", - "dodgers\n", - "dodgery\n", - "dodges\n", - "dodgier\n", - "dodgiest\n", - "dodging\n", - "dodgy\n", - "dodo\n", - "dodoes\n", - "dodoism\n", - "dodoisms\n", - "dodos\n", - "doe\n", - "doer\n", - "doers\n", - "does\n", - "doeskin\n", - "doeskins\n", - "doest\n", - "doeth\n", - "doff\n", - "doffed\n", - "doffer\n", - "doffers\n", - "doffing\n", - "doffs\n", - "dog\n", - "dogbane\n", - "dogbanes\n", - "dogberries\n", - "dogberry\n", - "dogcart\n", - "dogcarts\n", - "dogcatcher\n", - "dogcatchers\n", - "dogdom\n", - "dogdoms\n", - "doge\n", - "dogedom\n", - "dogedoms\n", - "doges\n", - "dogeship\n", - "dogeships\n", - "dogey\n", - "dogeys\n", - "dogface\n", - "dogfaces\n", - "dogfight\n", - "dogfighting\n", - "dogfights\n", - "dogfish\n", - "dogfishes\n", - "dogfought\n", - "dogged\n", - "doggedly\n", - "dogger\n", - "doggerel\n", - "doggerels\n", - "doggeries\n", - "doggers\n", - "doggery\n", - "doggie\n", - "doggier\n", - "doggies\n", - "doggiest\n", - "dogging\n", - "doggish\n", - "doggo\n", - "doggone\n", - "doggoned\n", - "doggoneder\n", - "doggonedest\n", - "doggoner\n", - "doggones\n", - "doggonest\n", - "doggoning\n", - "doggrel\n", - "doggrels\n", - "doggy\n", - "doghouse\n", - "doghouses\n", - "dogie\n", - "dogies\n", - "dogleg\n", - "doglegged\n", - "doglegging\n", - "doglegs\n", - "doglike\n", - "dogma\n", - "dogmas\n", - "dogmata\n", - "dogmatic\n", - "dogmatism\n", - "dogmatisms\n", - "dognap\n", - "dognaped\n", - "dognaper\n", - "dognapers\n", - "dognaping\n", - "dognapped\n", - "dognapping\n", - "dognaps\n", - "dogs\n", - "dogsbodies\n", - "dogsbody\n", - "dogsled\n", - "dogsleds\n", - "dogteeth\n", - "dogtooth\n", - "dogtrot\n", - "dogtrots\n", - "dogtrotted\n", - "dogtrotting\n", - "dogvane\n", - "dogvanes\n", - "dogwatch\n", - "dogwatches\n", - "dogwood\n", - "dogwoods\n", - "dogy\n", - "doiled\n", - "doilies\n", - "doily\n", - "doing\n", - "doings\n", - "doit\n", - "doited\n", - "doits\n", - "dojo\n", - "dojos\n", - "dol\n", - "dolce\n", - "dolci\n", - "doldrums\n", - "dole\n", - "doled\n", - "doleful\n", - "dolefuller\n", - "dolefullest\n", - "dolefully\n", - "dolerite\n", - "dolerites\n", - "doles\n", - "dolesome\n", - "doling\n", - "doll\n", - "dollar\n", - "dollars\n", - "dolled\n", - "dollied\n", - "dollies\n", - "dolling\n", - "dollish\n", - "dollop\n", - "dollops\n", - "dolls\n", - "dolly\n", - "dollying\n", - "dolman\n", - "dolmans\n", - "dolmen\n", - "dolmens\n", - "dolomite\n", - "dolomites\n", - "dolor\n", - "doloroso\n", - "dolorous\n", - "dolors\n", - "dolour\n", - "dolours\n", - "dolphin\n", - "dolphins\n", - "dols\n", - "dolt\n", - "doltish\n", - "dolts\n", - "dom\n", - "domain\n", - "domains\n", - "domal\n", - "dome\n", - "domed\n", - "domelike\n", - "domes\n", - "domesday\n", - "domesdays\n", - "domestic\n", - "domestically\n", - "domesticate\n", - "domesticated\n", - "domesticates\n", - "domesticating\n", - "domestication\n", - "domestications\n", - "domestics\n", - "domic\n", - "domical\n", - "domicil\n", - "domicile\n", - "domiciled\n", - "domiciles\n", - "domiciling\n", - "domicils\n", - "dominance\n", - "dominances\n", - "dominant\n", - "dominants\n", - "dominate\n", - "dominated\n", - "dominates\n", - "dominating\n", - "domination\n", - "dominations\n", - "domine\n", - "domineer\n", - "domineered\n", - "domineering\n", - "domineers\n", - "domines\n", - "doming\n", - "dominick\n", - "dominicks\n", - "dominie\n", - "dominies\n", - "dominion\n", - "dominions\n", - "dominium\n", - "dominiums\n", - "domino\n", - "dominoes\n", - "dominos\n", - "doms\n", - "don\n", - "dona\n", - "donas\n", - "donate\n", - "donated\n", - "donates\n", - "donating\n", - "donation\n", - "donations\n", - "donative\n", - "donatives\n", - "donator\n", - "donators\n", - "done\n", - "donee\n", - "donees\n", - "doneness\n", - "donenesses\n", - "dong\n", - "dongola\n", - "dongolas\n", - "dongs\n", - "donjon\n", - "donjons\n", - "donkey\n", - "donkeys\n", - "donna\n", - "donnas\n", - "donne\n", - "donned\n", - "donnee\n", - "donnees\n", - "donnerd\n", - "donnered\n", - "donnert\n", - "donning\n", - "donnish\n", - "donor\n", - "donors\n", - "dons\n", - "donsie\n", - "donsy\n", - "donut\n", - "donuts\n", - "donzel\n", - "donzels\n", - "doodad\n", - "doodads\n", - "doodle\n", - "doodled\n", - "doodler\n", - "doodlers\n", - "doodles\n", - "doodling\n", - "doolee\n", - "doolees\n", - "doolie\n", - "doolies\n", - "dooly\n", - "doom\n", - "doomed\n", - "doomful\n", - "dooming\n", - "dooms\n", - "doomsday\n", - "doomsdays\n", - "doomster\n", - "doomsters\n", - "door\n", - "doorbell\n", - "doorbells\n", - "doorjamb\n", - "doorjambs\n", - "doorknob\n", - "doorknobs\n", - "doorless\n", - "doorman\n", - "doormat\n", - "doormats\n", - "doormen\n", - "doornail\n", - "doornails\n", - "doorpost\n", - "doorposts\n", - "doors\n", - "doorsill\n", - "doorsills\n", - "doorstep\n", - "doorsteps\n", - "doorstop\n", - "doorstops\n", - "doorway\n", - "doorways\n", - "dooryard\n", - "dooryards\n", - "doozer\n", - "doozers\n", - "doozies\n", - "doozy\n", - "dopa\n", - "dopamine\n", - "dopamines\n", - "dopant\n", - "dopants\n", - "dopas\n", - "dope\n", - "doped\n", - "doper\n", - "dopers\n", - "dopes\n", - "dopester\n", - "dopesters\n", - "dopey\n", - "dopier\n", - "dopiest\n", - "dopiness\n", - "dopinesses\n", - "doping\n", - "dopy\n", - "dor\n", - "dorado\n", - "dorados\n", - "dorbug\n", - "dorbugs\n", - "dorhawk\n", - "dorhawks\n", - "dories\n", - "dorm\n", - "dormancies\n", - "dormancy\n", - "dormant\n", - "dormer\n", - "dormers\n", - "dormice\n", - "dormie\n", - "dormient\n", - "dormin\n", - "dormins\n", - "dormitories\n", - "dormitory\n", - "dormouse\n", - "dorms\n", - "dormy\n", - "dorneck\n", - "dornecks\n", - "dornick\n", - "dornicks\n", - "dornock\n", - "dornocks\n", - "dorp\n", - "dorper\n", - "dorpers\n", - "dorps\n", - "dorr\n", - "dorrs\n", - "dors\n", - "dorsa\n", - "dorsad\n", - "dorsal\n", - "dorsally\n", - "dorsals\n", - "dorser\n", - "dorsers\n", - "dorsum\n", - "dorty\n", - "dory\n", - "dos\n", - "dosage\n", - "dosages\n", - "dose\n", - "dosed\n", - "doser\n", - "dosers\n", - "doses\n", - "dosimetry\n", - "dosing\n", - "doss\n", - "dossal\n", - "dossals\n", - "dossed\n", - "dossel\n", - "dossels\n", - "dosser\n", - "dosseret\n", - "dosserets\n", - "dossers\n", - "dosses\n", - "dossier\n", - "dossiers\n", - "dossil\n", - "dossils\n", - "dossing\n", - "dost\n", - "dot\n", - "dotage\n", - "dotages\n", - "dotal\n", - "dotard\n", - "dotardly\n", - "dotards\n", - "dotation\n", - "dotations\n", - "dote\n", - "doted\n", - "doter\n", - "doters\n", - "dotes\n", - "doth\n", - "dotier\n", - "dotiest\n", - "doting\n", - "dotingly\n", - "dots\n", - "dotted\n", - "dottel\n", - "dottels\n", - "dotter\n", - "dotterel\n", - "dotterels\n", - "dotters\n", - "dottier\n", - "dottiest\n", - "dottily\n", - "dotting\n", - "dottle\n", - "dottles\n", - "dottrel\n", - "dottrels\n", - "dotty\n", - "doty\n", - "double\n", - "doublecross\n", - "doublecrossed\n", - "doublecrosses\n", - "doublecrossing\n", - "doubled\n", - "doubler\n", - "doublers\n", - "doubles\n", - "doublet\n", - "doublets\n", - "doubling\n", - "doubloon\n", - "doubloons\n", - "doublure\n", - "doublures\n", - "doubly\n", - "doubt\n", - "doubted\n", - "doubter\n", - "doubters\n", - "doubtful\n", - "doubtfully\n", - "doubting\n", - "doubtless\n", - "doubts\n", - "douce\n", - "doucely\n", - "douceur\n", - "douceurs\n", - "douche\n", - "douched\n", - "douches\n", - "douching\n", - "dough\n", - "doughboy\n", - "doughboys\n", - "doughier\n", - "doughiest\n", - "doughnut\n", - "doughnuts\n", - "doughs\n", - "dought\n", - "doughtier\n", - "doughtiest\n", - "doughty\n", - "doughy\n", - "douma\n", - "doumas\n", - "dour\n", - "doura\n", - "dourah\n", - "dourahs\n", - "douras\n", - "dourer\n", - "dourest\n", - "dourine\n", - "dourines\n", - "dourly\n", - "dourness\n", - "dournesses\n", - "douse\n", - "doused\n", - "douser\n", - "dousers\n", - "douses\n", - "dousing\n", - "douzeper\n", - "douzepers\n", - "dove\n", - "dovecot\n", - "dovecote\n", - "dovecotes\n", - "dovecots\n", - "dovekey\n", - "dovekeys\n", - "dovekie\n", - "dovekies\n", - "dovelike\n", - "doven\n", - "dovened\n", - "dovening\n", - "dovens\n", - "doves\n", - "dovetail\n", - "dovetailed\n", - "dovetailing\n", - "dovetails\n", - "dovish\n", - "dow\n", - "dowable\n", - "dowager\n", - "dowagers\n", - "dowdier\n", - "dowdies\n", - "dowdiest\n", - "dowdily\n", - "dowdy\n", - "dowdyish\n", - "dowed\n", - "dowel\n", - "doweled\n", - "doweling\n", - "dowelled\n", - "dowelling\n", - "dowels\n", - "dower\n", - "dowered\n", - "doweries\n", - "dowering\n", - "dowers\n", - "dowery\n", - "dowie\n", - "dowing\n", - "down\n", - "downbeat\n", - "downbeats\n", - "downcast\n", - "downcasts\n", - "downcome\n", - "downcomes\n", - "downed\n", - "downer\n", - "downers\n", - "downfall\n", - "downfallen\n", - "downfalls\n", - "downgrade\n", - "downgraded\n", - "downgrades\n", - "downgrading\n", - "downhaul\n", - "downhauls\n", - "downhearted\n", - "downhill\n", - "downhills\n", - "downier\n", - "downiest\n", - "downing\n", - "downplay\n", - "downplayed\n", - "downplaying\n", - "downplays\n", - "downpour\n", - "downpours\n", - "downright\n", - "downs\n", - "downstairs\n", - "downtime\n", - "downtimes\n", - "downtown\n", - "downtowns\n", - "downtrod\n", - "downtrodden\n", - "downturn\n", - "downturns\n", - "downward\n", - "downwards\n", - "downwind\n", - "downy\n", - "dowries\n", - "dowry\n", - "dows\n", - "dowsabel\n", - "dowsabels\n", - "dowse\n", - "dowsed\n", - "dowser\n", - "dowsers\n", - "dowses\n", - "dowsing\n", - "doxie\n", - "doxies\n", - "doxologies\n", - "doxology\n", - "doxorubicin\n", - "doxy\n", - "doyen\n", - "doyenne\n", - "doyennes\n", - "doyens\n", - "doyley\n", - "doyleys\n", - "doylies\n", - "doyly\n", - "doze\n", - "dozed\n", - "dozen\n", - "dozened\n", - "dozening\n", - "dozens\n", - "dozenth\n", - "dozenths\n", - "dozer\n", - "dozers\n", - "dozes\n", - "dozier\n", - "doziest\n", - "dozily\n", - "doziness\n", - "dozinesses\n", - "dozing\n", - "dozy\n", - "drab\n", - "drabbed\n", - "drabber\n", - "drabbest\n", - "drabbet\n", - "drabbets\n", - "drabbing\n", - "drabble\n", - "drabbled\n", - "drabbles\n", - "drabbling\n", - "drably\n", - "drabness\n", - "drabnesses\n", - "drabs\n", - "dracaena\n", - "dracaenas\n", - "drachm\n", - "drachma\n", - "drachmae\n", - "drachmai\n", - "drachmas\n", - "drachms\n", - "draconic\n", - "draff\n", - "draffier\n", - "draffiest\n", - "draffish\n", - "draffs\n", - "draffy\n", - "draft\n", - "drafted\n", - "draftee\n", - "draftees\n", - "drafter\n", - "drafters\n", - "draftier\n", - "draftiest\n", - "draftily\n", - "drafting\n", - "draftings\n", - "drafts\n", - "draftsman\n", - "draftsmen\n", - "drafty\n", - "drag\n", - "dragee\n", - "dragees\n", - "dragged\n", - "dragger\n", - "draggers\n", - "draggier\n", - "draggiest\n", - "dragging\n", - "draggle\n", - "draggled\n", - "draggles\n", - "draggling\n", - "draggy\n", - "dragline\n", - "draglines\n", - "dragnet\n", - "dragnets\n", - "dragoman\n", - "dragomans\n", - "dragomen\n", - "dragon\n", - "dragonet\n", - "dragonets\n", - "dragons\n", - "dragoon\n", - "dragooned\n", - "dragooning\n", - "dragoons\n", - "dragrope\n", - "dragropes\n", - "drags\n", - "dragster\n", - "dragsters\n", - "drail\n", - "drails\n", - "drain\n", - "drainage\n", - "drainages\n", - "drained\n", - "drainer\n", - "drainers\n", - "draining\n", - "drainpipe\n", - "drainpipes\n", - "drains\n", - "drake\n", - "drakes\n", - "dram\n", - "drama\n", - "dramas\n", - "dramatic\n", - "dramatically\n", - "dramatist\n", - "dramatists\n", - "dramatization\n", - "dramatizations\n", - "dramatize\n", - "drammed\n", - "dramming\n", - "drammock\n", - "drammocks\n", - "drams\n", - "dramshop\n", - "dramshops\n", - "drank\n", - "drapable\n", - "drape\n", - "draped\n", - "draper\n", - "draperies\n", - "drapers\n", - "drapery\n", - "drapes\n", - "draping\n", - "drastic\n", - "drastically\n", - "drat\n", - "drats\n", - "dratted\n", - "dratting\n", - "draught\n", - "draughted\n", - "draughtier\n", - "draughtiest\n", - "draughting\n", - "draughts\n", - "draughty\n", - "drave\n", - "draw\n", - "drawable\n", - "drawback\n", - "drawbacks\n", - "drawbar\n", - "drawbars\n", - "drawbore\n", - "drawbores\n", - "drawbridge\n", - "drawbridges\n", - "drawdown\n", - "drawdowns\n", - "drawee\n", - "drawees\n", - "drawer\n", - "drawers\n", - "drawing\n", - "drawings\n", - "drawl\n", - "drawled\n", - "drawler\n", - "drawlers\n", - "drawlier\n", - "drawliest\n", - "drawling\n", - "drawls\n", - "drawly\n", - "drawn\n", - "draws\n", - "drawtube\n", - "drawtubes\n", - "dray\n", - "drayage\n", - "drayages\n", - "drayed\n", - "draying\n", - "drayman\n", - "draymen\n", - "drays\n", - "dread\n", - "dreaded\n", - "dreadful\n", - "dreadfully\n", - "dreadfuls\n", - "dreading\n", - "dreads\n", - "dream\n", - "dreamed\n", - "dreamer\n", - "dreamers\n", - "dreamful\n", - "dreamier\n", - "dreamiest\n", - "dreamily\n", - "dreaming\n", - "dreamlike\n", - "dreams\n", - "dreamt\n", - "dreamy\n", - "drear\n", - "drearier\n", - "drearies\n", - "dreariest\n", - "drearily\n", - "dreary\n", - "dreck\n", - "drecks\n", - "dredge\n", - "dredged\n", - "dredger\n", - "dredgers\n", - "dredges\n", - "dredging\n", - "dredgings\n", - "dree\n", - "dreed\n", - "dreeing\n", - "drees\n", - "dreg\n", - "dreggier\n", - "dreggiest\n", - "dreggish\n", - "dreggy\n", - "dregs\n", - "dreich\n", - "dreidel\n", - "dreidels\n", - "dreidl\n", - "dreidls\n", - "dreigh\n", - "drek\n", - "dreks\n", - "drench\n", - "drenched\n", - "drencher\n", - "drenchers\n", - "drenches\n", - "drenching\n", - "dress\n", - "dressage\n", - "dressages\n", - "dressed\n", - "dresser\n", - "dressers\n", - "dresses\n", - "dressier\n", - "dressiest\n", - "dressily\n", - "dressing\n", - "dressings\n", - "dressmaker\n", - "dressmakers\n", - "dressmaking\n", - "dressmakings\n", - "dressy\n", - "drest\n", - "drew\n", - "drib\n", - "dribbed\n", - "dribbing\n", - "dribble\n", - "dribbled\n", - "dribbler\n", - "dribblers\n", - "dribbles\n", - "dribblet\n", - "dribblets\n", - "dribbling\n", - "driblet\n", - "driblets\n", - "dribs\n", - "dried\n", - "drier\n", - "driers\n", - "dries\n", - "driest\n", - "drift\n", - "driftage\n", - "driftages\n", - "drifted\n", - "drifter\n", - "drifters\n", - "driftier\n", - "driftiest\n", - "drifting\n", - "driftpin\n", - "driftpins\n", - "drifts\n", - "driftwood\n", - "driftwoods\n", - "drifty\n", - "drill\n", - "drilled\n", - "driller\n", - "drillers\n", - "drilling\n", - "drillings\n", - "drills\n", - "drily\n", - "drink\n", - "drinkable\n", - "drinker\n", - "drinkers\n", - "drinking\n", - "drinks\n", - "drip\n", - "dripless\n", - "dripped\n", - "dripper\n", - "drippers\n", - "drippier\n", - "drippiest\n", - "dripping\n", - "drippings\n", - "drippy\n", - "drips\n", - "dript\n", - "drivable\n", - "drive\n", - "drivel\n", - "driveled\n", - "driveler\n", - "drivelers\n", - "driveling\n", - "drivelled\n", - "drivelling\n", - "drivels\n", - "driven\n", - "driver\n", - "drivers\n", - "drives\n", - "driveway\n", - "driveways\n", - "driving\n", - "drizzle\n", - "drizzled\n", - "drizzles\n", - "drizzlier\n", - "drizzliest\n", - "drizzling\n", - "drizzly\n", - "drogue\n", - "drogues\n", - "droit\n", - "droits\n", - "droll\n", - "drolled\n", - "droller\n", - "drolleries\n", - "drollery\n", - "drollest\n", - "drolling\n", - "drolls\n", - "drolly\n", - "dromedaries\n", - "dromedary\n", - "dromon\n", - "dromond\n", - "dromonds\n", - "dromons\n", - "drone\n", - "droned\n", - "droner\n", - "droners\n", - "drones\n", - "drongo\n", - "drongos\n", - "droning\n", - "dronish\n", - "drool\n", - "drooled\n", - "drooling\n", - "drools\n", - "droop\n", - "drooped\n", - "droopier\n", - "droopiest\n", - "droopily\n", - "drooping\n", - "droops\n", - "droopy\n", - "drop\n", - "drophead\n", - "dropheads\n", - "dropkick\n", - "dropkicks\n", - "droplet\n", - "droplets\n", - "dropout\n", - "dropouts\n", - "dropped\n", - "dropper\n", - "droppers\n", - "dropping\n", - "droppings\n", - "drops\n", - "dropshot\n", - "dropshots\n", - "dropsied\n", - "dropsies\n", - "dropsy\n", - "dropt\n", - "dropwort\n", - "dropworts\n", - "drosera\n", - "droseras\n", - "droshkies\n", - "droshky\n", - "droskies\n", - "drosky\n", - "dross\n", - "drosses\n", - "drossier\n", - "drossiest\n", - "drossy\n", - "drought\n", - "droughtier\n", - "droughtiest\n", - "droughts\n", - "droughty\n", - "drouk\n", - "drouked\n", - "drouking\n", - "drouks\n", - "drouth\n", - "drouthier\n", - "drouthiest\n", - "drouths\n", - "drouthy\n", - "drove\n", - "droved\n", - "drover\n", - "drovers\n", - "droves\n", - "droving\n", - "drown\n", - "drownd\n", - "drownded\n", - "drownding\n", - "drownds\n", - "drowned\n", - "drowner\n", - "drowners\n", - "drowning\n", - "drowns\n", - "drowse\n", - "drowsed\n", - "drowses\n", - "drowsier\n", - "drowsiest\n", - "drowsily\n", - "drowsing\n", - "drowsy\n", - "drub\n", - "drubbed\n", - "drubber\n", - "drubbers\n", - "drubbing\n", - "drubbings\n", - "drubs\n", - "drudge\n", - "drudged\n", - "drudger\n", - "drudgeries\n", - "drudgers\n", - "drudgery\n", - "drudges\n", - "drudging\n", - "drug\n", - "drugged\n", - "drugget\n", - "druggets\n", - "drugging\n", - "druggist\n", - "druggists\n", - "drugs\n", - "drugstore\n", - "drugstores\n", - "druid\n", - "druidess\n", - "druidesses\n", - "druidic\n", - "druidism\n", - "druidisms\n", - "druids\n", - "drum\n", - "drumbeat\n", - "drumbeats\n", - "drumble\n", - "drumbled\n", - "drumbles\n", - "drumbling\n", - "drumfire\n", - "drumfires\n", - "drumfish\n", - "drumfishes\n", - "drumhead\n", - "drumheads\n", - "drumlier\n", - "drumliest\n", - "drumlike\n", - "drumlin\n", - "drumlins\n", - "drumly\n", - "drummed\n", - "drummer\n", - "drummers\n", - "drumming\n", - "drumroll\n", - "drumrolls\n", - "drums\n", - "drumstick\n", - "drumsticks\n", - "drunk\n", - "drunkard\n", - "drunkards\n", - "drunken\n", - "drunkenly\n", - "drunkenness\n", - "drunkennesses\n", - "drunker\n", - "drunkest\n", - "drunks\n", - "drupe\n", - "drupelet\n", - "drupelets\n", - "drupes\n", - "druse\n", - "druses\n", - "druthers\n", - "dry\n", - "dryable\n", - "dryad\n", - "dryades\n", - "dryadic\n", - "dryads\n", - "dryer\n", - "dryers\n", - "dryest\n", - "drying\n", - "drylot\n", - "drylots\n", - "dryly\n", - "dryness\n", - "drynesses\n", - "drypoint\n", - "drypoints\n", - "drys\n", - "duad\n", - "duads\n", - "dual\n", - "dualism\n", - "dualisms\n", - "dualist\n", - "dualists\n", - "dualities\n", - "duality\n", - "dualize\n", - "dualized\n", - "dualizes\n", - "dualizing\n", - "dually\n", - "duals\n", - "dub\n", - "dubbed\n", - "dubber\n", - "dubbers\n", - "dubbin\n", - "dubbing\n", - "dubbings\n", - "dubbins\n", - "dubieties\n", - "dubiety\n", - "dubious\n", - "dubiously\n", - "dubiousness\n", - "dubiousnesses\n", - "dubonnet\n", - "dubonnets\n", - "dubs\n", - "duc\n", - "ducal\n", - "ducally\n", - "ducat\n", - "ducats\n", - "duce\n", - "duces\n", - "duchess\n", - "duchesses\n", - "duchies\n", - "duchy\n", - "duci\n", - "duck\n", - "duckbill\n", - "duckbills\n", - "ducked\n", - "ducker\n", - "duckers\n", - "duckie\n", - "duckier\n", - "duckies\n", - "duckiest\n", - "ducking\n", - "duckling\n", - "ducklings\n", - "duckpin\n", - "duckpins\n", - "ducks\n", - "ducktail\n", - "ducktails\n", - "duckweed\n", - "duckweeds\n", - "ducky\n", - "ducs\n", - "duct\n", - "ducted\n", - "ductile\n", - "ductilities\n", - "ductility\n", - "ducting\n", - "ductings\n", - "ductless\n", - "ducts\n", - "ductule\n", - "ductules\n", - "dud\n", - "duddie\n", - "duddy\n", - "dude\n", - "dudeen\n", - "dudeens\n", - "dudes\n", - "dudgeon\n", - "dudgeons\n", - "dudish\n", - "dudishly\n", - "duds\n", - "due\n", - "duecento\n", - "duecentos\n", - "duel\n", - "dueled\n", - "dueler\n", - "duelers\n", - "dueling\n", - "duelist\n", - "duelists\n", - "duelled\n", - "dueller\n", - "duellers\n", - "duelli\n", - "duelling\n", - "duellist\n", - "duellists\n", - "duello\n", - "duellos\n", - "duels\n", - "duende\n", - "duendes\n", - "dueness\n", - "duenesses\n", - "duenna\n", - "duennas\n", - "dues\n", - "duet\n", - "duets\n", - "duetted\n", - "duetting\n", - "duettist\n", - "duettists\n", - "duff\n", - "duffel\n", - "duffels\n", - "duffer\n", - "duffers\n", - "duffle\n", - "duffles\n", - "duffs\n", - "dug\n", - "dugong\n", - "dugongs\n", - "dugout\n", - "dugouts\n", - "dugs\n", - "dui\n", - "duiker\n", - "duikers\n", - "duit\n", - "duits\n", - "duke\n", - "dukedom\n", - "dukedoms\n", - "dukes\n", - "dulcet\n", - "dulcetly\n", - "dulcets\n", - "dulciana\n", - "dulcianas\n", - "dulcified\n", - "dulcifies\n", - "dulcify\n", - "dulcifying\n", - "dulcimer\n", - "dulcimers\n", - "dulcinea\n", - "dulcineas\n", - "dulia\n", - "dulias\n", - "dull\n", - "dullard\n", - "dullards\n", - "dulled\n", - "duller\n", - "dullest\n", - "dulling\n", - "dullish\n", - "dullness\n", - "dullnesses\n", - "dulls\n", - "dully\n", - "dulness\n", - "dulnesses\n", - "dulse\n", - "dulses\n", - "duly\n", - "duma\n", - "dumas\n", - "dumb\n", - "dumbbell\n", - "dumbbells\n", - "dumbed\n", - "dumber\n", - "dumbest\n", - "dumbfound\n", - "dumbfounded\n", - "dumbfounding\n", - "dumbfounds\n", - "dumbing\n", - "dumbly\n", - "dumbness\n", - "dumbnesses\n", - "dumbs\n", - "dumdum\n", - "dumdums\n", - "dumfound\n", - "dumfounded\n", - "dumfounding\n", - "dumfounds\n", - "dumka\n", - "dumky\n", - "dummied\n", - "dummies\n", - "dummkopf\n", - "dummkopfs\n", - "dummy\n", - "dummying\n", - "dump\n", - "dumpcart\n", - "dumpcarts\n", - "dumped\n", - "dumper\n", - "dumpers\n", - "dumpier\n", - "dumpiest\n", - "dumpily\n", - "dumping\n", - "dumpings\n", - "dumpish\n", - "dumpling\n", - "dumplings\n", - "dumps\n", - "dumpy\n", - "dun\n", - "dunce\n", - "dunces\n", - "dunch\n", - "dunches\n", - "duncical\n", - "duncish\n", - "dune\n", - "duneland\n", - "dunelands\n", - "dunelike\n", - "dunes\n", - "dung\n", - "dungaree\n", - "dungarees\n", - "dunged\n", - "dungeon\n", - "dungeons\n", - "dunghill\n", - "dunghills\n", - "dungier\n", - "dungiest\n", - "dunging\n", - "dungs\n", - "dungy\n", - "dunite\n", - "dunites\n", - "dunitic\n", - "dunk\n", - "dunked\n", - "dunker\n", - "dunkers\n", - "dunking\n", - "dunks\n", - "dunlin\n", - "dunlins\n", - "dunnage\n", - "dunnages\n", - "dunned\n", - "dunner\n", - "dunness\n", - "dunnesses\n", - "dunnest\n", - "dunning\n", - "dunnite\n", - "dunnites\n", - "duns\n", - "dunt\n", - "dunted\n", - "dunting\n", - "dunts\n", - "duo\n", - "duodena\n", - "duodenal\n", - "duodenum\n", - "duodenums\n", - "duolog\n", - "duologs\n", - "duologue\n", - "duologues\n", - "duomi\n", - "duomo\n", - "duomos\n", - "duopolies\n", - "duopoly\n", - "duopsonies\n", - "duopsony\n", - "duos\n", - "duotone\n", - "duotones\n", - "dup\n", - "dupable\n", - "dupe\n", - "duped\n", - "duper\n", - "duperies\n", - "dupers\n", - "dupery\n", - "dupes\n", - "duping\n", - "duple\n", - "duplex\n", - "duplexed\n", - "duplexer\n", - "duplexers\n", - "duplexes\n", - "duplexing\n", - "duplicate\n", - "duplicated\n", - "duplicates\n", - "duplicating\n", - "duplication\n", - "duplications\n", - "duplicator\n", - "duplicators\n", - "duplicity\n", - "dupped\n", - "dupping\n", - "dups\n", - "dura\n", - "durabilities\n", - "durability\n", - "durable\n", - "durables\n", - "durably\n", - "dural\n", - "duramen\n", - "duramens\n", - "durance\n", - "durances\n", - "duras\n", - "duration\n", - "durations\n", - "durative\n", - "duratives\n", - "durbar\n", - "durbars\n", - "dure\n", - "dured\n", - "dures\n", - "duress\n", - "duresses\n", - "durian\n", - "durians\n", - "during\n", - "durion\n", - "durions\n", - "durmast\n", - "durmasts\n", - "durn\n", - "durndest\n", - "durned\n", - "durneder\n", - "durnedest\n", - "durning\n", - "durns\n", - "duro\n", - "duroc\n", - "durocs\n", - "duros\n", - "durr\n", - "durra\n", - "durras\n", - "durrs\n", - "durst\n", - "durum\n", - "durums\n", - "dusk\n", - "dusked\n", - "duskier\n", - "duskiest\n", - "duskily\n", - "dusking\n", - "duskish\n", - "dusks\n", - "dusky\n", - "dust\n", - "dustbin\n", - "dustbins\n", - "dusted\n", - "duster\n", - "dusters\n", - "dustheap\n", - "dustheaps\n", - "dustier\n", - "dustiest\n", - "dustily\n", - "dusting\n", - "dustless\n", - "dustlike\n", - "dustman\n", - "dustmen\n", - "dustpan\n", - "dustpans\n", - "dustrag\n", - "dustrags\n", - "dusts\n", - "dustup\n", - "dustups\n", - "dusty\n", - "dutch\n", - "dutchman\n", - "dutchmen\n", - "duteous\n", - "dutiable\n", - "duties\n", - "dutiful\n", - "duty\n", - "duumvir\n", - "duumviri\n", - "duumvirs\n", - "duvetine\n", - "duvetines\n", - "duvetyn\n", - "duvetyne\n", - "duvetynes\n", - "duvetyns\n", - "dwarf\n", - "dwarfed\n", - "dwarfer\n", - "dwarfest\n", - "dwarfing\n", - "dwarfish\n", - "dwarfism\n", - "dwarfisms\n", - "dwarfs\n", - "dwarves\n", - "dwell\n", - "dwelled\n", - "dweller\n", - "dwellers\n", - "dwelling\n", - "dwellings\n", - "dwells\n", - "dwelt\n", - "dwindle\n", - "dwindled\n", - "dwindles\n", - "dwindling\n", - "dwine\n", - "dwined\n", - "dwines\n", - "dwining\n", - "dyable\n", - "dyad\n", - "dyadic\n", - "dyadics\n", - "dyads\n", - "dyarchic\n", - "dyarchies\n", - "dyarchy\n", - "dybbuk\n", - "dybbukim\n", - "dybbuks\n", - "dye\n", - "dyeable\n", - "dyed\n", - "dyeing\n", - "dyeings\n", - "dyer\n", - "dyers\n", - "dyes\n", - "dyestuff\n", - "dyestuffs\n", - "dyeweed\n", - "dyeweeds\n", - "dyewood\n", - "dyewoods\n", - "dying\n", - "dyings\n", - "dyke\n", - "dyked\n", - "dyker\n", - "dykes\n", - "dyking\n", - "dynamic\n", - "dynamics\n", - "dynamism\n", - "dynamisms\n", - "dynamist\n", - "dynamists\n", - "dynamite\n", - "dynamited\n", - "dynamites\n", - "dynamiting\n", - "dynamo\n", - "dynamos\n", - "dynast\n", - "dynastic\n", - "dynasties\n", - "dynasts\n", - "dynasty\n", - "dynatron\n", - "dynatrons\n", - "dyne\n", - "dynes\n", - "dynode\n", - "dynodes\n", - "dysautonomia\n", - "dysenteries\n", - "dysentery\n", - "dysfunction\n", - "dysfunctions\n", - "dysgenic\n", - "dyslexia\n", - "dyslexias\n", - "dyslexic\n", - "dyspepsia\n", - "dyspepsias\n", - "dyspepsies\n", - "dyspepsy\n", - "dyspeptic\n", - "dysphagia\n", - "dyspnea\n", - "dyspneal\n", - "dyspneas\n", - "dyspneic\n", - "dyspnoea\n", - "dyspnoeas\n", - "dyspnoic\n", - "dystaxia\n", - "dystaxias\n", - "dystocia\n", - "dystocias\n", - "dystonia\n", - "dystonias\n", - "dystopia\n", - "dystopias\n", - "dystrophies\n", - "dystrophy\n", - "dysuria\n", - "dysurias\n", - "dysuric\n", - "dyvour\n", - "dyvours\n", - "each\n", - "eager\n", - "eagerer\n", - "eagerest\n", - "eagerly\n", - "eagerness\n", - "eagernesses\n", - "eagers\n", - "eagle\n", - "eagles\n", - "eaglet\n", - "eaglets\n", - "eagre\n", - "eagres\n", - "eanling\n", - "eanlings\n", - "ear\n", - "earache\n", - "earaches\n", - "eardrop\n", - "eardrops\n", - "eardrum\n", - "eardrums\n", - "eared\n", - "earflap\n", - "earflaps\n", - "earful\n", - "earfuls\n", - "earing\n", - "earings\n", - "earl\n", - "earlap\n", - "earlaps\n", - "earldom\n", - "earldoms\n", - "earless\n", - "earlier\n", - "earliest\n", - "earlobe\n", - "earlobes\n", - "earlock\n", - "earlocks\n", - "earls\n", - "earlship\n", - "earlships\n", - "early\n", - "earmark\n", - "earmarked\n", - "earmarking\n", - "earmarks\n", - "earmuff\n", - "earmuffs\n", - "earn\n", - "earned\n", - "earner\n", - "earners\n", - "earnest\n", - "earnestly\n", - "earnestness\n", - "earnestnesses\n", - "earnests\n", - "earning\n", - "earnings\n", - "earns\n", - "earphone\n", - "earphones\n", - "earpiece\n", - "earpieces\n", - "earplug\n", - "earplugs\n", - "earring\n", - "earrings\n", - "ears\n", - "earshot\n", - "earshots\n", - "earstone\n", - "earstones\n", - "earth\n", - "earthed\n", - "earthen\n", - "earthenware\n", - "earthenwares\n", - "earthier\n", - "earthiest\n", - "earthily\n", - "earthiness\n", - "earthinesses\n", - "earthing\n", - "earthlier\n", - "earthliest\n", - "earthliness\n", - "earthlinesses\n", - "earthly\n", - "earthman\n", - "earthmen\n", - "earthnut\n", - "earthnuts\n", - "earthpea\n", - "earthpeas\n", - "earthquake\n", - "earthquakes\n", - "earths\n", - "earthset\n", - "earthsets\n", - "earthward\n", - "earthwards\n", - "earthworm\n", - "earthworms\n", - "earthy\n", - "earwax\n", - "earwaxes\n", - "earwig\n", - "earwigged\n", - "earwigging\n", - "earwigs\n", - "earworm\n", - "earworms\n", - "ease\n", - "eased\n", - "easeful\n", - "easel\n", - "easels\n", - "easement\n", - "easements\n", - "eases\n", - "easier\n", - "easies\n", - "easiest\n", - "easily\n", - "easiness\n", - "easinesses\n", - "easing\n", - "east\n", - "easter\n", - "easterlies\n", - "easterly\n", - "eastern\n", - "easters\n", - "easting\n", - "eastings\n", - "easts\n", - "eastward\n", - "eastwards\n", - "easy\n", - "easygoing\n", - "eat\n", - "eatable\n", - "eatables\n", - "eaten\n", - "eater\n", - "eateries\n", - "eaters\n", - "eatery\n", - "eath\n", - "eating\n", - "eatings\n", - "eats\n", - "eau\n", - "eaux\n", - "eave\n", - "eaved\n", - "eaves\n", - "eavesdrop\n", - "eavesdropped\n", - "eavesdropper\n", - "eavesdroppers\n", - "eavesdropping\n", - "eavesdrops\n", - "ebb\n", - "ebbed\n", - "ebbet\n", - "ebbets\n", - "ebbing\n", - "ebbs\n", - "ebon\n", - "ebonies\n", - "ebonise\n", - "ebonised\n", - "ebonises\n", - "ebonising\n", - "ebonite\n", - "ebonites\n", - "ebonize\n", - "ebonized\n", - "ebonizes\n", - "ebonizing\n", - "ebons\n", - "ebony\n", - "ebullient\n", - "ecarte\n", - "ecartes\n", - "ecaudate\n", - "ecbolic\n", - "ecbolics\n", - "eccentric\n", - "eccentrically\n", - "eccentricities\n", - "eccentricity\n", - "eccentrics\n", - "ecclesia\n", - "ecclesiae\n", - "ecclesiastic\n", - "ecclesiastical\n", - "ecclesiastics\n", - "eccrine\n", - "ecdyses\n", - "ecdysial\n", - "ecdysis\n", - "ecdyson\n", - "ecdysone\n", - "ecdysones\n", - "ecdysons\n", - "ecesis\n", - "ecesises\n", - "echard\n", - "echards\n", - "eche\n", - "eched\n", - "echelon\n", - "echeloned\n", - "echeloning\n", - "echelons\n", - "eches\n", - "echidna\n", - "echidnae\n", - "echidnas\n", - "echinate\n", - "eching\n", - "echini\n", - "echinoid\n", - "echinoids\n", - "echinus\n", - "echo\n", - "echoed\n", - "echoer\n", - "echoers\n", - "echoes\n", - "echoey\n", - "echoic\n", - "echoing\n", - "echoism\n", - "echoisms\n", - "echoless\n", - "eclair\n", - "eclairs\n", - "eclat\n", - "eclats\n", - "eclectic\n", - "eclectics\n", - "eclipse\n", - "eclipsed\n", - "eclipses\n", - "eclipsing\n", - "eclipsis\n", - "eclipsises\n", - "ecliptic\n", - "ecliptics\n", - "eclogite\n", - "eclogites\n", - "eclogue\n", - "eclogues\n", - "eclosion\n", - "eclosions\n", - "ecole\n", - "ecoles\n", - "ecologic\n", - "ecological\n", - "ecologically\n", - "ecologies\n", - "ecologist\n", - "ecologists\n", - "ecology\n", - "economic\n", - "economical\n", - "economically\n", - "economics\n", - "economies\n", - "economist\n", - "economists\n", - "economize\n", - "economized\n", - "economizes\n", - "economizing\n", - "economy\n", - "ecotonal\n", - "ecotone\n", - "ecotones\n", - "ecotype\n", - "ecotypes\n", - "ecotypic\n", - "ecraseur\n", - "ecraseurs\n", - "ecru\n", - "ecrus\n", - "ecstasies\n", - "ecstasy\n", - "ecstatic\n", - "ecstatically\n", - "ecstatics\n", - "ectases\n", - "ectasis\n", - "ectatic\n", - "ecthyma\n", - "ecthymata\n", - "ectoderm\n", - "ectoderms\n", - "ectomere\n", - "ectomeres\n", - "ectopia\n", - "ectopias\n", - "ectopic\n", - "ectosarc\n", - "ectosarcs\n", - "ectozoa\n", - "ectozoan\n", - "ectozoans\n", - "ectozoon\n", - "ectypal\n", - "ectype\n", - "ectypes\n", - "ecu\n", - "ecumenic\n", - "ecus\n", - "eczema\n", - "eczemas\n", - "edacious\n", - "edacities\n", - "edacity\n", - "edaphic\n", - "eddied\n", - "eddies\n", - "eddo\n", - "eddoes\n", - "eddy\n", - "eddying\n", - "edelstein\n", - "edema\n", - "edemas\n", - "edemata\n", - "edentate\n", - "edentates\n", - "edge\n", - "edged\n", - "edgeless\n", - "edger\n", - "edgers\n", - "edges\n", - "edgeways\n", - "edgewise\n", - "edgier\n", - "edgiest\n", - "edgily\n", - "edginess\n", - "edginesses\n", - "edging\n", - "edgings\n", - "edgy\n", - "edh\n", - "edhs\n", - "edibilities\n", - "edibility\n", - "edible\n", - "edibles\n", - "edict\n", - "edictal\n", - "edicts\n", - "edification\n", - "edifications\n", - "edifice\n", - "edifices\n", - "edified\n", - "edifier\n", - "edifiers\n", - "edifies\n", - "edify\n", - "edifying\n", - "edile\n", - "ediles\n", - "edit\n", - "editable\n", - "edited\n", - "editing\n", - "edition\n", - "editions\n", - "editor\n", - "editorial\n", - "editorialize\n", - "editorialized\n", - "editorializes\n", - "editorializing\n", - "editorially\n", - "editorials\n", - "editors\n", - "editress\n", - "editresses\n", - "edits\n", - "educable\n", - "educables\n", - "educate\n", - "educated\n", - "educates\n", - "educating\n", - "education\n", - "educational\n", - "educations\n", - "educator\n", - "educators\n", - "educe\n", - "educed\n", - "educes\n", - "educing\n", - "educt\n", - "eduction\n", - "eductions\n", - "eductive\n", - "eductor\n", - "eductors\n", - "educts\n", - "eel\n", - "eelgrass\n", - "eelgrasses\n", - "eelier\n", - "eeliest\n", - "eellike\n", - "eelpout\n", - "eelpouts\n", - "eels\n", - "eelworm\n", - "eelworms\n", - "eely\n", - "eerie\n", - "eerier\n", - "eeriest\n", - "eerily\n", - "eeriness\n", - "eerinesses\n", - "eery\n", - "ef\n", - "eff\n", - "effable\n", - "efface\n", - "effaced\n", - "effacement\n", - "effacements\n", - "effacer\n", - "effacers\n", - "effaces\n", - "effacing\n", - "effect\n", - "effected\n", - "effecter\n", - "effecters\n", - "effecting\n", - "effective\n", - "effectively\n", - "effectiveness\n", - "effector\n", - "effectors\n", - "effects\n", - "effectual\n", - "effectually\n", - "effectualness\n", - "effectualnesses\n", - "effeminacies\n", - "effeminacy\n", - "effeminate\n", - "effendi\n", - "effendis\n", - "efferent\n", - "efferents\n", - "effervesce\n", - "effervesced\n", - "effervescence\n", - "effervescences\n", - "effervescent\n", - "effervescently\n", - "effervesces\n", - "effervescing\n", - "effete\n", - "effetely\n", - "efficacies\n", - "efficacious\n", - "efficacy\n", - "efficiencies\n", - "efficiency\n", - "efficient\n", - "efficiently\n", - "effigies\n", - "effigy\n", - "effluent\n", - "effluents\n", - "effluvia\n", - "efflux\n", - "effluxes\n", - "effort\n", - "effortless\n", - "effortlessly\n", - "efforts\n", - "effrontery\n", - "effs\n", - "effulge\n", - "effulged\n", - "effulges\n", - "effulging\n", - "effuse\n", - "effused\n", - "effuses\n", - "effusing\n", - "effusion\n", - "effusions\n", - "effusive\n", - "effusively\n", - "efs\n", - "eft\n", - "efts\n", - "eftsoon\n", - "eftsoons\n", - "egad\n", - "egads\n", - "egal\n", - "egalite\n", - "egalites\n", - "eger\n", - "egers\n", - "egest\n", - "egesta\n", - "egested\n", - "egesting\n", - "egestion\n", - "egestions\n", - "egestive\n", - "egests\n", - "egg\n", - "eggar\n", - "eggars\n", - "eggcup\n", - "eggcups\n", - "egged\n", - "egger\n", - "eggers\n", - "egghead\n", - "eggheads\n", - "egging\n", - "eggnog\n", - "eggnogs\n", - "eggplant\n", - "eggplants\n", - "eggs\n", - "eggshell\n", - "eggshells\n", - "egis\n", - "egises\n", - "eglatere\n", - "eglateres\n", - "ego\n", - "egoism\n", - "egoisms\n", - "egoist\n", - "egoistic\n", - "egoists\n", - "egomania\n", - "egomanias\n", - "egos\n", - "egotism\n", - "egotisms\n", - "egotist\n", - "egotistic\n", - "egotistical\n", - "egotistically\n", - "egotists\n", - "egregious\n", - "egregiously\n", - "egress\n", - "egressed\n", - "egresses\n", - "egressing\n", - "egret\n", - "egrets\n", - "eh\n", - "eide\n", - "eider\n", - "eiderdown\n", - "eiderdowns\n", - "eiders\n", - "eidetic\n", - "eidola\n", - "eidolon\n", - "eidolons\n", - "eidos\n", - "eight\n", - "eighteen\n", - "eighteens\n", - "eighteenth\n", - "eighteenths\n", - "eighth\n", - "eighthly\n", - "eighths\n", - "eighties\n", - "eightieth\n", - "eightieths\n", - "eights\n", - "eightvo\n", - "eightvos\n", - "eighty\n", - "eikon\n", - "eikones\n", - "eikons\n", - "einkorn\n", - "einkorns\n", - "eirenic\n", - "either\n", - "ejaculate\n", - "ejaculated\n", - "ejaculates\n", - "ejaculating\n", - "ejaculation\n", - "ejaculations\n", - "eject\n", - "ejecta\n", - "ejected\n", - "ejecting\n", - "ejection\n", - "ejections\n", - "ejective\n", - "ejectives\n", - "ejector\n", - "ejectors\n", - "ejects\n", - "eke\n", - "eked\n", - "ekes\n", - "eking\n", - "ekistic\n", - "ekistics\n", - "ektexine\n", - "ektexines\n", - "el\n", - "elaborate\n", - "elaborated\n", - "elaborately\n", - "elaborateness\n", - "elaboratenesses\n", - "elaborates\n", - "elaborating\n", - "elaboration\n", - "elaborations\n", - "elain\n", - "elains\n", - "elan\n", - "eland\n", - "elands\n", - "elans\n", - "elaphine\n", - "elapid\n", - "elapids\n", - "elapine\n", - "elapse\n", - "elapsed\n", - "elapses\n", - "elapsing\n", - "elastase\n", - "elastases\n", - "elastic\n", - "elasticities\n", - "elasticity\n", - "elastics\n", - "elastin\n", - "elastins\n", - "elate\n", - "elated\n", - "elatedly\n", - "elater\n", - "elaterid\n", - "elaterids\n", - "elaterin\n", - "elaterins\n", - "elaters\n", - "elates\n", - "elating\n", - "elation\n", - "elations\n", - "elative\n", - "elatives\n", - "elbow\n", - "elbowed\n", - "elbowing\n", - "elbows\n", - "eld\n", - "elder\n", - "elderberries\n", - "elderberry\n", - "elderly\n", - "elders\n", - "eldest\n", - "eldrich\n", - "eldritch\n", - "elds\n", - "elect\n", - "elected\n", - "electing\n", - "election\n", - "elections\n", - "elective\n", - "electives\n", - "elector\n", - "electoral\n", - "electorate\n", - "electorates\n", - "electors\n", - "electret\n", - "electrets\n", - "electric\n", - "electrical\n", - "electrically\n", - "electrician\n", - "electricians\n", - "electricities\n", - "electricity\n", - "electrics\n", - "electrification\n", - "electrifications\n", - "electro\n", - "electrocardiogram\n", - "electrocardiograms\n", - "electrocardiograph\n", - "electrocardiographs\n", - "electrocute\n", - "electrocuted\n", - "electrocutes\n", - "electrocuting\n", - "electrocution\n", - "electrocutions\n", - "electrode\n", - "electrodes\n", - "electroed\n", - "electroing\n", - "electrolysis\n", - "electrolysises\n", - "electrolyte\n", - "electrolytes\n", - "electrolytic\n", - "electromagnet\n", - "electromagnetally\n", - "electromagnetic\n", - "electromagnets\n", - "electron\n", - "electronic\n", - "electronics\n", - "electrons\n", - "electroplate\n", - "electroplated\n", - "electroplates\n", - "electroplating\n", - "electros\n", - "electrum\n", - "electrums\n", - "elects\n", - "elegance\n", - "elegances\n", - "elegancies\n", - "elegancy\n", - "elegant\n", - "elegantly\n", - "elegiac\n", - "elegiacs\n", - "elegies\n", - "elegise\n", - "elegised\n", - "elegises\n", - "elegising\n", - "elegist\n", - "elegists\n", - "elegit\n", - "elegits\n", - "elegize\n", - "elegized\n", - "elegizes\n", - "elegizing\n", - "elegy\n", - "element\n", - "elemental\n", - "elementary\n", - "elements\n", - "elemi\n", - "elemis\n", - "elenchi\n", - "elenchic\n", - "elenchus\n", - "elenctic\n", - "elephant\n", - "elephants\n", - "elevate\n", - "elevated\n", - "elevates\n", - "elevating\n", - "elevation\n", - "elevations\n", - "elevator\n", - "elevators\n", - "eleven\n", - "elevens\n", - "eleventh\n", - "elevenths\n", - "elevon\n", - "elevons\n", - "elf\n", - "elfin\n", - "elfins\n", - "elfish\n", - "elfishly\n", - "elflock\n", - "elflocks\n", - "elhi\n", - "elicit\n", - "elicited\n", - "eliciting\n", - "elicitor\n", - "elicitors\n", - "elicits\n", - "elide\n", - "elided\n", - "elides\n", - "elidible\n", - "eliding\n", - "eligibilities\n", - "eligibility\n", - "eligible\n", - "eligibles\n", - "eligibly\n", - "eliminate\n", - "eliminated\n", - "eliminates\n", - "eliminating\n", - "elimination\n", - "eliminations\n", - "elision\n", - "elisions\n", - "elite\n", - "elites\n", - "elitism\n", - "elitisms\n", - "elitist\n", - "elitists\n", - "elixir\n", - "elixirs\n", - "elk\n", - "elkhound\n", - "elkhounds\n", - "elks\n", - "ell\n", - "ellipse\n", - "ellipses\n", - "ellipsis\n", - "elliptic\n", - "elliptical\n", - "ells\n", - "elm\n", - "elmier\n", - "elmiest\n", - "elms\n", - "elmy\n", - "elocution\n", - "elocutions\n", - "elodea\n", - "elodeas\n", - "eloign\n", - "eloigned\n", - "eloigner\n", - "eloigners\n", - "eloigning\n", - "eloigns\n", - "eloin\n", - "eloined\n", - "eloiner\n", - "eloiners\n", - "eloining\n", - "eloins\n", - "elongate\n", - "elongated\n", - "elongates\n", - "elongating\n", - "elongation\n", - "elongations\n", - "elope\n", - "eloped\n", - "eloper\n", - "elopers\n", - "elopes\n", - "eloping\n", - "eloquent\n", - "eloquently\n", - "els\n", - "else\n", - "elsewhere\n", - "eluant\n", - "eluants\n", - "eluate\n", - "eluates\n", - "elucidate\n", - "elucidated\n", - "elucidates\n", - "elucidating\n", - "elucidation\n", - "elucidations\n", - "elude\n", - "eluded\n", - "eluder\n", - "eluders\n", - "eludes\n", - "eluding\n", - "eluent\n", - "eluents\n", - "elusion\n", - "elusions\n", - "elusive\n", - "elusively\n", - "elusiveness\n", - "elusivenesses\n", - "elusory\n", - "elute\n", - "eluted\n", - "elutes\n", - "eluting\n", - "elution\n", - "elutions\n", - "eluvia\n", - "eluvial\n", - "eluviate\n", - "eluviated\n", - "eluviates\n", - "eluviating\n", - "eluvium\n", - "eluviums\n", - "elver\n", - "elvers\n", - "elves\n", - "elvish\n", - "elvishly\n", - "elysian\n", - "elytra\n", - "elytroid\n", - "elytron\n", - "elytrous\n", - "elytrum\n", - "em\n", - "emaciate\n", - "emaciated\n", - "emaciates\n", - "emaciating\n", - "emaciation\n", - "emaciations\n", - "emanate\n", - "emanated\n", - "emanates\n", - "emanating\n", - "emanation\n", - "emanations\n", - "emanator\n", - "emanators\n", - "emancipatation\n", - "emancipatations\n", - "emancipate\n", - "emancipated\n", - "emancipates\n", - "emancipating\n", - "emancipation\n", - "emancipations\n", - "emasculatation\n", - "emasculatations\n", - "emasculate\n", - "emasculated\n", - "emasculates\n", - "emasculating\n", - "embalm\n", - "embalmed\n", - "embalmer\n", - "embalmers\n", - "embalming\n", - "embalms\n", - "embank\n", - "embanked\n", - "embanking\n", - "embankment\n", - "embankments\n", - "embanks\n", - "embar\n", - "embargo\n", - "embargoed\n", - "embargoing\n", - "embargos\n", - "embark\n", - "embarkation\n", - "embarkations\n", - "embarked\n", - "embarking\n", - "embarks\n", - "embarrass\n", - "embarrassed\n", - "embarrasses\n", - "embarrassing\n", - "embarrassment\n", - "embarrassments\n", - "embarred\n", - "embarring\n", - "embars\n", - "embassies\n", - "embassy\n", - "embattle\n", - "embattled\n", - "embattles\n", - "embattling\n", - "embay\n", - "embayed\n", - "embaying\n", - "embays\n", - "embed\n", - "embedded\n", - "embedding\n", - "embeds\n", - "embellish\n", - "embellished\n", - "embellishes\n", - "embellishing\n", - "embellishment\n", - "embellishments\n", - "ember\n", - "embers\n", - "embezzle\n", - "embezzled\n", - "embezzlement\n", - "embezzlements\n", - "embezzler\n", - "embezzlers\n", - "embezzles\n", - "embezzling\n", - "embitter\n", - "embittered\n", - "embittering\n", - "embitters\n", - "emblaze\n", - "emblazed\n", - "emblazer\n", - "emblazers\n", - "emblazes\n", - "emblazing\n", - "emblazon\n", - "emblazoned\n", - "emblazoning\n", - "emblazons\n", - "emblem\n", - "emblematic\n", - "emblemed\n", - "embleming\n", - "emblems\n", - "embodied\n", - "embodier\n", - "embodiers\n", - "embodies\n", - "embodiment\n", - "embodiments\n", - "embody\n", - "embodying\n", - "embolden\n", - "emboldened\n", - "emboldening\n", - "emboldens\n", - "emboli\n", - "embolic\n", - "embolies\n", - "embolism\n", - "embolisms\n", - "embolus\n", - "emboly\n", - "emborder\n", - "embordered\n", - "embordering\n", - "emborders\n", - "embosk\n", - "embosked\n", - "embosking\n", - "embosks\n", - "embosom\n", - "embosomed\n", - "embosoming\n", - "embosoms\n", - "emboss\n", - "embossed\n", - "embosser\n", - "embossers\n", - "embosses\n", - "embossing\n", - "embow\n", - "embowed\n", - "embowel\n", - "emboweled\n", - "emboweling\n", - "embowelled\n", - "embowelling\n", - "embowels\n", - "embower\n", - "embowered\n", - "embowering\n", - "embowers\n", - "embowing\n", - "embows\n", - "embrace\n", - "embraced\n", - "embracer\n", - "embracers\n", - "embraces\n", - "embracing\n", - "embroider\n", - "embroidered\n", - "embroidering\n", - "embroiders\n", - "embroil\n", - "embroiled\n", - "embroiling\n", - "embroils\n", - "embrown\n", - "embrowned\n", - "embrowning\n", - "embrowns\n", - "embrue\n", - "embrued\n", - "embrues\n", - "embruing\n", - "embrute\n", - "embruted\n", - "embrutes\n", - "embruting\n", - "embryo\n", - "embryoid\n", - "embryon\n", - "embryonic\n", - "embryons\n", - "embryos\n", - "emcee\n", - "emceed\n", - "emcees\n", - "emceing\n", - "eme\n", - "emeer\n", - "emeerate\n", - "emeerates\n", - "emeers\n", - "emend\n", - "emendate\n", - "emendated\n", - "emendates\n", - "emendating\n", - "emendation\n", - "emendations\n", - "emended\n", - "emender\n", - "emenders\n", - "emending\n", - "emends\n", - "emerald\n", - "emeralds\n", - "emerge\n", - "emerged\n", - "emergence\n", - "emergences\n", - "emergencies\n", - "emergency\n", - "emergent\n", - "emergents\n", - "emerges\n", - "emerging\n", - "emeries\n", - "emerita\n", - "emeriti\n", - "emeritus\n", - "emerod\n", - "emerods\n", - "emeroid\n", - "emeroids\n", - "emersed\n", - "emersion\n", - "emersions\n", - "emery\n", - "emes\n", - "emeses\n", - "emesis\n", - "emetic\n", - "emetics\n", - "emetin\n", - "emetine\n", - "emetines\n", - "emetins\n", - "emeu\n", - "emeus\n", - "emeute\n", - "emeutes\n", - "emigrant\n", - "emigrants\n", - "emigrate\n", - "emigrated\n", - "emigrates\n", - "emigrating\n", - "emigration\n", - "emigrations\n", - "emigre\n", - "emigres\n", - "eminence\n", - "eminences\n", - "eminencies\n", - "eminency\n", - "eminent\n", - "eminently\n", - "emir\n", - "emirate\n", - "emirates\n", - "emirs\n", - "emissaries\n", - "emissary\n", - "emission\n", - "emissions\n", - "emissive\n", - "emit\n", - "emits\n", - "emitted\n", - "emitter\n", - "emitters\n", - "emitting\n", - "emmer\n", - "emmers\n", - "emmet\n", - "emmets\n", - "emodin\n", - "emodins\n", - "emolument\n", - "emoluments\n", - "emote\n", - "emoted\n", - "emoter\n", - "emoters\n", - "emotes\n", - "emoting\n", - "emotion\n", - "emotional\n", - "emotionally\n", - "emotions\n", - "emotive\n", - "empale\n", - "empaled\n", - "empaler\n", - "empalers\n", - "empales\n", - "empaling\n", - "empanel\n", - "empaneled\n", - "empaneling\n", - "empanelled\n", - "empanelling\n", - "empanels\n", - "empathic\n", - "empathies\n", - "empathy\n", - "emperies\n", - "emperor\n", - "emperors\n", - "empery\n", - "emphases\n", - "emphasis\n", - "emphasize\n", - "emphasized\n", - "emphasizes\n", - "emphasizing\n", - "emphatic\n", - "emphatically\n", - "emphysema\n", - "emphysemas\n", - "empire\n", - "empires\n", - "empiric\n", - "empirical\n", - "empirically\n", - "empirics\n", - "emplace\n", - "emplaced\n", - "emplaces\n", - "emplacing\n", - "emplane\n", - "emplaned\n", - "emplanes\n", - "emplaning\n", - "employ\n", - "employe\n", - "employed\n", - "employee\n", - "employees\n", - "employer\n", - "employers\n", - "employes\n", - "employing\n", - "employment\n", - "employments\n", - "employs\n", - "empoison\n", - "empoisoned\n", - "empoisoning\n", - "empoisons\n", - "emporia\n", - "emporium\n", - "emporiums\n", - "empower\n", - "empowered\n", - "empowering\n", - "empowers\n", - "empress\n", - "empresses\n", - "emprise\n", - "emprises\n", - "emprize\n", - "emprizes\n", - "emptied\n", - "emptier\n", - "emptiers\n", - "empties\n", - "emptiest\n", - "emptily\n", - "emptiness\n", - "emptinesses\n", - "emptings\n", - "emptins\n", - "empty\n", - "emptying\n", - "empurple\n", - "empurpled\n", - "empurples\n", - "empurpling\n", - "empyema\n", - "empyemas\n", - "empyemata\n", - "empyemic\n", - "empyreal\n", - "empyrean\n", - "empyreans\n", - "ems\n", - "emu\n", - "emulate\n", - "emulated\n", - "emulates\n", - "emulating\n", - "emulation\n", - "emulations\n", - "emulator\n", - "emulators\n", - "emulous\n", - "emulsification\n", - "emulsifications\n", - "emulsified\n", - "emulsifier\n", - "emulsifiers\n", - "emulsifies\n", - "emulsify\n", - "emulsifying\n", - "emulsion\n", - "emulsions\n", - "emulsive\n", - "emulsoid\n", - "emulsoids\n", - "emus\n", - "emyd\n", - "emyde\n", - "emydes\n", - "emyds\n", - "en\n", - "enable\n", - "enabled\n", - "enabler\n", - "enablers\n", - "enables\n", - "enabling\n", - "enact\n", - "enacted\n", - "enacting\n", - "enactive\n", - "enactment\n", - "enactments\n", - "enactor\n", - "enactors\n", - "enactory\n", - "enacts\n", - "enamel\n", - "enameled\n", - "enameler\n", - "enamelers\n", - "enameling\n", - "enamelled\n", - "enamelling\n", - "enamels\n", - "enamine\n", - "enamines\n", - "enamor\n", - "enamored\n", - "enamoring\n", - "enamors\n", - "enamour\n", - "enamoured\n", - "enamouring\n", - "enamours\n", - "enate\n", - "enates\n", - "enatic\n", - "enation\n", - "enations\n", - "encaenia\n", - "encage\n", - "encaged\n", - "encages\n", - "encaging\n", - "encamp\n", - "encamped\n", - "encamping\n", - "encampment\n", - "encampments\n", - "encamps\n", - "encase\n", - "encased\n", - "encases\n", - "encash\n", - "encashed\n", - "encashes\n", - "encashing\n", - "encasing\n", - "enceinte\n", - "enceintes\n", - "encephalitides\n", - "encephalitis\n", - "enchain\n", - "enchained\n", - "enchaining\n", - "enchains\n", - "enchant\n", - "enchanted\n", - "enchanter\n", - "enchanters\n", - "enchanting\n", - "enchantment\n", - "enchantments\n", - "enchantress\n", - "enchantresses\n", - "enchants\n", - "enchase\n", - "enchased\n", - "enchaser\n", - "enchasers\n", - "enchases\n", - "enchasing\n", - "enchoric\n", - "encina\n", - "encinal\n", - "encinas\n", - "encipher\n", - "enciphered\n", - "enciphering\n", - "enciphers\n", - "encircle\n", - "encircled\n", - "encircles\n", - "encircling\n", - "enclasp\n", - "enclasped\n", - "enclasping\n", - "enclasps\n", - "enclave\n", - "enclaves\n", - "enclitic\n", - "enclitics\n", - "enclose\n", - "enclosed\n", - "encloser\n", - "enclosers\n", - "encloses\n", - "enclosing\n", - "enclosure\n", - "enclosures\n", - "encode\n", - "encoded\n", - "encoder\n", - "encoders\n", - "encodes\n", - "encoding\n", - "encomia\n", - "encomium\n", - "encomiums\n", - "encompass\n", - "encompassed\n", - "encompasses\n", - "encompassing\n", - "encore\n", - "encored\n", - "encores\n", - "encoring\n", - "encounter\n", - "encountered\n", - "encountering\n", - "encounters\n", - "encourage\n", - "encouraged\n", - "encouragement\n", - "encouragements\n", - "encourages\n", - "encouraging\n", - "encroach\n", - "encroached\n", - "encroaches\n", - "encroaching\n", - "encroachment\n", - "encroachments\n", - "encrust\n", - "encrusted\n", - "encrusting\n", - "encrusts\n", - "encrypt\n", - "encrypted\n", - "encrypting\n", - "encrypts\n", - "encumber\n", - "encumberance\n", - "encumberances\n", - "encumbered\n", - "encumbering\n", - "encumbers\n", - "encyclic\n", - "encyclical\n", - "encyclicals\n", - "encyclics\n", - "encyclopedia\n", - "encyclopedias\n", - "encyclopedic\n", - "encyst\n", - "encysted\n", - "encysting\n", - "encysts\n", - "end\n", - "endamage\n", - "endamaged\n", - "endamages\n", - "endamaging\n", - "endameba\n", - "endamebae\n", - "endamebas\n", - "endanger\n", - "endangered\n", - "endangering\n", - "endangers\n", - "endarch\n", - "endarchies\n", - "endarchy\n", - "endbrain\n", - "endbrains\n", - "endear\n", - "endeared\n", - "endearing\n", - "endearment\n", - "endearments\n", - "endears\n", - "endeavor\n", - "endeavored\n", - "endeavoring\n", - "endeavors\n", - "ended\n", - "endemial\n", - "endemic\n", - "endemics\n", - "endemism\n", - "endemisms\n", - "ender\n", - "endermic\n", - "enders\n", - "endexine\n", - "endexines\n", - "ending\n", - "endings\n", - "endite\n", - "endited\n", - "endites\n", - "enditing\n", - "endive\n", - "endives\n", - "endleaf\n", - "endleaves\n", - "endless\n", - "endlessly\n", - "endlong\n", - "endmost\n", - "endocarp\n", - "endocarps\n", - "endocrine\n", - "endoderm\n", - "endoderms\n", - "endogamies\n", - "endogamy\n", - "endogen\n", - "endogenies\n", - "endogens\n", - "endogeny\n", - "endopod\n", - "endopods\n", - "endorse\n", - "endorsed\n", - "endorsee\n", - "endorsees\n", - "endorsement\n", - "endorsements\n", - "endorser\n", - "endorsers\n", - "endorses\n", - "endorsing\n", - "endorsor\n", - "endorsors\n", - "endosarc\n", - "endosarcs\n", - "endosmos\n", - "endosmoses\n", - "endosome\n", - "endosomes\n", - "endostea\n", - "endow\n", - "endowed\n", - "endower\n", - "endowers\n", - "endowing\n", - "endowment\n", - "endowments\n", - "endows\n", - "endozoic\n", - "endpaper\n", - "endpapers\n", - "endplate\n", - "endplates\n", - "endrin\n", - "endrins\n", - "ends\n", - "endue\n", - "endued\n", - "endues\n", - "enduing\n", - "endurable\n", - "endurance\n", - "endurances\n", - "endure\n", - "endured\n", - "endures\n", - "enduring\n", - "enduro\n", - "enduros\n", - "endways\n", - "endwise\n", - "enema\n", - "enemas\n", - "enemata\n", - "enemies\n", - "enemy\n", - "energetic\n", - "energetically\n", - "energid\n", - "energids\n", - "energies\n", - "energise\n", - "energised\n", - "energises\n", - "energising\n", - "energize\n", - "energized\n", - "energizes\n", - "energizing\n", - "energy\n", - "enervate\n", - "enervated\n", - "enervates\n", - "enervating\n", - "enervation\n", - "enervations\n", - "enface\n", - "enfaced\n", - "enfaces\n", - "enfacing\n", - "enfeeble\n", - "enfeebled\n", - "enfeebles\n", - "enfeebling\n", - "enfeoff\n", - "enfeoffed\n", - "enfeoffing\n", - "enfeoffs\n", - "enfetter\n", - "enfettered\n", - "enfettering\n", - "enfetters\n", - "enfever\n", - "enfevered\n", - "enfevering\n", - "enfevers\n", - "enfilade\n", - "enfiladed\n", - "enfilades\n", - "enfilading\n", - "enfin\n", - "enflame\n", - "enflamed\n", - "enflames\n", - "enflaming\n", - "enfold\n", - "enfolded\n", - "enfolder\n", - "enfolders\n", - "enfolding\n", - "enfolds\n", - "enforce\n", - "enforceable\n", - "enforced\n", - "enforcement\n", - "enforcements\n", - "enforcer\n", - "enforcers\n", - "enforces\n", - "enforcing\n", - "enframe\n", - "enframed\n", - "enframes\n", - "enframing\n", - "enfranchise\n", - "enfranchised\n", - "enfranchisement\n", - "enfranchisements\n", - "enfranchises\n", - "enfranchising\n", - "eng\n", - "engage\n", - "engaged\n", - "engagement\n", - "engagements\n", - "engager\n", - "engagers\n", - "engages\n", - "engaging\n", - "engender\n", - "engendered\n", - "engendering\n", - "engenders\n", - "engild\n", - "engilded\n", - "engilding\n", - "engilds\n", - "engine\n", - "engined\n", - "engineer\n", - "engineered\n", - "engineering\n", - "engineerings\n", - "engineers\n", - "engineries\n", - "enginery\n", - "engines\n", - "engining\n", - "enginous\n", - "engird\n", - "engirded\n", - "engirding\n", - "engirdle\n", - "engirdled\n", - "engirdles\n", - "engirdling\n", - "engirds\n", - "engirt\n", - "english\n", - "englished\n", - "englishes\n", - "englishing\n", - "englut\n", - "engluts\n", - "englutted\n", - "englutting\n", - "engorge\n", - "engorged\n", - "engorges\n", - "engorging\n", - "engraft\n", - "engrafted\n", - "engrafting\n", - "engrafts\n", - "engrail\n", - "engrailed\n", - "engrailing\n", - "engrails\n", - "engrain\n", - "engrained\n", - "engraining\n", - "engrains\n", - "engram\n", - "engramme\n", - "engrammes\n", - "engrams\n", - "engrave\n", - "engraved\n", - "engraver\n", - "engravers\n", - "engraves\n", - "engraving\n", - "engravings\n", - "engross\n", - "engrossed\n", - "engrosses\n", - "engrossing\n", - "engs\n", - "engulf\n", - "engulfed\n", - "engulfing\n", - "engulfs\n", - "enhalo\n", - "enhaloed\n", - "enhaloes\n", - "enhaloing\n", - "enhance\n", - "enhanced\n", - "enhancement\n", - "enhancements\n", - "enhancer\n", - "enhancers\n", - "enhances\n", - "enhancing\n", - "eniac\n", - "enigma\n", - "enigmas\n", - "enigmata\n", - "enigmatic\n", - "enisle\n", - "enisled\n", - "enisles\n", - "enisling\n", - "enjambed\n", - "enjoin\n", - "enjoined\n", - "enjoiner\n", - "enjoiners\n", - "enjoining\n", - "enjoins\n", - "enjoy\n", - "enjoyable\n", - "enjoyed\n", - "enjoyer\n", - "enjoyers\n", - "enjoying\n", - "enjoyment\n", - "enjoyments\n", - "enjoys\n", - "enkindle\n", - "enkindled\n", - "enkindles\n", - "enkindling\n", - "enlace\n", - "enlaced\n", - "enlaces\n", - "enlacing\n", - "enlarge\n", - "enlarged\n", - "enlargement\n", - "enlargements\n", - "enlarger\n", - "enlargers\n", - "enlarges\n", - "enlarging\n", - "enlighten\n", - "enlightened\n", - "enlightening\n", - "enlightenment\n", - "enlightenments\n", - "enlightens\n", - "enlist\n", - "enlisted\n", - "enlistee\n", - "enlistees\n", - "enlister\n", - "enlisters\n", - "enlisting\n", - "enlistment\n", - "enlistments\n", - "enlists\n", - "enliven\n", - "enlivened\n", - "enlivening\n", - "enlivens\n", - "enmesh\n", - "enmeshed\n", - "enmeshes\n", - "enmeshing\n", - "enmities\n", - "enmity\n", - "ennead\n", - "enneadic\n", - "enneads\n", - "enneagon\n", - "enneagons\n", - "ennoble\n", - "ennobled\n", - "ennobler\n", - "ennoblers\n", - "ennobles\n", - "ennobling\n", - "ennui\n", - "ennuis\n", - "ennuye\n", - "ennuyee\n", - "enol\n", - "enolase\n", - "enolases\n", - "enolic\n", - "enologies\n", - "enology\n", - "enols\n", - "enorm\n", - "enormities\n", - "enormity\n", - "enormous\n", - "enormously\n", - "enormousness\n", - "enormousnesses\n", - "enosis\n", - "enosises\n", - "enough\n", - "enoughs\n", - "enounce\n", - "enounced\n", - "enounces\n", - "enouncing\n", - "enow\n", - "enows\n", - "enplane\n", - "enplaned\n", - "enplanes\n", - "enplaning\n", - "enquire\n", - "enquired\n", - "enquires\n", - "enquiries\n", - "enquiring\n", - "enquiry\n", - "enrage\n", - "enraged\n", - "enrages\n", - "enraging\n", - "enrapt\n", - "enravish\n", - "enravished\n", - "enravishes\n", - "enravishing\n", - "enrich\n", - "enriched\n", - "enricher\n", - "enrichers\n", - "enriches\n", - "enriching\n", - "enrichment\n", - "enrichments\n", - "enrobe\n", - "enrobed\n", - "enrober\n", - "enrobers\n", - "enrobes\n", - "enrobing\n", - "enrol\n", - "enroll\n", - "enrolled\n", - "enrollee\n", - "enrollees\n", - "enroller\n", - "enrollers\n", - "enrolling\n", - "enrollment\n", - "enrollments\n", - "enrolls\n", - "enrols\n", - "enroot\n", - "enrooted\n", - "enrooting\n", - "enroots\n", - "ens\n", - "ensample\n", - "ensamples\n", - "ensconce\n", - "ensconced\n", - "ensconces\n", - "ensconcing\n", - "enscroll\n", - "enscrolled\n", - "enscrolling\n", - "enscrolls\n", - "ensemble\n", - "ensembles\n", - "enserf\n", - "enserfed\n", - "enserfing\n", - "enserfs\n", - "ensheath\n", - "ensheathed\n", - "ensheathing\n", - "ensheaths\n", - "enshrine\n", - "enshrined\n", - "enshrines\n", - "enshrining\n", - "enshroud\n", - "enshrouded\n", - "enshrouding\n", - "enshrouds\n", - "ensiform\n", - "ensign\n", - "ensigncies\n", - "ensigncy\n", - "ensigns\n", - "ensilage\n", - "ensilaged\n", - "ensilages\n", - "ensilaging\n", - "ensile\n", - "ensiled\n", - "ensiles\n", - "ensiling\n", - "enskied\n", - "enskies\n", - "ensky\n", - "enskyed\n", - "enskying\n", - "enslave\n", - "enslaved\n", - "enslavement\n", - "enslavements\n", - "enslaver\n", - "enslavers\n", - "enslaves\n", - "enslaving\n", - "ensnare\n", - "ensnared\n", - "ensnarer\n", - "ensnarers\n", - "ensnares\n", - "ensnaring\n", - "ensnarl\n", - "ensnarled\n", - "ensnarling\n", - "ensnarls\n", - "ensorcel\n", - "ensorceled\n", - "ensorceling\n", - "ensorcels\n", - "ensoul\n", - "ensouled\n", - "ensouling\n", - "ensouls\n", - "ensphere\n", - "ensphered\n", - "enspheres\n", - "ensphering\n", - "ensue\n", - "ensued\n", - "ensues\n", - "ensuing\n", - "ensure\n", - "ensured\n", - "ensurer\n", - "ensurers\n", - "ensures\n", - "ensuring\n", - "enswathe\n", - "enswathed\n", - "enswathes\n", - "enswathing\n", - "entail\n", - "entailed\n", - "entailer\n", - "entailers\n", - "entailing\n", - "entails\n", - "entameba\n", - "entamebae\n", - "entamebas\n", - "entangle\n", - "entangled\n", - "entanglement\n", - "entanglements\n", - "entangles\n", - "entangling\n", - "entases\n", - "entasia\n", - "entasias\n", - "entasis\n", - "entastic\n", - "entellus\n", - "entelluses\n", - "entente\n", - "ententes\n", - "enter\n", - "entera\n", - "enteral\n", - "entered\n", - "enterer\n", - "enterers\n", - "enteric\n", - "entering\n", - "enteron\n", - "enterons\n", - "enterprise\n", - "enterprises\n", - "enters\n", - "entertain\n", - "entertained\n", - "entertainer\n", - "entertainers\n", - "entertaining\n", - "entertainment\n", - "entertainments\n", - "entertains\n", - "enthalpies\n", - "enthalpy\n", - "enthetic\n", - "enthral\n", - "enthrall\n", - "enthralled\n", - "enthralling\n", - "enthralls\n", - "enthrals\n", - "enthrone\n", - "enthroned\n", - "enthrones\n", - "enthroning\n", - "enthuse\n", - "enthused\n", - "enthuses\n", - "enthusiasm\n", - "enthusiast\n", - "enthusiastic\n", - "enthusiastically\n", - "enthusiasts\n", - "enthusing\n", - "entia\n", - "entice\n", - "enticed\n", - "enticement\n", - "enticements\n", - "enticer\n", - "enticers\n", - "entices\n", - "enticing\n", - "entire\n", - "entirely\n", - "entires\n", - "entireties\n", - "entirety\n", - "entities\n", - "entitle\n", - "entitled\n", - "entitles\n", - "entitling\n", - "entity\n", - "entoderm\n", - "entoderms\n", - "entoil\n", - "entoiled\n", - "entoiling\n", - "entoils\n", - "entomb\n", - "entombed\n", - "entombing\n", - "entombs\n", - "entomological\n", - "entomologies\n", - "entomologist\n", - "entomologists\n", - "entomology\n", - "entopic\n", - "entourage\n", - "entourages\n", - "entozoa\n", - "entozoal\n", - "entozoan\n", - "entozoans\n", - "entozoic\n", - "entozoon\n", - "entrails\n", - "entrain\n", - "entrained\n", - "entraining\n", - "entrains\n", - "entrance\n", - "entranced\n", - "entrances\n", - "entrancing\n", - "entrant\n", - "entrants\n", - "entrap\n", - "entrapment\n", - "entrapments\n", - "entrapped\n", - "entrapping\n", - "entraps\n", - "entreat\n", - "entreated\n", - "entreaties\n", - "entreating\n", - "entreats\n", - "entreaty\n", - "entree\n", - "entrees\n", - "entrench\n", - "entrenched\n", - "entrenches\n", - "entrenching\n", - "entrenchment\n", - "entrenchments\n", - "entrepot\n", - "entrepots\n", - "entrepreneur\n", - "entrepreneurs\n", - "entresol\n", - "entresols\n", - "entries\n", - "entropies\n", - "entropy\n", - "entrust\n", - "entrusted\n", - "entrusting\n", - "entrusts\n", - "entry\n", - "entryway\n", - "entryways\n", - "entwine\n", - "entwined\n", - "entwines\n", - "entwining\n", - "entwist\n", - "entwisted\n", - "entwisting\n", - "entwists\n", - "enumerate\n", - "enumerated\n", - "enumerates\n", - "enumerating\n", - "enumeration\n", - "enumerations\n", - "enunciate\n", - "enunciated\n", - "enunciates\n", - "enunciating\n", - "enunciation\n", - "enunciations\n", - "enure\n", - "enured\n", - "enures\n", - "enuresis\n", - "enuresises\n", - "enuretic\n", - "enuring\n", - "envelop\n", - "envelope\n", - "enveloped\n", - "envelopes\n", - "enveloping\n", - "envelopment\n", - "envelopments\n", - "envelops\n", - "envenom\n", - "envenomed\n", - "envenoming\n", - "envenoms\n", - "enviable\n", - "enviably\n", - "envied\n", - "envier\n", - "enviers\n", - "envies\n", - "envious\n", - "environ\n", - "environed\n", - "environing\n", - "environment\n", - "environmental\n", - "environmentalist\n", - "environmentalists\n", - "environments\n", - "environs\n", - "envisage\n", - "envisaged\n", - "envisages\n", - "envisaging\n", - "envision\n", - "envisioned\n", - "envisioning\n", - "envisions\n", - "envoi\n", - "envois\n", - "envoy\n", - "envoys\n", - "envy\n", - "envying\n", - "enwheel\n", - "enwheeled\n", - "enwheeling\n", - "enwheels\n", - "enwind\n", - "enwinding\n", - "enwinds\n", - "enwomb\n", - "enwombed\n", - "enwombing\n", - "enwombs\n", - "enwound\n", - "enwrap\n", - "enwrapped\n", - "enwrapping\n", - "enwraps\n", - "enzootic\n", - "enzootics\n", - "enzym\n", - "enzyme\n", - "enzymes\n", - "enzymic\n", - "enzyms\n", - "eobiont\n", - "eobionts\n", - "eohippus\n", - "eohippuses\n", - "eolian\n", - "eolipile\n", - "eolipiles\n", - "eolith\n", - "eolithic\n", - "eoliths\n", - "eolopile\n", - "eolopiles\n", - "eon\n", - "eonian\n", - "eonism\n", - "eonisms\n", - "eons\n", - "eosin\n", - "eosine\n", - "eosines\n", - "eosinic\n", - "eosins\n", - "epact\n", - "epacts\n", - "eparch\n", - "eparchies\n", - "eparchs\n", - "eparchy\n", - "epaulet\n", - "epaulets\n", - "epee\n", - "epeeist\n", - "epeeists\n", - "epees\n", - "epeiric\n", - "epergne\n", - "epergnes\n", - "epha\n", - "ephah\n", - "ephahs\n", - "ephas\n", - "ephebe\n", - "ephebes\n", - "ephebi\n", - "ephebic\n", - "epheboi\n", - "ephebos\n", - "ephebus\n", - "ephedra\n", - "ephedras\n", - "ephedrin\n", - "ephedrins\n", - "ephemera\n", - "ephemerae\n", - "ephemeras\n", - "ephod\n", - "ephods\n", - "ephor\n", - "ephoral\n", - "ephorate\n", - "ephorates\n", - "ephori\n", - "ephors\n", - "epiblast\n", - "epiblasts\n", - "epibolic\n", - "epibolies\n", - "epiboly\n", - "epic\n", - "epical\n", - "epically\n", - "epicalyces\n", - "epicalyx\n", - "epicalyxes\n", - "epicarp\n", - "epicarps\n", - "epicedia\n", - "epicene\n", - "epicenes\n", - "epiclike\n", - "epicotyl\n", - "epicotyls\n", - "epics\n", - "epicure\n", - "epicurean\n", - "epicureans\n", - "epicures\n", - "epicycle\n", - "epicycles\n", - "epidemic\n", - "epidemics\n", - "epidemiology\n", - "epiderm\n", - "epidermis\n", - "epidermises\n", - "epiderms\n", - "epidote\n", - "epidotes\n", - "epidotic\n", - "epidural\n", - "epifauna\n", - "epifaunae\n", - "epifaunas\n", - "epifocal\n", - "epigeal\n", - "epigean\n", - "epigene\n", - "epigenic\n", - "epigeous\n", - "epigon\n", - "epigone\n", - "epigones\n", - "epigoni\n", - "epigonic\n", - "epigons\n", - "epigonus\n", - "epigram\n", - "epigrammatic\n", - "epigrams\n", - "epigraph\n", - "epigraphs\n", - "epigynies\n", - "epigyny\n", - "epilepsies\n", - "epilepsy\n", - "epileptic\n", - "epileptics\n", - "epilog\n", - "epilogs\n", - "epilogue\n", - "epilogued\n", - "epilogues\n", - "epiloguing\n", - "epimer\n", - "epimere\n", - "epimeres\n", - "epimeric\n", - "epimers\n", - "epimysia\n", - "epinaoi\n", - "epinaos\n", - "epinasties\n", - "epinasty\n", - "epiphanies\n", - "epiphany\n", - "epiphyte\n", - "epiphytes\n", - "episcia\n", - "episcias\n", - "episcopal\n", - "episcope\n", - "episcopes\n", - "episode\n", - "episodes\n", - "episodic\n", - "episomal\n", - "episome\n", - "episomes\n", - "epistasies\n", - "epistasy\n", - "epistaxis\n", - "epistle\n", - "epistler\n", - "epistlers\n", - "epistles\n", - "epistyle\n", - "epistyles\n", - "epitaph\n", - "epitaphs\n", - "epitases\n", - "epitasis\n", - "epitaxies\n", - "epitaxy\n", - "epithet\n", - "epithets\n", - "epitome\n", - "epitomes\n", - "epitomic\n", - "epitomize\n", - "epitomized\n", - "epitomizes\n", - "epitomizing\n", - "epizoa\n", - "epizoic\n", - "epizoism\n", - "epizoisms\n", - "epizoite\n", - "epizoites\n", - "epizoon\n", - "epizooties\n", - "epizooty\n", - "epoch\n", - "epochal\n", - "epochs\n", - "epode\n", - "epodes\n", - "eponym\n", - "eponymic\n", - "eponymies\n", - "eponyms\n", - "eponymy\n", - "epopee\n", - "epopees\n", - "epopoeia\n", - "epopoeias\n", - "epos\n", - "eposes\n", - "epoxide\n", - "epoxides\n", - "epoxied\n", - "epoxies\n", - "epoxy\n", - "epoxyed\n", - "epoxying\n", - "epsilon\n", - "epsilons\n", - "equabilities\n", - "equability\n", - "equable\n", - "equably\n", - "equal\n", - "equaled\n", - "equaling\n", - "equalise\n", - "equalised\n", - "equalises\n", - "equalising\n", - "equalities\n", - "equality\n", - "equalize\n", - "equalized\n", - "equalizes\n", - "equalizing\n", - "equalled\n", - "equalling\n", - "equally\n", - "equals\n", - "equanimities\n", - "equanimity\n", - "equate\n", - "equated\n", - "equates\n", - "equating\n", - "equation\n", - "equations\n", - "equator\n", - "equatorial\n", - "equators\n", - "equerries\n", - "equerry\n", - "equestrian\n", - "equestrians\n", - "equilateral\n", - "equilibrium\n", - "equine\n", - "equinely\n", - "equines\n", - "equinities\n", - "equinity\n", - "equinox\n", - "equinoxes\n", - "equip\n", - "equipage\n", - "equipages\n", - "equipment\n", - "equipments\n", - "equipped\n", - "equipper\n", - "equippers\n", - "equipping\n", - "equips\n", - "equiseta\n", - "equitable\n", - "equitant\n", - "equites\n", - "equities\n", - "equity\n", - "equivalence\n", - "equivalences\n", - "equivalent\n", - "equivalents\n", - "equivocal\n", - "equivocate\n", - "equivocated\n", - "equivocates\n", - "equivocating\n", - "equivocation\n", - "equivocations\n", - "equivoke\n", - "equivokes\n", - "er\n", - "era\n", - "eradiate\n", - "eradiated\n", - "eradiates\n", - "eradiating\n", - "eradicable\n", - "eradicate\n", - "eradicated\n", - "eradicates\n", - "eradicating\n", - "eras\n", - "erase\n", - "erased\n", - "eraser\n", - "erasers\n", - "erases\n", - "erasing\n", - "erasion\n", - "erasions\n", - "erasure\n", - "erasures\n", - "erbium\n", - "erbiums\n", - "ere\n", - "erect\n", - "erected\n", - "erecter\n", - "erecters\n", - "erectile\n", - "erecting\n", - "erection\n", - "erections\n", - "erective\n", - "erectly\n", - "erector\n", - "erectors\n", - "erects\n", - "erelong\n", - "eremite\n", - "eremites\n", - "eremitic\n", - "eremuri\n", - "eremurus\n", - "erenow\n", - "erepsin\n", - "erepsins\n", - "erethic\n", - "erethism\n", - "erethisms\n", - "erewhile\n", - "erg\n", - "ergastic\n", - "ergate\n", - "ergates\n", - "ergo\n", - "ergodic\n", - "ergot\n", - "ergotic\n", - "ergotism\n", - "ergotisms\n", - "ergots\n", - "ergs\n", - "erica\n", - "ericas\n", - "ericoid\n", - "erigeron\n", - "erigerons\n", - "eringo\n", - "eringoes\n", - "eringos\n", - "eristic\n", - "eristics\n", - "erlking\n", - "erlkings\n", - "ermine\n", - "ermined\n", - "ermines\n", - "ern\n", - "erne\n", - "ernes\n", - "erns\n", - "erode\n", - "eroded\n", - "erodent\n", - "erodes\n", - "erodible\n", - "eroding\n", - "erogenic\n", - "eros\n", - "erose\n", - "erosely\n", - "eroses\n", - "erosible\n", - "erosion\n", - "erosions\n", - "erosive\n", - "erotic\n", - "erotica\n", - "erotical\n", - "erotically\n", - "erotics\n", - "erotism\n", - "erotisms\n", - "err\n", - "errancies\n", - "errancy\n", - "errand\n", - "errands\n", - "errant\n", - "errantly\n", - "errantries\n", - "errantry\n", - "errants\n", - "errata\n", - "erratas\n", - "erratic\n", - "erratically\n", - "erratum\n", - "erred\n", - "errhine\n", - "errhines\n", - "erring\n", - "erringly\n", - "erroneous\n", - "erroneously\n", - "error\n", - "errors\n", - "errs\n", - "ers\n", - "ersatz\n", - "ersatzes\n", - "erses\n", - "erst\n", - "erstwhile\n", - "eruct\n", - "eructate\n", - "eructated\n", - "eructates\n", - "eructating\n", - "eructed\n", - "eructing\n", - "eructs\n", - "erudite\n", - "erudition\n", - "eruditions\n", - "erugo\n", - "erugos\n", - "erumpent\n", - "erupt\n", - "erupted\n", - "erupting\n", - "eruption\n", - "eruptions\n", - "eruptive\n", - "eruptives\n", - "erupts\n", - "ervil\n", - "ervils\n", - "eryngo\n", - "eryngoes\n", - "eryngos\n", - "erythema\n", - "erythemas\n", - "erythematous\n", - "erythrocytosis\n", - "erythron\n", - "erythrons\n", - "es\n", - "escalade\n", - "escaladed\n", - "escalades\n", - "escalading\n", - "escalate\n", - "escalated\n", - "escalates\n", - "escalating\n", - "escalation\n", - "escalations\n", - "escalator\n", - "escalators\n", - "escallop\n", - "escalloped\n", - "escalloping\n", - "escallops\n", - "escalop\n", - "escaloped\n", - "escaloping\n", - "escalops\n", - "escapade\n", - "escapades\n", - "escape\n", - "escaped\n", - "escapee\n", - "escapees\n", - "escaper\n", - "escapers\n", - "escapes\n", - "escaping\n", - "escapism\n", - "escapisms\n", - "escapist\n", - "escapists\n", - "escar\n", - "escargot\n", - "escargots\n", - "escarole\n", - "escaroles\n", - "escarp\n", - "escarped\n", - "escarping\n", - "escarpment\n", - "escarpments\n", - "escarps\n", - "escars\n", - "eschalot\n", - "eschalots\n", - "eschar\n", - "eschars\n", - "escheat\n", - "escheated\n", - "escheating\n", - "escheats\n", - "eschew\n", - "eschewal\n", - "eschewals\n", - "eschewed\n", - "eschewing\n", - "eschews\n", - "escolar\n", - "escolars\n", - "escort\n", - "escorted\n", - "escorting\n", - "escorts\n", - "escot\n", - "escoted\n", - "escoting\n", - "escots\n", - "escrow\n", - "escrowed\n", - "escrowing\n", - "escrows\n", - "escuage\n", - "escuages\n", - "escudo\n", - "escudos\n", - "esculent\n", - "esculents\n", - "eserine\n", - "eserines\n", - "eses\n", - "eskar\n", - "eskars\n", - "esker\n", - "eskers\n", - "esophagi\n", - "esophagus\n", - "esoteric\n", - "espalier\n", - "espaliered\n", - "espaliering\n", - "espaliers\n", - "espanol\n", - "espanoles\n", - "esparto\n", - "espartos\n", - "especial\n", - "especially\n", - "espial\n", - "espials\n", - "espied\n", - "espiegle\n", - "espies\n", - "espionage\n", - "espionages\n", - "espousal\n", - "espousals\n", - "espouse\n", - "espoused\n", - "espouser\n", - "espousers\n", - "espouses\n", - "espousing\n", - "espresso\n", - "espressos\n", - "esprit\n", - "esprits\n", - "espy\n", - "espying\n", - "esquire\n", - "esquired\n", - "esquires\n", - "esquiring\n", - "ess\n", - "essay\n", - "essayed\n", - "essayer\n", - "essayers\n", - "essaying\n", - "essayist\n", - "essayists\n", - "essays\n", - "essence\n", - "essences\n", - "essential\n", - "essentially\n", - "esses\n", - "essoin\n", - "essoins\n", - "essonite\n", - "essonites\n", - "establish\n", - "established\n", - "establishes\n", - "establishing\n", - "establishment\n", - "establishments\n", - "estancia\n", - "estancias\n", - "estate\n", - "estated\n", - "estates\n", - "estating\n", - "esteem\n", - "esteemed\n", - "esteeming\n", - "esteems\n", - "ester\n", - "esterase\n", - "esterases\n", - "esterified\n", - "esterifies\n", - "esterify\n", - "esterifying\n", - "esters\n", - "estheses\n", - "esthesia\n", - "esthesias\n", - "esthesis\n", - "esthesises\n", - "esthete\n", - "esthetes\n", - "esthetic\n", - "estimable\n", - "estimate\n", - "estimated\n", - "estimates\n", - "estimating\n", - "estimation\n", - "estimations\n", - "estimator\n", - "estimators\n", - "estival\n", - "estivate\n", - "estivated\n", - "estivates\n", - "estivating\n", - "estop\n", - "estopped\n", - "estoppel\n", - "estoppels\n", - "estopping\n", - "estops\n", - "estovers\n", - "estragon\n", - "estragons\n", - "estral\n", - "estrange\n", - "estranged\n", - "estrangement\n", - "estrangements\n", - "estranges\n", - "estranging\n", - "estray\n", - "estrayed\n", - "estraying\n", - "estrays\n", - "estreat\n", - "estreated\n", - "estreating\n", - "estreats\n", - "estrin\n", - "estrins\n", - "estriol\n", - "estriols\n", - "estrogen\n", - "estrogens\n", - "estrone\n", - "estrones\n", - "estrous\n", - "estrual\n", - "estrum\n", - "estrums\n", - "estrus\n", - "estruses\n", - "estuaries\n", - "estuary\n", - "esurient\n", - "et\n", - "eta\n", - "etagere\n", - "etageres\n", - "etamin\n", - "etamine\n", - "etamines\n", - "etamins\n", - "etape\n", - "etapes\n", - "etas\n", - "etatism\n", - "etatisms\n", - "etatist\n", - "etatists\n", - "etcetera\n", - "etceteras\n", - "etch\n", - "etched\n", - "etcher\n", - "etchers\n", - "etches\n", - "etching\n", - "etchings\n", - "eternal\n", - "eternally\n", - "eternals\n", - "eterne\n", - "eternise\n", - "eternised\n", - "eternises\n", - "eternising\n", - "eternities\n", - "eternity\n", - "eternize\n", - "eternized\n", - "eternizes\n", - "eternizing\n", - "etesian\n", - "etesians\n", - "eth\n", - "ethane\n", - "ethanes\n", - "ethanol\n", - "ethanols\n", - "ethene\n", - "ethenes\n", - "ether\n", - "ethereal\n", - "etheric\n", - "etherified\n", - "etherifies\n", - "etherify\n", - "etherifying\n", - "etherish\n", - "etherize\n", - "etherized\n", - "etherizes\n", - "etherizing\n", - "ethers\n", - "ethic\n", - "ethical\n", - "ethically\n", - "ethicals\n", - "ethician\n", - "ethicians\n", - "ethicist\n", - "ethicists\n", - "ethicize\n", - "ethicized\n", - "ethicizes\n", - "ethicizing\n", - "ethics\n", - "ethinyl\n", - "ethinyls\n", - "ethion\n", - "ethions\n", - "ethmoid\n", - "ethmoids\n", - "ethnarch\n", - "ethnarchs\n", - "ethnic\n", - "ethnical\n", - "ethnicities\n", - "ethnicity\n", - "ethnics\n", - "ethnologic\n", - "ethnological\n", - "ethnologies\n", - "ethnology\n", - "ethnos\n", - "ethnoses\n", - "ethologies\n", - "ethology\n", - "ethos\n", - "ethoses\n", - "ethoxy\n", - "ethoxyl\n", - "ethoxyls\n", - "eths\n", - "ethyl\n", - "ethylate\n", - "ethylated\n", - "ethylates\n", - "ethylating\n", - "ethylene\n", - "ethylenes\n", - "ethylic\n", - "ethyls\n", - "ethyne\n", - "ethynes\n", - "ethynyl\n", - "ethynyls\n", - "etiolate\n", - "etiolated\n", - "etiolates\n", - "etiolating\n", - "etiologies\n", - "etiology\n", - "etna\n", - "etnas\n", - "etoile\n", - "etoiles\n", - "etude\n", - "etudes\n", - "etui\n", - "etuis\n", - "etwee\n", - "etwees\n", - "etyma\n", - "etymological\n", - "etymologist\n", - "etymologists\n", - "etymon\n", - "etymons\n", - "eucaine\n", - "eucaines\n", - "eucalypt\n", - "eucalypti\n", - "eucalypts\n", - "eucalyptus\n", - "eucalyptuses\n", - "eucharis\n", - "eucharises\n", - "eucharistic\n", - "euchre\n", - "euchred\n", - "euchres\n", - "euchring\n", - "euclase\n", - "euclases\n", - "eucrite\n", - "eucrites\n", - "eucritic\n", - "eudaemon\n", - "eudaemons\n", - "eudemon\n", - "eudemons\n", - "eugenic\n", - "eugenics\n", - "eugenist\n", - "eugenists\n", - "eugenol\n", - "eugenols\n", - "euglena\n", - "euglenas\n", - "eulachan\n", - "eulachans\n", - "eulachon\n", - "eulachons\n", - "eulogia\n", - "eulogiae\n", - "eulogias\n", - "eulogies\n", - "eulogise\n", - "eulogised\n", - "eulogises\n", - "eulogising\n", - "eulogist\n", - "eulogistic\n", - "eulogists\n", - "eulogium\n", - "eulogiums\n", - "eulogize\n", - "eulogized\n", - "eulogizes\n", - "eulogizing\n", - "eulogy\n", - "eunuch\n", - "eunuchs\n", - "euonymus\n", - "euonymuses\n", - "eupatrid\n", - "eupatridae\n", - "eupatrids\n", - "eupepsia\n", - "eupepsias\n", - "eupepsies\n", - "eupepsy\n", - "eupeptic\n", - "euphemism\n", - "euphemisms\n", - "euphemistic\n", - "euphenic\n", - "euphonic\n", - "euphonies\n", - "euphonious\n", - "euphony\n", - "euphoria\n", - "euphorias\n", - "euphoric\n", - "euphotic\n", - "euphrasies\n", - "euphrasy\n", - "euphroe\n", - "euphroes\n", - "euphuism\n", - "euphuisms\n", - "euphuist\n", - "euphuists\n", - "euploid\n", - "euploidies\n", - "euploids\n", - "euploidy\n", - "eupnea\n", - "eupneas\n", - "eupneic\n", - "eupnoea\n", - "eupnoeas\n", - "eupnoeic\n", - "eureka\n", - "euripi\n", - "euripus\n", - "euro\n", - "europium\n", - "europiums\n", - "euros\n", - "eurythmies\n", - "eurythmy\n", - "eustacies\n", - "eustacy\n", - "eustatic\n", - "eustele\n", - "eusteles\n", - "eutaxies\n", - "eutaxy\n", - "eutectic\n", - "eutectics\n", - "euthanasia\n", - "euthanasias\n", - "eutrophies\n", - "eutrophy\n", - "euxenite\n", - "euxenites\n", - "evacuant\n", - "evacuants\n", - "evacuate\n", - "evacuated\n", - "evacuates\n", - "evacuating\n", - "evacuation\n", - "evacuations\n", - "evacuee\n", - "evacuees\n", - "evadable\n", - "evade\n", - "evaded\n", - "evader\n", - "evaders\n", - "evades\n", - "evadible\n", - "evading\n", - "evaluable\n", - "evaluate\n", - "evaluated\n", - "evaluates\n", - "evaluating\n", - "evaluation\n", - "evaluations\n", - "evaluator\n", - "evaluators\n", - "evanesce\n", - "evanesced\n", - "evanesces\n", - "evanescing\n", - "evangel\n", - "evangelical\n", - "evangelism\n", - "evangelisms\n", - "evangelist\n", - "evangelistic\n", - "evangelists\n", - "evangels\n", - "evanish\n", - "evanished\n", - "evanishes\n", - "evanishing\n", - "evaporate\n", - "evaporated\n", - "evaporates\n", - "evaporating\n", - "evaporation\n", - "evaporations\n", - "evaporative\n", - "evaporator\n", - "evaporators\n", - "evasion\n", - "evasions\n", - "evasive\n", - "evasiveness\n", - "evasivenesses\n", - "eve\n", - "evection\n", - "evections\n", - "even\n", - "evened\n", - "evener\n", - "eveners\n", - "evenest\n", - "evenfall\n", - "evenfalls\n", - "evening\n", - "evenings\n", - "evenly\n", - "evenness\n", - "evennesses\n", - "evens\n", - "evensong\n", - "evensongs\n", - "event\n", - "eventful\n", - "eventide\n", - "eventides\n", - "events\n", - "eventual\n", - "eventualities\n", - "eventuality\n", - "eventually\n", - "ever\n", - "evergreen\n", - "evergreens\n", - "everlasting\n", - "evermore\n", - "eversion\n", - "eversions\n", - "evert\n", - "everted\n", - "everting\n", - "evertor\n", - "evertors\n", - "everts\n", - "every\n", - "everybody\n", - "everyday\n", - "everyman\n", - "everymen\n", - "everyone\n", - "everything\n", - "everyway\n", - "everywhere\n", - "eves\n", - "evict\n", - "evicted\n", - "evictee\n", - "evictees\n", - "evicting\n", - "eviction\n", - "evictions\n", - "evictor\n", - "evictors\n", - "evicts\n", - "evidence\n", - "evidenced\n", - "evidences\n", - "evidencing\n", - "evident\n", - "evidently\n", - "evil\n", - "evildoer\n", - "evildoers\n", - "eviler\n", - "evilest\n", - "eviller\n", - "evillest\n", - "evilly\n", - "evilness\n", - "evilnesses\n", - "evils\n", - "evince\n", - "evinced\n", - "evinces\n", - "evincing\n", - "evincive\n", - "eviscerate\n", - "eviscerated\n", - "eviscerates\n", - "eviscerating\n", - "evisceration\n", - "eviscerations\n", - "evitable\n", - "evite\n", - "evited\n", - "evites\n", - "eviting\n", - "evocable\n", - "evocation\n", - "evocations\n", - "evocative\n", - "evocator\n", - "evocators\n", - "evoke\n", - "evoked\n", - "evoker\n", - "evokers\n", - "evokes\n", - "evoking\n", - "evolute\n", - "evolutes\n", - "evolution\n", - "evolutionary\n", - "evolutions\n", - "evolve\n", - "evolved\n", - "evolver\n", - "evolvers\n", - "evolves\n", - "evolving\n", - "evonymus\n", - "evonymuses\n", - "evulsion\n", - "evulsions\n", - "evzone\n", - "evzones\n", - "ewe\n", - "ewer\n", - "ewers\n", - "ewes\n", - "ex\n", - "exacerbate\n", - "exacerbated\n", - "exacerbates\n", - "exacerbating\n", - "exact\n", - "exacta\n", - "exactas\n", - "exacted\n", - "exacter\n", - "exacters\n", - "exactest\n", - "exacting\n", - "exaction\n", - "exactions\n", - "exactitude\n", - "exactitudes\n", - "exactly\n", - "exactness\n", - "exactnesses\n", - "exactor\n", - "exactors\n", - "exacts\n", - "exaggerate\n", - "exaggerated\n", - "exaggeratedly\n", - "exaggerates\n", - "exaggerating\n", - "exaggeration\n", - "exaggerations\n", - "exaggerator\n", - "exaggerators\n", - "exalt\n", - "exaltation\n", - "exaltations\n", - "exalted\n", - "exalter\n", - "exalters\n", - "exalting\n", - "exalts\n", - "exam\n", - "examen\n", - "examens\n", - "examination\n", - "examinations\n", - "examine\n", - "examined\n", - "examinee\n", - "examinees\n", - "examiner\n", - "examiners\n", - "examines\n", - "examining\n", - "example\n", - "exampled\n", - "examples\n", - "exampling\n", - "exams\n", - "exanthem\n", - "exanthems\n", - "exarch\n", - "exarchal\n", - "exarchies\n", - "exarchs\n", - "exarchy\n", - "exasperate\n", - "exasperated\n", - "exasperates\n", - "exasperating\n", - "exasperation\n", - "exasperations\n", - "excavate\n", - "excavated\n", - "excavates\n", - "excavating\n", - "excavation\n", - "excavations\n", - "excavator\n", - "excavators\n", - "exceed\n", - "exceeded\n", - "exceeder\n", - "exceeders\n", - "exceeding\n", - "exceedingly\n", - "exceeds\n", - "excel\n", - "excelled\n", - "excellence\n", - "excellences\n", - "excellency\n", - "excellent\n", - "excellently\n", - "excelling\n", - "excels\n", - "except\n", - "excepted\n", - "excepting\n", - "exception\n", - "exceptional\n", - "exceptionalally\n", - "exceptions\n", - "excepts\n", - "excerpt\n", - "excerpted\n", - "excerpting\n", - "excerpts\n", - "excess\n", - "excesses\n", - "excessive\n", - "excessively\n", - "exchange\n", - "exchangeable\n", - "exchanged\n", - "exchanges\n", - "exchanging\n", - "excide\n", - "excided\n", - "excides\n", - "exciding\n", - "exciple\n", - "exciples\n", - "excise\n", - "excised\n", - "excises\n", - "excising\n", - "excision\n", - "excisions\n", - "excitabilities\n", - "excitability\n", - "excitant\n", - "excitants\n", - "excitation\n", - "excitations\n", - "excite\n", - "excited\n", - "excitedly\n", - "excitement\n", - "excitements\n", - "exciter\n", - "exciters\n", - "excites\n", - "exciting\n", - "exciton\n", - "excitons\n", - "excitor\n", - "excitors\n", - "exclaim\n", - "exclaimed\n", - "exclaiming\n", - "exclaims\n", - "exclamation\n", - "exclamations\n", - "exclamatory\n", - "exclave\n", - "exclaves\n", - "exclude\n", - "excluded\n", - "excluder\n", - "excluders\n", - "excludes\n", - "excluding\n", - "exclusion\n", - "exclusions\n", - "exclusive\n", - "exclusively\n", - "exclusiveness\n", - "exclusivenesses\n", - "excommunicate\n", - "excommunicated\n", - "excommunicates\n", - "excommunicating\n", - "excommunication\n", - "excommunications\n", - "excrement\n", - "excremental\n", - "excrements\n", - "excreta\n", - "excretal\n", - "excrete\n", - "excreted\n", - "excreter\n", - "excreters\n", - "excretes\n", - "excreting\n", - "excretion\n", - "excretions\n", - "excretory\n", - "excruciating\n", - "excruciatingly\n", - "exculpate\n", - "exculpated\n", - "exculpates\n", - "exculpating\n", - "excursion\n", - "excursions\n", - "excuse\n", - "excused\n", - "excuser\n", - "excusers\n", - "excuses\n", - "excusing\n", - "exeat\n", - "exec\n", - "execrate\n", - "execrated\n", - "execrates\n", - "execrating\n", - "execs\n", - "executable\n", - "execute\n", - "executed\n", - "executer\n", - "executers\n", - "executes\n", - "executing\n", - "execution\n", - "executioner\n", - "executioners\n", - "executions\n", - "executive\n", - "executives\n", - "executor\n", - "executors\n", - "executrix\n", - "executrixes\n", - "exedra\n", - "exedrae\n", - "exegeses\n", - "exegesis\n", - "exegete\n", - "exegetes\n", - "exegetic\n", - "exempla\n", - "exemplar\n", - "exemplars\n", - "exemplary\n", - "exemplification\n", - "exemplifications\n", - "exemplified\n", - "exemplifies\n", - "exemplify\n", - "exemplifying\n", - "exemplum\n", - "exempt\n", - "exempted\n", - "exempting\n", - "exemption\n", - "exemptions\n", - "exempts\n", - "exequial\n", - "exequies\n", - "exequy\n", - "exercise\n", - "exercised\n", - "exerciser\n", - "exercisers\n", - "exercises\n", - "exercising\n", - "exergual\n", - "exergue\n", - "exergues\n", - "exert\n", - "exerted\n", - "exerting\n", - "exertion\n", - "exertions\n", - "exertive\n", - "exerts\n", - "exes\n", - "exhalant\n", - "exhalants\n", - "exhalation\n", - "exhalations\n", - "exhale\n", - "exhaled\n", - "exhalent\n", - "exhalents\n", - "exhales\n", - "exhaling\n", - "exhaust\n", - "exhausted\n", - "exhausting\n", - "exhaustion\n", - "exhaustions\n", - "exhaustive\n", - "exhausts\n", - "exhibit\n", - "exhibited\n", - "exhibiting\n", - "exhibition\n", - "exhibitions\n", - "exhibitor\n", - "exhibitors\n", - "exhibits\n", - "exhilarate\n", - "exhilarated\n", - "exhilarates\n", - "exhilarating\n", - "exhilaration\n", - "exhilarations\n", - "exhort\n", - "exhortation\n", - "exhortations\n", - "exhorted\n", - "exhorter\n", - "exhorters\n", - "exhorting\n", - "exhorts\n", - "exhumation\n", - "exhumations\n", - "exhume\n", - "exhumed\n", - "exhumer\n", - "exhumers\n", - "exhumes\n", - "exhuming\n", - "exigence\n", - "exigences\n", - "exigencies\n", - "exigency\n", - "exigent\n", - "exigible\n", - "exiguities\n", - "exiguity\n", - "exiguous\n", - "exile\n", - "exiled\n", - "exiles\n", - "exilian\n", - "exilic\n", - "exiling\n", - "eximious\n", - "exine\n", - "exines\n", - "exist\n", - "existed\n", - "existence\n", - "existences\n", - "existent\n", - "existents\n", - "existing\n", - "exists\n", - "exit\n", - "exited\n", - "exiting\n", - "exits\n", - "exocarp\n", - "exocarps\n", - "exocrine\n", - "exocrines\n", - "exoderm\n", - "exoderms\n", - "exodoi\n", - "exodos\n", - "exodus\n", - "exoduses\n", - "exoergic\n", - "exogamic\n", - "exogamies\n", - "exogamy\n", - "exogen\n", - "exogens\n", - "exonerate\n", - "exonerated\n", - "exonerates\n", - "exonerating\n", - "exoneration\n", - "exonerations\n", - "exorable\n", - "exorbitant\n", - "exorcise\n", - "exorcised\n", - "exorcises\n", - "exorcising\n", - "exorcism\n", - "exorcisms\n", - "exorcist\n", - "exorcists\n", - "exorcize\n", - "exorcized\n", - "exorcizes\n", - "exorcizing\n", - "exordia\n", - "exordial\n", - "exordium\n", - "exordiums\n", - "exosmic\n", - "exosmose\n", - "exosmoses\n", - "exospore\n", - "exospores\n", - "exoteric\n", - "exotic\n", - "exotica\n", - "exotically\n", - "exoticism\n", - "exoticisms\n", - "exotics\n", - "exotism\n", - "exotisms\n", - "exotoxic\n", - "exotoxin\n", - "exotoxins\n", - "expand\n", - "expanded\n", - "expander\n", - "expanders\n", - "expanding\n", - "expands\n", - "expanse\n", - "expanses\n", - "expansion\n", - "expansions\n", - "expansive\n", - "expansively\n", - "expansiveness\n", - "expansivenesses\n", - "expatriate\n", - "expatriated\n", - "expatriates\n", - "expatriating\n", - "expect\n", - "expectancies\n", - "expectancy\n", - "expectant\n", - "expectantly\n", - "expectation\n", - "expectations\n", - "expected\n", - "expecting\n", - "expects\n", - "expedient\n", - "expedients\n", - "expedious\n", - "expedite\n", - "expedited\n", - "expediter\n", - "expediters\n", - "expedites\n", - "expediting\n", - "expedition\n", - "expeditions\n", - "expeditious\n", - "expel\n", - "expelled\n", - "expellee\n", - "expellees\n", - "expeller\n", - "expellers\n", - "expelling\n", - "expels\n", - "expend\n", - "expended\n", - "expender\n", - "expenders\n", - "expendible\n", - "expending\n", - "expenditure\n", - "expenditures\n", - "expends\n", - "expense\n", - "expensed\n", - "expenses\n", - "expensing\n", - "expensive\n", - "expensively\n", - "experience\n", - "experiences\n", - "experiment\n", - "experimental\n", - "experimentation\n", - "experimentations\n", - "experimented\n", - "experimenter\n", - "experimenters\n", - "experimenting\n", - "experiments\n", - "expert\n", - "experted\n", - "experting\n", - "expertise\n", - "expertises\n", - "expertly\n", - "expertness\n", - "expertnesses\n", - "experts\n", - "expiable\n", - "expiate\n", - "expiated\n", - "expiates\n", - "expiating\n", - "expiation\n", - "expiations\n", - "expiator\n", - "expiators\n", - "expiration\n", - "expirations\n", - "expire\n", - "expired\n", - "expirer\n", - "expirers\n", - "expires\n", - "expiries\n", - "expiring\n", - "expiry\n", - "explain\n", - "explainable\n", - "explained\n", - "explaining\n", - "explains\n", - "explanation\n", - "explanations\n", - "explanatory\n", - "explant\n", - "explanted\n", - "explanting\n", - "explants\n", - "expletive\n", - "expletives\n", - "explicable\n", - "explicably\n", - "explicit\n", - "explicitly\n", - "explicitness\n", - "explicitnesses\n", - "explicits\n", - "explode\n", - "exploded\n", - "exploder\n", - "exploders\n", - "explodes\n", - "exploding\n", - "exploit\n", - "exploitation\n", - "exploitations\n", - "exploited\n", - "exploiting\n", - "exploits\n", - "exploration\n", - "explorations\n", - "exploratory\n", - "explore\n", - "explored\n", - "explorer\n", - "explorers\n", - "explores\n", - "exploring\n", - "explosion\n", - "explosions\n", - "explosive\n", - "explosively\n", - "explosives\n", - "expo\n", - "exponent\n", - "exponential\n", - "exponentially\n", - "exponents\n", - "export\n", - "exportation\n", - "exportations\n", - "exported\n", - "exporter\n", - "exporters\n", - "exporting\n", - "exports\n", - "expos\n", - "exposal\n", - "exposals\n", - "expose\n", - "exposed\n", - "exposer\n", - "exposers\n", - "exposes\n", - "exposing\n", - "exposit\n", - "exposited\n", - "expositing\n", - "exposition\n", - "expositions\n", - "exposits\n", - "exposure\n", - "exposures\n", - "expound\n", - "expounded\n", - "expounding\n", - "expounds\n", - "express\n", - "expressed\n", - "expresses\n", - "expressible\n", - "expressibly\n", - "expressing\n", - "expression\n", - "expressionless\n", - "expressions\n", - "expressive\n", - "expressiveness\n", - "expressivenesses\n", - "expressly\n", - "expressway\n", - "expressways\n", - "expulse\n", - "expulsed\n", - "expulses\n", - "expulsing\n", - "expulsion\n", - "expulsions\n", - "expunge\n", - "expunged\n", - "expunger\n", - "expungers\n", - "expunges\n", - "expunging\n", - "expurgate\n", - "expurgated\n", - "expurgates\n", - "expurgating\n", - "expurgation\n", - "expurgations\n", - "exquisite\n", - "exscind\n", - "exscinded\n", - "exscinding\n", - "exscinds\n", - "exsecant\n", - "exsecants\n", - "exsect\n", - "exsected\n", - "exsecting\n", - "exsects\n", - "exsert\n", - "exserted\n", - "exserting\n", - "exserts\n", - "extant\n", - "extemporaneous\n", - "extemporaneously\n", - "extend\n", - "extendable\n", - "extended\n", - "extender\n", - "extenders\n", - "extendible\n", - "extending\n", - "extends\n", - "extension\n", - "extensions\n", - "extensive\n", - "extensively\n", - "extensor\n", - "extensors\n", - "extent\n", - "extents\n", - "extenuate\n", - "extenuated\n", - "extenuates\n", - "extenuating\n", - "extenuation\n", - "extenuations\n", - "exterior\n", - "exteriors\n", - "exterminate\n", - "exterminated\n", - "exterminates\n", - "exterminating\n", - "extermination\n", - "exterminations\n", - "exterminator\n", - "exterminators\n", - "extern\n", - "external\n", - "externally\n", - "externals\n", - "externe\n", - "externes\n", - "externs\n", - "extinct\n", - "extincted\n", - "extincting\n", - "extinction\n", - "extinctions\n", - "extincts\n", - "extinguish\n", - "extinguishable\n", - "extinguished\n", - "extinguisher\n", - "extinguishers\n", - "extinguishes\n", - "extinguishing\n", - "extirpate\n", - "extirpated\n", - "extirpates\n", - "extirpating\n", - "extol\n", - "extoll\n", - "extolled\n", - "extoller\n", - "extollers\n", - "extolling\n", - "extolls\n", - "extols\n", - "extort\n", - "extorted\n", - "extorter\n", - "extorters\n", - "extorting\n", - "extortion\n", - "extortioner\n", - "extortioners\n", - "extortionist\n", - "extortionists\n", - "extortions\n", - "extorts\n", - "extra\n", - "extracampus\n", - "extraclassroom\n", - "extracommunity\n", - "extraconstitutional\n", - "extracontinental\n", - "extract\n", - "extractable\n", - "extracted\n", - "extracting\n", - "extraction\n", - "extractions\n", - "extractor\n", - "extractors\n", - "extracts\n", - "extracurricular\n", - "extradepartmental\n", - "extradiocesan\n", - "extradite\n", - "extradited\n", - "extradites\n", - "extraditing\n", - "extradition\n", - "extraditions\n", - "extrados\n", - "extradoses\n", - "extrafamilial\n", - "extragalactic\n", - "extragovernmental\n", - "extrahuman\n", - "extralegal\n", - "extramarital\n", - "extranational\n", - "extraneous\n", - "extraneously\n", - "extraordinarily\n", - "extraordinary\n", - "extraplanetary\n", - "extrapyramidal\n", - "extras\n", - "extrascholastic\n", - "extrasensory\n", - "extraterrestrial\n", - "extravagance\n", - "extravagances\n", - "extravagant\n", - "extravagantly\n", - "extravaganza\n", - "extravaganzas\n", - "extravasate\n", - "extravasated\n", - "extravasates\n", - "extravasating\n", - "extravasation\n", - "extravasations\n", - "extravehicular\n", - "extraversion\n", - "extraversions\n", - "extravert\n", - "extraverted\n", - "extraverts\n", - "extrema\n", - "extreme\n", - "extremely\n", - "extremer\n", - "extremes\n", - "extremest\n", - "extremities\n", - "extremity\n", - "extremum\n", - "extricable\n", - "extricate\n", - "extricated\n", - "extricates\n", - "extricating\n", - "extrication\n", - "extrications\n", - "extrorse\n", - "extrovert\n", - "extroverts\n", - "extrude\n", - "extruded\n", - "extruder\n", - "extruders\n", - "extrudes\n", - "extruding\n", - "exuberance\n", - "exuberances\n", - "exuberant\n", - "exuberantly\n", - "exudate\n", - "exudates\n", - "exudation\n", - "exudations\n", - "exude\n", - "exuded\n", - "exudes\n", - "exuding\n", - "exult\n", - "exultant\n", - "exulted\n", - "exulting\n", - "exults\n", - "exurb\n", - "exurban\n", - "exurbia\n", - "exurbias\n", - "exurbs\n", - "exuvia\n", - "exuviae\n", - "exuvial\n", - "exuviate\n", - "exuviated\n", - "exuviates\n", - "exuviating\n", - "exuvium\n", - "eyas\n", - "eyases\n", - "eye\n", - "eyeable\n", - "eyeball\n", - "eyeballed\n", - "eyeballing\n", - "eyeballs\n", - "eyebeam\n", - "eyebeams\n", - "eyebolt\n", - "eyebolts\n", - "eyebrow\n", - "eyebrows\n", - "eyecup\n", - "eyecups\n", - "eyed\n", - "eyedness\n", - "eyednesses\n", - "eyedropper\n", - "eyedroppers\n", - "eyeful\n", - "eyefuls\n", - "eyeglass\n", - "eyeglasses\n", - "eyehole\n", - "eyeholes\n", - "eyehook\n", - "eyehooks\n", - "eyeing\n", - "eyelash\n", - "eyelashes\n", - "eyeless\n", - "eyelet\n", - "eyelets\n", - "eyeletted\n", - "eyeletting\n", - "eyelid\n", - "eyelids\n", - "eyelike\n", - "eyeliner\n", - "eyeliners\n", - "eyen\n", - "eyepiece\n", - "eyepieces\n", - "eyepoint\n", - "eyepoints\n", - "eyer\n", - "eyers\n", - "eyes\n", - "eyeshade\n", - "eyeshades\n", - "eyeshot\n", - "eyeshots\n", - "eyesight\n", - "eyesights\n", - "eyesome\n", - "eyesore\n", - "eyesores\n", - "eyespot\n", - "eyespots\n", - "eyestalk\n", - "eyestalks\n", - "eyestone\n", - "eyestones\n", - "eyestrain\n", - "eyestrains\n", - "eyeteeth\n", - "eyetooth\n", - "eyewash\n", - "eyewashes\n", - "eyewater\n", - "eyewaters\n", - "eyewink\n", - "eyewinks\n", - "eyewitness\n", - "eying\n", - "eyne\n", - "eyra\n", - "eyras\n", - "eyre\n", - "eyres\n", - "eyrie\n", - "eyries\n", - "eyrir\n", - "eyry\n", - "fa\n", - "fable\n", - "fabled\n", - "fabler\n", - "fablers\n", - "fables\n", - "fabliau\n", - "fabliaux\n", - "fabling\n", - "fabric\n", - "fabricate\n", - "fabricated\n", - "fabricates\n", - "fabricating\n", - "fabrication\n", - "fabrications\n", - "fabrics\n", - "fabular\n", - "fabulist\n", - "fabulists\n", - "fabulous\n", - "fabulously\n", - "facade\n", - "facades\n", - "face\n", - "faceable\n", - "faced\n", - "facedown\n", - "faceless\n", - "facelessness\n", - "facelessnesses\n", - "facer\n", - "facers\n", - "faces\n", - "facesheet\n", - "facesheets\n", - "facet\n", - "facete\n", - "faceted\n", - "facetely\n", - "facetiae\n", - "faceting\n", - "facetious\n", - "facetiously\n", - "facets\n", - "facetted\n", - "facetting\n", - "faceup\n", - "facia\n", - "facial\n", - "facially\n", - "facials\n", - "facias\n", - "faciend\n", - "faciends\n", - "facies\n", - "facile\n", - "facilely\n", - "facilitate\n", - "facilitated\n", - "facilitates\n", - "facilitating\n", - "facilitator\n", - "facilitators\n", - "facilities\n", - "facility\n", - "facing\n", - "facings\n", - "facsimile\n", - "facsimiles\n", - "fact\n", - "factful\n", - "faction\n", - "factional\n", - "factionalism\n", - "factionalisms\n", - "factions\n", - "factious\n", - "factitious\n", - "factor\n", - "factored\n", - "factories\n", - "factoring\n", - "factors\n", - "factory\n", - "factotum\n", - "factotums\n", - "facts\n", - "factual\n", - "factually\n", - "facture\n", - "factures\n", - "facula\n", - "faculae\n", - "facular\n", - "faculties\n", - "faculty\n", - "fad\n", - "fadable\n", - "faddier\n", - "faddiest\n", - "faddish\n", - "faddism\n", - "faddisms\n", - "faddist\n", - "faddists\n", - "faddy\n", - "fade\n", - "fadeaway\n", - "fadeaways\n", - "faded\n", - "fadedly\n", - "fadeless\n", - "fader\n", - "faders\n", - "fades\n", - "fadge\n", - "fadged\n", - "fadges\n", - "fadging\n", - "fading\n", - "fadings\n", - "fado\n", - "fados\n", - "fads\n", - "faecal\n", - "faeces\n", - "faena\n", - "faenas\n", - "faerie\n", - "faeries\n", - "faery\n", - "fag\n", - "fagged\n", - "fagging\n", - "fagin\n", - "fagins\n", - "fagot\n", - "fagoted\n", - "fagoter\n", - "fagoters\n", - "fagoting\n", - "fagotings\n", - "fagots\n", - "fags\n", - "fahlband\n", - "fahlbands\n", - "fahrenheit\n", - "faience\n", - "faiences\n", - "fail\n", - "failed\n", - "failing\n", - "failings\n", - "faille\n", - "failles\n", - "fails\n", - "failure\n", - "failures\n", - "fain\n", - "faineant\n", - "faineants\n", - "fainer\n", - "fainest\n", - "faint\n", - "fainted\n", - "fainter\n", - "fainters\n", - "faintest\n", - "fainthearted\n", - "fainting\n", - "faintish\n", - "faintly\n", - "faintness\n", - "faintnesses\n", - "faints\n", - "fair\n", - "faired\n", - "fairer\n", - "fairest\n", - "fairground\n", - "fairgrounds\n", - "fairies\n", - "fairing\n", - "fairings\n", - "fairish\n", - "fairlead\n", - "fairleads\n", - "fairly\n", - "fairness\n", - "fairnesses\n", - "fairs\n", - "fairway\n", - "fairways\n", - "fairy\n", - "fairyism\n", - "fairyisms\n", - "fairyland\n", - "fairylands\n", - "faith\n", - "faithed\n", - "faithful\n", - "faithfully\n", - "faithfulness\n", - "faithfulnesses\n", - "faithfuls\n", - "faithing\n", - "faithless\n", - "faithlessly\n", - "faithlessness\n", - "faithlessnesses\n", - "faiths\n", - "faitour\n", - "faitours\n", - "fake\n", - "faked\n", - "fakeer\n", - "fakeers\n", - "faker\n", - "fakeries\n", - "fakers\n", - "fakery\n", - "fakes\n", - "faking\n", - "fakir\n", - "fakirs\n", - "falbala\n", - "falbalas\n", - "falcate\n", - "falcated\n", - "falchion\n", - "falchions\n", - "falcon\n", - "falconer\n", - "falconers\n", - "falconet\n", - "falconets\n", - "falconries\n", - "falconry\n", - "falcons\n", - "falderal\n", - "falderals\n", - "falderol\n", - "falderols\n", - "fall\n", - "fallacies\n", - "fallacious\n", - "fallacy\n", - "fallal\n", - "fallals\n", - "fallback\n", - "fallbacks\n", - "fallen\n", - "faller\n", - "fallers\n", - "fallfish\n", - "fallfishes\n", - "fallible\n", - "fallibly\n", - "falling\n", - "falloff\n", - "falloffs\n", - "fallout\n", - "fallouts\n", - "fallow\n", - "fallowed\n", - "fallowing\n", - "fallows\n", - "falls\n", - "false\n", - "falsehood\n", - "falsehoods\n", - "falsely\n", - "falseness\n", - "falsenesses\n", - "falser\n", - "falsest\n", - "falsetto\n", - "falsettos\n", - "falsie\n", - "falsies\n", - "falsification\n", - "falsifications\n", - "falsified\n", - "falsifies\n", - "falsify\n", - "falsifying\n", - "falsities\n", - "falsity\n", - "faltboat\n", - "faltboats\n", - "falter\n", - "faltered\n", - "falterer\n", - "falterers\n", - "faltering\n", - "falters\n", - "fame\n", - "famed\n", - "fameless\n", - "fames\n", - "famiglietti\n", - "familial\n", - "familiar\n", - "familiarities\n", - "familiarity\n", - "familiarize\n", - "familiarized\n", - "familiarizes\n", - "familiarizing\n", - "familiarly\n", - "familiars\n", - "families\n", - "family\n", - "famine\n", - "famines\n", - "faming\n", - "famish\n", - "famished\n", - "famishes\n", - "famishing\n", - "famous\n", - "famously\n", - "famuli\n", - "famulus\n", - "fan\n", - "fanatic\n", - "fanatical\n", - "fanaticism\n", - "fanaticisms\n", - "fanatics\n", - "fancied\n", - "fancier\n", - "fanciers\n", - "fancies\n", - "fanciest\n", - "fanciful\n", - "fancifully\n", - "fancily\n", - "fancy\n", - "fancying\n", - "fandango\n", - "fandangos\n", - "fandom\n", - "fandoms\n", - "fane\n", - "fanega\n", - "fanegada\n", - "fanegadas\n", - "fanegas\n", - "fanes\n", - "fanfare\n", - "fanfares\n", - "fanfaron\n", - "fanfarons\n", - "fanfold\n", - "fanfolds\n", - "fang\n", - "fanga\n", - "fangas\n", - "fanged\n", - "fangless\n", - "fanglike\n", - "fangs\n", - "fanion\n", - "fanions\n", - "fanjet\n", - "fanjets\n", - "fanlight\n", - "fanlights\n", - "fanlike\n", - "fanned\n", - "fanner\n", - "fannies\n", - "fanning\n", - "fanny\n", - "fano\n", - "fanon\n", - "fanons\n", - "fanos\n", - "fans\n", - "fantail\n", - "fantails\n", - "fantasia\n", - "fantasias\n", - "fantasie\n", - "fantasied\n", - "fantasies\n", - "fantasize\n", - "fantasized\n", - "fantasizes\n", - "fantasizing\n", - "fantasm\n", - "fantasms\n", - "fantast\n", - "fantastic\n", - "fantastical\n", - "fantastically\n", - "fantasts\n", - "fantasy\n", - "fantasying\n", - "fantod\n", - "fantods\n", - "fantom\n", - "fantoms\n", - "fanum\n", - "fanums\n", - "fanwise\n", - "fanwort\n", - "fanworts\n", - "faqir\n", - "faqirs\n", - "faquir\n", - "faquirs\n", - "far\n", - "farad\n", - "faradaic\n", - "faraday\n", - "faradays\n", - "faradic\n", - "faradise\n", - "faradised\n", - "faradises\n", - "faradising\n", - "faradism\n", - "faradisms\n", - "faradize\n", - "faradized\n", - "faradizes\n", - "faradizing\n", - "farads\n", - "faraway\n", - "farce\n", - "farced\n", - "farcer\n", - "farcers\n", - "farces\n", - "farceur\n", - "farceurs\n", - "farci\n", - "farcical\n", - "farcie\n", - "farcies\n", - "farcing\n", - "farcy\n", - "fard\n", - "farded\n", - "fardel\n", - "fardels\n", - "farding\n", - "fards\n", - "fare\n", - "fared\n", - "farer\n", - "farers\n", - "fares\n", - "farewell\n", - "farewelled\n", - "farewelling\n", - "farewells\n", - "farfal\n", - "farfals\n", - "farfel\n", - "farfels\n", - "farfetched\n", - "farina\n", - "farinas\n", - "faring\n", - "farinha\n", - "farinhas\n", - "farinose\n", - "farl\n", - "farle\n", - "farles\n", - "farls\n", - "farm\n", - "farmable\n", - "farmed\n", - "farmer\n", - "farmers\n", - "farmhand\n", - "farmhands\n", - "farmhouse\n", - "farmhouses\n", - "farming\n", - "farmings\n", - "farmland\n", - "farmlands\n", - "farms\n", - "farmstead\n", - "farmsteads\n", - "farmyard\n", - "farmyards\n", - "farnesol\n", - "farnesols\n", - "farness\n", - "farnesses\n", - "faro\n", - "faros\n", - "farouche\n", - "farrago\n", - "farragoes\n", - "farrier\n", - "farrieries\n", - "farriers\n", - "farriery\n", - "farrow\n", - "farrowed\n", - "farrowing\n", - "farrows\n", - "farsighted\n", - "farsightedness\n", - "farsightednesses\n", - "fart\n", - "farted\n", - "farther\n", - "farthermost\n", - "farthest\n", - "farthing\n", - "farthings\n", - "farting\n", - "farts\n", - "fas\n", - "fasces\n", - "fascia\n", - "fasciae\n", - "fascial\n", - "fascias\n", - "fasciate\n", - "fascicle\n", - "fascicled\n", - "fascicles\n", - "fascinate\n", - "fascinated\n", - "fascinates\n", - "fascinating\n", - "fascination\n", - "fascinations\n", - "fascine\n", - "fascines\n", - "fascism\n", - "fascisms\n", - "fascist\n", - "fascistic\n", - "fascists\n", - "fash\n", - "fashed\n", - "fashes\n", - "fashing\n", - "fashion\n", - "fashionable\n", - "fashionably\n", - "fashioned\n", - "fashioning\n", - "fashions\n", - "fashious\n", - "fast\n", - "fastback\n", - "fastbacks\n", - "fastball\n", - "fastballs\n", - "fasted\n", - "fasten\n", - "fastened\n", - "fastener\n", - "fasteners\n", - "fastening\n", - "fastenings\n", - "fastens\n", - "faster\n", - "fastest\n", - "fastiduous\n", - "fastiduously\n", - "fastiduousness\n", - "fastiduousnesses\n", - "fasting\n", - "fastings\n", - "fastness\n", - "fastnesses\n", - "fasts\n", - "fastuous\n", - "fat\n", - "fatal\n", - "fatalism\n", - "fatalisms\n", - "fatalist\n", - "fatalistic\n", - "fatalists\n", - "fatalities\n", - "fatality\n", - "fatally\n", - "fatback\n", - "fatbacks\n", - "fatbird\n", - "fatbirds\n", - "fate\n", - "fated\n", - "fateful\n", - "fatefully\n", - "fates\n", - "fathead\n", - "fatheads\n", - "father\n", - "fathered\n", - "fatherhood\n", - "fatherhoods\n", - "fathering\n", - "fatherland\n", - "fatherlands\n", - "fatherless\n", - "fatherly\n", - "fathers\n", - "fathom\n", - "fathomable\n", - "fathomed\n", - "fathoming\n", - "fathomless\n", - "fathoms\n", - "fatidic\n", - "fatigue\n", - "fatigued\n", - "fatigues\n", - "fatiguing\n", - "fating\n", - "fatless\n", - "fatlike\n", - "fatling\n", - "fatlings\n", - "fatly\n", - "fatness\n", - "fatnesses\n", - "fats\n", - "fatso\n", - "fatsoes\n", - "fatsos\n", - "fatstock\n", - "fatstocks\n", - "fatted\n", - "fatten\n", - "fattened\n", - "fattener\n", - "fatteners\n", - "fattening\n", - "fattens\n", - "fatter\n", - "fattest\n", - "fattier\n", - "fatties\n", - "fattiest\n", - "fattily\n", - "fatting\n", - "fattish\n", - "fatty\n", - "fatuities\n", - "fatuity\n", - "fatuous\n", - "fatuously\n", - "fatuousness\n", - "fatuousnesses\n", - "faubourg\n", - "faubourgs\n", - "faucal\n", - "faucals\n", - "fauces\n", - "faucet\n", - "faucets\n", - "faucial\n", - "faugh\n", - "fauld\n", - "faulds\n", - "fault\n", - "faulted\n", - "faultfinder\n", - "faultfinders\n", - "faultfinding\n", - "faultfindings\n", - "faultier\n", - "faultiest\n", - "faultily\n", - "faulting\n", - "faultless\n", - "faultlessly\n", - "faults\n", - "faulty\n", - "faun\n", - "fauna\n", - "faunae\n", - "faunal\n", - "faunally\n", - "faunas\n", - "faunlike\n", - "fauns\n", - "fauteuil\n", - "fauteuils\n", - "fauve\n", - "fauves\n", - "fauvism\n", - "fauvisms\n", - "fauvist\n", - "fauvists\n", - "favela\n", - "favelas\n", - "favonian\n", - "favor\n", - "favorable\n", - "favorably\n", - "favored\n", - "favorer\n", - "favorers\n", - "favoring\n", - "favorite\n", - "favorites\n", - "favoritism\n", - "favoritisms\n", - "favors\n", - "favour\n", - "favoured\n", - "favourer\n", - "favourers\n", - "favouring\n", - "favours\n", - "favus\n", - "favuses\n", - "fawn\n", - "fawned\n", - "fawner\n", - "fawners\n", - "fawnier\n", - "fawniest\n", - "fawning\n", - "fawnlike\n", - "fawns\n", - "fawny\n", - "fax\n", - "faxed\n", - "faxes\n", - "faxing\n", - "fay\n", - "fayalite\n", - "fayalites\n", - "fayed\n", - "faying\n", - "fays\n", - "faze\n", - "fazed\n", - "fazenda\n", - "fazendas\n", - "fazes\n", - "fazing\n", - "feal\n", - "fealties\n", - "fealty\n", - "fear\n", - "feared\n", - "fearer\n", - "fearers\n", - "fearful\n", - "fearfuller\n", - "fearfullest\n", - "fearfully\n", - "fearing\n", - "fearless\n", - "fearlessly\n", - "fearlessness\n", - "fearlessnesses\n", - "fears\n", - "fearsome\n", - "feasance\n", - "feasances\n", - "fease\n", - "feased\n", - "feases\n", - "feasibilities\n", - "feasibility\n", - "feasible\n", - "feasibly\n", - "feasing\n", - "feast\n", - "feasted\n", - "feaster\n", - "feasters\n", - "feastful\n", - "feasting\n", - "feasts\n", - "feat\n", - "feater\n", - "featest\n", - "feather\n", - "feathered\n", - "featherier\n", - "featheriest\n", - "feathering\n", - "featherless\n", - "feathers\n", - "feathery\n", - "featlier\n", - "featliest\n", - "featly\n", - "feats\n", - "feature\n", - "featured\n", - "featureless\n", - "features\n", - "featuring\n", - "feaze\n", - "feazed\n", - "feazes\n", - "feazing\n", - "febrific\n", - "febrile\n", - "fecal\n", - "feces\n", - "fecial\n", - "fecials\n", - "feck\n", - "feckless\n", - "feckly\n", - "fecks\n", - "fecula\n", - "feculae\n", - "feculent\n", - "fecund\n", - "fecundities\n", - "fecundity\n", - "fed\n", - "fedayee\n", - "fedayeen\n", - "federacies\n", - "federacy\n", - "federal\n", - "federalism\n", - "federalisms\n", - "federalist\n", - "federalists\n", - "federally\n", - "federals\n", - "federate\n", - "federated\n", - "federates\n", - "federating\n", - "federation\n", - "federations\n", - "fedora\n", - "fedoras\n", - "feds\n", - "fee\n", - "feeble\n", - "feebleminded\n", - "feeblemindedness\n", - "feeblemindednesses\n", - "feebleness\n", - "feeblenesses\n", - "feebler\n", - "feeblest\n", - "feeblish\n", - "feebly\n", - "feed\n", - "feedable\n", - "feedback\n", - "feedbacks\n", - "feedbag\n", - "feedbags\n", - "feedbox\n", - "feedboxes\n", - "feeder\n", - "feeders\n", - "feeding\n", - "feedlot\n", - "feedlots\n", - "feeds\n", - "feeing\n", - "feel\n", - "feeler\n", - "feelers\n", - "feeless\n", - "feeling\n", - "feelings\n", - "feels\n", - "fees\n", - "feet\n", - "feetless\n", - "feeze\n", - "feezed\n", - "feezes\n", - "feezing\n", - "feign\n", - "feigned\n", - "feigner\n", - "feigners\n", - "feigning\n", - "feigns\n", - "feint\n", - "feinted\n", - "feinting\n", - "feints\n", - "feirie\n", - "feist\n", - "feistier\n", - "feistiest\n", - "feists\n", - "feisty\n", - "feldspar\n", - "feldspars\n", - "felicitate\n", - "felicitated\n", - "felicitates\n", - "felicitating\n", - "felicitation\n", - "felicitations\n", - "felicities\n", - "felicitous\n", - "felicitously\n", - "felicity\n", - "felid\n", - "felids\n", - "feline\n", - "felinely\n", - "felines\n", - "felinities\n", - "felinity\n", - "fell\n", - "fella\n", - "fellable\n", - "fellah\n", - "fellaheen\n", - "fellahin\n", - "fellahs\n", - "fellas\n", - "fellatio\n", - "fellatios\n", - "felled\n", - "feller\n", - "fellers\n", - "fellest\n", - "fellies\n", - "felling\n", - "fellness\n", - "fellnesses\n", - "felloe\n", - "felloes\n", - "fellow\n", - "fellowed\n", - "fellowing\n", - "fellowly\n", - "fellowman\n", - "fellowmen\n", - "fellows\n", - "fellowship\n", - "fellowships\n", - "fells\n", - "felly\n", - "felon\n", - "felonies\n", - "felonious\n", - "felonries\n", - "felonry\n", - "felons\n", - "felony\n", - "felsite\n", - "felsites\n", - "felsitic\n", - "felspar\n", - "felspars\n", - "felstone\n", - "felstones\n", - "felt\n", - "felted\n", - "felting\n", - "feltings\n", - "felts\n", - "felucca\n", - "feluccas\n", - "felwort\n", - "felworts\n", - "female\n", - "females\n", - "feme\n", - "femes\n", - "feminacies\n", - "feminacy\n", - "feminie\n", - "feminine\n", - "feminines\n", - "femininities\n", - "femininity\n", - "feminise\n", - "feminised\n", - "feminises\n", - "feminising\n", - "feminism\n", - "feminisms\n", - "feminist\n", - "feminists\n", - "feminities\n", - "feminity\n", - "feminization\n", - "feminizations\n", - "feminize\n", - "feminized\n", - "feminizes\n", - "feminizing\n", - "femme\n", - "femmes\n", - "femora\n", - "femoral\n", - "femur\n", - "femurs\n", - "fen\n", - "fenagle\n", - "fenagled\n", - "fenagles\n", - "fenagling\n", - "fence\n", - "fenced\n", - "fencer\n", - "fencers\n", - "fences\n", - "fencible\n", - "fencibles\n", - "fencing\n", - "fencings\n", - "fend\n", - "fended\n", - "fender\n", - "fendered\n", - "fenders\n", - "fending\n", - "fends\n", - "fenestra\n", - "fenestrae\n", - "fennec\n", - "fennecs\n", - "fennel\n", - "fennels\n", - "fenny\n", - "fens\n", - "feod\n", - "feodaries\n", - "feodary\n", - "feods\n", - "feoff\n", - "feoffed\n", - "feoffee\n", - "feoffees\n", - "feoffer\n", - "feoffers\n", - "feoffing\n", - "feoffor\n", - "feoffors\n", - "feoffs\n", - "fer\n", - "feracities\n", - "feracity\n", - "feral\n", - "ferbam\n", - "ferbams\n", - "fere\n", - "feres\n", - "feretories\n", - "feretory\n", - "feria\n", - "feriae\n", - "ferial\n", - "ferias\n", - "ferine\n", - "ferities\n", - "ferity\n", - "ferlie\n", - "ferlies\n", - "ferly\n", - "fermata\n", - "fermatas\n", - "fermate\n", - "ferment\n", - "fermentation\n", - "fermentations\n", - "fermented\n", - "fermenting\n", - "ferments\n", - "fermi\n", - "fermion\n", - "fermions\n", - "fermis\n", - "fermium\n", - "fermiums\n", - "fern\n", - "ferneries\n", - "fernery\n", - "fernier\n", - "ferniest\n", - "fernless\n", - "fernlike\n", - "ferns\n", - "ferny\n", - "ferocious\n", - "ferociously\n", - "ferociousness\n", - "ferociousnesses\n", - "ferocities\n", - "ferocity\n", - "ferrate\n", - "ferrates\n", - "ferrel\n", - "ferreled\n", - "ferreling\n", - "ferrelled\n", - "ferrelling\n", - "ferrels\n", - "ferreous\n", - "ferret\n", - "ferreted\n", - "ferreter\n", - "ferreters\n", - "ferreting\n", - "ferrets\n", - "ferrety\n", - "ferriage\n", - "ferriages\n", - "ferric\n", - "ferried\n", - "ferries\n", - "ferrite\n", - "ferrites\n", - "ferritic\n", - "ferritin\n", - "ferritins\n", - "ferrous\n", - "ferrule\n", - "ferruled\n", - "ferrules\n", - "ferruling\n", - "ferrum\n", - "ferrums\n", - "ferry\n", - "ferryboat\n", - "ferryboats\n", - "ferrying\n", - "ferryman\n", - "ferrymen\n", - "fertile\n", - "fertilities\n", - "fertility\n", - "fertilization\n", - "fertilizations\n", - "fertilize\n", - "fertilized\n", - "fertilizer\n", - "fertilizers\n", - "fertilizes\n", - "fertilizing\n", - "ferula\n", - "ferulae\n", - "ferulas\n", - "ferule\n", - "feruled\n", - "ferules\n", - "feruling\n", - "fervencies\n", - "fervency\n", - "fervent\n", - "fervently\n", - "fervid\n", - "fervidly\n", - "fervor\n", - "fervors\n", - "fervour\n", - "fervours\n", - "fescue\n", - "fescues\n", - "fess\n", - "fesse\n", - "fessed\n", - "fesses\n", - "fessing\n", - "fesswise\n", - "festal\n", - "festally\n", - "fester\n", - "festered\n", - "festering\n", - "festers\n", - "festival\n", - "festivals\n", - "festive\n", - "festively\n", - "festivities\n", - "festivity\n", - "festoon\n", - "festooned\n", - "festooning\n", - "festoons\n", - "fet\n", - "feta\n", - "fetal\n", - "fetas\n", - "fetation\n", - "fetations\n", - "fetch\n", - "fetched\n", - "fetcher\n", - "fetchers\n", - "fetches\n", - "fetching\n", - "fetchingly\n", - "fete\n", - "feted\n", - "feterita\n", - "feteritas\n", - "fetes\n", - "fetial\n", - "fetiales\n", - "fetialis\n", - "fetials\n", - "fetich\n", - "fetiches\n", - "feticide\n", - "feticides\n", - "fetid\n", - "fetidly\n", - "feting\n", - "fetish\n", - "fetishes\n", - "fetlock\n", - "fetlocks\n", - "fetologies\n", - "fetology\n", - "fetor\n", - "fetors\n", - "fets\n", - "fetted\n", - "fetter\n", - "fettered\n", - "fetterer\n", - "fetterers\n", - "fettering\n", - "fetters\n", - "fetting\n", - "fettle\n", - "fettled\n", - "fettles\n", - "fettling\n", - "fettlings\n", - "fetus\n", - "fetuses\n", - "feu\n", - "feuar\n", - "feuars\n", - "feud\n", - "feudal\n", - "feudalism\n", - "feudalistic\n", - "feudally\n", - "feudaries\n", - "feudary\n", - "feuded\n", - "feuding\n", - "feudist\n", - "feudists\n", - "feuds\n", - "feued\n", - "feuing\n", - "feus\n", - "fever\n", - "fevered\n", - "feverfew\n", - "feverfews\n", - "fevering\n", - "feverish\n", - "feverous\n", - "fevers\n", - "few\n", - "fewer\n", - "fewest\n", - "fewness\n", - "fewnesses\n", - "fewtrils\n", - "fey\n", - "feyer\n", - "feyest\n", - "feyness\n", - "feynesses\n", - "fez\n", - "fezes\n", - "fezzed\n", - "fezzes\n", - "fiacre\n", - "fiacres\n", - "fiance\n", - "fiancee\n", - "fiancees\n", - "fiances\n", - "fiar\n", - "fiars\n", - "fiaschi\n", - "fiasco\n", - "fiascoes\n", - "fiascos\n", - "fiat\n", - "fiats\n", - "fib\n", - "fibbed\n", - "fibber\n", - "fibbers\n", - "fibbing\n", - "fiber\n", - "fiberboard\n", - "fiberboards\n", - "fibered\n", - "fiberglass\n", - "fiberglasses\n", - "fiberize\n", - "fiberized\n", - "fiberizes\n", - "fiberizing\n", - "fibers\n", - "fibre\n", - "fibres\n", - "fibril\n", - "fibrilla\n", - "fibrillae\n", - "fibrillate\n", - "fibrillated\n", - "fibrillates\n", - "fibrillating\n", - "fibrillation\n", - "fibrillations\n", - "fibrils\n", - "fibrin\n", - "fibrins\n", - "fibrocystic\n", - "fibroid\n", - "fibroids\n", - "fibroin\n", - "fibroins\n", - "fibroma\n", - "fibromas\n", - "fibromata\n", - "fibroses\n", - "fibrosis\n", - "fibrotic\n", - "fibrous\n", - "fibs\n", - "fibula\n", - "fibulae\n", - "fibular\n", - "fibulas\n", - "fice\n", - "fices\n", - "fiche\n", - "fiches\n", - "fichu\n", - "fichus\n", - "ficin\n", - "ficins\n", - "fickle\n", - "fickleness\n", - "ficklenesses\n", - "fickler\n", - "ficklest\n", - "fico\n", - "ficoes\n", - "fictile\n", - "fiction\n", - "fictional\n", - "fictions\n", - "fictitious\n", - "fictive\n", - "fid\n", - "fiddle\n", - "fiddled\n", - "fiddler\n", - "fiddlers\n", - "fiddles\n", - "fiddlesticks\n", - "fiddling\n", - "fideism\n", - "fideisms\n", - "fideist\n", - "fideists\n", - "fidelities\n", - "fidelity\n", - "fidge\n", - "fidged\n", - "fidges\n", - "fidget\n", - "fidgeted\n", - "fidgeter\n", - "fidgeters\n", - "fidgeting\n", - "fidgets\n", - "fidgety\n", - "fidging\n", - "fido\n", - "fidos\n", - "fids\n", - "fiducial\n", - "fiduciaries\n", - "fiduciary\n", - "fie\n", - "fief\n", - "fiefdom\n", - "fiefdoms\n", - "fiefs\n", - "field\n", - "fielded\n", - "fielder\n", - "fielders\n", - "fielding\n", - "fields\n", - "fiend\n", - "fiendish\n", - "fiendishly\n", - "fiends\n", - "fierce\n", - "fiercely\n", - "fierceness\n", - "fiercenesses\n", - "fiercer\n", - "fiercest\n", - "fierier\n", - "fieriest\n", - "fierily\n", - "fieriness\n", - "fierinesses\n", - "fiery\n", - "fiesta\n", - "fiestas\n", - "fife\n", - "fifed\n", - "fifer\n", - "fifers\n", - "fifes\n", - "fifing\n", - "fifteen\n", - "fifteens\n", - "fifteenth\n", - "fifteenths\n", - "fifth\n", - "fifthly\n", - "fifths\n", - "fifties\n", - "fiftieth\n", - "fiftieths\n", - "fifty\n", - "fig\n", - "figeater\n", - "figeaters\n", - "figged\n", - "figging\n", - "fight\n", - "fighter\n", - "fighters\n", - "fighting\n", - "fightings\n", - "fights\n", - "figment\n", - "figments\n", - "figs\n", - "figuline\n", - "figulines\n", - "figural\n", - "figurant\n", - "figurants\n", - "figurate\n", - "figurative\n", - "figuratively\n", - "figure\n", - "figured\n", - "figurer\n", - "figurers\n", - "figures\n", - "figurine\n", - "figurines\n", - "figuring\n", - "figwort\n", - "figworts\n", - "fil\n", - "fila\n", - "filagree\n", - "filagreed\n", - "filagreeing\n", - "filagrees\n", - "filament\n", - "filamentous\n", - "filaments\n", - "filar\n", - "filaree\n", - "filarees\n", - "filaria\n", - "filariae\n", - "filarial\n", - "filarian\n", - "filariid\n", - "filariids\n", - "filature\n", - "filatures\n", - "filbert\n", - "filberts\n", - "filch\n", - "filched\n", - "filcher\n", - "filchers\n", - "filches\n", - "filching\n", - "file\n", - "filed\n", - "filefish\n", - "filefishes\n", - "filemot\n", - "filer\n", - "filers\n", - "files\n", - "filet\n", - "fileted\n", - "fileting\n", - "filets\n", - "filial\n", - "filially\n", - "filiate\n", - "filiated\n", - "filiates\n", - "filiating\n", - "filibeg\n", - "filibegs\n", - "filibuster\n", - "filibustered\n", - "filibusterer\n", - "filibusterers\n", - "filibustering\n", - "filibusters\n", - "filicide\n", - "filicides\n", - "filiform\n", - "filigree\n", - "filigreed\n", - "filigreeing\n", - "filigrees\n", - "filing\n", - "filings\n", - "filister\n", - "filisters\n", - "fill\n", - "fille\n", - "filled\n", - "filler\n", - "fillers\n", - "filles\n", - "fillet\n", - "filleted\n", - "filleting\n", - "fillets\n", - "fillies\n", - "filling\n", - "fillings\n", - "fillip\n", - "filliped\n", - "filliping\n", - "fillips\n", - "fills\n", - "filly\n", - "film\n", - "filmcard\n", - "filmcards\n", - "filmdom\n", - "filmdoms\n", - "filmed\n", - "filmgoer\n", - "filmgoers\n", - "filmic\n", - "filmier\n", - "filmiest\n", - "filmily\n", - "filming\n", - "filmland\n", - "filmlands\n", - "films\n", - "filmset\n", - "filmsets\n", - "filmsetting\n", - "filmstrip\n", - "filmstrips\n", - "filmy\n", - "filose\n", - "fils\n", - "filter\n", - "filterable\n", - "filtered\n", - "filterer\n", - "filterers\n", - "filtering\n", - "filters\n", - "filth\n", - "filthier\n", - "filthiest\n", - "filthily\n", - "filthiness\n", - "filthinesses\n", - "filths\n", - "filthy\n", - "filtrate\n", - "filtrated\n", - "filtrates\n", - "filtrating\n", - "filtration\n", - "filtrations\n", - "filum\n", - "fimble\n", - "fimbles\n", - "fimbria\n", - "fimbriae\n", - "fimbrial\n", - "fin\n", - "finable\n", - "finagle\n", - "finagled\n", - "finagler\n", - "finaglers\n", - "finagles\n", - "finagling\n", - "final\n", - "finale\n", - "finales\n", - "finalis\n", - "finalism\n", - "finalisms\n", - "finalist\n", - "finalists\n", - "finalities\n", - "finality\n", - "finalize\n", - "finalized\n", - "finalizes\n", - "finalizing\n", - "finally\n", - "finals\n", - "finance\n", - "financed\n", - "finances\n", - "financial\n", - "financially\n", - "financier\n", - "financiers\n", - "financing\n", - "finback\n", - "finbacks\n", - "finch\n", - "finches\n", - "find\n", - "finder\n", - "finders\n", - "finding\n", - "findings\n", - "finds\n", - "fine\n", - "fineable\n", - "fined\n", - "finely\n", - "fineness\n", - "finenesses\n", - "finer\n", - "fineries\n", - "finery\n", - "fines\n", - "finespun\n", - "finesse\n", - "finessed\n", - "finesses\n", - "finessing\n", - "finest\n", - "finfish\n", - "finfishes\n", - "finfoot\n", - "finfoots\n", - "finger\n", - "fingered\n", - "fingerer\n", - "fingerers\n", - "fingering\n", - "fingerling\n", - "fingerlings\n", - "fingernail\n", - "fingerprint\n", - "fingerprints\n", - "fingers\n", - "fingertip\n", - "fingertips\n", - "finial\n", - "finialed\n", - "finials\n", - "finical\n", - "finickier\n", - "finickiest\n", - "finickin\n", - "finicky\n", - "finikin\n", - "finiking\n", - "fining\n", - "finings\n", - "finis\n", - "finises\n", - "finish\n", - "finished\n", - "finisher\n", - "finishers\n", - "finishes\n", - "finishing\n", - "finite\n", - "finitely\n", - "finites\n", - "finitude\n", - "finitudes\n", - "fink\n", - "finked\n", - "finking\n", - "finks\n", - "finky\n", - "finless\n", - "finlike\n", - "finmark\n", - "finmarks\n", - "finned\n", - "finnickier\n", - "finnickiest\n", - "finnicky\n", - "finnier\n", - "finniest\n", - "finning\n", - "finnmark\n", - "finnmarks\n", - "finny\n", - "finochio\n", - "finochios\n", - "fins\n", - "fiord\n", - "fiords\n", - "fipple\n", - "fipples\n", - "fique\n", - "fiques\n", - "fir\n", - "fire\n", - "firearm\n", - "firearms\n", - "fireball\n", - "fireballs\n", - "firebird\n", - "firebirds\n", - "fireboat\n", - "fireboats\n", - "firebomb\n", - "firebombed\n", - "firebombing\n", - "firebombs\n", - "firebox\n", - "fireboxes\n", - "firebrat\n", - "firebrats\n", - "firebreak\n", - "firebreaks\n", - "firebug\n", - "firebugs\n", - "fireclay\n", - "fireclays\n", - "firecracker\n", - "firecrackers\n", - "fired\n", - "firedamp\n", - "firedamps\n", - "firedog\n", - "firedogs\n", - "firefang\n", - "firefanged\n", - "firefanging\n", - "firefangs\n", - "fireflies\n", - "firefly\n", - "firehall\n", - "firehalls\n", - "fireless\n", - "firelock\n", - "firelocks\n", - "fireman\n", - "firemen\n", - "firepan\n", - "firepans\n", - "firepink\n", - "firepinks\n", - "fireplace\n", - "fireplaces\n", - "fireplug\n", - "fireplugs\n", - "fireproof\n", - "fireproofed\n", - "fireproofing\n", - "fireproofs\n", - "firer\n", - "fireroom\n", - "firerooms\n", - "firers\n", - "fires\n", - "fireside\n", - "firesides\n", - "firetrap\n", - "firetraps\n", - "fireweed\n", - "fireweeds\n", - "firewood\n", - "firewoods\n", - "firework\n", - "fireworks\n", - "fireworm\n", - "fireworms\n", - "firing\n", - "firings\n", - "firkin\n", - "firkins\n", - "firm\n", - "firmament\n", - "firmaments\n", - "firman\n", - "firmans\n", - "firmed\n", - "firmer\n", - "firmers\n", - "firmest\n", - "firming\n", - "firmly\n", - "firmness\n", - "firmnesses\n", - "firms\n", - "firn\n", - "firns\n", - "firry\n", - "firs\n", - "first\n", - "firstly\n", - "firsts\n", - "firth\n", - "firths\n", - "fisc\n", - "fiscal\n", - "fiscally\n", - "fiscals\n", - "fiscs\n", - "fish\n", - "fishable\n", - "fishboat\n", - "fishboats\n", - "fishbone\n", - "fishbones\n", - "fishbowl\n", - "fishbowls\n", - "fished\n", - "fisher\n", - "fisheries\n", - "fisherman\n", - "fishermen\n", - "fishers\n", - "fishery\n", - "fishes\n", - "fisheye\n", - "fisheyes\n", - "fishgig\n", - "fishgigs\n", - "fishhook\n", - "fishhooks\n", - "fishier\n", - "fishiest\n", - "fishily\n", - "fishing\n", - "fishings\n", - "fishless\n", - "fishlike\n", - "fishline\n", - "fishlines\n", - "fishmeal\n", - "fishmeals\n", - "fishnet\n", - "fishnets\n", - "fishpole\n", - "fishpoles\n", - "fishpond\n", - "fishponds\n", - "fishtail\n", - "fishtailed\n", - "fishtailing\n", - "fishtails\n", - "fishway\n", - "fishways\n", - "fishwife\n", - "fishwives\n", - "fishy\n", - "fissate\n", - "fissile\n", - "fission\n", - "fissionable\n", - "fissional\n", - "fissioned\n", - "fissioning\n", - "fissions\n", - "fissiped\n", - "fissipeds\n", - "fissure\n", - "fissured\n", - "fissures\n", - "fissuring\n", - "fist\n", - "fisted\n", - "fistful\n", - "fistfuls\n", - "fistic\n", - "fisticuffs\n", - "fisting\n", - "fistnote\n", - "fistnotes\n", - "fists\n", - "fistula\n", - "fistulae\n", - "fistular\n", - "fistulas\n", - "fisty\n", - "fit\n", - "fitch\n", - "fitchee\n", - "fitches\n", - "fitchet\n", - "fitchets\n", - "fitchew\n", - "fitchews\n", - "fitchy\n", - "fitful\n", - "fitfully\n", - "fitly\n", - "fitment\n", - "fitments\n", - "fitness\n", - "fitnesses\n", - "fits\n", - "fittable\n", - "fitted\n", - "fitter\n", - "fitters\n", - "fittest\n", - "fitting\n", - "fittings\n", - "five\n", - "fivefold\n", - "fivepins\n", - "fiver\n", - "fivers\n", - "fives\n", - "fix\n", - "fixable\n", - "fixate\n", - "fixated\n", - "fixates\n", - "fixatif\n", - "fixatifs\n", - "fixating\n", - "fixation\n", - "fixations\n", - "fixative\n", - "fixatives\n", - "fixed\n", - "fixedly\n", - "fixedness\n", - "fixednesses\n", - "fixer\n", - "fixers\n", - "fixes\n", - "fixing\n", - "fixings\n", - "fixities\n", - "fixity\n", - "fixt\n", - "fixture\n", - "fixtures\n", - "fixure\n", - "fixures\n", - "fiz\n", - "fizgig\n", - "fizgigs\n", - "fizz\n", - "fizzed\n", - "fizzer\n", - "fizzers\n", - "fizzes\n", - "fizzier\n", - "fizziest\n", - "fizzing\n", - "fizzle\n", - "fizzled\n", - "fizzles\n", - "fizzling\n", - "fizzy\n", - "fjeld\n", - "fjelds\n", - "fjord\n", - "fjords\n", - "flab\n", - "flabbergast\n", - "flabbergasted\n", - "flabbergasting\n", - "flabbergasts\n", - "flabbier\n", - "flabbiest\n", - "flabbily\n", - "flabbiness\n", - "flabbinesses\n", - "flabby\n", - "flabella\n", - "flabs\n", - "flaccid\n", - "flack\n", - "flacks\n", - "flacon\n", - "flacons\n", - "flag\n", - "flagella\n", - "flagellate\n", - "flagellated\n", - "flagellates\n", - "flagellating\n", - "flagellation\n", - "flagellations\n", - "flagged\n", - "flagger\n", - "flaggers\n", - "flaggier\n", - "flaggiest\n", - "flagging\n", - "flaggings\n", - "flaggy\n", - "flagless\n", - "flagman\n", - "flagmen\n", - "flagon\n", - "flagons\n", - "flagpole\n", - "flagpoles\n", - "flagrant\n", - "flagrantly\n", - "flags\n", - "flagship\n", - "flagships\n", - "flagstaff\n", - "flagstaffs\n", - "flagstone\n", - "flagstones\n", - "flail\n", - "flailed\n", - "flailing\n", - "flails\n", - "flair\n", - "flairs\n", - "flak\n", - "flake\n", - "flaked\n", - "flaker\n", - "flakers\n", - "flakes\n", - "flakier\n", - "flakiest\n", - "flakily\n", - "flaking\n", - "flaky\n", - "flam\n", - "flambe\n", - "flambeau\n", - "flambeaus\n", - "flambeaux\n", - "flambee\n", - "flambeed\n", - "flambeing\n", - "flambes\n", - "flamboyance\n", - "flamboyances\n", - "flamboyant\n", - "flamboyantly\n", - "flame\n", - "flamed\n", - "flamen\n", - "flamenco\n", - "flamencos\n", - "flamens\n", - "flameout\n", - "flameouts\n", - "flamer\n", - "flamers\n", - "flames\n", - "flamier\n", - "flamiest\n", - "flamines\n", - "flaming\n", - "flamingo\n", - "flamingoes\n", - "flamingos\n", - "flammable\n", - "flammed\n", - "flamming\n", - "flams\n", - "flamy\n", - "flan\n", - "flancard\n", - "flancards\n", - "flanerie\n", - "flaneries\n", - "flanes\n", - "flaneur\n", - "flaneurs\n", - "flange\n", - "flanged\n", - "flanger\n", - "flangers\n", - "flanges\n", - "flanging\n", - "flank\n", - "flanked\n", - "flanker\n", - "flankers\n", - "flanking\n", - "flanks\n", - "flannel\n", - "flanneled\n", - "flanneling\n", - "flannelled\n", - "flannelling\n", - "flannels\n", - "flans\n", - "flap\n", - "flapjack\n", - "flapjacks\n", - "flapless\n", - "flapped\n", - "flapper\n", - "flappers\n", - "flappier\n", - "flappiest\n", - "flapping\n", - "flappy\n", - "flaps\n", - "flare\n", - "flared\n", - "flares\n", - "flaring\n", - "flash\n", - "flashed\n", - "flasher\n", - "flashers\n", - "flashes\n", - "flashgun\n", - "flashguns\n", - "flashier\n", - "flashiest\n", - "flashily\n", - "flashiness\n", - "flashinesses\n", - "flashing\n", - "flashings\n", - "flashlight\n", - "flashlights\n", - "flashy\n", - "flask\n", - "flasket\n", - "flaskets\n", - "flasks\n", - "flat\n", - "flatbed\n", - "flatbeds\n", - "flatboat\n", - "flatboats\n", - "flatcap\n", - "flatcaps\n", - "flatcar\n", - "flatcars\n", - "flatfeet\n", - "flatfish\n", - "flatfishes\n", - "flatfoot\n", - "flatfooted\n", - "flatfooting\n", - "flatfoots\n", - "flathead\n", - "flatheads\n", - "flatiron\n", - "flatirons\n", - "flatland\n", - "flatlands\n", - "flatlet\n", - "flatlets\n", - "flatling\n", - "flatly\n", - "flatness\n", - "flatnesses\n", - "flats\n", - "flatted\n", - "flatten\n", - "flattened\n", - "flattening\n", - "flattens\n", - "flatter\n", - "flattered\n", - "flatterer\n", - "flatteries\n", - "flattering\n", - "flatters\n", - "flattery\n", - "flattest\n", - "flatting\n", - "flattish\n", - "flattop\n", - "flattops\n", - "flatulence\n", - "flatulences\n", - "flatulent\n", - "flatus\n", - "flatuses\n", - "flatware\n", - "flatwares\n", - "flatwash\n", - "flatwashes\n", - "flatways\n", - "flatwise\n", - "flatwork\n", - "flatworks\n", - "flatworm\n", - "flatworms\n", - "flaunt\n", - "flaunted\n", - "flaunter\n", - "flaunters\n", - "flauntier\n", - "flauntiest\n", - "flaunting\n", - "flaunts\n", - "flaunty\n", - "flautist\n", - "flautists\n", - "flavin\n", - "flavine\n", - "flavines\n", - "flavins\n", - "flavone\n", - "flavones\n", - "flavonol\n", - "flavonols\n", - "flavor\n", - "flavored\n", - "flavorer\n", - "flavorers\n", - "flavorful\n", - "flavoring\n", - "flavorings\n", - "flavors\n", - "flavorsome\n", - "flavory\n", - "flavour\n", - "flavoured\n", - "flavouring\n", - "flavours\n", - "flavoury\n", - "flaw\n", - "flawed\n", - "flawier\n", - "flawiest\n", - "flawing\n", - "flawless\n", - "flaws\n", - "flawy\n", - "flax\n", - "flaxen\n", - "flaxes\n", - "flaxier\n", - "flaxiest\n", - "flaxseed\n", - "flaxseeds\n", - "flaxy\n", - "flay\n", - "flayed\n", - "flayer\n", - "flayers\n", - "flaying\n", - "flays\n", - "flea\n", - "fleabag\n", - "fleabags\n", - "fleabane\n", - "fleabanes\n", - "fleabite\n", - "fleabites\n", - "fleam\n", - "fleams\n", - "fleas\n", - "fleawort\n", - "fleaworts\n", - "fleche\n", - "fleches\n", - "fleck\n", - "flecked\n", - "flecking\n", - "flecks\n", - "flecky\n", - "flection\n", - "flections\n", - "fled\n", - "fledge\n", - "fledged\n", - "fledges\n", - "fledgier\n", - "fledgiest\n", - "fledging\n", - "fledgling\n", - "fledglings\n", - "fledgy\n", - "flee\n", - "fleece\n", - "fleeced\n", - "fleecer\n", - "fleecers\n", - "fleeces\n", - "fleech\n", - "fleeched\n", - "fleeches\n", - "fleeching\n", - "fleecier\n", - "fleeciest\n", - "fleecily\n", - "fleecing\n", - "fleecy\n", - "fleeing\n", - "fleer\n", - "fleered\n", - "fleering\n", - "fleers\n", - "flees\n", - "fleet\n", - "fleeted\n", - "fleeter\n", - "fleetest\n", - "fleeting\n", - "fleetness\n", - "fleetnesses\n", - "fleets\n", - "fleishig\n", - "flemish\n", - "flemished\n", - "flemishes\n", - "flemishing\n", - "flench\n", - "flenched\n", - "flenches\n", - "flenching\n", - "flense\n", - "flensed\n", - "flenser\n", - "flensers\n", - "flenses\n", - "flensing\n", - "flesh\n", - "fleshed\n", - "flesher\n", - "fleshers\n", - "fleshes\n", - "fleshier\n", - "fleshiest\n", - "fleshing\n", - "fleshings\n", - "fleshlier\n", - "fleshliest\n", - "fleshly\n", - "fleshpot\n", - "fleshpots\n", - "fleshy\n", - "fletch\n", - "fletched\n", - "fletcher\n", - "fletchers\n", - "fletches\n", - "fletching\n", - "fleury\n", - "flew\n", - "flews\n", - "flex\n", - "flexed\n", - "flexes\n", - "flexibilities\n", - "flexibility\n", - "flexible\n", - "flexibly\n", - "flexile\n", - "flexing\n", - "flexion\n", - "flexions\n", - "flexor\n", - "flexors\n", - "flexuose\n", - "flexuous\n", - "flexural\n", - "flexure\n", - "flexures\n", - "fley\n", - "fleyed\n", - "fleying\n", - "fleys\n", - "flic\n", - "flichter\n", - "flichtered\n", - "flichtering\n", - "flichters\n", - "flick\n", - "flicked\n", - "flicker\n", - "flickered\n", - "flickering\n", - "flickers\n", - "flickery\n", - "flicking\n", - "flicks\n", - "flics\n", - "flied\n", - "flier\n", - "fliers\n", - "flies\n", - "fliest\n", - "flight\n", - "flighted\n", - "flightier\n", - "flightiest\n", - "flighting\n", - "flightless\n", - "flights\n", - "flighty\n", - "flimflam\n", - "flimflammed\n", - "flimflamming\n", - "flimflams\n", - "flimsier\n", - "flimsies\n", - "flimsiest\n", - "flimsily\n", - "flimsiness\n", - "flimsinesses\n", - "flimsy\n", - "flinch\n", - "flinched\n", - "flincher\n", - "flinchers\n", - "flinches\n", - "flinching\n", - "flinder\n", - "flinders\n", - "fling\n", - "flinger\n", - "flingers\n", - "flinging\n", - "flings\n", - "flint\n", - "flinted\n", - "flintier\n", - "flintiest\n", - "flintily\n", - "flinting\n", - "flints\n", - "flinty\n", - "flip\n", - "flippancies\n", - "flippancy\n", - "flippant\n", - "flipped\n", - "flipper\n", - "flippers\n", - "flippest\n", - "flipping\n", - "flips\n", - "flirt\n", - "flirtation\n", - "flirtations\n", - "flirtatious\n", - "flirted\n", - "flirter\n", - "flirters\n", - "flirtier\n", - "flirtiest\n", - "flirting\n", - "flirts\n", - "flirty\n", - "flit\n", - "flitch\n", - "flitched\n", - "flitches\n", - "flitching\n", - "flite\n", - "flited\n", - "flites\n", - "fliting\n", - "flits\n", - "flitted\n", - "flitter\n", - "flittered\n", - "flittering\n", - "flitters\n", - "flitting\n", - "flivver\n", - "flivvers\n", - "float\n", - "floatage\n", - "floatages\n", - "floated\n", - "floater\n", - "floaters\n", - "floatier\n", - "floatiest\n", - "floating\n", - "floats\n", - "floaty\n", - "floc\n", - "flocced\n", - "flocci\n", - "floccing\n", - "floccose\n", - "floccule\n", - "floccules\n", - "flocculi\n", - "floccus\n", - "flock\n", - "flocked\n", - "flockier\n", - "flockiest\n", - "flocking\n", - "flockings\n", - "flocks\n", - "flocky\n", - "flocs\n", - "floe\n", - "floes\n", - "flog\n", - "flogged\n", - "flogger\n", - "floggers\n", - "flogging\n", - "floggings\n", - "flogs\n", - "flong\n", - "flongs\n", - "flood\n", - "flooded\n", - "flooder\n", - "flooders\n", - "flooding\n", - "floodlit\n", - "floods\n", - "floodwater\n", - "floodwaters\n", - "floodway\n", - "floodways\n", - "flooey\n", - "floor\n", - "floorage\n", - "floorages\n", - "floorboard\n", - "floorboards\n", - "floored\n", - "floorer\n", - "floorers\n", - "flooring\n", - "floorings\n", - "floors\n", - "floosies\n", - "floosy\n", - "floozie\n", - "floozies\n", - "floozy\n", - "flop\n", - "flopover\n", - "flopovers\n", - "flopped\n", - "flopper\n", - "floppers\n", - "floppier\n", - "floppiest\n", - "floppily\n", - "flopping\n", - "floppy\n", - "flops\n", - "flora\n", - "florae\n", - "floral\n", - "florally\n", - "floras\n", - "florence\n", - "florences\n", - "floret\n", - "florets\n", - "florid\n", - "floridly\n", - "florigen\n", - "florigens\n", - "florin\n", - "florins\n", - "florist\n", - "florists\n", - "floruit\n", - "floruits\n", - "floss\n", - "flosses\n", - "flossie\n", - "flossier\n", - "flossies\n", - "flossiest\n", - "flossy\n", - "flota\n", - "flotage\n", - "flotages\n", - "flotas\n", - "flotation\n", - "flotations\n", - "flotilla\n", - "flotillas\n", - "flotsam\n", - "flotsams\n", - "flounce\n", - "flounced\n", - "flounces\n", - "flouncier\n", - "flounciest\n", - "flouncing\n", - "flouncy\n", - "flounder\n", - "floundered\n", - "floundering\n", - "flounders\n", - "flour\n", - "floured\n", - "flouring\n", - "flourish\n", - "flourished\n", - "flourishes\n", - "flourishing\n", - "flours\n", - "floury\n", - "flout\n", - "flouted\n", - "flouter\n", - "flouters\n", - "flouting\n", - "flouts\n", - "flow\n", - "flowage\n", - "flowages\n", - "flowchart\n", - "flowcharts\n", - "flowed\n", - "flower\n", - "flowered\n", - "flowerer\n", - "flowerers\n", - "floweret\n", - "flowerets\n", - "flowerier\n", - "floweriest\n", - "floweriness\n", - "flowerinesses\n", - "flowering\n", - "flowerless\n", - "flowerpot\n", - "flowerpots\n", - "flowers\n", - "flowery\n", - "flowing\n", - "flown\n", - "flows\n", - "flowsheet\n", - "flowsheets\n", - "flu\n", - "flub\n", - "flubbed\n", - "flubbing\n", - "flubdub\n", - "flubdubs\n", - "flubs\n", - "fluctuate\n", - "fluctuated\n", - "fluctuates\n", - "fluctuating\n", - "fluctuation\n", - "fluctuations\n", - "flue\n", - "flued\n", - "fluencies\n", - "fluency\n", - "fluent\n", - "fluently\n", - "flueric\n", - "fluerics\n", - "flues\n", - "fluff\n", - "fluffed\n", - "fluffier\n", - "fluffiest\n", - "fluffily\n", - "fluffing\n", - "fluffs\n", - "fluffy\n", - "fluid\n", - "fluidal\n", - "fluidic\n", - "fluidics\n", - "fluidise\n", - "fluidised\n", - "fluidises\n", - "fluidising\n", - "fluidities\n", - "fluidity\n", - "fluidize\n", - "fluidized\n", - "fluidizes\n", - "fluidizing\n", - "fluidly\n", - "fluidounce\n", - "fluidounces\n", - "fluidram\n", - "fluidrams\n", - "fluids\n", - "fluke\n", - "fluked\n", - "flukes\n", - "flukey\n", - "flukier\n", - "flukiest\n", - "fluking\n", - "fluky\n", - "flume\n", - "flumed\n", - "flumes\n", - "fluming\n", - "flummeries\n", - "flummery\n", - "flummox\n", - "flummoxed\n", - "flummoxes\n", - "flummoxing\n", - "flump\n", - "flumped\n", - "flumping\n", - "flumps\n", - "flung\n", - "flunk\n", - "flunked\n", - "flunker\n", - "flunkers\n", - "flunkey\n", - "flunkeys\n", - "flunkies\n", - "flunking\n", - "flunks\n", - "flunky\n", - "fluor\n", - "fluorene\n", - "fluorenes\n", - "fluoresce\n", - "fluoresced\n", - "fluorescence\n", - "fluorescences\n", - "fluorescent\n", - "fluoresces\n", - "fluorescing\n", - "fluoric\n", - "fluorid\n", - "fluoridate\n", - "fluoridated\n", - "fluoridates\n", - "fluoridating\n", - "fluoridation\n", - "fluoridations\n", - "fluoride\n", - "fluorides\n", - "fluorids\n", - "fluorin\n", - "fluorine\n", - "fluorines\n", - "fluorins\n", - "fluorite\n", - "fluorites\n", - "fluorocarbon\n", - "fluorocarbons\n", - "fluoroscope\n", - "fluoroscopes\n", - "fluoroscopic\n", - "fluoroscopies\n", - "fluoroscopist\n", - "fluoroscopists\n", - "fluoroscopy\n", - "fluors\n", - "flurried\n", - "flurries\n", - "flurry\n", - "flurrying\n", - "flus\n", - "flush\n", - "flushed\n", - "flusher\n", - "flushers\n", - "flushes\n", - "flushest\n", - "flushing\n", - "fluster\n", - "flustered\n", - "flustering\n", - "flusters\n", - "flute\n", - "fluted\n", - "fluter\n", - "fluters\n", - "flutes\n", - "flutier\n", - "flutiest\n", - "fluting\n", - "flutings\n", - "flutist\n", - "flutists\n", - "flutter\n", - "fluttered\n", - "fluttering\n", - "flutters\n", - "fluttery\n", - "fluty\n", - "fluvial\n", - "flux\n", - "fluxed\n", - "fluxes\n", - "fluxing\n", - "fluxion\n", - "fluxions\n", - "fluyt\n", - "fluyts\n", - "fly\n", - "flyable\n", - "flyaway\n", - "flyaways\n", - "flybelt\n", - "flybelts\n", - "flyblew\n", - "flyblow\n", - "flyblowing\n", - "flyblown\n", - "flyblows\n", - "flyboat\n", - "flyboats\n", - "flyby\n", - "flybys\n", - "flyer\n", - "flyers\n", - "flying\n", - "flyings\n", - "flyleaf\n", - "flyleaves\n", - "flyman\n", - "flymen\n", - "flyover\n", - "flyovers\n", - "flypaper\n", - "flypapers\n", - "flypast\n", - "flypasts\n", - "flysch\n", - "flysches\n", - "flyspeck\n", - "flyspecked\n", - "flyspecking\n", - "flyspecks\n", - "flyte\n", - "flyted\n", - "flytes\n", - "flytier\n", - "flytiers\n", - "flyting\n", - "flytings\n", - "flytrap\n", - "flytraps\n", - "flyway\n", - "flyways\n", - "flywheel\n", - "flywheels\n", - "foal\n", - "foaled\n", - "foaling\n", - "foals\n", - "foam\n", - "foamed\n", - "foamer\n", - "foamers\n", - "foamier\n", - "foamiest\n", - "foamily\n", - "foaming\n", - "foamless\n", - "foamlike\n", - "foams\n", - "foamy\n", - "fob\n", - "fobbed\n", - "fobbing\n", - "fobs\n", - "focal\n", - "focalise\n", - "focalised\n", - "focalises\n", - "focalising\n", - "focalize\n", - "focalized\n", - "focalizes\n", - "focalizing\n", - "focally\n", - "foci\n", - "focus\n", - "focused\n", - "focuser\n", - "focusers\n", - "focuses\n", - "focusing\n", - "focussed\n", - "focusses\n", - "focussing\n", - "fodder\n", - "foddered\n", - "foddering\n", - "fodders\n", - "fodgel\n", - "foe\n", - "foehn\n", - "foehns\n", - "foeman\n", - "foemen\n", - "foes\n", - "foetal\n", - "foetid\n", - "foetor\n", - "foetors\n", - "foetus\n", - "foetuses\n", - "fog\n", - "fogbound\n", - "fogbow\n", - "fogbows\n", - "fogdog\n", - "fogdogs\n", - "fogey\n", - "fogeys\n", - "fogfruit\n", - "fogfruits\n", - "foggage\n", - "foggages\n", - "fogged\n", - "fogger\n", - "foggers\n", - "foggier\n", - "foggiest\n", - "foggily\n", - "fogging\n", - "foggy\n", - "foghorn\n", - "foghorns\n", - "fogie\n", - "fogies\n", - "fogless\n", - "fogs\n", - "fogy\n", - "fogyish\n", - "fogyism\n", - "fogyisms\n", - "foh\n", - "fohn\n", - "fohns\n", - "foible\n", - "foibles\n", - "foil\n", - "foilable\n", - "foiled\n", - "foiling\n", - "foils\n", - "foilsman\n", - "foilsmen\n", - "foin\n", - "foined\n", - "foining\n", - "foins\n", - "foison\n", - "foisons\n", - "foist\n", - "foisted\n", - "foisting\n", - "foists\n", - "folacin\n", - "folacins\n", - "folate\n", - "folates\n", - "fold\n", - "foldable\n", - "foldaway\n", - "foldboat\n", - "foldboats\n", - "folded\n", - "folder\n", - "folderol\n", - "folderols\n", - "folders\n", - "folding\n", - "foldout\n", - "foldouts\n", - "folds\n", - "folia\n", - "foliage\n", - "foliaged\n", - "foliages\n", - "foliar\n", - "foliate\n", - "foliated\n", - "foliates\n", - "foliating\n", - "folic\n", - "folio\n", - "folioed\n", - "folioing\n", - "folios\n", - "foliose\n", - "folious\n", - "folium\n", - "foliums\n", - "folk\n", - "folkish\n", - "folklike\n", - "folklore\n", - "folklores\n", - "folklorist\n", - "folklorists\n", - "folkmoot\n", - "folkmoots\n", - "folkmot\n", - "folkmote\n", - "folkmotes\n", - "folkmots\n", - "folks\n", - "folksier\n", - "folksiest\n", - "folksily\n", - "folksy\n", - "folktale\n", - "folktales\n", - "folkway\n", - "folkways\n", - "folles\n", - "follicle\n", - "follicles\n", - "follies\n", - "follis\n", - "follow\n", - "followed\n", - "follower\n", - "followers\n", - "following\n", - "followings\n", - "follows\n", - "folly\n", - "foment\n", - "fomentation\n", - "fomentations\n", - "fomented\n", - "fomenter\n", - "fomenters\n", - "fomenting\n", - "foments\n", - "fon\n", - "fond\n", - "fondant\n", - "fondants\n", - "fonded\n", - "fonder\n", - "fondest\n", - "fonding\n", - "fondle\n", - "fondled\n", - "fondler\n", - "fondlers\n", - "fondles\n", - "fondling\n", - "fondlings\n", - "fondly\n", - "fondness\n", - "fondnesses\n", - "fonds\n", - "fondu\n", - "fondue\n", - "fondues\n", - "fondus\n", - "fons\n", - "font\n", - "fontal\n", - "fontanel\n", - "fontanels\n", - "fontina\n", - "fontinas\n", - "fonts\n", - "food\n", - "foodless\n", - "foods\n", - "foofaraw\n", - "foofaraws\n", - "fool\n", - "fooled\n", - "fooleries\n", - "foolery\n", - "foolfish\n", - "foolfishes\n", - "foolhardiness\n", - "foolhardinesses\n", - "foolhardy\n", - "fooling\n", - "foolish\n", - "foolisher\n", - "foolishest\n", - "foolishness\n", - "foolishnesses\n", - "foolproof\n", - "fools\n", - "foolscap\n", - "foolscaps\n", - "foot\n", - "footage\n", - "footages\n", - "football\n", - "footballs\n", - "footbath\n", - "footbaths\n", - "footboy\n", - "footboys\n", - "footbridge\n", - "footbridges\n", - "footed\n", - "footer\n", - "footers\n", - "footfall\n", - "footfalls\n", - "footgear\n", - "footgears\n", - "foothill\n", - "foothills\n", - "foothold\n", - "footholds\n", - "footier\n", - "footiest\n", - "footing\n", - "footings\n", - "footle\n", - "footled\n", - "footler\n", - "footlers\n", - "footles\n", - "footless\n", - "footlight\n", - "footlights\n", - "footlike\n", - "footling\n", - "footlocker\n", - "footlockers\n", - "footloose\n", - "footman\n", - "footmark\n", - "footmarks\n", - "footmen\n", - "footnote\n", - "footnoted\n", - "footnotes\n", - "footnoting\n", - "footpace\n", - "footpaces\n", - "footpad\n", - "footpads\n", - "footpath\n", - "footpaths\n", - "footprint\n", - "footprints\n", - "footrace\n", - "footraces\n", - "footrest\n", - "footrests\n", - "footrope\n", - "footropes\n", - "foots\n", - "footsie\n", - "footsies\n", - "footslog\n", - "footslogged\n", - "footslogging\n", - "footslogs\n", - "footsore\n", - "footstep\n", - "footsteps\n", - "footstool\n", - "footstools\n", - "footwall\n", - "footwalls\n", - "footway\n", - "footways\n", - "footwear\n", - "footwears\n", - "footwork\n", - "footworks\n", - "footworn\n", - "footy\n", - "foozle\n", - "foozled\n", - "foozler\n", - "foozlers\n", - "foozles\n", - "foozling\n", - "fop\n", - "fopped\n", - "fopperies\n", - "foppery\n", - "fopping\n", - "foppish\n", - "fops\n", - "for\n", - "fora\n", - "forage\n", - "foraged\n", - "forager\n", - "foragers\n", - "forages\n", - "foraging\n", - "foram\n", - "foramen\n", - "foramens\n", - "foramina\n", - "forams\n", - "foray\n", - "forayed\n", - "forayer\n", - "forayers\n", - "foraying\n", - "forays\n", - "forb\n", - "forbad\n", - "forbade\n", - "forbear\n", - "forbearance\n", - "forbearances\n", - "forbearing\n", - "forbears\n", - "forbid\n", - "forbidal\n", - "forbidals\n", - "forbidden\n", - "forbidding\n", - "forbids\n", - "forbode\n", - "forboded\n", - "forbodes\n", - "forboding\n", - "forbore\n", - "forborne\n", - "forbs\n", - "forby\n", - "forbye\n", - "force\n", - "forced\n", - "forcedly\n", - "forceful\n", - "forcefully\n", - "forceps\n", - "forcer\n", - "forcers\n", - "forces\n", - "forcible\n", - "forcibly\n", - "forcing\n", - "forcipes\n", - "ford\n", - "fordable\n", - "forded\n", - "fordid\n", - "fording\n", - "fordless\n", - "fordo\n", - "fordoes\n", - "fordoing\n", - "fordone\n", - "fords\n", - "fore\n", - "forearm\n", - "forearmed\n", - "forearming\n", - "forearms\n", - "forebay\n", - "forebays\n", - "forebear\n", - "forebears\n", - "forebode\n", - "foreboded\n", - "forebodes\n", - "forebodies\n", - "foreboding\n", - "forebodings\n", - "forebody\n", - "foreboom\n", - "forebooms\n", - "foreby\n", - "forebye\n", - "forecast\n", - "forecasted\n", - "forecaster\n", - "forecasters\n", - "forecasting\n", - "forecastle\n", - "forecastles\n", - "forecasts\n", - "foreclose\n", - "foreclosed\n", - "forecloses\n", - "foreclosing\n", - "foreclosure\n", - "foreclosures\n", - "foredate\n", - "foredated\n", - "foredates\n", - "foredating\n", - "foredeck\n", - "foredecks\n", - "foredid\n", - "foredo\n", - "foredoes\n", - "foredoing\n", - "foredone\n", - "foredoom\n", - "foredoomed\n", - "foredooming\n", - "foredooms\n", - "foreface\n", - "forefaces\n", - "forefather\n", - "forefathers\n", - "forefeel\n", - "forefeeling\n", - "forefeels\n", - "forefeet\n", - "forefelt\n", - "forefend\n", - "forefended\n", - "forefending\n", - "forefends\n", - "forefinger\n", - "forefingers\n", - "forefoot\n", - "forefront\n", - "forefronts\n", - "foregather\n", - "foregathered\n", - "foregathering\n", - "foregathers\n", - "forego\n", - "foregoer\n", - "foregoers\n", - "foregoes\n", - "foregoing\n", - "foregone\n", - "foreground\n", - "foregrounds\n", - "foregut\n", - "foreguts\n", - "forehand\n", - "forehands\n", - "forehead\n", - "foreheads\n", - "forehoof\n", - "forehoofs\n", - "forehooves\n", - "foreign\n", - "foreigner\n", - "foreigners\n", - "foreknew\n", - "foreknow\n", - "foreknowing\n", - "foreknowledge\n", - "foreknowledges\n", - "foreknown\n", - "foreknows\n", - "foreladies\n", - "forelady\n", - "foreland\n", - "forelands\n", - "foreleg\n", - "forelegs\n", - "forelimb\n", - "forelimbs\n", - "forelock\n", - "forelocks\n", - "foreman\n", - "foremast\n", - "foremasts\n", - "foremen\n", - "foremilk\n", - "foremilks\n", - "foremost\n", - "forename\n", - "forenames\n", - "forenoon\n", - "forenoons\n", - "forensic\n", - "forensics\n", - "foreordain\n", - "foreordained\n", - "foreordaining\n", - "foreordains\n", - "forepart\n", - "foreparts\n", - "forepast\n", - "forepaw\n", - "forepaws\n", - "forepeak\n", - "forepeaks\n", - "foreplay\n", - "foreplays\n", - "forequarter\n", - "forequarters\n", - "foreran\n", - "forerank\n", - "foreranks\n", - "forerun\n", - "forerunner\n", - "forerunners\n", - "forerunning\n", - "foreruns\n", - "fores\n", - "foresaid\n", - "foresail\n", - "foresails\n", - "foresaw\n", - "foresee\n", - "foreseeable\n", - "foreseeing\n", - "foreseen\n", - "foreseer\n", - "foreseers\n", - "foresees\n", - "foreshadow\n", - "foreshadowed\n", - "foreshadowing\n", - "foreshadows\n", - "foreshow\n", - "foreshowed\n", - "foreshowing\n", - "foreshown\n", - "foreshows\n", - "foreside\n", - "foresides\n", - "foresight\n", - "foresighted\n", - "foresightedness\n", - "foresightednesses\n", - "foresights\n", - "foreskin\n", - "foreskins\n", - "forest\n", - "forestal\n", - "forestall\n", - "forestalled\n", - "forestalling\n", - "forestalls\n", - "forestay\n", - "forestays\n", - "forested\n", - "forester\n", - "foresters\n", - "foresting\n", - "forestland\n", - "forestlands\n", - "forestries\n", - "forestry\n", - "forests\n", - "foreswear\n", - "foresweared\n", - "foreswearing\n", - "foreswears\n", - "foretaste\n", - "foretasted\n", - "foretastes\n", - "foretasting\n", - "foretell\n", - "foretelling\n", - "foretells\n", - "forethought\n", - "forethoughts\n", - "foretime\n", - "foretimes\n", - "foretold\n", - "foretop\n", - "foretops\n", - "forever\n", - "forevermore\n", - "forevers\n", - "forewarn\n", - "forewarned\n", - "forewarning\n", - "forewarns\n", - "forewent\n", - "forewing\n", - "forewings\n", - "foreword\n", - "forewords\n", - "foreworn\n", - "foreyard\n", - "foreyards\n", - "forfeit\n", - "forfeited\n", - "forfeiting\n", - "forfeits\n", - "forfeiture\n", - "forfeitures\n", - "forfend\n", - "forfended\n", - "forfending\n", - "forfends\n", - "forgat\n", - "forgather\n", - "forgathered\n", - "forgathering\n", - "forgathers\n", - "forgave\n", - "forge\n", - "forged\n", - "forger\n", - "forgeries\n", - "forgers\n", - "forgery\n", - "forges\n", - "forget\n", - "forgetful\n", - "forgetfully\n", - "forgets\n", - "forgetting\n", - "forging\n", - "forgings\n", - "forgivable\n", - "forgive\n", - "forgiven\n", - "forgiveness\n", - "forgivenesses\n", - "forgiver\n", - "forgivers\n", - "forgives\n", - "forgiving\n", - "forgo\n", - "forgoer\n", - "forgoers\n", - "forgoes\n", - "forgoing\n", - "forgone\n", - "forgot\n", - "forgotten\n", - "forint\n", - "forints\n", - "forjudge\n", - "forjudged\n", - "forjudges\n", - "forjudging\n", - "fork\n", - "forked\n", - "forkedly\n", - "forker\n", - "forkers\n", - "forkful\n", - "forkfuls\n", - "forkier\n", - "forkiest\n", - "forking\n", - "forkless\n", - "forklift\n", - "forklifts\n", - "forklike\n", - "forks\n", - "forksful\n", - "forky\n", - "forlorn\n", - "forlorner\n", - "forlornest\n", - "form\n", - "formable\n", - "formal\n", - "formaldehyde\n", - "formaldehydes\n", - "formalin\n", - "formalins\n", - "formalities\n", - "formality\n", - "formalize\n", - "formalized\n", - "formalizes\n", - "formalizing\n", - "formally\n", - "formals\n", - "formant\n", - "formants\n", - "format\n", - "formate\n", - "formates\n", - "formation\n", - "formations\n", - "formative\n", - "formats\n", - "formatted\n", - "formatting\n", - "forme\n", - "formed\n", - "formee\n", - "former\n", - "formerly\n", - "formers\n", - "formes\n", - "formful\n", - "formic\n", - "formidable\n", - "formidably\n", - "forming\n", - "formless\n", - "formol\n", - "formols\n", - "forms\n", - "formula\n", - "formulae\n", - "formulas\n", - "formulate\n", - "formulated\n", - "formulates\n", - "formulating\n", - "formulation\n", - "formulations\n", - "formyl\n", - "formyls\n", - "fornical\n", - "fornicate\n", - "fornicated\n", - "fornicates\n", - "fornicating\n", - "fornication\n", - "fornicator\n", - "fornicators\n", - "fornices\n", - "fornix\n", - "forrader\n", - "forrit\n", - "forsake\n", - "forsaken\n", - "forsaker\n", - "forsakers\n", - "forsakes\n", - "forsaking\n", - "forsook\n", - "forsooth\n", - "forspent\n", - "forswear\n", - "forswearing\n", - "forswears\n", - "forswore\n", - "forsworn\n", - "forsythia\n", - "forsythias\n", - "fort\n", - "forte\n", - "fortes\n", - "forth\n", - "forthcoming\n", - "forthright\n", - "forthrightness\n", - "forthrightnesses\n", - "forthwith\n", - "forties\n", - "fortieth\n", - "fortieths\n", - "fortification\n", - "fortifications\n", - "fortified\n", - "fortifies\n", - "fortify\n", - "fortifying\n", - "fortis\n", - "fortitude\n", - "fortitudes\n", - "fortnight\n", - "fortnightly\n", - "fortnights\n", - "fortress\n", - "fortressed\n", - "fortresses\n", - "fortressing\n", - "forts\n", - "fortuities\n", - "fortuitous\n", - "fortuity\n", - "fortunate\n", - "fortunately\n", - "fortune\n", - "fortuned\n", - "fortunes\n", - "fortuning\n", - "forty\n", - "forum\n", - "forums\n", - "forward\n", - "forwarded\n", - "forwarder\n", - "forwardest\n", - "forwarding\n", - "forwardness\n", - "forwardnesses\n", - "forwards\n", - "forwent\n", - "forwhy\n", - "forworn\n", - "forzando\n", - "forzandos\n", - "foss\n", - "fossa\n", - "fossae\n", - "fossate\n", - "fosse\n", - "fosses\n", - "fossette\n", - "fossettes\n", - "fossick\n", - "fossicked\n", - "fossicking\n", - "fossicks\n", - "fossil\n", - "fossilize\n", - "fossilized\n", - "fossilizes\n", - "fossilizing\n", - "fossils\n", - "foster\n", - "fostered\n", - "fosterer\n", - "fosterers\n", - "fostering\n", - "fosters\n", - "fou\n", - "fought\n", - "foughten\n", - "foul\n", - "foulard\n", - "foulards\n", - "fouled\n", - "fouler\n", - "foulest\n", - "fouling\n", - "foulings\n", - "foully\n", - "foulmouthed\n", - "foulness\n", - "foulnesses\n", - "fouls\n", - "found\n", - "foundation\n", - "foundational\n", - "foundations\n", - "founded\n", - "founder\n", - "foundered\n", - "foundering\n", - "founders\n", - "founding\n", - "foundling\n", - "foundlings\n", - "foundries\n", - "foundry\n", - "founds\n", - "fount\n", - "fountain\n", - "fountained\n", - "fountaining\n", - "fountains\n", - "founts\n", - "four\n", - "fourchee\n", - "fourfold\n", - "fourgon\n", - "fourgons\n", - "fours\n", - "fourscore\n", - "foursome\n", - "foursomes\n", - "fourteen\n", - "fourteens\n", - "fourteenth\n", - "fourteenths\n", - "fourth\n", - "fourthly\n", - "fourths\n", - "fovea\n", - "foveae\n", - "foveal\n", - "foveate\n", - "foveated\n", - "foveola\n", - "foveolae\n", - "foveolar\n", - "foveolas\n", - "foveole\n", - "foveoles\n", - "foveolet\n", - "foveolets\n", - "fowl\n", - "fowled\n", - "fowler\n", - "fowlers\n", - "fowling\n", - "fowlings\n", - "fowlpox\n", - "fowlpoxes\n", - "fowls\n", - "fox\n", - "foxed\n", - "foxes\n", - "foxfire\n", - "foxfires\n", - "foxfish\n", - "foxfishes\n", - "foxglove\n", - "foxgloves\n", - "foxhole\n", - "foxholes\n", - "foxhound\n", - "foxhounds\n", - "foxier\n", - "foxiest\n", - "foxily\n", - "foxiness\n", - "foxinesses\n", - "foxing\n", - "foxings\n", - "foxlike\n", - "foxskin\n", - "foxskins\n", - "foxtail\n", - "foxtails\n", - "foxy\n", - "foy\n", - "foyer\n", - "foyers\n", - "foys\n", - "fozier\n", - "foziest\n", - "foziness\n", - "fozinesses\n", - "fozy\n", - "fracas\n", - "fracases\n", - "fracted\n", - "fraction\n", - "fractional\n", - "fractionally\n", - "fractionated\n", - "fractioned\n", - "fractioning\n", - "fractions\n", - "fractur\n", - "fracture\n", - "fractured\n", - "fractures\n", - "fracturing\n", - "fracturs\n", - "frae\n", - "fraena\n", - "fraenum\n", - "fraenums\n", - "frag\n", - "fragged\n", - "fragging\n", - "fraggings\n", - "fragile\n", - "fragilities\n", - "fragility\n", - "fragment\n", - "fragmentary\n", - "fragmentation\n", - "fragmentations\n", - "fragmented\n", - "fragmenting\n", - "fragments\n", - "fragrant\n", - "fragrantly\n", - "frags\n", - "frail\n", - "frailer\n", - "frailest\n", - "frailly\n", - "frails\n", - "frailties\n", - "frailty\n", - "fraise\n", - "fraises\n", - "fraktur\n", - "frakturs\n", - "framable\n", - "frame\n", - "framed\n", - "framer\n", - "framers\n", - "frames\n", - "framework\n", - "frameworks\n", - "framing\n", - "franc\n", - "franchise\n", - "franchisee\n", - "franchisees\n", - "franchises\n", - "francium\n", - "franciums\n", - "francs\n", - "frangibilities\n", - "frangibility\n", - "frangible\n", - "frank\n", - "franked\n", - "franker\n", - "frankers\n", - "frankest\n", - "frankfort\n", - "frankforter\n", - "frankforters\n", - "frankforts\n", - "frankfurt\n", - "frankfurter\n", - "frankfurters\n", - "frankfurts\n", - "frankincense\n", - "frankincenses\n", - "franking\n", - "franklin\n", - "franklins\n", - "frankly\n", - "frankness\n", - "franknesses\n", - "franks\n", - "frantic\n", - "frantically\n", - "franticly\n", - "frap\n", - "frappe\n", - "frapped\n", - "frappes\n", - "frapping\n", - "fraps\n", - "frat\n", - "frater\n", - "fraternal\n", - "fraternally\n", - "fraternities\n", - "fraternity\n", - "fraternization\n", - "fraternizations\n", - "fraternize\n", - "fraternized\n", - "fraternizes\n", - "fraternizing\n", - "fraters\n", - "fratricidal\n", - "fratricide\n", - "fratricides\n", - "frats\n", - "fraud\n", - "frauds\n", - "fraudulent\n", - "fraudulently\n", - "fraught\n", - "fraughted\n", - "fraughting\n", - "fraughts\n", - "fraulein\n", - "frauleins\n", - "fray\n", - "frayed\n", - "fraying\n", - "frayings\n", - "frays\n", - "frazzle\n", - "frazzled\n", - "frazzles\n", - "frazzling\n", - "freak\n", - "freaked\n", - "freakier\n", - "freakiest\n", - "freakily\n", - "freaking\n", - "freakish\n", - "freakout\n", - "freakouts\n", - "freaks\n", - "freaky\n", - "freckle\n", - "freckled\n", - "freckles\n", - "frecklier\n", - "freckliest\n", - "freckling\n", - "freckly\n", - "free\n", - "freebee\n", - "freebees\n", - "freebie\n", - "freebies\n", - "freeboot\n", - "freebooted\n", - "freebooter\n", - "freebooters\n", - "freebooting\n", - "freeboots\n", - "freeborn\n", - "freed\n", - "freedman\n", - "freedmen\n", - "freedom\n", - "freedoms\n", - "freeform\n", - "freehand\n", - "freehold\n", - "freeholds\n", - "freeing\n", - "freeload\n", - "freeloaded\n", - "freeloader\n", - "freeloaders\n", - "freeloading\n", - "freeloads\n", - "freely\n", - "freeman\n", - "freemen\n", - "freeness\n", - "freenesses\n", - "freer\n", - "freers\n", - "frees\n", - "freesia\n", - "freesias\n", - "freest\n", - "freestanding\n", - "freeway\n", - "freeways\n", - "freewill\n", - "freeze\n", - "freezer\n", - "freezers\n", - "freezes\n", - "freezing\n", - "freight\n", - "freighted\n", - "freighter\n", - "freighters\n", - "freighting\n", - "freights\n", - "fremd\n", - "fremitus\n", - "fremituses\n", - "frena\n", - "french\n", - "frenched\n", - "frenches\n", - "frenching\n", - "frenetic\n", - "frenetically\n", - "frenetics\n", - "frenula\n", - "frenulum\n", - "frenum\n", - "frenums\n", - "frenzied\n", - "frenzies\n", - "frenzily\n", - "frenzy\n", - "frenzying\n", - "frequencies\n", - "frequency\n", - "frequent\n", - "frequented\n", - "frequenter\n", - "frequenters\n", - "frequentest\n", - "frequenting\n", - "frequently\n", - "frequents\n", - "frere\n", - "freres\n", - "fresco\n", - "frescoed\n", - "frescoer\n", - "frescoers\n", - "frescoes\n", - "frescoing\n", - "frescos\n", - "fresh\n", - "freshed\n", - "freshen\n", - "freshened\n", - "freshening\n", - "freshens\n", - "fresher\n", - "freshes\n", - "freshest\n", - "freshet\n", - "freshets\n", - "freshing\n", - "freshly\n", - "freshman\n", - "freshmen\n", - "freshness\n", - "freshnesses\n", - "freshwater\n", - "fresnel\n", - "fresnels\n", - "fret\n", - "fretful\n", - "fretfully\n", - "fretfulness\n", - "fretfulnesses\n", - "fretless\n", - "frets\n", - "fretsaw\n", - "fretsaws\n", - "fretsome\n", - "fretted\n", - "frettier\n", - "frettiest\n", - "fretting\n", - "fretty\n", - "fretwork\n", - "fretworks\n", - "friable\n", - "friar\n", - "friaries\n", - "friarly\n", - "friars\n", - "friary\n", - "fribble\n", - "fribbled\n", - "fribbler\n", - "fribblers\n", - "fribbles\n", - "fribbling\n", - "fricando\n", - "fricandoes\n", - "fricassee\n", - "fricassees\n", - "friction\n", - "frictional\n", - "frictions\n", - "fridge\n", - "fridges\n", - "fried\n", - "friend\n", - "friended\n", - "friending\n", - "friendless\n", - "friendlier\n", - "friendlies\n", - "friendliest\n", - "friendliness\n", - "friendlinesses\n", - "friendly\n", - "friends\n", - "friendship\n", - "friendships\n", - "frier\n", - "friers\n", - "fries\n", - "frieze\n", - "friezes\n", - "frig\n", - "frigate\n", - "frigates\n", - "frigged\n", - "frigging\n", - "fright\n", - "frighted\n", - "frighten\n", - "frightened\n", - "frightening\n", - "frightens\n", - "frightful\n", - "frightfully\n", - "frightfulness\n", - "frightfulnesses\n", - "frighting\n", - "frights\n", - "frigid\n", - "frigidities\n", - "frigidity\n", - "frigidly\n", - "frigs\n", - "frijol\n", - "frijole\n", - "frijoles\n", - "frill\n", - "frilled\n", - "friller\n", - "frillers\n", - "frillier\n", - "frilliest\n", - "frilling\n", - "frillings\n", - "frills\n", - "frilly\n", - "fringe\n", - "fringed\n", - "fringes\n", - "fringier\n", - "fringiest\n", - "fringing\n", - "fringy\n", - "fripperies\n", - "frippery\n", - "frise\n", - "frises\n", - "frisette\n", - "frisettes\n", - "friseur\n", - "friseurs\n", - "frisk\n", - "frisked\n", - "frisker\n", - "friskers\n", - "frisket\n", - "friskets\n", - "friskier\n", - "friskiest\n", - "friskily\n", - "friskiness\n", - "friskinesses\n", - "frisking\n", - "frisks\n", - "frisky\n", - "frisson\n", - "frissons\n", - "frit\n", - "frith\n", - "friths\n", - "frits\n", - "fritt\n", - "fritted\n", - "fritter\n", - "frittered\n", - "frittering\n", - "fritters\n", - "fritting\n", - "fritts\n", - "frivol\n", - "frivoled\n", - "frivoler\n", - "frivolers\n", - "frivoling\n", - "frivolities\n", - "frivolity\n", - "frivolled\n", - "frivolling\n", - "frivolous\n", - "frivolously\n", - "frivols\n", - "friz\n", - "frized\n", - "frizer\n", - "frizers\n", - "frizes\n", - "frizette\n", - "frizettes\n", - "frizing\n", - "frizz\n", - "frizzed\n", - "frizzer\n", - "frizzers\n", - "frizzes\n", - "frizzier\n", - "frizziest\n", - "frizzily\n", - "frizzing\n", - "frizzle\n", - "frizzled\n", - "frizzler\n", - "frizzlers\n", - "frizzles\n", - "frizzlier\n", - "frizzliest\n", - "frizzling\n", - "frizzly\n", - "frizzy\n", - "fro\n", - "frock\n", - "frocked\n", - "frocking\n", - "frocks\n", - "froe\n", - "froes\n", - "frog\n", - "frogeye\n", - "frogeyed\n", - "frogeyes\n", - "frogfish\n", - "frogfishes\n", - "frogged\n", - "froggier\n", - "froggiest\n", - "frogging\n", - "froggy\n", - "froglike\n", - "frogman\n", - "frogmen\n", - "frogs\n", - "frolic\n", - "frolicked\n", - "frolicking\n", - "frolicky\n", - "frolics\n", - "frolicsome\n", - "from\n", - "fromage\n", - "fromages\n", - "fromenties\n", - "fromenty\n", - "frond\n", - "fronded\n", - "frondeur\n", - "frondeurs\n", - "frondose\n", - "fronds\n", - "frons\n", - "front\n", - "frontage\n", - "frontages\n", - "frontal\n", - "frontals\n", - "fronted\n", - "fronter\n", - "frontes\n", - "frontier\n", - "frontiers\n", - "frontiersman\n", - "frontiersmen\n", - "fronting\n", - "frontispiece\n", - "frontispieces\n", - "frontlet\n", - "frontlets\n", - "fronton\n", - "frontons\n", - "fronts\n", - "frore\n", - "frosh\n", - "frost\n", - "frostbit\n", - "frostbite\n", - "frostbites\n", - "frostbitten\n", - "frosted\n", - "frosteds\n", - "frostier\n", - "frostiest\n", - "frostily\n", - "frosting\n", - "frostings\n", - "frosts\n", - "frosty\n", - "froth\n", - "frothed\n", - "frothier\n", - "frothiest\n", - "frothily\n", - "frothing\n", - "froths\n", - "frothy\n", - "frottage\n", - "frottages\n", - "frotteur\n", - "frotteurs\n", - "froufrou\n", - "froufrous\n", - "frounce\n", - "frounced\n", - "frounces\n", - "frouncing\n", - "frouzier\n", - "frouziest\n", - "frouzy\n", - "frow\n", - "froward\n", - "frown\n", - "frowned\n", - "frowner\n", - "frowners\n", - "frowning\n", - "frowns\n", - "frows\n", - "frowsier\n", - "frowsiest\n", - "frowstier\n", - "frowstiest\n", - "frowsty\n", - "frowsy\n", - "frowzier\n", - "frowziest\n", - "frowzily\n", - "frowzy\n", - "froze\n", - "frozen\n", - "frozenly\n", - "fructified\n", - "fructifies\n", - "fructify\n", - "fructifying\n", - "fructose\n", - "fructoses\n", - "frug\n", - "frugal\n", - "frugalities\n", - "frugality\n", - "frugally\n", - "frugged\n", - "frugging\n", - "frugs\n", - "fruit\n", - "fruitage\n", - "fruitages\n", - "fruitcake\n", - "fruitcakes\n", - "fruited\n", - "fruiter\n", - "fruiters\n", - "fruitful\n", - "fruitfuller\n", - "fruitfullest\n", - "fruitfulness\n", - "fruitfulnesses\n", - "fruitier\n", - "fruitiest\n", - "fruiting\n", - "fruition\n", - "fruitions\n", - "fruitless\n", - "fruitlet\n", - "fruitlets\n", - "fruits\n", - "fruity\n", - "frumenties\n", - "frumenty\n", - "frump\n", - "frumpier\n", - "frumpiest\n", - "frumpily\n", - "frumpish\n", - "frumps\n", - "frumpy\n", - "frusta\n", - "frustrate\n", - "frustrated\n", - "frustrates\n", - "frustrating\n", - "frustratingly\n", - "frustration\n", - "frustrations\n", - "frustule\n", - "frustules\n", - "frustum\n", - "frustums\n", - "fry\n", - "fryer\n", - "fryers\n", - "frying\n", - "frypan\n", - "frypans\n", - "fub\n", - "fubbed\n", - "fubbing\n", - "fubs\n", - "fubsier\n", - "fubsiest\n", - "fubsy\n", - "fuchsia\n", - "fuchsias\n", - "fuchsin\n", - "fuchsine\n", - "fuchsines\n", - "fuchsins\n", - "fuci\n", - "fucoid\n", - "fucoidal\n", - "fucoids\n", - "fucose\n", - "fucoses\n", - "fucous\n", - "fucus\n", - "fucuses\n", - "fud\n", - "fuddle\n", - "fuddled\n", - "fuddles\n", - "fuddling\n", - "fudge\n", - "fudged\n", - "fudges\n", - "fudging\n", - "fuds\n", - "fuehrer\n", - "fuehrers\n", - "fuel\n", - "fueled\n", - "fueler\n", - "fuelers\n", - "fueling\n", - "fuelled\n", - "fueller\n", - "fuellers\n", - "fuelling\n", - "fuels\n", - "fug\n", - "fugacities\n", - "fugacity\n", - "fugal\n", - "fugally\n", - "fugato\n", - "fugatos\n", - "fugged\n", - "fuggier\n", - "fuggiest\n", - "fugging\n", - "fuggy\n", - "fugio\n", - "fugios\n", - "fugitive\n", - "fugitives\n", - "fugle\n", - "fugled\n", - "fugleman\n", - "fuglemen\n", - "fugles\n", - "fugling\n", - "fugs\n", - "fugue\n", - "fugued\n", - "fugues\n", - "fuguing\n", - "fuguist\n", - "fuguists\n", - "fuhrer\n", - "fuhrers\n", - "fuji\n", - "fujis\n", - "fulcra\n", - "fulcrum\n", - "fulcrums\n", - "fulfil\n", - "fulfill\n", - "fulfilled\n", - "fulfilling\n", - "fulfillment\n", - "fulfillments\n", - "fulfills\n", - "fulfils\n", - "fulgent\n", - "fulgid\n", - "fulham\n", - "fulhams\n", - "full\n", - "fullam\n", - "fullams\n", - "fullback\n", - "fullbacks\n", - "fulled\n", - "fuller\n", - "fullered\n", - "fulleries\n", - "fullering\n", - "fullers\n", - "fullery\n", - "fullest\n", - "fullface\n", - "fullfaces\n", - "fulling\n", - "fullness\n", - "fullnesses\n", - "fulls\n", - "fully\n", - "fulmar\n", - "fulmars\n", - "fulmine\n", - "fulmined\n", - "fulmines\n", - "fulminic\n", - "fulmining\n", - "fulness\n", - "fulnesses\n", - "fulsome\n", - "fulvous\n", - "fumarase\n", - "fumarases\n", - "fumarate\n", - "fumarates\n", - "fumaric\n", - "fumarole\n", - "fumaroles\n", - "fumatories\n", - "fumatory\n", - "fumble\n", - "fumbled\n", - "fumbler\n", - "fumblers\n", - "fumbles\n", - "fumbling\n", - "fume\n", - "fumed\n", - "fumeless\n", - "fumelike\n", - "fumer\n", - "fumers\n", - "fumes\n", - "fumet\n", - "fumets\n", - "fumette\n", - "fumettes\n", - "fumier\n", - "fumiest\n", - "fumigant\n", - "fumigants\n", - "fumigate\n", - "fumigated\n", - "fumigates\n", - "fumigating\n", - "fumigation\n", - "fumigations\n", - "fuming\n", - "fumitories\n", - "fumitory\n", - "fumuli\n", - "fumulus\n", - "fumy\n", - "fun\n", - "function\n", - "functional\n", - "functionally\n", - "functionaries\n", - "functionary\n", - "functioned\n", - "functioning\n", - "functionless\n", - "functions\n", - "functor\n", - "functors\n", - "fund\n", - "fundamental\n", - "fundamentally\n", - "fundamentals\n", - "funded\n", - "fundi\n", - "fundic\n", - "funding\n", - "funds\n", - "fundus\n", - "funeral\n", - "funerals\n", - "funerary\n", - "funereal\n", - "funest\n", - "funfair\n", - "funfairs\n", - "fungal\n", - "fungals\n", - "fungi\n", - "fungible\n", - "fungibles\n", - "fungic\n", - "fungicidal\n", - "fungicide\n", - "fungicides\n", - "fungo\n", - "fungoes\n", - "fungoid\n", - "fungoids\n", - "fungous\n", - "fungus\n", - "funguses\n", - "funicle\n", - "funicles\n", - "funiculi\n", - "funk\n", - "funked\n", - "funker\n", - "funkers\n", - "funkia\n", - "funkias\n", - "funkier\n", - "funkiest\n", - "funking\n", - "funks\n", - "funky\n", - "funned\n", - "funnel\n", - "funneled\n", - "funneling\n", - "funnelled\n", - "funnelling\n", - "funnels\n", - "funnier\n", - "funnies\n", - "funniest\n", - "funnily\n", - "funning\n", - "funny\n", - "funnyman\n", - "funnymen\n", - "funs\n", - "fur\n", - "furan\n", - "furane\n", - "furanes\n", - "furanose\n", - "furanoses\n", - "furans\n", - "furbelow\n", - "furbelowed\n", - "furbelowing\n", - "furbelows\n", - "furbish\n", - "furbished\n", - "furbishes\n", - "furbishing\n", - "furcate\n", - "furcated\n", - "furcates\n", - "furcating\n", - "furcraea\n", - "furcraeas\n", - "furcula\n", - "furculae\n", - "furcular\n", - "furculum\n", - "furfur\n", - "furfural\n", - "furfurals\n", - "furfuran\n", - "furfurans\n", - "furfures\n", - "furibund\n", - "furies\n", - "furioso\n", - "furious\n", - "furiously\n", - "furl\n", - "furlable\n", - "furled\n", - "furler\n", - "furlers\n", - "furless\n", - "furling\n", - "furlong\n", - "furlongs\n", - "furlough\n", - "furloughed\n", - "furloughing\n", - "furloughs\n", - "furls\n", - "furmenties\n", - "furmenty\n", - "furmeties\n", - "furmety\n", - "furmities\n", - "furmity\n", - "furnace\n", - "furnaced\n", - "furnaces\n", - "furnacing\n", - "furnish\n", - "furnished\n", - "furnishes\n", - "furnishing\n", - "furnishings\n", - "furniture\n", - "furnitures\n", - "furor\n", - "furore\n", - "furores\n", - "furors\n", - "furred\n", - "furrier\n", - "furrieries\n", - "furriers\n", - "furriery\n", - "furriest\n", - "furrily\n", - "furriner\n", - "furriners\n", - "furring\n", - "furrings\n", - "furrow\n", - "furrowed\n", - "furrower\n", - "furrowers\n", - "furrowing\n", - "furrows\n", - "furrowy\n", - "furry\n", - "furs\n", - "further\n", - "furthered\n", - "furthering\n", - "furthermore\n", - "furthermost\n", - "furthers\n", - "furthest\n", - "furtive\n", - "furtively\n", - "furtiveness\n", - "furtivenesses\n", - "furuncle\n", - "furuncles\n", - "fury\n", - "furze\n", - "furzes\n", - "furzier\n", - "furziest\n", - "furzy\n", - "fusain\n", - "fusains\n", - "fuscous\n", - "fuse\n", - "fused\n", - "fusee\n", - "fusees\n", - "fusel\n", - "fuselage\n", - "fuselages\n", - "fuseless\n", - "fusels\n", - "fuses\n", - "fusible\n", - "fusibly\n", - "fusiform\n", - "fusil\n", - "fusile\n", - "fusileer\n", - "fusileers\n", - "fusilier\n", - "fusiliers\n", - "fusillade\n", - "fusillades\n", - "fusils\n", - "fusing\n", - "fusion\n", - "fusions\n", - "fuss\n", - "fussbudget\n", - "fussbudgets\n", - "fussed\n", - "fusser\n", - "fussers\n", - "fusses\n", - "fussier\n", - "fussiest\n", - "fussily\n", - "fussiness\n", - "fussinesses\n", - "fussing\n", - "fusspot\n", - "fusspots\n", - "fussy\n", - "fustian\n", - "fustians\n", - "fustic\n", - "fustics\n", - "fustier\n", - "fustiest\n", - "fustily\n", - "fusty\n", - "futharc\n", - "futharcs\n", - "futhark\n", - "futharks\n", - "futhorc\n", - "futhorcs\n", - "futhork\n", - "futhorks\n", - "futile\n", - "futilely\n", - "futilities\n", - "futility\n", - "futtock\n", - "futtocks\n", - "futural\n", - "future\n", - "futures\n", - "futurism\n", - "futurisms\n", - "futurist\n", - "futuristic\n", - "futurists\n", - "futurities\n", - "futurity\n", - "fuze\n", - "fuzed\n", - "fuzee\n", - "fuzees\n", - "fuzes\n", - "fuzil\n", - "fuzils\n", - "fuzing\n", - "fuzz\n", - "fuzzed\n", - "fuzzes\n", - "fuzzier\n", - "fuzziest\n", - "fuzzily\n", - "fuzziness\n", - "fuzzinesses\n", - "fuzzing\n", - "fuzzy\n", - "fyce\n", - "fyces\n", - "fyke\n", - "fykes\n", - "fylfot\n", - "fylfots\n", - "fytte\n", - "fyttes\n", - "gab\n", - "gabardine\n", - "gabardines\n", - "gabbard\n", - "gabbards\n", - "gabbart\n", - "gabbarts\n", - "gabbed\n", - "gabber\n", - "gabbers\n", - "gabbier\n", - "gabbiest\n", - "gabbing\n", - "gabble\n", - "gabbled\n", - "gabbler\n", - "gabblers\n", - "gabbles\n", - "gabbling\n", - "gabbro\n", - "gabbroic\n", - "gabbroid\n", - "gabbros\n", - "gabby\n", - "gabelle\n", - "gabelled\n", - "gabelles\n", - "gabfest\n", - "gabfests\n", - "gabies\n", - "gabion\n", - "gabions\n", - "gable\n", - "gabled\n", - "gables\n", - "gabling\n", - "gaboon\n", - "gaboons\n", - "gabs\n", - "gaby\n", - "gad\n", - "gadabout\n", - "gadabouts\n", - "gadarene\n", - "gadded\n", - "gadder\n", - "gadders\n", - "gaddi\n", - "gadding\n", - "gaddis\n", - "gadflies\n", - "gadfly\n", - "gadget\n", - "gadgetries\n", - "gadgetry\n", - "gadgets\n", - "gadgety\n", - "gadi\n", - "gadid\n", - "gadids\n", - "gadis\n", - "gadoid\n", - "gadoids\n", - "gadroon\n", - "gadroons\n", - "gads\n", - "gadwall\n", - "gadwalls\n", - "gadzooks\n", - "gae\n", - "gaed\n", - "gaen\n", - "gaes\n", - "gaff\n", - "gaffe\n", - "gaffed\n", - "gaffer\n", - "gaffers\n", - "gaffes\n", - "gaffing\n", - "gaffs\n", - "gag\n", - "gaga\n", - "gage\n", - "gaged\n", - "gager\n", - "gagers\n", - "gages\n", - "gagged\n", - "gagger\n", - "gaggers\n", - "gagging\n", - "gaggle\n", - "gaggled\n", - "gaggles\n", - "gaggling\n", - "gaging\n", - "gagman\n", - "gagmen\n", - "gags\n", - "gagster\n", - "gagsters\n", - "gahnite\n", - "gahnites\n", - "gaieties\n", - "gaiety\n", - "gaily\n", - "gain\n", - "gainable\n", - "gained\n", - "gainer\n", - "gainers\n", - "gainful\n", - "gainfully\n", - "gaining\n", - "gainless\n", - "gainlier\n", - "gainliest\n", - "gainly\n", - "gains\n", - "gainsaid\n", - "gainsay\n", - "gainsayer\n", - "gainsayers\n", - "gainsaying\n", - "gainsays\n", - "gainst\n", - "gait\n", - "gaited\n", - "gaiter\n", - "gaiters\n", - "gaiting\n", - "gaits\n", - "gal\n", - "gala\n", - "galactic\n", - "galactorrhea\n", - "galago\n", - "galagos\n", - "galah\n", - "galahs\n", - "galangal\n", - "galangals\n", - "galas\n", - "galatea\n", - "galateas\n", - "galavant\n", - "galavanted\n", - "galavanting\n", - "galavants\n", - "galax\n", - "galaxes\n", - "galaxies\n", - "galaxy\n", - "galbanum\n", - "galbanums\n", - "gale\n", - "galea\n", - "galeae\n", - "galeas\n", - "galeate\n", - "galeated\n", - "galena\n", - "galenas\n", - "galenic\n", - "galenite\n", - "galenites\n", - "galere\n", - "galeres\n", - "gales\n", - "galilee\n", - "galilees\n", - "galiot\n", - "galiots\n", - "galipot\n", - "galipots\n", - "galivant\n", - "galivanted\n", - "galivanting\n", - "galivants\n", - "gall\n", - "gallant\n", - "gallanted\n", - "gallanting\n", - "gallantly\n", - "gallantries\n", - "gallantry\n", - "gallants\n", - "gallate\n", - "gallates\n", - "gallbladder\n", - "gallbladders\n", - "galleass\n", - "galleasses\n", - "galled\n", - "gallein\n", - "galleins\n", - "galleon\n", - "galleons\n", - "galleried\n", - "galleries\n", - "gallery\n", - "gallerying\n", - "galleta\n", - "galletas\n", - "galley\n", - "galleys\n", - "gallflies\n", - "gallfly\n", - "galliard\n", - "galliards\n", - "galliass\n", - "galliasses\n", - "gallic\n", - "gallican\n", - "gallied\n", - "gallies\n", - "galling\n", - "galliot\n", - "galliots\n", - "gallipot\n", - "gallipots\n", - "gallium\n", - "galliums\n", - "gallivant\n", - "gallivanted\n", - "gallivanting\n", - "gallivants\n", - "gallnut\n", - "gallnuts\n", - "gallon\n", - "gallons\n", - "galloon\n", - "galloons\n", - "galloot\n", - "galloots\n", - "gallop\n", - "galloped\n", - "galloper\n", - "gallopers\n", - "galloping\n", - "gallops\n", - "gallous\n", - "gallows\n", - "gallowses\n", - "galls\n", - "gallstone\n", - "gallstones\n", - "gallus\n", - "gallused\n", - "galluses\n", - "gally\n", - "gallying\n", - "galoot\n", - "galoots\n", - "galop\n", - "galopade\n", - "galopades\n", - "galops\n", - "galore\n", - "galores\n", - "galosh\n", - "galoshe\n", - "galoshed\n", - "galoshes\n", - "gals\n", - "galumph\n", - "galumphed\n", - "galumphing\n", - "galumphs\n", - "galvanic\n", - "galvanization\n", - "galvanizations\n", - "galvanize\n", - "galvanized\n", - "galvanizer\n", - "galvanizers\n", - "galvanizes\n", - "galvanizing\n", - "galyac\n", - "galyacs\n", - "galyak\n", - "galyaks\n", - "gam\n", - "gamashes\n", - "gamb\n", - "gamba\n", - "gambade\n", - "gambades\n", - "gambado\n", - "gambadoes\n", - "gambados\n", - "gambas\n", - "gambe\n", - "gambes\n", - "gambeson\n", - "gambesons\n", - "gambia\n", - "gambias\n", - "gambier\n", - "gambiers\n", - "gambir\n", - "gambirs\n", - "gambit\n", - "gambits\n", - "gamble\n", - "gambled\n", - "gambler\n", - "gamblers\n", - "gambles\n", - "gambling\n", - "gamboge\n", - "gamboges\n", - "gambol\n", - "gamboled\n", - "gamboling\n", - "gambolled\n", - "gambolling\n", - "gambols\n", - "gambrel\n", - "gambrels\n", - "gambs\n", - "gambusia\n", - "gambusias\n", - "game\n", - "gamecock\n", - "gamecocks\n", - "gamed\n", - "gamekeeper\n", - "gamekeepers\n", - "gamelan\n", - "gamelans\n", - "gamelike\n", - "gamely\n", - "gameness\n", - "gamenesses\n", - "gamer\n", - "games\n", - "gamesome\n", - "gamest\n", - "gamester\n", - "gamesters\n", - "gamete\n", - "gametes\n", - "gametic\n", - "gamey\n", - "gamic\n", - "gamier\n", - "gamiest\n", - "gamily\n", - "gamin\n", - "gamine\n", - "gamines\n", - "gaminess\n", - "gaminesses\n", - "gaming\n", - "gamings\n", - "gamins\n", - "gamma\n", - "gammadia\n", - "gammas\n", - "gammed\n", - "gammer\n", - "gammers\n", - "gamming\n", - "gammon\n", - "gammoned\n", - "gammoner\n", - "gammoners\n", - "gammoning\n", - "gammons\n", - "gamodeme\n", - "gamodemes\n", - "gamp\n", - "gamps\n", - "gams\n", - "gamut\n", - "gamuts\n", - "gamy\n", - "gan\n", - "gander\n", - "gandered\n", - "gandering\n", - "ganders\n", - "gane\n", - "ganef\n", - "ganefs\n", - "ganev\n", - "ganevs\n", - "gang\n", - "ganged\n", - "ganger\n", - "gangers\n", - "ganging\n", - "gangland\n", - "ganglands\n", - "ganglia\n", - "ganglial\n", - "gangliar\n", - "ganglier\n", - "gangliest\n", - "gangling\n", - "ganglion\n", - "ganglionic\n", - "ganglions\n", - "gangly\n", - "gangplank\n", - "gangplanks\n", - "gangplow\n", - "gangplows\n", - "gangrel\n", - "gangrels\n", - "gangrene\n", - "gangrened\n", - "gangrenes\n", - "gangrening\n", - "gangrenous\n", - "gangs\n", - "gangster\n", - "gangsters\n", - "gangue\n", - "gangues\n", - "gangway\n", - "gangways\n", - "ganister\n", - "ganisters\n", - "ganja\n", - "ganjas\n", - "gannet\n", - "gannets\n", - "ganof\n", - "ganofs\n", - "ganoid\n", - "ganoids\n", - "gantlet\n", - "gantleted\n", - "gantleting\n", - "gantlets\n", - "gantline\n", - "gantlines\n", - "gantlope\n", - "gantlopes\n", - "gantries\n", - "gantry\n", - "ganymede\n", - "ganymedes\n", - "gaol\n", - "gaoled\n", - "gaoler\n", - "gaolers\n", - "gaoling\n", - "gaols\n", - "gap\n", - "gape\n", - "gaped\n", - "gaper\n", - "gapers\n", - "gapes\n", - "gapeseed\n", - "gapeseeds\n", - "gapeworm\n", - "gapeworms\n", - "gaping\n", - "gapingly\n", - "gaposis\n", - "gaposises\n", - "gapped\n", - "gappier\n", - "gappiest\n", - "gapping\n", - "gappy\n", - "gaps\n", - "gapy\n", - "gar\n", - "garage\n", - "garaged\n", - "garages\n", - "garaging\n", - "garb\n", - "garbage\n", - "garbages\n", - "garbanzo\n", - "garbanzos\n", - "garbed\n", - "garbing\n", - "garble\n", - "garbled\n", - "garbler\n", - "garblers\n", - "garbles\n", - "garbless\n", - "garbling\n", - "garboard\n", - "garboards\n", - "garboil\n", - "garboils\n", - "garbs\n", - "garcon\n", - "garcons\n", - "gardant\n", - "garden\n", - "gardened\n", - "gardener\n", - "gardeners\n", - "gardenia\n", - "gardenias\n", - "gardening\n", - "gardens\n", - "gardyloo\n", - "garfish\n", - "garfishes\n", - "garganey\n", - "garganeys\n", - "gargantuan\n", - "garget\n", - "gargets\n", - "gargety\n", - "gargle\n", - "gargled\n", - "gargler\n", - "garglers\n", - "gargles\n", - "gargling\n", - "gargoyle\n", - "gargoyles\n", - "garish\n", - "garishly\n", - "garland\n", - "garlanded\n", - "garlanding\n", - "garlands\n", - "garlic\n", - "garlicky\n", - "garlics\n", - "garment\n", - "garmented\n", - "garmenting\n", - "garments\n", - "garner\n", - "garnered\n", - "garnering\n", - "garners\n", - "garnet\n", - "garnets\n", - "garnish\n", - "garnished\n", - "garnishee\n", - "garnisheed\n", - "garnishees\n", - "garnisheing\n", - "garnishes\n", - "garnishing\n", - "garnishment\n", - "garnishments\n", - "garote\n", - "garoted\n", - "garotes\n", - "garoting\n", - "garotte\n", - "garotted\n", - "garotter\n", - "garotters\n", - "garottes\n", - "garotting\n", - "garpike\n", - "garpikes\n", - "garred\n", - "garret\n", - "garrets\n", - "garring\n", - "garrison\n", - "garrisoned\n", - "garrisoning\n", - "garrisons\n", - "garron\n", - "garrons\n", - "garrote\n", - "garroted\n", - "garroter\n", - "garroters\n", - "garrotes\n", - "garroting\n", - "garrotte\n", - "garrotted\n", - "garrottes\n", - "garrotting\n", - "garrulities\n", - "garrulity\n", - "garrulous\n", - "garrulously\n", - "garrulousness\n", - "garrulousnesses\n", - "gars\n", - "garter\n", - "gartered\n", - "gartering\n", - "garters\n", - "garth\n", - "garths\n", - "garvey\n", - "garveys\n", - "gas\n", - "gasalier\n", - "gasaliers\n", - "gasbag\n", - "gasbags\n", - "gascon\n", - "gascons\n", - "gaselier\n", - "gaseliers\n", - "gaseous\n", - "gases\n", - "gash\n", - "gashed\n", - "gasher\n", - "gashes\n", - "gashest\n", - "gashing\n", - "gashouse\n", - "gashouses\n", - "gasified\n", - "gasifier\n", - "gasifiers\n", - "gasifies\n", - "gasiform\n", - "gasify\n", - "gasifying\n", - "gasket\n", - "gaskets\n", - "gaskin\n", - "gasking\n", - "gaskings\n", - "gaskins\n", - "gasless\n", - "gaslight\n", - "gaslights\n", - "gaslit\n", - "gasman\n", - "gasmen\n", - "gasogene\n", - "gasogenes\n", - "gasolene\n", - "gasolenes\n", - "gasolier\n", - "gasoliers\n", - "gasoline\n", - "gasolines\n", - "gasp\n", - "gasped\n", - "gasper\n", - "gaspers\n", - "gasping\n", - "gasps\n", - "gassed\n", - "gasser\n", - "gassers\n", - "gasses\n", - "gassier\n", - "gassiest\n", - "gassing\n", - "gassings\n", - "gassy\n", - "gast\n", - "gasted\n", - "gastight\n", - "gasting\n", - "gastness\n", - "gastnesses\n", - "gastraea\n", - "gastraeas\n", - "gastral\n", - "gastrea\n", - "gastreas\n", - "gastric\n", - "gastrin\n", - "gastrins\n", - "gastronomic\n", - "gastronomical\n", - "gastronomies\n", - "gastronomy\n", - "gastrula\n", - "gastrulae\n", - "gastrulas\n", - "gasts\n", - "gasworks\n", - "gat\n", - "gate\n", - "gated\n", - "gatefold\n", - "gatefolds\n", - "gatekeeper\n", - "gatekeepers\n", - "gateless\n", - "gatelike\n", - "gateman\n", - "gatemen\n", - "gatepost\n", - "gateposts\n", - "gates\n", - "gateway\n", - "gateways\n", - "gather\n", - "gathered\n", - "gatherer\n", - "gatherers\n", - "gathering\n", - "gatherings\n", - "gathers\n", - "gating\n", - "gats\n", - "gauche\n", - "gauchely\n", - "gaucher\n", - "gauchest\n", - "gaucho\n", - "gauchos\n", - "gaud\n", - "gauderies\n", - "gaudery\n", - "gaudier\n", - "gaudies\n", - "gaudiest\n", - "gaudily\n", - "gaudiness\n", - "gaudinesses\n", - "gauds\n", - "gaudy\n", - "gauffer\n", - "gauffered\n", - "gauffering\n", - "gauffers\n", - "gauge\n", - "gauged\n", - "gauger\n", - "gaugers\n", - "gauges\n", - "gauging\n", - "gault\n", - "gaults\n", - "gaum\n", - "gaumed\n", - "gauming\n", - "gaums\n", - "gaun\n", - "gaunt\n", - "gaunter\n", - "gauntest\n", - "gauntlet\n", - "gauntleted\n", - "gauntleting\n", - "gauntlets\n", - "gauntly\n", - "gauntness\n", - "gauntnesses\n", - "gauntries\n", - "gauntry\n", - "gaur\n", - "gaurs\n", - "gauss\n", - "gausses\n", - "gauze\n", - "gauzes\n", - "gauzier\n", - "gauziest\n", - "gauzy\n", - "gavage\n", - "gavages\n", - "gave\n", - "gavel\n", - "gaveled\n", - "gaveling\n", - "gavelled\n", - "gavelling\n", - "gavelock\n", - "gavelocks\n", - "gavels\n", - "gavial\n", - "gavials\n", - "gavot\n", - "gavots\n", - "gavotte\n", - "gavotted\n", - "gavottes\n", - "gavotting\n", - "gawk\n", - "gawked\n", - "gawker\n", - "gawkers\n", - "gawkier\n", - "gawkies\n", - "gawkiest\n", - "gawkily\n", - "gawking\n", - "gawkish\n", - "gawks\n", - "gawky\n", - "gawsie\n", - "gawsy\n", - "gay\n", - "gayal\n", - "gayals\n", - "gayer\n", - "gayest\n", - "gayeties\n", - "gayety\n", - "gayly\n", - "gayness\n", - "gaynesses\n", - "gays\n", - "gaywing\n", - "gaywings\n", - "gazabo\n", - "gazaboes\n", - "gazabos\n", - "gaze\n", - "gazebo\n", - "gazeboes\n", - "gazebos\n", - "gazed\n", - "gazelle\n", - "gazelles\n", - "gazer\n", - "gazers\n", - "gazes\n", - "gazette\n", - "gazetted\n", - "gazetteer\n", - "gazetteers\n", - "gazettes\n", - "gazetting\n", - "gazing\n", - "gazogene\n", - "gazogenes\n", - "gazpacho\n", - "gazpachos\n", - "gear\n", - "gearbox\n", - "gearboxes\n", - "gearcase\n", - "gearcases\n", - "geared\n", - "gearing\n", - "gearings\n", - "gearless\n", - "gears\n", - "gearshift\n", - "gearshifts\n", - "geck\n", - "gecked\n", - "gecking\n", - "gecko\n", - "geckoes\n", - "geckos\n", - "gecks\n", - "ged\n", - "geds\n", - "gee\n", - "geed\n", - "geegaw\n", - "geegaws\n", - "geeing\n", - "geek\n", - "geeks\n", - "geepound\n", - "geepounds\n", - "gees\n", - "geese\n", - "geest\n", - "geests\n", - "geezer\n", - "geezers\n", - "geisha\n", - "geishas\n", - "gel\n", - "gelable\n", - "gelada\n", - "geladas\n", - "gelant\n", - "gelants\n", - "gelate\n", - "gelated\n", - "gelates\n", - "gelatin\n", - "gelatine\n", - "gelatines\n", - "gelating\n", - "gelatinous\n", - "gelatins\n", - "gelation\n", - "gelations\n", - "geld\n", - "gelded\n", - "gelder\n", - "gelders\n", - "gelding\n", - "geldings\n", - "gelds\n", - "gelee\n", - "gelees\n", - "gelid\n", - "gelidities\n", - "gelidity\n", - "gelidly\n", - "gellant\n", - "gellants\n", - "gelled\n", - "gelling\n", - "gels\n", - "gelsemia\n", - "gelt\n", - "gelts\n", - "gem\n", - "geminal\n", - "geminate\n", - "geminated\n", - "geminates\n", - "geminating\n", - "gemlike\n", - "gemma\n", - "gemmae\n", - "gemmate\n", - "gemmated\n", - "gemmates\n", - "gemmating\n", - "gemmed\n", - "gemmier\n", - "gemmiest\n", - "gemmily\n", - "gemming\n", - "gemmule\n", - "gemmules\n", - "gemmy\n", - "gemologies\n", - "gemology\n", - "gemot\n", - "gemote\n", - "gemotes\n", - "gemots\n", - "gems\n", - "gemsbok\n", - "gemsboks\n", - "gemsbuck\n", - "gemsbucks\n", - "gemstone\n", - "gemstones\n", - "gendarme\n", - "gendarmes\n", - "gender\n", - "gendered\n", - "gendering\n", - "genders\n", - "gene\n", - "geneological\n", - "geneologically\n", - "geneologist\n", - "geneologists\n", - "geneology\n", - "genera\n", - "general\n", - "generalities\n", - "generality\n", - "generalizability\n", - "generalization\n", - "generalizations\n", - "generalize\n", - "generalized\n", - "generalizes\n", - "generalizing\n", - "generally\n", - "generals\n", - "generate\n", - "generated\n", - "generates\n", - "generating\n", - "generation\n", - "generations\n", - "generative\n", - "generator\n", - "generators\n", - "generic\n", - "generics\n", - "generosities\n", - "generosity\n", - "generous\n", - "generously\n", - "generousness\n", - "generousnesses\n", - "genes\n", - "geneses\n", - "genesis\n", - "genet\n", - "genetic\n", - "genetically\n", - "geneticist\n", - "geneticists\n", - "genetics\n", - "genets\n", - "genette\n", - "genettes\n", - "geneva\n", - "genevas\n", - "genial\n", - "genialities\n", - "geniality\n", - "genially\n", - "genic\n", - "genie\n", - "genies\n", - "genii\n", - "genip\n", - "genipap\n", - "genipaps\n", - "genips\n", - "genital\n", - "genitalia\n", - "genitally\n", - "genitals\n", - "genitive\n", - "genitives\n", - "genitor\n", - "genitors\n", - "genitourinary\n", - "geniture\n", - "genitures\n", - "genius\n", - "geniuses\n", - "genoa\n", - "genoas\n", - "genocide\n", - "genocides\n", - "genom\n", - "genome\n", - "genomes\n", - "genomic\n", - "genoms\n", - "genotype\n", - "genotypes\n", - "genre\n", - "genres\n", - "genro\n", - "genros\n", - "gens\n", - "genseng\n", - "gensengs\n", - "gent\n", - "genteel\n", - "genteeler\n", - "genteelest\n", - "gentes\n", - "gentian\n", - "gentians\n", - "gentil\n", - "gentile\n", - "gentiles\n", - "gentilities\n", - "gentility\n", - "gentle\n", - "gentled\n", - "gentlefolk\n", - "gentleman\n", - "gentlemen\n", - "gentleness\n", - "gentlenesses\n", - "gentler\n", - "gentles\n", - "gentlest\n", - "gentlewoman\n", - "gentlewomen\n", - "gentling\n", - "gently\n", - "gentrice\n", - "gentrices\n", - "gentries\n", - "gentry\n", - "gents\n", - "genu\n", - "genua\n", - "genuflect\n", - "genuflected\n", - "genuflecting\n", - "genuflection\n", - "genuflections\n", - "genuflects\n", - "genuine\n", - "genuinely\n", - "genuineness\n", - "genuinenesses\n", - "genus\n", - "genuses\n", - "geode\n", - "geodes\n", - "geodesic\n", - "geodesics\n", - "geodesies\n", - "geodesy\n", - "geodetic\n", - "geodic\n", - "geoduck\n", - "geoducks\n", - "geognosies\n", - "geognosy\n", - "geographer\n", - "geographers\n", - "geographic\n", - "geographical\n", - "geographically\n", - "geographies\n", - "geography\n", - "geoid\n", - "geoidal\n", - "geoids\n", - "geologer\n", - "geologers\n", - "geologic\n", - "geological\n", - "geologies\n", - "geologist\n", - "geologists\n", - "geology\n", - "geomancies\n", - "geomancy\n", - "geometer\n", - "geometers\n", - "geometric\n", - "geometrical\n", - "geometries\n", - "geometry\n", - "geophagies\n", - "geophagy\n", - "geophone\n", - "geophones\n", - "geophysical\n", - "geophysicist\n", - "geophysicists\n", - "geophysics\n", - "geophyte\n", - "geophytes\n", - "geoponic\n", - "georgic\n", - "georgics\n", - "geotaxes\n", - "geotaxis\n", - "geothermal\n", - "geothermic\n", - "gerah\n", - "gerahs\n", - "geranial\n", - "geranials\n", - "geraniol\n", - "geraniols\n", - "geranium\n", - "geraniums\n", - "gerardia\n", - "gerardias\n", - "gerbera\n", - "gerberas\n", - "gerbil\n", - "gerbille\n", - "gerbilles\n", - "gerbils\n", - "gerent\n", - "gerents\n", - "gerenuk\n", - "gerenuks\n", - "geriatric\n", - "geriatrics\n", - "germ\n", - "german\n", - "germane\n", - "germanic\n", - "germanium\n", - "germaniums\n", - "germans\n", - "germen\n", - "germens\n", - "germfree\n", - "germicidal\n", - "germicide\n", - "germicides\n", - "germier\n", - "germiest\n", - "germina\n", - "germinal\n", - "germinate\n", - "germinated\n", - "germinates\n", - "germinating\n", - "germination\n", - "germinations\n", - "germs\n", - "germy\n", - "gerontic\n", - "gerrymander\n", - "gerrymandered\n", - "gerrymandering\n", - "gerrymanders\n", - "gerund\n", - "gerunds\n", - "gesso\n", - "gessoes\n", - "gest\n", - "gestalt\n", - "gestalten\n", - "gestalts\n", - "gestapo\n", - "gestapos\n", - "gestate\n", - "gestated\n", - "gestates\n", - "gestating\n", - "geste\n", - "gestes\n", - "gestic\n", - "gestical\n", - "gests\n", - "gestural\n", - "gesture\n", - "gestured\n", - "gesturer\n", - "gesturers\n", - "gestures\n", - "gesturing\n", - "gesundheit\n", - "get\n", - "getable\n", - "getaway\n", - "getaways\n", - "gets\n", - "gettable\n", - "getter\n", - "gettered\n", - "gettering\n", - "getters\n", - "getting\n", - "getup\n", - "getups\n", - "geum\n", - "geums\n", - "gewgaw\n", - "gewgaws\n", - "gey\n", - "geyser\n", - "geysers\n", - "gharri\n", - "gharries\n", - "gharris\n", - "gharry\n", - "ghast\n", - "ghastful\n", - "ghastlier\n", - "ghastliest\n", - "ghastly\n", - "ghat\n", - "ghats\n", - "ghaut\n", - "ghauts\n", - "ghazi\n", - "ghazies\n", - "ghazis\n", - "ghee\n", - "ghees\n", - "gherao\n", - "gheraoed\n", - "gheraoes\n", - "gheraoing\n", - "gherkin\n", - "gherkins\n", - "ghetto\n", - "ghettoed\n", - "ghettoes\n", - "ghettoing\n", - "ghettos\n", - "ghi\n", - "ghibli\n", - "ghiblis\n", - "ghillie\n", - "ghillies\n", - "ghis\n", - "ghost\n", - "ghosted\n", - "ghostier\n", - "ghostiest\n", - "ghosting\n", - "ghostlier\n", - "ghostliest\n", - "ghostly\n", - "ghosts\n", - "ghostwrite\n", - "ghostwriter\n", - "ghostwriters\n", - "ghostwrites\n", - "ghostwritten\n", - "ghostwrote\n", - "ghosty\n", - "ghoul\n", - "ghoulish\n", - "ghouls\n", - "ghyll\n", - "ghylls\n", - "giant\n", - "giantess\n", - "giantesses\n", - "giantism\n", - "giantisms\n", - "giants\n", - "giaour\n", - "giaours\n", - "gib\n", - "gibbed\n", - "gibber\n", - "gibbered\n", - "gibbering\n", - "gibberish\n", - "gibberishes\n", - "gibbers\n", - "gibbet\n", - "gibbeted\n", - "gibbeting\n", - "gibbets\n", - "gibbetted\n", - "gibbetting\n", - "gibbing\n", - "gibbon\n", - "gibbons\n", - "gibbose\n", - "gibbous\n", - "gibbsite\n", - "gibbsites\n", - "gibe\n", - "gibed\n", - "giber\n", - "gibers\n", - "gibes\n", - "gibing\n", - "gibingly\n", - "giblet\n", - "giblets\n", - "gibs\n", - "gid\n", - "giddap\n", - "giddied\n", - "giddier\n", - "giddies\n", - "giddiest\n", - "giddily\n", - "giddiness\n", - "giddinesses\n", - "giddy\n", - "giddying\n", - "gids\n", - "gie\n", - "gied\n", - "gieing\n", - "gien\n", - "gies\n", - "gift\n", - "gifted\n", - "giftedly\n", - "gifting\n", - "giftless\n", - "gifts\n", - "gig\n", - "giga\n", - "gigabit\n", - "gigabits\n", - "gigantic\n", - "gigas\n", - "gigaton\n", - "gigatons\n", - "gigawatt\n", - "gigawatts\n", - "gigged\n", - "gigging\n", - "giggle\n", - "giggled\n", - "giggler\n", - "gigglers\n", - "giggles\n", - "gigglier\n", - "giggliest\n", - "giggling\n", - "giggly\n", - "gighe\n", - "giglet\n", - "giglets\n", - "giglot\n", - "giglots\n", - "gigolo\n", - "gigolos\n", - "gigot\n", - "gigots\n", - "gigs\n", - "gigue\n", - "gigues\n", - "gilbert\n", - "gilberts\n", - "gild\n", - "gilded\n", - "gilder\n", - "gilders\n", - "gildhall\n", - "gildhalls\n", - "gilding\n", - "gildings\n", - "gilds\n", - "gill\n", - "gilled\n", - "giller\n", - "gillers\n", - "gillie\n", - "gillied\n", - "gillies\n", - "gilling\n", - "gillnet\n", - "gillnets\n", - "gillnetted\n", - "gillnetting\n", - "gills\n", - "gilly\n", - "gillying\n", - "gilt\n", - "gilthead\n", - "giltheads\n", - "gilts\n", - "gimbal\n", - "gimbaled\n", - "gimbaling\n", - "gimballed\n", - "gimballing\n", - "gimbals\n", - "gimcrack\n", - "gimcracks\n", - "gimel\n", - "gimels\n", - "gimlet\n", - "gimleted\n", - "gimleting\n", - "gimlets\n", - "gimmal\n", - "gimmals\n", - "gimmick\n", - "gimmicked\n", - "gimmicking\n", - "gimmicks\n", - "gimmicky\n", - "gimp\n", - "gimped\n", - "gimpier\n", - "gimpiest\n", - "gimping\n", - "gimps\n", - "gimpy\n", - "gin\n", - "gingal\n", - "gingall\n", - "gingalls\n", - "gingals\n", - "gingeley\n", - "gingeleys\n", - "gingeli\n", - "gingelies\n", - "gingelis\n", - "gingellies\n", - "gingelly\n", - "gingely\n", - "ginger\n", - "gingerbread\n", - "gingerbreads\n", - "gingered\n", - "gingering\n", - "gingerly\n", - "gingers\n", - "gingery\n", - "gingham\n", - "ginghams\n", - "gingili\n", - "gingilis\n", - "gingiva\n", - "gingivae\n", - "gingival\n", - "gingivitis\n", - "gingivitises\n", - "gingko\n", - "gingkoes\n", - "gink\n", - "ginkgo\n", - "ginkgoes\n", - "ginks\n", - "ginned\n", - "ginner\n", - "ginners\n", - "ginnier\n", - "ginniest\n", - "ginning\n", - "ginnings\n", - "ginny\n", - "gins\n", - "ginseng\n", - "ginsengs\n", - "gip\n", - "gipon\n", - "gipons\n", - "gipped\n", - "gipper\n", - "gippers\n", - "gipping\n", - "gips\n", - "gipsied\n", - "gipsies\n", - "gipsy\n", - "gipsying\n", - "giraffe\n", - "giraffes\n", - "girasol\n", - "girasole\n", - "girasoles\n", - "girasols\n", - "gird\n", - "girded\n", - "girder\n", - "girders\n", - "girding\n", - "girdle\n", - "girdled\n", - "girdler\n", - "girdlers\n", - "girdles\n", - "girdling\n", - "girds\n", - "girl\n", - "girlhood\n", - "girlhoods\n", - "girlie\n", - "girlies\n", - "girlish\n", - "girls\n", - "girly\n", - "girn\n", - "girned\n", - "girning\n", - "girns\n", - "giro\n", - "giron\n", - "girons\n", - "giros\n", - "girosol\n", - "girosols\n", - "girsh\n", - "girshes\n", - "girt\n", - "girted\n", - "girth\n", - "girthed\n", - "girthing\n", - "girths\n", - "girting\n", - "girts\n", - "gisarme\n", - "gisarmes\n", - "gismo\n", - "gismos\n", - "gist\n", - "gists\n", - "git\n", - "gitano\n", - "gitanos\n", - "gittern\n", - "gitterns\n", - "give\n", - "giveable\n", - "giveaway\n", - "giveaways\n", - "given\n", - "givens\n", - "giver\n", - "givers\n", - "gives\n", - "giving\n", - "gizmo\n", - "gizmos\n", - "gizzard\n", - "gizzards\n", - "gjetost\n", - "gjetosts\n", - "glabella\n", - "glabellae\n", - "glabrate\n", - "glabrous\n", - "glace\n", - "glaceed\n", - "glaceing\n", - "glaces\n", - "glacial\n", - "glacially\n", - "glaciate\n", - "glaciated\n", - "glaciates\n", - "glaciating\n", - "glacier\n", - "glaciers\n", - "glacis\n", - "glacises\n", - "glad\n", - "gladded\n", - "gladden\n", - "gladdened\n", - "gladdening\n", - "gladdens\n", - "gladder\n", - "gladdest\n", - "gladding\n", - "glade\n", - "glades\n", - "gladiate\n", - "gladiator\n", - "gladiatorial\n", - "gladiators\n", - "gladier\n", - "gladiest\n", - "gladiola\n", - "gladiolas\n", - "gladioli\n", - "gladiolus\n", - "gladlier\n", - "gladliest\n", - "gladly\n", - "gladness\n", - "gladnesses\n", - "glads\n", - "gladsome\n", - "gladsomer\n", - "gladsomest\n", - "glady\n", - "glaiket\n", - "glaikit\n", - "glair\n", - "glaire\n", - "glaired\n", - "glaires\n", - "glairier\n", - "glairiest\n", - "glairing\n", - "glairs\n", - "glairy\n", - "glaive\n", - "glaived\n", - "glaives\n", - "glamor\n", - "glamorize\n", - "glamorized\n", - "glamorizes\n", - "glamorizing\n", - "glamorous\n", - "glamors\n", - "glamour\n", - "glamoured\n", - "glamouring\n", - "glamours\n", - "glance\n", - "glanced\n", - "glances\n", - "glancing\n", - "gland\n", - "glanders\n", - "glandes\n", - "glands\n", - "glandular\n", - "glandule\n", - "glandules\n", - "glans\n", - "glare\n", - "glared\n", - "glares\n", - "glarier\n", - "glariest\n", - "glaring\n", - "glaringly\n", - "glary\n", - "glass\n", - "glassblower\n", - "glassblowers\n", - "glassblowing\n", - "glassblowings\n", - "glassed\n", - "glasses\n", - "glassful\n", - "glassfuls\n", - "glassie\n", - "glassier\n", - "glassies\n", - "glassiest\n", - "glassily\n", - "glassine\n", - "glassines\n", - "glassing\n", - "glassman\n", - "glassmen\n", - "glassware\n", - "glasswares\n", - "glassy\n", - "glaucoma\n", - "glaucomas\n", - "glaucous\n", - "glaze\n", - "glazed\n", - "glazer\n", - "glazers\n", - "glazes\n", - "glazier\n", - "glazieries\n", - "glaziers\n", - "glaziery\n", - "glaziest\n", - "glazing\n", - "glazings\n", - "glazy\n", - "gleam\n", - "gleamed\n", - "gleamier\n", - "gleamiest\n", - "gleaming\n", - "gleams\n", - "gleamy\n", - "glean\n", - "gleanable\n", - "gleaned\n", - "gleaner\n", - "gleaners\n", - "gleaning\n", - "gleanings\n", - "gleans\n", - "gleba\n", - "glebae\n", - "glebe\n", - "glebes\n", - "gled\n", - "glede\n", - "gledes\n", - "gleds\n", - "glee\n", - "gleed\n", - "gleeds\n", - "gleeful\n", - "gleek\n", - "gleeked\n", - "gleeking\n", - "gleeks\n", - "gleeman\n", - "gleemen\n", - "glees\n", - "gleesome\n", - "gleet\n", - "gleeted\n", - "gleetier\n", - "gleetiest\n", - "gleeting\n", - "gleets\n", - "gleety\n", - "gleg\n", - "glegly\n", - "glegness\n", - "glegnesses\n", - "glen\n", - "glenlike\n", - "glenoid\n", - "glens\n", - "gley\n", - "gleys\n", - "gliadin\n", - "gliadine\n", - "gliadines\n", - "gliadins\n", - "glial\n", - "glib\n", - "glibber\n", - "glibbest\n", - "glibly\n", - "glibness\n", - "glibnesses\n", - "glide\n", - "glided\n", - "glider\n", - "gliders\n", - "glides\n", - "gliding\n", - "gliff\n", - "gliffs\n", - "glim\n", - "glime\n", - "glimed\n", - "glimes\n", - "gliming\n", - "glimmer\n", - "glimmered\n", - "glimmering\n", - "glimmers\n", - "glimpse\n", - "glimpsed\n", - "glimpser\n", - "glimpsers\n", - "glimpses\n", - "glimpsing\n", - "glims\n", - "glint\n", - "glinted\n", - "glinting\n", - "glints\n", - "glioma\n", - "gliomas\n", - "gliomata\n", - "glissade\n", - "glissaded\n", - "glissades\n", - "glissading\n", - "glisten\n", - "glistened\n", - "glistening\n", - "glistens\n", - "glister\n", - "glistered\n", - "glistering\n", - "glisters\n", - "glitch\n", - "glitches\n", - "glitter\n", - "glittered\n", - "glittering\n", - "glitters\n", - "glittery\n", - "gloam\n", - "gloaming\n", - "gloamings\n", - "gloams\n", - "gloat\n", - "gloated\n", - "gloater\n", - "gloaters\n", - "gloating\n", - "gloats\n", - "glob\n", - "global\n", - "globally\n", - "globate\n", - "globated\n", - "globe\n", - "globed\n", - "globes\n", - "globin\n", - "globing\n", - "globins\n", - "globoid\n", - "globoids\n", - "globose\n", - "globous\n", - "globs\n", - "globular\n", - "globule\n", - "globules\n", - "globulin\n", - "globulins\n", - "glochid\n", - "glochids\n", - "glockenspiel\n", - "glockenspiels\n", - "glogg\n", - "gloggs\n", - "glom\n", - "glomera\n", - "glommed\n", - "glomming\n", - "gloms\n", - "glomus\n", - "gloom\n", - "gloomed\n", - "gloomful\n", - "gloomier\n", - "gloomiest\n", - "gloomily\n", - "gloominess\n", - "gloominesses\n", - "glooming\n", - "gloomings\n", - "glooms\n", - "gloomy\n", - "glop\n", - "glops\n", - "gloria\n", - "glorias\n", - "gloried\n", - "glories\n", - "glorification\n", - "glorifications\n", - "glorified\n", - "glorifies\n", - "glorify\n", - "glorifying\n", - "gloriole\n", - "glorioles\n", - "glorious\n", - "gloriously\n", - "glory\n", - "glorying\n", - "gloss\n", - "glossa\n", - "glossae\n", - "glossal\n", - "glossarial\n", - "glossaries\n", - "glossary\n", - "glossas\n", - "glossed\n", - "glosseme\n", - "glossemes\n", - "glosser\n", - "glossers\n", - "glosses\n", - "glossier\n", - "glossies\n", - "glossiest\n", - "glossily\n", - "glossina\n", - "glossinas\n", - "glossiness\n", - "glossinesses\n", - "glossing\n", - "glossy\n", - "glost\n", - "glosts\n", - "glottal\n", - "glottic\n", - "glottides\n", - "glottis\n", - "glottises\n", - "glout\n", - "glouted\n", - "glouting\n", - "glouts\n", - "glove\n", - "gloved\n", - "glover\n", - "glovers\n", - "gloves\n", - "gloving\n", - "glow\n", - "glowed\n", - "glower\n", - "glowered\n", - "glowering\n", - "glowers\n", - "glowflies\n", - "glowfly\n", - "glowing\n", - "glows\n", - "glowworm\n", - "glowworms\n", - "gloxinia\n", - "gloxinias\n", - "gloze\n", - "glozed\n", - "glozes\n", - "glozing\n", - "glucagon\n", - "glucagons\n", - "glucinic\n", - "glucinum\n", - "glucinums\n", - "glucose\n", - "glucoses\n", - "glucosic\n", - "glue\n", - "glued\n", - "glueing\n", - "gluelike\n", - "gluer\n", - "gluers\n", - "glues\n", - "gluey\n", - "gluier\n", - "gluiest\n", - "gluily\n", - "gluing\n", - "glum\n", - "glume\n", - "glumes\n", - "glumly\n", - "glummer\n", - "glummest\n", - "glumness\n", - "glumnesses\n", - "glumpier\n", - "glumpiest\n", - "glumpily\n", - "glumpy\n", - "glunch\n", - "glunched\n", - "glunches\n", - "glunching\n", - "glut\n", - "gluteal\n", - "glutei\n", - "glutelin\n", - "glutelins\n", - "gluten\n", - "glutens\n", - "gluteus\n", - "glutinous\n", - "gluts\n", - "glutted\n", - "glutting\n", - "glutton\n", - "gluttonies\n", - "gluttonous\n", - "gluttons\n", - "gluttony\n", - "glycan\n", - "glycans\n", - "glyceric\n", - "glycerin\n", - "glycerine\n", - "glycerines\n", - "glycerins\n", - "glycerol\n", - "glycerols\n", - "glyceryl\n", - "glyceryls\n", - "glycin\n", - "glycine\n", - "glycines\n", - "glycins\n", - "glycogen\n", - "glycogens\n", - "glycol\n", - "glycolic\n", - "glycols\n", - "glyconic\n", - "glyconics\n", - "glycosyl\n", - "glycosyls\n", - "glycyl\n", - "glycyls\n", - "glyph\n", - "glyphic\n", - "glyphs\n", - "glyptic\n", - "glyptics\n", - "gnar\n", - "gnarl\n", - "gnarled\n", - "gnarlier\n", - "gnarliest\n", - "gnarling\n", - "gnarls\n", - "gnarly\n", - "gnarr\n", - "gnarred\n", - "gnarring\n", - "gnarrs\n", - "gnars\n", - "gnash\n", - "gnashed\n", - "gnashes\n", - "gnashing\n", - "gnat\n", - "gnathal\n", - "gnathic\n", - "gnathion\n", - "gnathions\n", - "gnathite\n", - "gnathites\n", - "gnatlike\n", - "gnats\n", - "gnattier\n", - "gnattiest\n", - "gnatty\n", - "gnaw\n", - "gnawable\n", - "gnawed\n", - "gnawer\n", - "gnawers\n", - "gnawing\n", - "gnawings\n", - "gnawn\n", - "gnaws\n", - "gneiss\n", - "gneisses\n", - "gneissic\n", - "gnocchi\n", - "gnome\n", - "gnomes\n", - "gnomic\n", - "gnomical\n", - "gnomish\n", - "gnomist\n", - "gnomists\n", - "gnomon\n", - "gnomonic\n", - "gnomons\n", - "gnoses\n", - "gnosis\n", - "gnostic\n", - "gnu\n", - "gnus\n", - "go\n", - "goa\n", - "goad\n", - "goaded\n", - "goading\n", - "goadlike\n", - "goads\n", - "goal\n", - "goaled\n", - "goalie\n", - "goalies\n", - "goaling\n", - "goalkeeper\n", - "goalkeepers\n", - "goalless\n", - "goalpost\n", - "goalposts\n", - "goals\n", - "goas\n", - "goat\n", - "goatee\n", - "goateed\n", - "goatees\n", - "goatfish\n", - "goatfishes\n", - "goatherd\n", - "goatherds\n", - "goatish\n", - "goatlike\n", - "goats\n", - "goatskin\n", - "goatskins\n", - "gob\n", - "goban\n", - "gobang\n", - "gobangs\n", - "gobans\n", - "gobbed\n", - "gobbet\n", - "gobbets\n", - "gobbing\n", - "gobble\n", - "gobbled\n", - "gobbledegook\n", - "gobbledegooks\n", - "gobbledygook\n", - "gobbledygooks\n", - "gobbler\n", - "gobblers\n", - "gobbles\n", - "gobbling\n", - "gobies\n", - "gobioid\n", - "gobioids\n", - "goblet\n", - "goblets\n", - "goblin\n", - "goblins\n", - "gobo\n", - "goboes\n", - "gobonee\n", - "gobony\n", - "gobos\n", - "gobs\n", - "goby\n", - "god\n", - "godchild\n", - "godchildren\n", - "goddam\n", - "goddammed\n", - "goddamming\n", - "goddamn\n", - "goddamned\n", - "goddamning\n", - "goddamns\n", - "goddams\n", - "goddaughter\n", - "goddaughters\n", - "godded\n", - "goddess\n", - "goddesses\n", - "godding\n", - "godfather\n", - "godfathers\n", - "godhead\n", - "godheads\n", - "godhood\n", - "godhoods\n", - "godless\n", - "godlessness\n", - "godlessnesses\n", - "godlier\n", - "godliest\n", - "godlike\n", - "godlily\n", - "godling\n", - "godlings\n", - "godly\n", - "godmother\n", - "godmothers\n", - "godown\n", - "godowns\n", - "godparent\n", - "godparents\n", - "godroon\n", - "godroons\n", - "gods\n", - "godsend\n", - "godsends\n", - "godship\n", - "godships\n", - "godson\n", - "godsons\n", - "godwit\n", - "godwits\n", - "goer\n", - "goers\n", - "goes\n", - "goethite\n", - "goethites\n", - "goffer\n", - "goffered\n", - "goffering\n", - "goffers\n", - "goggle\n", - "goggled\n", - "goggler\n", - "gogglers\n", - "goggles\n", - "gogglier\n", - "goggliest\n", - "goggling\n", - "goggly\n", - "goglet\n", - "goglets\n", - "gogo\n", - "gogos\n", - "going\n", - "goings\n", - "goiter\n", - "goiters\n", - "goitre\n", - "goitres\n", - "goitrous\n", - "golconda\n", - "golcondas\n", - "gold\n", - "goldarn\n", - "goldarns\n", - "goldbrick\n", - "goldbricked\n", - "goldbricking\n", - "goldbricks\n", - "goldbug\n", - "goldbugs\n", - "golden\n", - "goldener\n", - "goldenest\n", - "goldenly\n", - "goldenrod\n", - "golder\n", - "goldest\n", - "goldeye\n", - "goldeyes\n", - "goldfinch\n", - "goldfinches\n", - "goldfish\n", - "goldfishes\n", - "golds\n", - "goldsmith\n", - "goldstein\n", - "goldurn\n", - "goldurns\n", - "golem\n", - "golems\n", - "golf\n", - "golfed\n", - "golfer\n", - "golfers\n", - "golfing\n", - "golfings\n", - "golfs\n", - "golgotha\n", - "golgothas\n", - "goliard\n", - "goliards\n", - "golliwog\n", - "golliwogs\n", - "golly\n", - "golosh\n", - "goloshes\n", - "gombo\n", - "gombos\n", - "gombroon\n", - "gombroons\n", - "gomeral\n", - "gomerals\n", - "gomerel\n", - "gomerels\n", - "gomeril\n", - "gomerils\n", - "gomuti\n", - "gomutis\n", - "gonad\n", - "gonadal\n", - "gonadial\n", - "gonadic\n", - "gonads\n", - "gondola\n", - "gondolas\n", - "gondolier\n", - "gondoliers\n", - "gone\n", - "goneness\n", - "gonenesses\n", - "goner\n", - "goners\n", - "gonfalon\n", - "gonfalons\n", - "gonfanon\n", - "gonfanons\n", - "gong\n", - "gonged\n", - "gonging\n", - "gonglike\n", - "gongs\n", - "gonia\n", - "gonidia\n", - "gonidial\n", - "gonidic\n", - "gonidium\n", - "gonif\n", - "gonifs\n", - "gonion\n", - "gonium\n", - "gonocyte\n", - "gonocytes\n", - "gonof\n", - "gonofs\n", - "gonoph\n", - "gonophs\n", - "gonopore\n", - "gonopores\n", - "gonorrhea\n", - "gonorrheal\n", - "gonorrheas\n", - "goo\n", - "goober\n", - "goobers\n", - "good\n", - "goodby\n", - "goodbye\n", - "goodbyes\n", - "goodbys\n", - "goodies\n", - "goodish\n", - "goodlier\n", - "goodliest\n", - "goodly\n", - "goodman\n", - "goodmen\n", - "goodness\n", - "goodnesses\n", - "goods\n", - "goodwife\n", - "goodwill\n", - "goodwills\n", - "goodwives\n", - "goody\n", - "gooey\n", - "goof\n", - "goofball\n", - "goofballs\n", - "goofed\n", - "goofier\n", - "goofiest\n", - "goofily\n", - "goofiness\n", - "goofinesses\n", - "goofing\n", - "goofs\n", - "goofy\n", - "googlies\n", - "googly\n", - "googol\n", - "googolplex\n", - "googolplexes\n", - "googols\n", - "gooier\n", - "gooiest\n", - "gook\n", - "gooks\n", - "gooky\n", - "goon\n", - "gooney\n", - "gooneys\n", - "goonie\n", - "goonies\n", - "goons\n", - "goony\n", - "goop\n", - "goops\n", - "gooral\n", - "goorals\n", - "goos\n", - "goose\n", - "gooseberries\n", - "gooseberry\n", - "goosed\n", - "gooseflesh\n", - "goosefleshes\n", - "gooses\n", - "goosey\n", - "goosier\n", - "goosiest\n", - "goosing\n", - "goosy\n", - "gopher\n", - "gophers\n", - "gor\n", - "goral\n", - "gorals\n", - "gorbellies\n", - "gorbelly\n", - "gorblimy\n", - "gorcock\n", - "gorcocks\n", - "gore\n", - "gored\n", - "gores\n", - "gorge\n", - "gorged\n", - "gorgedly\n", - "gorgeous\n", - "gorger\n", - "gorgerin\n", - "gorgerins\n", - "gorgers\n", - "gorges\n", - "gorget\n", - "gorgeted\n", - "gorgets\n", - "gorging\n", - "gorgon\n", - "gorgons\n", - "gorhen\n", - "gorhens\n", - "gorier\n", - "goriest\n", - "gorilla\n", - "gorillas\n", - "gorily\n", - "goriness\n", - "gorinesses\n", - "goring\n", - "gormand\n", - "gormands\n", - "gorse\n", - "gorses\n", - "gorsier\n", - "gorsiest\n", - "gorsy\n", - "gory\n", - "gosh\n", - "goshawk\n", - "goshawks\n", - "gosling\n", - "goslings\n", - "gospel\n", - "gospeler\n", - "gospelers\n", - "gospels\n", - "gosport\n", - "gosports\n", - "gossamer\n", - "gossamers\n", - "gossan\n", - "gossans\n", - "gossip\n", - "gossiped\n", - "gossiper\n", - "gossipers\n", - "gossiping\n", - "gossipped\n", - "gossipping\n", - "gossipries\n", - "gossipry\n", - "gossips\n", - "gossipy\n", - "gossoon\n", - "gossoons\n", - "gossypol\n", - "gossypols\n", - "got\n", - "gothic\n", - "gothics\n", - "gothite\n", - "gothites\n", - "gotten\n", - "gouache\n", - "gouaches\n", - "gouge\n", - "gouged\n", - "gouger\n", - "gougers\n", - "gouges\n", - "gouging\n", - "goulash\n", - "goulashes\n", - "gourami\n", - "gouramis\n", - "gourd\n", - "gourde\n", - "gourdes\n", - "gourds\n", - "gourmand\n", - "gourmands\n", - "gourmet\n", - "gourmets\n", - "gout\n", - "goutier\n", - "goutiest\n", - "goutily\n", - "gouts\n", - "gouty\n", - "govern\n", - "governed\n", - "governess\n", - "governesses\n", - "governing\n", - "government\n", - "governmental\n", - "governments\n", - "governor\n", - "governors\n", - "governorship\n", - "governorships\n", - "governs\n", - "gowan\n", - "gowaned\n", - "gowans\n", - "gowany\n", - "gowd\n", - "gowds\n", - "gowk\n", - "gowks\n", - "gown\n", - "gowned\n", - "gowning\n", - "gowns\n", - "gownsman\n", - "gownsmen\n", - "gox\n", - "goxes\n", - "goy\n", - "goyim\n", - "goyish\n", - "goys\n", - "graal\n", - "graals\n", - "grab\n", - "grabbed\n", - "grabber\n", - "grabbers\n", - "grabbier\n", - "grabbiest\n", - "grabbing\n", - "grabble\n", - "grabbled\n", - "grabbler\n", - "grabblers\n", - "grabbles\n", - "grabbling\n", - "grabby\n", - "graben\n", - "grabens\n", - "grabs\n", - "grace\n", - "graced\n", - "graceful\n", - "gracefuller\n", - "gracefullest\n", - "gracefully\n", - "gracefulness\n", - "gracefulnesses\n", - "graceless\n", - "graces\n", - "gracile\n", - "graciles\n", - "gracilis\n", - "gracing\n", - "gracioso\n", - "graciosos\n", - "gracious\n", - "graciously\n", - "graciousness\n", - "graciousnesses\n", - "grackle\n", - "grackles\n", - "grad\n", - "gradable\n", - "gradate\n", - "gradated\n", - "gradates\n", - "gradating\n", - "grade\n", - "graded\n", - "grader\n", - "graders\n", - "grades\n", - "gradient\n", - "gradients\n", - "gradin\n", - "gradine\n", - "gradines\n", - "grading\n", - "gradins\n", - "grads\n", - "gradual\n", - "gradually\n", - "graduals\n", - "graduand\n", - "graduands\n", - "graduate\n", - "graduated\n", - "graduates\n", - "graduating\n", - "graduation\n", - "graduations\n", - "gradus\n", - "graduses\n", - "graecize\n", - "graecized\n", - "graecizes\n", - "graecizing\n", - "graffiti\n", - "graffito\n", - "graft\n", - "graftage\n", - "graftages\n", - "grafted\n", - "grafter\n", - "grafters\n", - "grafting\n", - "grafts\n", - "graham\n", - "grail\n", - "grails\n", - "grain\n", - "grained\n", - "grainer\n", - "grainers\n", - "grainfield\n", - "grainfields\n", - "grainier\n", - "grainiest\n", - "graining\n", - "grains\n", - "grainy\n", - "gram\n", - "grama\n", - "gramaries\n", - "gramary\n", - "gramarye\n", - "gramaryes\n", - "gramas\n", - "gramercies\n", - "gramercy\n", - "grammar\n", - "grammarian\n", - "grammarians\n", - "grammars\n", - "grammatical\n", - "grammatically\n", - "gramme\n", - "grammes\n", - "gramp\n", - "gramps\n", - "grampus\n", - "grampuses\n", - "grams\n", - "grana\n", - "granaries\n", - "granary\n", - "grand\n", - "grandad\n", - "grandads\n", - "grandam\n", - "grandame\n", - "grandames\n", - "grandams\n", - "grandchild\n", - "grandchildren\n", - "granddad\n", - "granddads\n", - "granddaughter\n", - "granddaughters\n", - "grandee\n", - "grandees\n", - "grander\n", - "grandest\n", - "grandeur\n", - "grandeurs\n", - "grandfather\n", - "grandfathers\n", - "grandiose\n", - "grandiosely\n", - "grandly\n", - "grandma\n", - "grandmas\n", - "grandmother\n", - "grandmothers\n", - "grandness\n", - "grandnesses\n", - "grandpa\n", - "grandparent\n", - "grandparents\n", - "grandpas\n", - "grands\n", - "grandsir\n", - "grandsirs\n", - "grandson\n", - "grandsons\n", - "grandstand\n", - "grandstands\n", - "grange\n", - "granger\n", - "grangers\n", - "granges\n", - "granite\n", - "granites\n", - "granitic\n", - "grannie\n", - "grannies\n", - "granny\n", - "grant\n", - "granted\n", - "grantee\n", - "grantees\n", - "granter\n", - "granters\n", - "granting\n", - "grantor\n", - "grantors\n", - "grants\n", - "granular\n", - "granularities\n", - "granularity\n", - "granulate\n", - "granulated\n", - "granulates\n", - "granulating\n", - "granulation\n", - "granulations\n", - "granule\n", - "granules\n", - "granum\n", - "grape\n", - "graperies\n", - "grapery\n", - "grapes\n", - "grapevine\n", - "grapevines\n", - "graph\n", - "graphed\n", - "grapheme\n", - "graphemes\n", - "graphic\n", - "graphically\n", - "graphics\n", - "graphing\n", - "graphite\n", - "graphites\n", - "graphs\n", - "grapier\n", - "grapiest\n", - "graplin\n", - "grapline\n", - "graplines\n", - "graplins\n", - "grapnel\n", - "grapnels\n", - "grappa\n", - "grappas\n", - "grapple\n", - "grappled\n", - "grappler\n", - "grapplers\n", - "grapples\n", - "grappling\n", - "grapy\n", - "grasp\n", - "grasped\n", - "grasper\n", - "graspers\n", - "grasping\n", - "grasps\n", - "grass\n", - "grassed\n", - "grasses\n", - "grasshopper\n", - "grasshoppers\n", - "grassier\n", - "grassiest\n", - "grassily\n", - "grassing\n", - "grassland\n", - "grasslands\n", - "grassy\n", - "grat\n", - "grate\n", - "grated\n", - "grateful\n", - "gratefuller\n", - "gratefullest\n", - "gratefullies\n", - "gratefully\n", - "gratefulness\n", - "gratefulnesses\n", - "grater\n", - "graters\n", - "grates\n", - "gratification\n", - "gratifications\n", - "gratified\n", - "gratifies\n", - "gratify\n", - "gratifying\n", - "gratin\n", - "grating\n", - "gratings\n", - "gratins\n", - "gratis\n", - "gratitude\n", - "gratuities\n", - "gratuitous\n", - "gratuity\n", - "graupel\n", - "graupels\n", - "gravamen\n", - "gravamens\n", - "gravamina\n", - "grave\n", - "graved\n", - "gravel\n", - "graveled\n", - "graveling\n", - "gravelled\n", - "gravelling\n", - "gravelly\n", - "gravels\n", - "gravely\n", - "graven\n", - "graveness\n", - "gravenesses\n", - "graver\n", - "gravers\n", - "graves\n", - "gravest\n", - "gravestone\n", - "gravestones\n", - "graveyard\n", - "graveyards\n", - "gravid\n", - "gravida\n", - "gravidae\n", - "gravidas\n", - "gravidly\n", - "gravies\n", - "graving\n", - "gravitate\n", - "gravitated\n", - "gravitates\n", - "gravitating\n", - "gravitation\n", - "gravitational\n", - "gravitationally\n", - "gravitations\n", - "gravitative\n", - "gravities\n", - "graviton\n", - "gravitons\n", - "gravity\n", - "gravure\n", - "gravures\n", - "gravy\n", - "gray\n", - "grayback\n", - "graybacks\n", - "grayed\n", - "grayer\n", - "grayest\n", - "grayfish\n", - "grayfishes\n", - "graying\n", - "grayish\n", - "graylag\n", - "graylags\n", - "grayling\n", - "graylings\n", - "grayly\n", - "grayness\n", - "graynesses\n", - "grayout\n", - "grayouts\n", - "grays\n", - "grazable\n", - "graze\n", - "grazed\n", - "grazer\n", - "grazers\n", - "grazes\n", - "grazier\n", - "graziers\n", - "grazing\n", - "grazings\n", - "grazioso\n", - "grease\n", - "greased\n", - "greaser\n", - "greasers\n", - "greases\n", - "greasier\n", - "greasiest\n", - "greasily\n", - "greasing\n", - "greasy\n", - "great\n", - "greaten\n", - "greatened\n", - "greatening\n", - "greatens\n", - "greater\n", - "greatest\n", - "greatly\n", - "greatness\n", - "greatnesses\n", - "greats\n", - "greave\n", - "greaved\n", - "greaves\n", - "grebe\n", - "grebes\n", - "grecize\n", - "grecized\n", - "grecizes\n", - "grecizing\n", - "gree\n", - "greed\n", - "greedier\n", - "greediest\n", - "greedily\n", - "greediness\n", - "greedinesses\n", - "greeds\n", - "greedy\n", - "greegree\n", - "greegrees\n", - "greeing\n", - "greek\n", - "green\n", - "greenbug\n", - "greenbugs\n", - "greened\n", - "greener\n", - "greeneries\n", - "greenery\n", - "greenest\n", - "greenflies\n", - "greenfly\n", - "greenhorn\n", - "greenhorns\n", - "greenhouse\n", - "greenhouses\n", - "greenier\n", - "greeniest\n", - "greening\n", - "greenings\n", - "greenish\n", - "greenlet\n", - "greenlets\n", - "greenly\n", - "greenness\n", - "greennesses\n", - "greens\n", - "greenth\n", - "greenths\n", - "greeny\n", - "grees\n", - "greet\n", - "greeted\n", - "greeter\n", - "greeters\n", - "greeting\n", - "greetings\n", - "greets\n", - "gregarious\n", - "gregariously\n", - "gregariousness\n", - "gregariousnesses\n", - "grego\n", - "gregos\n", - "greige\n", - "greiges\n", - "greisen\n", - "greisens\n", - "gremial\n", - "gremials\n", - "gremlin\n", - "gremlins\n", - "gremmie\n", - "gremmies\n", - "gremmy\n", - "grenade\n", - "grenades\n", - "grew\n", - "grewsome\n", - "grewsomer\n", - "grewsomest\n", - "grey\n", - "greyed\n", - "greyer\n", - "greyest\n", - "greyhen\n", - "greyhens\n", - "greyhound\n", - "greyhounds\n", - "greying\n", - "greyish\n", - "greylag\n", - "greylags\n", - "greyly\n", - "greyness\n", - "greynesses\n", - "greys\n", - "gribble\n", - "gribbles\n", - "grid\n", - "griddle\n", - "griddled\n", - "griddles\n", - "griddling\n", - "gride\n", - "grided\n", - "grides\n", - "griding\n", - "gridiron\n", - "gridirons\n", - "grids\n", - "grief\n", - "griefs\n", - "grievance\n", - "grievances\n", - "grievant\n", - "grievants\n", - "grieve\n", - "grieved\n", - "griever\n", - "grievers\n", - "grieves\n", - "grieving\n", - "grievous\n", - "grievously\n", - "griff\n", - "griffe\n", - "griffes\n", - "griffin\n", - "griffins\n", - "griffon\n", - "griffons\n", - "griffs\n", - "grift\n", - "grifted\n", - "grifter\n", - "grifters\n", - "grifting\n", - "grifts\n", - "grig\n", - "grigri\n", - "grigris\n", - "grigs\n", - "grill\n", - "grillade\n", - "grillades\n", - "grillage\n", - "grillages\n", - "grille\n", - "grilled\n", - "griller\n", - "grillers\n", - "grilles\n", - "grilling\n", - "grills\n", - "grillwork\n", - "grillworks\n", - "grilse\n", - "grilses\n", - "grim\n", - "grimace\n", - "grimaced\n", - "grimacer\n", - "grimacers\n", - "grimaces\n", - "grimacing\n", - "grime\n", - "grimed\n", - "grimes\n", - "grimier\n", - "grimiest\n", - "grimily\n", - "griming\n", - "grimly\n", - "grimmer\n", - "grimmest\n", - "grimness\n", - "grimnesses\n", - "grimy\n", - "grin\n", - "grind\n", - "grinded\n", - "grinder\n", - "grinderies\n", - "grinders\n", - "grindery\n", - "grinding\n", - "grinds\n", - "grindstone\n", - "grindstones\n", - "gringo\n", - "gringos\n", - "grinned\n", - "grinner\n", - "grinners\n", - "grinning\n", - "grins\n", - "grip\n", - "gripe\n", - "griped\n", - "griper\n", - "gripers\n", - "gripes\n", - "gripey\n", - "gripier\n", - "gripiest\n", - "griping\n", - "grippe\n", - "gripped\n", - "gripper\n", - "grippers\n", - "grippes\n", - "grippier\n", - "grippiest\n", - "gripping\n", - "gripple\n", - "grippy\n", - "grips\n", - "gripsack\n", - "gripsacks\n", - "gript\n", - "gripy\n", - "griseous\n", - "grisette\n", - "grisettes\n", - "griskin\n", - "griskins\n", - "grislier\n", - "grisliest\n", - "grisly\n", - "grison\n", - "grisons\n", - "grist\n", - "gristle\n", - "gristles\n", - "gristlier\n", - "gristliest\n", - "gristly\n", - "gristmill\n", - "gristmills\n", - "grists\n", - "grit\n", - "grith\n", - "griths\n", - "grits\n", - "gritted\n", - "grittier\n", - "grittiest\n", - "grittily\n", - "gritting\n", - "gritty\n", - "grivet\n", - "grivets\n", - "grizzle\n", - "grizzled\n", - "grizzler\n", - "grizzlers\n", - "grizzles\n", - "grizzlier\n", - "grizzlies\n", - "grizzliest\n", - "grizzling\n", - "grizzly\n", - "groan\n", - "groaned\n", - "groaner\n", - "groaners\n", - "groaning\n", - "groans\n", - "groat\n", - "groats\n", - "grocer\n", - "groceries\n", - "grocers\n", - "grocery\n", - "grog\n", - "groggeries\n", - "groggery\n", - "groggier\n", - "groggiest\n", - "groggily\n", - "grogginess\n", - "grogginesses\n", - "groggy\n", - "grogram\n", - "grograms\n", - "grogs\n", - "grogshop\n", - "grogshops\n", - "groin\n", - "groined\n", - "groining\n", - "groins\n", - "grommet\n", - "grommets\n", - "gromwell\n", - "gromwells\n", - "groom\n", - "groomed\n", - "groomer\n", - "groomers\n", - "grooming\n", - "grooms\n", - "groove\n", - "grooved\n", - "groover\n", - "groovers\n", - "grooves\n", - "groovier\n", - "grooviest\n", - "grooving\n", - "groovy\n", - "grope\n", - "groped\n", - "groper\n", - "gropers\n", - "gropes\n", - "groping\n", - "grosbeak\n", - "grosbeaks\n", - "groschen\n", - "gross\n", - "grossed\n", - "grosser\n", - "grossers\n", - "grosses\n", - "grossest\n", - "grossing\n", - "grossly\n", - "grossness\n", - "grossnesses\n", - "grosz\n", - "groszy\n", - "grot\n", - "grotesque\n", - "grotesquely\n", - "grots\n", - "grotto\n", - "grottoes\n", - "grottos\n", - "grouch\n", - "grouched\n", - "grouches\n", - "grouchier\n", - "grouchiest\n", - "grouching\n", - "grouchy\n", - "ground\n", - "grounded\n", - "grounder\n", - "grounders\n", - "groundhog\n", - "groundhogs\n", - "grounding\n", - "grounds\n", - "groundwater\n", - "groundwaters\n", - "groundwork\n", - "groundworks\n", - "group\n", - "grouped\n", - "grouper\n", - "groupers\n", - "groupie\n", - "groupies\n", - "grouping\n", - "groupings\n", - "groupoid\n", - "groupoids\n", - "groups\n", - "grouse\n", - "groused\n", - "grouser\n", - "grousers\n", - "grouses\n", - "grousing\n", - "grout\n", - "grouted\n", - "grouter\n", - "grouters\n", - "groutier\n", - "groutiest\n", - "grouting\n", - "grouts\n", - "grouty\n", - "grove\n", - "groved\n", - "grovel\n", - "groveled\n", - "groveler\n", - "grovelers\n", - "groveling\n", - "grovelled\n", - "grovelling\n", - "grovels\n", - "groves\n", - "grow\n", - "growable\n", - "grower\n", - "growers\n", - "growing\n", - "growl\n", - "growled\n", - "growler\n", - "growlers\n", - "growlier\n", - "growliest\n", - "growling\n", - "growls\n", - "growly\n", - "grown\n", - "grownup\n", - "grownups\n", - "grows\n", - "growth\n", - "growths\n", - "groyne\n", - "groynes\n", - "grub\n", - "grubbed\n", - "grubber\n", - "grubbers\n", - "grubbier\n", - "grubbiest\n", - "grubbily\n", - "grubbiness\n", - "grubbinesses\n", - "grubbing\n", - "grubby\n", - "grubs\n", - "grubstake\n", - "grubstakes\n", - "grubworm\n", - "grubworms\n", - "grudge\n", - "grudged\n", - "grudger\n", - "grudgers\n", - "grudges\n", - "grudging\n", - "gruel\n", - "grueled\n", - "grueler\n", - "gruelers\n", - "grueling\n", - "gruelings\n", - "gruelled\n", - "grueller\n", - "gruellers\n", - "gruelling\n", - "gruellings\n", - "gruels\n", - "gruesome\n", - "gruesomer\n", - "gruesomest\n", - "gruff\n", - "gruffed\n", - "gruffer\n", - "gruffest\n", - "gruffier\n", - "gruffiest\n", - "gruffily\n", - "gruffing\n", - "gruffish\n", - "gruffly\n", - "gruffs\n", - "gruffy\n", - "grugru\n", - "grugrus\n", - "grum\n", - "grumble\n", - "grumbled\n", - "grumbler\n", - "grumblers\n", - "grumbles\n", - "grumbling\n", - "grumbly\n", - "grume\n", - "grumes\n", - "grummer\n", - "grummest\n", - "grummet\n", - "grummets\n", - "grumose\n", - "grumous\n", - "grump\n", - "grumped\n", - "grumphie\n", - "grumphies\n", - "grumphy\n", - "grumpier\n", - "grumpiest\n", - "grumpily\n", - "grumping\n", - "grumpish\n", - "grumps\n", - "grumpy\n", - "grunion\n", - "grunions\n", - "grunt\n", - "grunted\n", - "grunter\n", - "grunters\n", - "grunting\n", - "gruntle\n", - "gruntled\n", - "gruntles\n", - "gruntling\n", - "grunts\n", - "grushie\n", - "grutch\n", - "grutched\n", - "grutches\n", - "grutching\n", - "grutten\n", - "gryphon\n", - "gryphons\n", - "guacharo\n", - "guacharoes\n", - "guacharos\n", - "guaco\n", - "guacos\n", - "guaiac\n", - "guaiacol\n", - "guaiacols\n", - "guaiacs\n", - "guaiacum\n", - "guaiacums\n", - "guaiocum\n", - "guaiocums\n", - "guan\n", - "guanaco\n", - "guanacos\n", - "guanase\n", - "guanases\n", - "guanidin\n", - "guanidins\n", - "guanin\n", - "guanine\n", - "guanines\n", - "guanins\n", - "guano\n", - "guanos\n", - "guans\n", - "guar\n", - "guarani\n", - "guaranies\n", - "guaranis\n", - "guarantee\n", - "guarantees\n", - "guarantied\n", - "guaranties\n", - "guarantor\n", - "guaranty\n", - "guarantying\n", - "guard\n", - "guardant\n", - "guardants\n", - "guarded\n", - "guarder\n", - "guarders\n", - "guardhouse\n", - "guardhouses\n", - "guardian\n", - "guardians\n", - "guardianship\n", - "guardianships\n", - "guarding\n", - "guardroom\n", - "guardrooms\n", - "guards\n", - "guars\n", - "guava\n", - "guavas\n", - "guayule\n", - "guayules\n", - "gubernatorial\n", - "guck\n", - "gucks\n", - "gude\n", - "gudes\n", - "gudgeon\n", - "gudgeoned\n", - "gudgeoning\n", - "gudgeons\n", - "guenon\n", - "guenons\n", - "guerdon\n", - "guerdoned\n", - "guerdoning\n", - "guerdons\n", - "guerilla\n", - "guerillas\n", - "guernsey\n", - "guernseys\n", - "guess\n", - "guessed\n", - "guesser\n", - "guessers\n", - "guesses\n", - "guessing\n", - "guest\n", - "guested\n", - "guesting\n", - "guests\n", - "guff\n", - "guffaw\n", - "guffawed\n", - "guffawing\n", - "guffaws\n", - "guffs\n", - "guggle\n", - "guggled\n", - "guggles\n", - "guggling\n", - "guglet\n", - "guglets\n", - "guid\n", - "guidable\n", - "guidance\n", - "guidances\n", - "guide\n", - "guidebook\n", - "guidebooks\n", - "guided\n", - "guideline\n", - "guidelines\n", - "guider\n", - "guiders\n", - "guides\n", - "guiding\n", - "guidon\n", - "guidons\n", - "guids\n", - "guild\n", - "guilder\n", - "guilders\n", - "guilds\n", - "guile\n", - "guiled\n", - "guileful\n", - "guileless\n", - "guilelessness\n", - "guilelessnesses\n", - "guiles\n", - "guiling\n", - "guillotine\n", - "guillotined\n", - "guillotines\n", - "guillotining\n", - "guilt\n", - "guiltier\n", - "guiltiest\n", - "guiltily\n", - "guiltiness\n", - "guiltinesses\n", - "guilts\n", - "guilty\n", - "guimpe\n", - "guimpes\n", - "guinea\n", - "guineas\n", - "guipure\n", - "guipures\n", - "guiro\n", - "guisard\n", - "guisards\n", - "guise\n", - "guised\n", - "guises\n", - "guising\n", - "guitar\n", - "guitars\n", - "gul\n", - "gular\n", - "gulch\n", - "gulches\n", - "gulden\n", - "guldens\n", - "gules\n", - "gulf\n", - "gulfed\n", - "gulfier\n", - "gulfiest\n", - "gulfing\n", - "gulflike\n", - "gulfs\n", - "gulfweed\n", - "gulfweeds\n", - "gulfy\n", - "gull\n", - "gullable\n", - "gullably\n", - "gulled\n", - "gullet\n", - "gullets\n", - "gulley\n", - "gulleys\n", - "gullible\n", - "gullibly\n", - "gullied\n", - "gullies\n", - "gulling\n", - "gulls\n", - "gully\n", - "gullying\n", - "gulosities\n", - "gulosity\n", - "gulp\n", - "gulped\n", - "gulper\n", - "gulpers\n", - "gulpier\n", - "gulpiest\n", - "gulping\n", - "gulps\n", - "gulpy\n", - "guls\n", - "gum\n", - "gumbo\n", - "gumboil\n", - "gumboils\n", - "gumbos\n", - "gumbotil\n", - "gumbotils\n", - "gumdrop\n", - "gumdrops\n", - "gumless\n", - "gumlike\n", - "gumma\n", - "gummas\n", - "gummata\n", - "gummed\n", - "gummer\n", - "gummers\n", - "gummier\n", - "gummiest\n", - "gumming\n", - "gummite\n", - "gummites\n", - "gummose\n", - "gummoses\n", - "gummosis\n", - "gummous\n", - "gummy\n", - "gumption\n", - "gumptions\n", - "gums\n", - "gumshoe\n", - "gumshoed\n", - "gumshoeing\n", - "gumshoes\n", - "gumtree\n", - "gumtrees\n", - "gumweed\n", - "gumweeds\n", - "gumwood\n", - "gumwoods\n", - "gun\n", - "gunboat\n", - "gunboats\n", - "gundog\n", - "gundogs\n", - "gunfight\n", - "gunfighter\n", - "gunfighters\n", - "gunfighting\n", - "gunfights\n", - "gunfire\n", - "gunfires\n", - "gunflint\n", - "gunflints\n", - "gunfought\n", - "gunk\n", - "gunks\n", - "gunless\n", - "gunlock\n", - "gunlocks\n", - "gunman\n", - "gunmen\n", - "gunmetal\n", - "gunmetals\n", - "gunned\n", - "gunnel\n", - "gunnels\n", - "gunnen\n", - "gunner\n", - "gunneries\n", - "gunners\n", - "gunnery\n", - "gunnies\n", - "gunning\n", - "gunnings\n", - "gunny\n", - "gunpaper\n", - "gunpapers\n", - "gunplay\n", - "gunplays\n", - "gunpoint\n", - "gunpoints\n", - "gunpowder\n", - "gunpowders\n", - "gunroom\n", - "gunrooms\n", - "guns\n", - "gunsel\n", - "gunsels\n", - "gunship\n", - "gunships\n", - "gunshot\n", - "gunshots\n", - "gunslinger\n", - "gunslingers\n", - "gunsmith\n", - "gunsmiths\n", - "gunstock\n", - "gunstocks\n", - "gunwale\n", - "gunwales\n", - "guppies\n", - "guppy\n", - "gurge\n", - "gurged\n", - "gurges\n", - "gurging\n", - "gurgle\n", - "gurgled\n", - "gurgles\n", - "gurglet\n", - "gurglets\n", - "gurgling\n", - "gurnard\n", - "gurnards\n", - "gurnet\n", - "gurnets\n", - "gurney\n", - "gurneys\n", - "gurries\n", - "gurry\n", - "gursh\n", - "gurshes\n", - "guru\n", - "gurus\n", - "guruship\n", - "guruships\n", - "gush\n", - "gushed\n", - "gusher\n", - "gushers\n", - "gushes\n", - "gushier\n", - "gushiest\n", - "gushily\n", - "gushing\n", - "gushy\n", - "gusset\n", - "gusseted\n", - "gusseting\n", - "gussets\n", - "gust\n", - "gustable\n", - "gustables\n", - "gustatory\n", - "gusted\n", - "gustier\n", - "gustiest\n", - "gustily\n", - "gusting\n", - "gustless\n", - "gusto\n", - "gustoes\n", - "gusts\n", - "gusty\n", - "gut\n", - "gutless\n", - "gutlike\n", - "guts\n", - "gutsier\n", - "gutsiest\n", - "gutsy\n", - "gutta\n", - "guttae\n", - "guttate\n", - "guttated\n", - "gutted\n", - "gutter\n", - "guttered\n", - "guttering\n", - "gutters\n", - "guttery\n", - "guttier\n", - "guttiest\n", - "gutting\n", - "guttle\n", - "guttled\n", - "guttler\n", - "guttlers\n", - "guttles\n", - "guttling\n", - "guttural\n", - "gutturals\n", - "gutty\n", - "guy\n", - "guyed\n", - "guyer\n", - "guying\n", - "guyot\n", - "guyots\n", - "guys\n", - "guzzle\n", - "guzzled\n", - "guzzler\n", - "guzzlers\n", - "guzzles\n", - "guzzling\n", - "gweduc\n", - "gweduck\n", - "gweducks\n", - "gweducs\n", - "gybe\n", - "gybed\n", - "gyber\n", - "gybes\n", - "gybing\n", - "gym\n", - "gymkhana\n", - "gymkhanas\n", - "gymnasia\n", - "gymnasium\n", - "gymnasiums\n", - "gymnast\n", - "gymnastic\n", - "gymnastics\n", - "gymnasts\n", - "gyms\n", - "gynaecea\n", - "gynaecia\n", - "gynandries\n", - "gynandry\n", - "gynarchies\n", - "gynarchy\n", - "gynecia\n", - "gynecic\n", - "gynecium\n", - "gynecoid\n", - "gynecologic\n", - "gynecological\n", - "gynecologies\n", - "gynecologist\n", - "gynecologists\n", - "gynecology\n", - "gynecomastia\n", - "gynecomasty\n", - "gyniatries\n", - "gyniatry\n", - "gynoecia\n", - "gyp\n", - "gypped\n", - "gypper\n", - "gyppers\n", - "gypping\n", - "gyps\n", - "gypseian\n", - "gypseous\n", - "gypsied\n", - "gypsies\n", - "gypsum\n", - "gypsums\n", - "gypsy\n", - "gypsydom\n", - "gypsydoms\n", - "gypsying\n", - "gypsyish\n", - "gypsyism\n", - "gypsyisms\n", - "gyral\n", - "gyrally\n", - "gyrate\n", - "gyrated\n", - "gyrates\n", - "gyrating\n", - "gyration\n", - "gyrations\n", - "gyrator\n", - "gyrators\n", - "gyratory\n", - "gyre\n", - "gyred\n", - "gyrene\n", - "gyrenes\n", - "gyres\n", - "gyri\n", - "gyring\n", - "gyro\n", - "gyrocompass\n", - "gyrocompasses\n", - "gyroidal\n", - "gyron\n", - "gyrons\n", - "gyros\n", - "gyroscope\n", - "gyroscopes\n", - "gyrose\n", - "gyrostat\n", - "gyrostats\n", - "gyrus\n", - "gyve\n", - "gyved\n", - "gyves\n", - "gyving\n", - "ha\n", - "haaf\n", - "haafs\n", - "haar\n", - "haars\n", - "habanera\n", - "habaneras\n", - "habdalah\n", - "habdalahs\n", - "haberdasher\n", - "haberdasheries\n", - "haberdashers\n", - "haberdashery\n", - "habile\n", - "habit\n", - "habitable\n", - "habitan\n", - "habitans\n", - "habitant\n", - "habitants\n", - "habitat\n", - "habitation\n", - "habitations\n", - "habitats\n", - "habited\n", - "habiting\n", - "habits\n", - "habitual\n", - "habitually\n", - "habitualness\n", - "habitualnesses\n", - "habituate\n", - "habituated\n", - "habituates\n", - "habituating\n", - "habitude\n", - "habitudes\n", - "habitue\n", - "habitues\n", - "habitus\n", - "habu\n", - "habus\n", - "hacek\n", - "haceks\n", - "hachure\n", - "hachured\n", - "hachures\n", - "hachuring\n", - "hacienda\n", - "haciendas\n", - "hack\n", - "hackbut\n", - "hackbuts\n", - "hacked\n", - "hackee\n", - "hackees\n", - "hacker\n", - "hackers\n", - "hackie\n", - "hackies\n", - "hacking\n", - "hackle\n", - "hackled\n", - "hackler\n", - "hacklers\n", - "hackles\n", - "hacklier\n", - "hackliest\n", - "hackling\n", - "hackly\n", - "hackman\n", - "hackmen\n", - "hackney\n", - "hackneyed\n", - "hackneying\n", - "hackneys\n", - "hacks\n", - "hacksaw\n", - "hacksaws\n", - "hackwork\n", - "hackworks\n", - "had\n", - "hadal\n", - "hadarim\n", - "haddest\n", - "haddock\n", - "haddocks\n", - "hade\n", - "haded\n", - "hades\n", - "hading\n", - "hadj\n", - "hadjee\n", - "hadjees\n", - "hadjes\n", - "hadji\n", - "hadjis\n", - "hadjs\n", - "hadron\n", - "hadronic\n", - "hadrons\n", - "hadst\n", - "hae\n", - "haed\n", - "haeing\n", - "haem\n", - "haemal\n", - "haematal\n", - "haematic\n", - "haematics\n", - "haematin\n", - "haematins\n", - "haemic\n", - "haemin\n", - "haemins\n", - "haemoid\n", - "haems\n", - "haen\n", - "haeredes\n", - "haeres\n", - "haes\n", - "haet\n", - "haets\n", - "haffet\n", - "haffets\n", - "haffit\n", - "haffits\n", - "hafis\n", - "hafiz\n", - "hafnium\n", - "hafniums\n", - "haft\n", - "haftarah\n", - "haftarahs\n", - "haftarot\n", - "haftaroth\n", - "hafted\n", - "hafter\n", - "hafters\n", - "hafting\n", - "haftorah\n", - "haftorahs\n", - "haftorot\n", - "haftoroth\n", - "hafts\n", - "hag\n", - "hagadic\n", - "hagadist\n", - "hagadists\n", - "hagberries\n", - "hagberry\n", - "hagborn\n", - "hagbush\n", - "hagbushes\n", - "hagbut\n", - "hagbuts\n", - "hagdon\n", - "hagdons\n", - "hagfish\n", - "hagfishes\n", - "haggadic\n", - "haggard\n", - "haggardly\n", - "haggards\n", - "hagged\n", - "hagging\n", - "haggis\n", - "haggises\n", - "haggish\n", - "haggle\n", - "haggled\n", - "haggler\n", - "hagglers\n", - "haggles\n", - "haggling\n", - "hagridden\n", - "hagride\n", - "hagrides\n", - "hagriding\n", - "hagrode\n", - "hags\n", - "hah\n", - "hahs\n", - "haik\n", - "haika\n", - "haiks\n", - "haiku\n", - "hail\n", - "hailed\n", - "hailer\n", - "hailers\n", - "hailing\n", - "hails\n", - "hailstone\n", - "hailstones\n", - "hailstorm\n", - "hailstorms\n", - "haily\n", - "hair\n", - "hairball\n", - "hairballs\n", - "hairband\n", - "hairbands\n", - "hairbreadth\n", - "hairbreadths\n", - "hairbrush\n", - "hairbrushes\n", - "haircap\n", - "haircaps\n", - "haircut\n", - "haircuts\n", - "hairdo\n", - "hairdos\n", - "hairdresser\n", - "hairdressers\n", - "haired\n", - "hairier\n", - "hairiest\n", - "hairiness\n", - "hairinesses\n", - "hairless\n", - "hairlike\n", - "hairline\n", - "hairlines\n", - "hairlock\n", - "hairlocks\n", - "hairpiece\n", - "hairpieces\n", - "hairpin\n", - "hairpins\n", - "hairs\n", - "hairsbreadth\n", - "hairsbreadths\n", - "hairstyle\n", - "hairstyles\n", - "hairstyling\n", - "hairstylings\n", - "hairstylist\n", - "hairstylists\n", - "hairwork\n", - "hairworks\n", - "hairworm\n", - "hairworms\n", - "hairy\n", - "haj\n", - "hajes\n", - "haji\n", - "hajis\n", - "hajj\n", - "hajjes\n", - "hajji\n", - "hajjis\n", - "hajjs\n", - "hake\n", - "hakeem\n", - "hakeems\n", - "hakes\n", - "hakim\n", - "hakims\n", - "halakah\n", - "halakahs\n", - "halakic\n", - "halakist\n", - "halakists\n", - "halakoth\n", - "halala\n", - "halalah\n", - "halalahs\n", - "halalas\n", - "halation\n", - "halations\n", - "halavah\n", - "halavahs\n", - "halazone\n", - "halazones\n", - "halberd\n", - "halberds\n", - "halbert\n", - "halberts\n", - "halcyon\n", - "halcyons\n", - "hale\n", - "haled\n", - "haleness\n", - "halenesses\n", - "haler\n", - "halers\n", - "haleru\n", - "hales\n", - "halest\n", - "half\n", - "halfback\n", - "halfbacks\n", - "halfbeak\n", - "halfbeaks\n", - "halfhearted\n", - "halfheartedly\n", - "halfheartedness\n", - "halfheartednesses\n", - "halflife\n", - "halflives\n", - "halfness\n", - "halfnesses\n", - "halftime\n", - "halftimes\n", - "halftone\n", - "halftones\n", - "halfway\n", - "halibut\n", - "halibuts\n", - "halid\n", - "halide\n", - "halides\n", - "halidom\n", - "halidome\n", - "halidomes\n", - "halidoms\n", - "halids\n", - "haling\n", - "halite\n", - "halites\n", - "halitosis\n", - "halitosises\n", - "halitus\n", - "halituses\n", - "hall\n", - "hallah\n", - "hallahs\n", - "hallel\n", - "hallels\n", - "halliard\n", - "halliards\n", - "hallmark\n", - "hallmarked\n", - "hallmarking\n", - "hallmarks\n", - "hallo\n", - "halloa\n", - "halloaed\n", - "halloaing\n", - "halloas\n", - "halloed\n", - "halloes\n", - "halloing\n", - "halloo\n", - "hallooed\n", - "hallooing\n", - "halloos\n", - "hallos\n", - "hallot\n", - "halloth\n", - "hallow\n", - "hallowed\n", - "hallower\n", - "hallowers\n", - "hallowing\n", - "hallows\n", - "halls\n", - "halluces\n", - "hallucinate\n", - "hallucinated\n", - "hallucinates\n", - "hallucinating\n", - "hallucination\n", - "hallucinations\n", - "hallucinative\n", - "hallucinatory\n", - "hallucinogen\n", - "hallucinogenic\n", - "hallucinogens\n", - "hallux\n", - "hallway\n", - "hallways\n", - "halm\n", - "halms\n", - "halo\n", - "haloed\n", - "halogen\n", - "halogens\n", - "haloid\n", - "haloids\n", - "haloing\n", - "halolike\n", - "halos\n", - "halt\n", - "halted\n", - "halter\n", - "haltere\n", - "haltered\n", - "halteres\n", - "haltering\n", - "halters\n", - "halting\n", - "haltingly\n", - "haltless\n", - "halts\n", - "halutz\n", - "halutzim\n", - "halva\n", - "halvah\n", - "halvahs\n", - "halvas\n", - "halve\n", - "halved\n", - "halvers\n", - "halves\n", - "halving\n", - "halyard\n", - "halyards\n", - "ham\n", - "hamal\n", - "hamals\n", - "hamartia\n", - "hamartias\n", - "hamate\n", - "hamates\n", - "hamaul\n", - "hamauls\n", - "hamburg\n", - "hamburger\n", - "hamburgers\n", - "hamburgs\n", - "hame\n", - "hames\n", - "hamlet\n", - "hamlets\n", - "hammal\n", - "hammals\n", - "hammed\n", - "hammer\n", - "hammered\n", - "hammerer\n", - "hammerers\n", - "hammerhead\n", - "hammerheads\n", - "hammering\n", - "hammers\n", - "hammier\n", - "hammiest\n", - "hammily\n", - "hamming\n", - "hammock\n", - "hammocks\n", - "hammy\n", - "hamper\n", - "hampered\n", - "hamperer\n", - "hamperers\n", - "hampering\n", - "hampers\n", - "hams\n", - "hamster\n", - "hamsters\n", - "hamstring\n", - "hamstringing\n", - "hamstrings\n", - "hamstrung\n", - "hamular\n", - "hamulate\n", - "hamuli\n", - "hamulose\n", - "hamulous\n", - "hamulus\n", - "hamza\n", - "hamzah\n", - "hamzahs\n", - "hamzas\n", - "hanaper\n", - "hanapers\n", - "hance\n", - "hances\n", - "hand\n", - "handbag\n", - "handbags\n", - "handball\n", - "handballs\n", - "handbill\n", - "handbills\n", - "handbook\n", - "handbooks\n", - "handcar\n", - "handcars\n", - "handcart\n", - "handcarts\n", - "handclasp\n", - "handclasps\n", - "handcraft\n", - "handcrafted\n", - "handcrafting\n", - "handcrafts\n", - "handcuff\n", - "handcuffed\n", - "handcuffing\n", - "handcuffs\n", - "handed\n", - "handfast\n", - "handfasted\n", - "handfasting\n", - "handfasts\n", - "handful\n", - "handfuls\n", - "handgrip\n", - "handgrips\n", - "handgun\n", - "handguns\n", - "handhold\n", - "handholds\n", - "handicap\n", - "handicapped\n", - "handicapper\n", - "handicappers\n", - "handicapping\n", - "handicaps\n", - "handicrafsman\n", - "handicrafsmen\n", - "handicraft\n", - "handicrafter\n", - "handicrafters\n", - "handicrafts\n", - "handier\n", - "handiest\n", - "handily\n", - "handiness\n", - "handinesses\n", - "handing\n", - "handiwork\n", - "handiworks\n", - "handkerchief\n", - "handkerchiefs\n", - "handle\n", - "handled\n", - "handler\n", - "handlers\n", - "handles\n", - "handless\n", - "handlike\n", - "handling\n", - "handlings\n", - "handlist\n", - "handlists\n", - "handloom\n", - "handlooms\n", - "handmade\n", - "handmaid\n", - "handmaiden\n", - "handmaidens\n", - "handmaids\n", - "handoff\n", - "handoffs\n", - "handout\n", - "handouts\n", - "handpick\n", - "handpicked\n", - "handpicking\n", - "handpicks\n", - "handrail\n", - "handrails\n", - "hands\n", - "handsaw\n", - "handsaws\n", - "handsel\n", - "handseled\n", - "handseling\n", - "handselled\n", - "handselling\n", - "handsels\n", - "handset\n", - "handsets\n", - "handsewn\n", - "handsful\n", - "handshake\n", - "handshakes\n", - "handsome\n", - "handsomely\n", - "handsomeness\n", - "handsomenesses\n", - "handsomer\n", - "handsomest\n", - "handspring\n", - "handsprings\n", - "handstand\n", - "handstands\n", - "handwork\n", - "handworks\n", - "handwoven\n", - "handwrit\n", - "handwriting\n", - "handwritings\n", - "handwritten\n", - "handy\n", - "handyman\n", - "handymen\n", - "hang\n", - "hangable\n", - "hangar\n", - "hangared\n", - "hangaring\n", - "hangars\n", - "hangbird\n", - "hangbirds\n", - "hangdog\n", - "hangdogs\n", - "hanged\n", - "hanger\n", - "hangers\n", - "hangfire\n", - "hangfires\n", - "hanging\n", - "hangings\n", - "hangman\n", - "hangmen\n", - "hangnail\n", - "hangnails\n", - "hangnest\n", - "hangnests\n", - "hangout\n", - "hangouts\n", - "hangover\n", - "hangovers\n", - "hangs\n", - "hangtag\n", - "hangtags\n", - "hangup\n", - "hangups\n", - "hank\n", - "hanked\n", - "hanker\n", - "hankered\n", - "hankerer\n", - "hankerers\n", - "hankering\n", - "hankers\n", - "hankie\n", - "hankies\n", - "hanking\n", - "hanks\n", - "hanky\n", - "hanse\n", - "hansel\n", - "hanseled\n", - "hanseling\n", - "hanselled\n", - "hanselling\n", - "hansels\n", - "hanses\n", - "hansom\n", - "hansoms\n", - "hant\n", - "hanted\n", - "hanting\n", - "hantle\n", - "hantles\n", - "hants\n", - "hanuman\n", - "hanumans\n", - "haole\n", - "haoles\n", - "hap\n", - "hapax\n", - "hapaxes\n", - "haphazard\n", - "haphazardly\n", - "hapless\n", - "haplessly\n", - "haplessness\n", - "haplessnesses\n", - "haplite\n", - "haplites\n", - "haploid\n", - "haploidies\n", - "haploids\n", - "haploidy\n", - "haplont\n", - "haplonts\n", - "haplopia\n", - "haplopias\n", - "haploses\n", - "haplosis\n", - "haply\n", - "happed\n", - "happen\n", - "happened\n", - "happening\n", - "happenings\n", - "happens\n", - "happier\n", - "happiest\n", - "happily\n", - "happiness\n", - "happing\n", - "happy\n", - "haps\n", - "hapten\n", - "haptene\n", - "haptenes\n", - "haptenic\n", - "haptens\n", - "haptic\n", - "haptical\n", - "harangue\n", - "harangued\n", - "haranguer\n", - "haranguers\n", - "harangues\n", - "haranguing\n", - "harass\n", - "harassed\n", - "harasser\n", - "harassers\n", - "harasses\n", - "harassing\n", - "harassness\n", - "harassnesses\n", - "harbinger\n", - "harbingers\n", - "harbor\n", - "harbored\n", - "harborer\n", - "harborers\n", - "harboring\n", - "harbors\n", - "harbour\n", - "harboured\n", - "harbouring\n", - "harbours\n", - "hard\n", - "hardback\n", - "hardbacks\n", - "hardball\n", - "hardballs\n", - "hardboot\n", - "hardboots\n", - "hardcase\n", - "hardcore\n", - "harden\n", - "hardened\n", - "hardener\n", - "hardeners\n", - "hardening\n", - "hardens\n", - "harder\n", - "hardest\n", - "hardhack\n", - "hardhacks\n", - "hardhat\n", - "hardhats\n", - "hardhead\n", - "hardheaded\n", - "hardheadedly\n", - "hardheadedness\n", - "hardheads\n", - "hardhearted\n", - "hardheartedly\n", - "hardheartedness\n", - "hardheartednesses\n", - "hardier\n", - "hardies\n", - "hardiest\n", - "hardily\n", - "hardiness\n", - "hardinesses\n", - "hardly\n", - "hardness\n", - "hardnesses\n", - "hardpan\n", - "hardpans\n", - "hards\n", - "hardset\n", - "hardship\n", - "hardships\n", - "hardtack\n", - "hardtacks\n", - "hardtop\n", - "hardtops\n", - "hardware\n", - "hardwares\n", - "hardwood\n", - "hardwoods\n", - "hardy\n", - "hare\n", - "harebell\n", - "harebells\n", - "hared\n", - "hareem\n", - "hareems\n", - "harelike\n", - "harelip\n", - "harelipped\n", - "harelips\n", - "harem\n", - "harems\n", - "hares\n", - "hariana\n", - "harianas\n", - "haricot\n", - "haricots\n", - "harijan\n", - "harijans\n", - "haring\n", - "hark\n", - "harked\n", - "harken\n", - "harkened\n", - "harkener\n", - "harkeners\n", - "harkening\n", - "harkens\n", - "harking\n", - "harks\n", - "harl\n", - "harlequin\n", - "harlequins\n", - "harlot\n", - "harlotries\n", - "harlotry\n", - "harlots\n", - "harls\n", - "harm\n", - "harmed\n", - "harmer\n", - "harmers\n", - "harmful\n", - "harmfully\n", - "harmfulness\n", - "harmfulnesses\n", - "harmin\n", - "harmine\n", - "harmines\n", - "harming\n", - "harmins\n", - "harmless\n", - "harmlessly\n", - "harmlessness\n", - "harmlessnesses\n", - "harmonic\n", - "harmonica\n", - "harmonically\n", - "harmonicas\n", - "harmonics\n", - "harmonies\n", - "harmonious\n", - "harmoniously\n", - "harmoniousness\n", - "harmoniousnesses\n", - "harmonization\n", - "harmonizations\n", - "harmonize\n", - "harmonized\n", - "harmonizes\n", - "harmonizing\n", - "harmony\n", - "harms\n", - "harness\n", - "harnessed\n", - "harnesses\n", - "harnessing\n", - "harp\n", - "harped\n", - "harper\n", - "harpers\n", - "harpies\n", - "harpin\n", - "harping\n", - "harpings\n", - "harpins\n", - "harpist\n", - "harpists\n", - "harpoon\n", - "harpooned\n", - "harpooner\n", - "harpooners\n", - "harpooning\n", - "harpoons\n", - "harps\n", - "harpsichord\n", - "harpsichords\n", - "harpy\n", - "harridan\n", - "harridans\n", - "harried\n", - "harrier\n", - "harriers\n", - "harries\n", - "harrow\n", - "harrowed\n", - "harrower\n", - "harrowers\n", - "harrowing\n", - "harrows\n", - "harrumph\n", - "harrumphed\n", - "harrumphing\n", - "harrumphs\n", - "harry\n", - "harrying\n", - "harsh\n", - "harshen\n", - "harshened\n", - "harshening\n", - "harshens\n", - "harsher\n", - "harshest\n", - "harshly\n", - "harshness\n", - "harshnesses\n", - "harslet\n", - "harslets\n", - "hart\n", - "hartal\n", - "hartals\n", - "harts\n", - "haruspex\n", - "haruspices\n", - "harvest\n", - "harvested\n", - "harvester\n", - "harvesters\n", - "harvesting\n", - "harvests\n", - "has\n", - "hash\n", - "hashed\n", - "hasheesh\n", - "hasheeshes\n", - "hashes\n", - "hashing\n", - "hashish\n", - "hashishes\n", - "haslet\n", - "haslets\n", - "hasp\n", - "hasped\n", - "hasping\n", - "hasps\n", - "hassel\n", - "hassels\n", - "hassle\n", - "hassled\n", - "hassles\n", - "hassling\n", - "hassock\n", - "hassocks\n", - "hast\n", - "hastate\n", - "haste\n", - "hasted\n", - "hasteful\n", - "hasten\n", - "hastened\n", - "hastener\n", - "hasteners\n", - "hastening\n", - "hastens\n", - "hastes\n", - "hastier\n", - "hastiest\n", - "hastily\n", - "hasting\n", - "hasty\n", - "hat\n", - "hatable\n", - "hatband\n", - "hatbands\n", - "hatbox\n", - "hatboxes\n", - "hatch\n", - "hatcheck\n", - "hatched\n", - "hatchel\n", - "hatcheled\n", - "hatcheling\n", - "hatchelled\n", - "hatchelling\n", - "hatchels\n", - "hatcher\n", - "hatcheries\n", - "hatchers\n", - "hatchery\n", - "hatches\n", - "hatchet\n", - "hatchets\n", - "hatching\n", - "hatchings\n", - "hatchway\n", - "hatchways\n", - "hate\n", - "hateable\n", - "hated\n", - "hateful\n", - "hatefullness\n", - "hatefullnesses\n", - "hater\n", - "haters\n", - "hates\n", - "hatful\n", - "hatfuls\n", - "hath\n", - "hating\n", - "hatless\n", - "hatlike\n", - "hatmaker\n", - "hatmakers\n", - "hatpin\n", - "hatpins\n", - "hatrack\n", - "hatracks\n", - "hatred\n", - "hatreds\n", - "hats\n", - "hatsful\n", - "hatted\n", - "hatter\n", - "hatteria\n", - "hatterias\n", - "hatters\n", - "hatting\n", - "hauberk\n", - "hauberks\n", - "haugh\n", - "haughs\n", - "haughtier\n", - "haughtiest\n", - "haughtily\n", - "haughtiness\n", - "haughtinesses\n", - "haughty\n", - "haul\n", - "haulage\n", - "haulages\n", - "hauled\n", - "hauler\n", - "haulers\n", - "haulier\n", - "hauliers\n", - "hauling\n", - "haulm\n", - "haulmier\n", - "haulmiest\n", - "haulms\n", - "haulmy\n", - "hauls\n", - "haulyard\n", - "haulyards\n", - "haunch\n", - "haunched\n", - "haunches\n", - "haunt\n", - "haunted\n", - "haunter\n", - "haunters\n", - "haunting\n", - "hauntingly\n", - "haunts\n", - "hausen\n", - "hausens\n", - "hausfrau\n", - "hausfrauen\n", - "hausfraus\n", - "hautbois\n", - "hautboy\n", - "hautboys\n", - "hauteur\n", - "hauteurs\n", - "havdalah\n", - "havdalahs\n", - "have\n", - "havelock\n", - "havelocks\n", - "haven\n", - "havened\n", - "havening\n", - "havens\n", - "haver\n", - "havered\n", - "haverel\n", - "haverels\n", - "havering\n", - "havers\n", - "haves\n", - "having\n", - "havior\n", - "haviors\n", - "haviour\n", - "haviours\n", - "havoc\n", - "havocked\n", - "havocker\n", - "havockers\n", - "havocking\n", - "havocs\n", - "haw\n", - "hawed\n", - "hawfinch\n", - "hawfinches\n", - "hawing\n", - "hawk\n", - "hawkbill\n", - "hawkbills\n", - "hawked\n", - "hawker\n", - "hawkers\n", - "hawkey\n", - "hawkeys\n", - "hawkie\n", - "hawkies\n", - "hawking\n", - "hawkings\n", - "hawkish\n", - "hawklike\n", - "hawkmoth\n", - "hawkmoths\n", - "hawknose\n", - "hawknoses\n", - "hawks\n", - "hawkshaw\n", - "hawkshaws\n", - "hawkweed\n", - "hawkweeds\n", - "haws\n", - "hawse\n", - "hawser\n", - "hawsers\n", - "hawses\n", - "hawthorn\n", - "hawthorns\n", - "hay\n", - "haycock\n", - "haycocks\n", - "hayed\n", - "hayer\n", - "hayers\n", - "hayfork\n", - "hayforks\n", - "haying\n", - "hayings\n", - "haylage\n", - "haylages\n", - "hayloft\n", - "haylofts\n", - "haymaker\n", - "haymakers\n", - "haymow\n", - "haymows\n", - "hayrack\n", - "hayracks\n", - "hayrick\n", - "hayricks\n", - "hayride\n", - "hayrides\n", - "hays\n", - "hayseed\n", - "hayseeds\n", - "haystack\n", - "haystacks\n", - "hayward\n", - "haywards\n", - "haywire\n", - "haywires\n", - "hazan\n", - "hazanim\n", - "hazans\n", - "hazard\n", - "hazarded\n", - "hazarding\n", - "hazardous\n", - "hazards\n", - "haze\n", - "hazed\n", - "hazel\n", - "hazelly\n", - "hazelnut\n", - "hazelnuts\n", - "hazels\n", - "hazer\n", - "hazers\n", - "hazes\n", - "hazier\n", - "haziest\n", - "hazily\n", - "haziness\n", - "hazinesses\n", - "hazing\n", - "hazings\n", - "hazy\n", - "hazzan\n", - "hazzanim\n", - "hazzans\n", - "he\n", - "head\n", - "headache\n", - "headaches\n", - "headachier\n", - "headachiest\n", - "headachy\n", - "headband\n", - "headbands\n", - "headdress\n", - "headdresses\n", - "headed\n", - "header\n", - "headers\n", - "headfirst\n", - "headgate\n", - "headgates\n", - "headgear\n", - "headgears\n", - "headhunt\n", - "headhunted\n", - "headhunting\n", - "headhunts\n", - "headier\n", - "headiest\n", - "headily\n", - "heading\n", - "headings\n", - "headlamp\n", - "headlamps\n", - "headland\n", - "headlands\n", - "headless\n", - "headlight\n", - "headlights\n", - "headline\n", - "headlined\n", - "headlines\n", - "headlining\n", - "headlock\n", - "headlocks\n", - "headlong\n", - "headman\n", - "headmaster\n", - "headmasters\n", - "headmen\n", - "headmistress\n", - "headmistresses\n", - "headmost\n", - "headnote\n", - "headnotes\n", - "headphone\n", - "headphones\n", - "headpin\n", - "headpins\n", - "headquarter\n", - "headquartered\n", - "headquartering\n", - "headquarters\n", - "headrace\n", - "headraces\n", - "headrest\n", - "headrests\n", - "headroom\n", - "headrooms\n", - "heads\n", - "headsail\n", - "headsails\n", - "headset\n", - "headsets\n", - "headship\n", - "headships\n", - "headsman\n", - "headsmen\n", - "headstay\n", - "headstays\n", - "headstone\n", - "headstones\n", - "headstrong\n", - "headwaiter\n", - "headwaiters\n", - "headwater\n", - "headwaters\n", - "headway\n", - "headways\n", - "headwind\n", - "headwinds\n", - "headword\n", - "headwords\n", - "headwork\n", - "headworks\n", - "heady\n", - "heal\n", - "healable\n", - "healed\n", - "healer\n", - "healers\n", - "healing\n", - "heals\n", - "health\n", - "healthful\n", - "healthfully\n", - "healthfulness\n", - "healthfulnesses\n", - "healthier\n", - "healthiest\n", - "healths\n", - "healthy\n", - "heap\n", - "heaped\n", - "heaping\n", - "heaps\n", - "hear\n", - "hearable\n", - "heard\n", - "hearer\n", - "hearers\n", - "hearing\n", - "hearings\n", - "hearken\n", - "hearkened\n", - "hearkening\n", - "hearkens\n", - "hears\n", - "hearsay\n", - "hearsays\n", - "hearse\n", - "hearsed\n", - "hearses\n", - "hearsing\n", - "heart\n", - "heartache\n", - "heartaches\n", - "heartbeat\n", - "heartbeats\n", - "heartbreak\n", - "heartbreaking\n", - "heartbreaks\n", - "heartbroken\n", - "heartburn\n", - "heartburns\n", - "hearted\n", - "hearten\n", - "heartened\n", - "heartening\n", - "heartens\n", - "hearth\n", - "hearths\n", - "hearthstone\n", - "hearthstones\n", - "heartier\n", - "hearties\n", - "heartiest\n", - "heartily\n", - "heartiness\n", - "heartinesses\n", - "hearting\n", - "heartless\n", - "heartrending\n", - "hearts\n", - "heartsick\n", - "heartsickness\n", - "heartsicknesses\n", - "heartstrings\n", - "heartthrob\n", - "heartthrobs\n", - "heartwarming\n", - "heartwood\n", - "heartwoods\n", - "hearty\n", - "heat\n", - "heatable\n", - "heated\n", - "heatedly\n", - "heater\n", - "heaters\n", - "heath\n", - "heathen\n", - "heathens\n", - "heather\n", - "heathers\n", - "heathery\n", - "heathier\n", - "heathiest\n", - "heaths\n", - "heathy\n", - "heating\n", - "heatless\n", - "heats\n", - "heatstroke\n", - "heatstrokes\n", - "heaume\n", - "heaumes\n", - "heave\n", - "heaved\n", - "heaven\n", - "heavenlier\n", - "heavenliest\n", - "heavenly\n", - "heavens\n", - "heavenward\n", - "heaver\n", - "heavers\n", - "heaves\n", - "heavier\n", - "heavies\n", - "heaviest\n", - "heavily\n", - "heaviness\n", - "heavinesses\n", - "heaving\n", - "heavy\n", - "heavyset\n", - "heavyweight\n", - "heavyweights\n", - "hebdomad\n", - "hebdomads\n", - "hebetate\n", - "hebetated\n", - "hebetates\n", - "hebetating\n", - "hebetic\n", - "hebetude\n", - "hebetudes\n", - "hebraize\n", - "hebraized\n", - "hebraizes\n", - "hebraizing\n", - "hecatomb\n", - "hecatombs\n", - "heck\n", - "heckle\n", - "heckled\n", - "heckler\n", - "hecklers\n", - "heckles\n", - "heckling\n", - "hecks\n", - "hectare\n", - "hectares\n", - "hectic\n", - "hectical\n", - "hectically\n", - "hecticly\n", - "hector\n", - "hectored\n", - "hectoring\n", - "hectors\n", - "heddle\n", - "heddles\n", - "heder\n", - "heders\n", - "hedge\n", - "hedged\n", - "hedgehog\n", - "hedgehogs\n", - "hedgehop\n", - "hedgehopped\n", - "hedgehopping\n", - "hedgehops\n", - "hedgepig\n", - "hedgepigs\n", - "hedger\n", - "hedgerow\n", - "hedgerows\n", - "hedgers\n", - "hedges\n", - "hedgier\n", - "hedgiest\n", - "hedging\n", - "hedgy\n", - "hedonic\n", - "hedonics\n", - "hedonism\n", - "hedonisms\n", - "hedonist\n", - "hedonistic\n", - "hedonists\n", - "heed\n", - "heeded\n", - "heeder\n", - "heeders\n", - "heedful\n", - "heedfully\n", - "heedfulness\n", - "heedfulnesses\n", - "heeding\n", - "heedless\n", - "heedlessly\n", - "heedlessness\n", - "heedlessnesses\n", - "heeds\n", - "heehaw\n", - "heehawed\n", - "heehawing\n", - "heehaws\n", - "heel\n", - "heelball\n", - "heelballs\n", - "heeled\n", - "heeler\n", - "heelers\n", - "heeling\n", - "heelings\n", - "heelless\n", - "heelpost\n", - "heelposts\n", - "heels\n", - "heeltap\n", - "heeltaps\n", - "heeze\n", - "heezed\n", - "heezes\n", - "heezing\n", - "heft\n", - "hefted\n", - "hefter\n", - "hefters\n", - "heftier\n", - "heftiest\n", - "heftily\n", - "hefting\n", - "hefts\n", - "hefty\n", - "hegari\n", - "hegaris\n", - "hegemonies\n", - "hegemony\n", - "hegira\n", - "hegiras\n", - "hegumen\n", - "hegumene\n", - "hegumenes\n", - "hegumenies\n", - "hegumens\n", - "hegumeny\n", - "heifer\n", - "heifers\n", - "heigh\n", - "height\n", - "heighten\n", - "heightened\n", - "heightening\n", - "heightens\n", - "heighth\n", - "heighths\n", - "heights\n", - "heil\n", - "heiled\n", - "heiling\n", - "heils\n", - "heinie\n", - "heinies\n", - "heinous\n", - "heinously\n", - "heinousness\n", - "heinousnesses\n", - "heir\n", - "heirdom\n", - "heirdoms\n", - "heired\n", - "heiress\n", - "heiresses\n", - "heiring\n", - "heirless\n", - "heirloom\n", - "heirlooms\n", - "heirs\n", - "heirship\n", - "heirships\n", - "heist\n", - "heisted\n", - "heister\n", - "heisters\n", - "heisting\n", - "heists\n", - "hejira\n", - "hejiras\n", - "hektare\n", - "hektares\n", - "held\n", - "heliac\n", - "heliacal\n", - "heliast\n", - "heliasts\n", - "helical\n", - "helices\n", - "helicities\n", - "helicity\n", - "helicoid\n", - "helicoids\n", - "helicon\n", - "helicons\n", - "helicopt\n", - "helicopted\n", - "helicopter\n", - "helicopters\n", - "helicopting\n", - "helicopts\n", - "helio\n", - "helios\n", - "heliotrope\n", - "helipad\n", - "helipads\n", - "heliport\n", - "heliports\n", - "helistop\n", - "helistops\n", - "helium\n", - "heliums\n", - "helix\n", - "helixes\n", - "hell\n", - "hellbent\n", - "hellbox\n", - "hellboxes\n", - "hellcat\n", - "hellcats\n", - "helled\n", - "heller\n", - "helleri\n", - "helleries\n", - "hellers\n", - "hellery\n", - "hellfire\n", - "hellfires\n", - "hellgrammite\n", - "hellgrammites\n", - "hellhole\n", - "hellholes\n", - "helling\n", - "hellion\n", - "hellions\n", - "hellish\n", - "hellkite\n", - "hellkites\n", - "hello\n", - "helloed\n", - "helloes\n", - "helloing\n", - "hellos\n", - "hells\n", - "helluva\n", - "helm\n", - "helmed\n", - "helmet\n", - "helmeted\n", - "helmeting\n", - "helmets\n", - "helming\n", - "helminth\n", - "helminths\n", - "helmless\n", - "helms\n", - "helmsman\n", - "helmsmen\n", - "helot\n", - "helotage\n", - "helotages\n", - "helotism\n", - "helotisms\n", - "helotries\n", - "helotry\n", - "helots\n", - "help\n", - "helpable\n", - "helped\n", - "helper\n", - "helpers\n", - "helpful\n", - "helpfully\n", - "helpfulness\n", - "helpfulnesses\n", - "helping\n", - "helpings\n", - "helpless\n", - "helplessly\n", - "helplessness\n", - "helplessnesses\n", - "helpmate\n", - "helpmates\n", - "helpmeet\n", - "helpmeets\n", - "helps\n", - "helve\n", - "helved\n", - "helves\n", - "helving\n", - "hem\n", - "hemagog\n", - "hemagogs\n", - "hemal\n", - "hematal\n", - "hematein\n", - "hemateins\n", - "hematic\n", - "hematics\n", - "hematin\n", - "hematine\n", - "hematines\n", - "hematins\n", - "hematite\n", - "hematites\n", - "hematocrit\n", - "hematoid\n", - "hematologic\n", - "hematological\n", - "hematologies\n", - "hematologist\n", - "hematologists\n", - "hematology\n", - "hematoma\n", - "hematomas\n", - "hematomata\n", - "hematopenia\n", - "hematuria\n", - "heme\n", - "hemes\n", - "hemic\n", - "hemin\n", - "hemins\n", - "hemiola\n", - "hemiolas\n", - "hemipter\n", - "hemipters\n", - "hemisphere\n", - "hemispheres\n", - "hemispheric\n", - "hemispherical\n", - "hemline\n", - "hemlines\n", - "hemlock\n", - "hemlocks\n", - "hemmed\n", - "hemmer\n", - "hemmers\n", - "hemming\n", - "hemocoel\n", - "hemocoels\n", - "hemocyte\n", - "hemocytes\n", - "hemoglobin\n", - "hemoid\n", - "hemolyze\n", - "hemolyzed\n", - "hemolyzes\n", - "hemolyzing\n", - "hemophilia\n", - "hemophiliac\n", - "hemophiliacs\n", - "hemoptysis\n", - "hemorrhage\n", - "hemorrhaged\n", - "hemorrhages\n", - "hemorrhagic\n", - "hemorrhaging\n", - "hemorrhoids\n", - "hemostat\n", - "hemostats\n", - "hemp\n", - "hempen\n", - "hempie\n", - "hempier\n", - "hempiest\n", - "hemplike\n", - "hemps\n", - "hempseed\n", - "hempseeds\n", - "hempweed\n", - "hempweeds\n", - "hempy\n", - "hems\n", - "hen\n", - "henbane\n", - "henbanes\n", - "henbit\n", - "henbits\n", - "hence\n", - "henceforth\n", - "henceforward\n", - "henchman\n", - "henchmen\n", - "hencoop\n", - "hencoops\n", - "henequen\n", - "henequens\n", - "henequin\n", - "henequins\n", - "henhouse\n", - "henhouses\n", - "heniquen\n", - "heniquens\n", - "henlike\n", - "henna\n", - "hennaed\n", - "hennaing\n", - "hennas\n", - "henneries\n", - "hennery\n", - "henpeck\n", - "henpecked\n", - "henpecking\n", - "henpecks\n", - "henries\n", - "henry\n", - "henrys\n", - "hens\n", - "hent\n", - "hented\n", - "henting\n", - "hents\n", - "hep\n", - "heparin\n", - "heparins\n", - "hepatic\n", - "hepatica\n", - "hepaticae\n", - "hepaticas\n", - "hepatics\n", - "hepatitis\n", - "hepatize\n", - "hepatized\n", - "hepatizes\n", - "hepatizing\n", - "hepatoma\n", - "hepatomas\n", - "hepatomata\n", - "hepatomegaly\n", - "hepcat\n", - "hepcats\n", - "heptad\n", - "heptads\n", - "heptagon\n", - "heptagons\n", - "heptane\n", - "heptanes\n", - "heptarch\n", - "heptarchs\n", - "heptose\n", - "heptoses\n", - "her\n", - "herald\n", - "heralded\n", - "heraldic\n", - "heralding\n", - "heraldries\n", - "heraldry\n", - "heralds\n", - "herb\n", - "herbaceous\n", - "herbage\n", - "herbages\n", - "herbal\n", - "herbals\n", - "herbaria\n", - "herbicidal\n", - "herbicide\n", - "herbicides\n", - "herbier\n", - "herbiest\n", - "herbivorous\n", - "herbivorously\n", - "herbless\n", - "herblike\n", - "herbs\n", - "herby\n", - "herculean\n", - "hercules\n", - "herculeses\n", - "herd\n", - "herded\n", - "herder\n", - "herders\n", - "herdic\n", - "herdics\n", - "herding\n", - "herdlike\n", - "herdman\n", - "herdmen\n", - "herds\n", - "herdsman\n", - "herdsmen\n", - "here\n", - "hereabout\n", - "hereabouts\n", - "hereafter\n", - "hereafters\n", - "hereat\n", - "hereaway\n", - "hereby\n", - "heredes\n", - "hereditary\n", - "heredities\n", - "heredity\n", - "herein\n", - "hereinto\n", - "hereof\n", - "hereon\n", - "heres\n", - "heresies\n", - "heresy\n", - "heretic\n", - "heretical\n", - "heretics\n", - "hereto\n", - "heretofore\n", - "heretrices\n", - "heretrix\n", - "heretrixes\n", - "hereunder\n", - "hereunto\n", - "hereupon\n", - "herewith\n", - "heriot\n", - "heriots\n", - "heritage\n", - "heritages\n", - "heritor\n", - "heritors\n", - "heritrices\n", - "heritrix\n", - "heritrixes\n", - "herl\n", - "herls\n", - "herm\n", - "herma\n", - "hermae\n", - "hermaean\n", - "hermai\n", - "hermaphrodite\n", - "hermaphrodites\n", - "hermaphroditic\n", - "hermetic\n", - "hermetically\n", - "hermit\n", - "hermitic\n", - "hermitries\n", - "hermitry\n", - "hermits\n", - "herms\n", - "hern\n", - "hernia\n", - "herniae\n", - "hernial\n", - "hernias\n", - "herniate\n", - "herniated\n", - "herniates\n", - "herniating\n", - "herniation\n", - "herniations\n", - "herns\n", - "hero\n", - "heroes\n", - "heroic\n", - "heroical\n", - "heroics\n", - "heroin\n", - "heroine\n", - "heroines\n", - "heroins\n", - "heroism\n", - "heroisms\n", - "heroize\n", - "heroized\n", - "heroizes\n", - "heroizing\n", - "heron\n", - "heronries\n", - "heronry\n", - "herons\n", - "heros\n", - "herpes\n", - "herpeses\n", - "herpetic\n", - "herpetologic\n", - "herpetological\n", - "herpetologies\n", - "herpetologist\n", - "herpetologists\n", - "herpetology\n", - "herried\n", - "herries\n", - "herring\n", - "herrings\n", - "herry\n", - "herrying\n", - "hers\n", - "herself\n", - "hertz\n", - "hertzes\n", - "hes\n", - "hesitancies\n", - "hesitancy\n", - "hesitant\n", - "hesitantly\n", - "hesitate\n", - "hesitated\n", - "hesitates\n", - "hesitating\n", - "hesitation\n", - "hesitations\n", - "hessian\n", - "hessians\n", - "hessite\n", - "hessites\n", - "hest\n", - "hests\n", - "het\n", - "hetaera\n", - "hetaerae\n", - "hetaeras\n", - "hetaeric\n", - "hetaira\n", - "hetairai\n", - "hetairas\n", - "hetero\n", - "heterogenous\n", - "heterogenously\n", - "heterogenousness\n", - "heterogenousnesses\n", - "heteros\n", - "heterosexual\n", - "heterosexuals\n", - "heth\n", - "heths\n", - "hetman\n", - "hetmans\n", - "heuch\n", - "heuchs\n", - "heugh\n", - "heughs\n", - "hew\n", - "hewable\n", - "hewed\n", - "hewer\n", - "hewers\n", - "hewing\n", - "hewn\n", - "hews\n", - "hex\n", - "hexad\n", - "hexade\n", - "hexades\n", - "hexadic\n", - "hexads\n", - "hexagon\n", - "hexagonal\n", - "hexagons\n", - "hexagram\n", - "hexagrams\n", - "hexamine\n", - "hexamines\n", - "hexane\n", - "hexanes\n", - "hexapla\n", - "hexaplar\n", - "hexaplas\n", - "hexapod\n", - "hexapodies\n", - "hexapods\n", - "hexapody\n", - "hexarchies\n", - "hexarchy\n", - "hexed\n", - "hexer\n", - "hexerei\n", - "hexereis\n", - "hexers\n", - "hexes\n", - "hexing\n", - "hexone\n", - "hexones\n", - "hexosan\n", - "hexosans\n", - "hexose\n", - "hexoses\n", - "hexyl\n", - "hexyls\n", - "hey\n", - "heyday\n", - "heydays\n", - "heydey\n", - "heydeys\n", - "hi\n", - "hiatal\n", - "hiatus\n", - "hiatuses\n", - "hibachi\n", - "hibachis\n", - "hibernal\n", - "hibernate\n", - "hibernated\n", - "hibernates\n", - "hibernating\n", - "hibernation\n", - "hibernations\n", - "hibernator\n", - "hibernators\n", - "hibiscus\n", - "hibiscuses\n", - "hic\n", - "hiccough\n", - "hiccoughed\n", - "hiccoughing\n", - "hiccoughs\n", - "hiccup\n", - "hiccuped\n", - "hiccuping\n", - "hiccupped\n", - "hiccupping\n", - "hiccups\n", - "hick\n", - "hickey\n", - "hickeys\n", - "hickories\n", - "hickory\n", - "hicks\n", - "hid\n", - "hidable\n", - "hidalgo\n", - "hidalgos\n", - "hidden\n", - "hiddenly\n", - "hide\n", - "hideaway\n", - "hideaways\n", - "hided\n", - "hideless\n", - "hideous\n", - "hideously\n", - "hideousness\n", - "hideousnesses\n", - "hideout\n", - "hideouts\n", - "hider\n", - "hiders\n", - "hides\n", - "hiding\n", - "hidings\n", - "hidroses\n", - "hidrosis\n", - "hidrotic\n", - "hie\n", - "hied\n", - "hieing\n", - "hiemal\n", - "hierarch\n", - "hierarchical\n", - "hierarchies\n", - "hierarchs\n", - "hierarchy\n", - "hieratic\n", - "hieroglyphic\n", - "hieroglyphics\n", - "hies\n", - "higgle\n", - "higgled\n", - "higgler\n", - "higglers\n", - "higgles\n", - "higgling\n", - "high\n", - "highball\n", - "highballed\n", - "highballing\n", - "highballs\n", - "highborn\n", - "highboy\n", - "highboys\n", - "highbred\n", - "highbrow\n", - "highbrows\n", - "highbush\n", - "highchair\n", - "highchairs\n", - "higher\n", - "highest\n", - "highjack\n", - "highjacked\n", - "highjacking\n", - "highjacks\n", - "highland\n", - "highlander\n", - "highlanders\n", - "highlands\n", - "highlight\n", - "highlighted\n", - "highlighting\n", - "highlights\n", - "highly\n", - "highness\n", - "highnesses\n", - "highroad\n", - "highroads\n", - "highs\n", - "hight\n", - "hightail\n", - "hightailed\n", - "hightailing\n", - "hightails\n", - "highted\n", - "highth\n", - "highths\n", - "highting\n", - "hights\n", - "highway\n", - "highwayman\n", - "highwaymen\n", - "highways\n", - "hijack\n", - "hijacked\n", - "hijacker\n", - "hijackers\n", - "hijacking\n", - "hijacks\n", - "hijinks\n", - "hike\n", - "hiked\n", - "hiker\n", - "hikers\n", - "hikes\n", - "hiking\n", - "hila\n", - "hilar\n", - "hilarious\n", - "hilariously\n", - "hilarities\n", - "hilarity\n", - "hilding\n", - "hildings\n", - "hili\n", - "hill\n", - "hillbillies\n", - "hillbilly\n", - "hilled\n", - "hiller\n", - "hillers\n", - "hillier\n", - "hilliest\n", - "hilling\n", - "hillo\n", - "hilloa\n", - "hilloaed\n", - "hilloaing\n", - "hilloas\n", - "hillock\n", - "hillocks\n", - "hillocky\n", - "hilloed\n", - "hilloing\n", - "hillos\n", - "hills\n", - "hillside\n", - "hillsides\n", - "hilltop\n", - "hilltops\n", - "hilly\n", - "hilt\n", - "hilted\n", - "hilting\n", - "hiltless\n", - "hilts\n", - "hilum\n", - "hilus\n", - "him\n", - "himatia\n", - "himation\n", - "himations\n", - "himself\n", - "hin\n", - "hind\n", - "hinder\n", - "hindered\n", - "hinderer\n", - "hinderers\n", - "hindering\n", - "hinders\n", - "hindgut\n", - "hindguts\n", - "hindmost\n", - "hindquarter\n", - "hindquarters\n", - "hinds\n", - "hindsight\n", - "hindsights\n", - "hinge\n", - "hinged\n", - "hinger\n", - "hingers\n", - "hinges\n", - "hinging\n", - "hinnied\n", - "hinnies\n", - "hinny\n", - "hinnying\n", - "hins\n", - "hint\n", - "hinted\n", - "hinter\n", - "hinterland\n", - "hinterlands\n", - "hinters\n", - "hinting\n", - "hints\n", - "hip\n", - "hipbone\n", - "hipbones\n", - "hipless\n", - "hiplike\n", - "hipness\n", - "hipnesses\n", - "hipparch\n", - "hipparchs\n", - "hipped\n", - "hipper\n", - "hippest\n", - "hippie\n", - "hippiedom\n", - "hippiedoms\n", - "hippiehood\n", - "hippiehoods\n", - "hippier\n", - "hippies\n", - "hippiest\n", - "hipping\n", - "hippish\n", - "hippo\n", - "hippopotami\n", - "hippopotamus\n", - "hippopotamuses\n", - "hippos\n", - "hippy\n", - "hips\n", - "hipshot\n", - "hipster\n", - "hipsters\n", - "hirable\n", - "hiragana\n", - "hiraganas\n", - "hircine\n", - "hire\n", - "hireable\n", - "hired\n", - "hireling\n", - "hirelings\n", - "hirer\n", - "hirers\n", - "hires\n", - "hiring\n", - "hirple\n", - "hirpled\n", - "hirples\n", - "hirpling\n", - "hirsel\n", - "hirseled\n", - "hirseling\n", - "hirselled\n", - "hirselling\n", - "hirsels\n", - "hirsle\n", - "hirsled\n", - "hirsles\n", - "hirsling\n", - "hirsute\n", - "hirsutism\n", - "hirudin\n", - "hirudins\n", - "his\n", - "hisn\n", - "hispid\n", - "hiss\n", - "hissed\n", - "hisself\n", - "hisser\n", - "hissers\n", - "hisses\n", - "hissing\n", - "hissings\n", - "hist\n", - "histamin\n", - "histamine\n", - "histamines\n", - "histamins\n", - "histed\n", - "histidin\n", - "histidins\n", - "histing\n", - "histogen\n", - "histogens\n", - "histogram\n", - "histograms\n", - "histoid\n", - "histologic\n", - "histone\n", - "histones\n", - "histopathologic\n", - "histopathological\n", - "historian\n", - "historians\n", - "historic\n", - "historical\n", - "historically\n", - "histories\n", - "history\n", - "hists\n", - "hit\n", - "hitch\n", - "hitched\n", - "hitcher\n", - "hitchers\n", - "hitches\n", - "hitchhike\n", - "hitchhiked\n", - "hitchhiker\n", - "hitchhikers\n", - "hitchhikes\n", - "hitchhiking\n", - "hitching\n", - "hither\n", - "hitherto\n", - "hitless\n", - "hits\n", - "hitter\n", - "hitters\n", - "hitting\n", - "hive\n", - "hived\n", - "hiveless\n", - "hiver\n", - "hives\n", - "hiving\n", - "ho\n", - "hoactzin\n", - "hoactzines\n", - "hoactzins\n", - "hoagie\n", - "hoagies\n", - "hoagy\n", - "hoar\n", - "hoard\n", - "hoarded\n", - "hoarder\n", - "hoarders\n", - "hoarding\n", - "hoardings\n", - "hoards\n", - "hoarfrost\n", - "hoarfrosts\n", - "hoarier\n", - "hoariest\n", - "hoarily\n", - "hoariness\n", - "hoarinesses\n", - "hoars\n", - "hoarse\n", - "hoarsely\n", - "hoarsen\n", - "hoarsened\n", - "hoarseness\n", - "hoarsenesses\n", - "hoarsening\n", - "hoarsens\n", - "hoarser\n", - "hoarsest\n", - "hoary\n", - "hoatzin\n", - "hoatzines\n", - "hoatzins\n", - "hoax\n", - "hoaxed\n", - "hoaxer\n", - "hoaxers\n", - "hoaxes\n", - "hoaxing\n", - "hob\n", - "hobbed\n", - "hobbies\n", - "hobbing\n", - "hobble\n", - "hobbled\n", - "hobbler\n", - "hobblers\n", - "hobbles\n", - "hobbling\n", - "hobby\n", - "hobbyist\n", - "hobbyists\n", - "hobgoblin\n", - "hobgoblins\n", - "hoblike\n", - "hobnail\n", - "hobnailed\n", - "hobnails\n", - "hobnob\n", - "hobnobbed\n", - "hobnobbing\n", - "hobnobs\n", - "hobo\n", - "hoboed\n", - "hoboes\n", - "hoboing\n", - "hoboism\n", - "hoboisms\n", - "hobos\n", - "hobs\n", - "hock\n", - "hocked\n", - "hocker\n", - "hockers\n", - "hockey\n", - "hockeys\n", - "hocking\n", - "hocks\n", - "hockshop\n", - "hockshops\n", - "hocus\n", - "hocused\n", - "hocuses\n", - "hocusing\n", - "hocussed\n", - "hocusses\n", - "hocussing\n", - "hod\n", - "hodad\n", - "hodaddies\n", - "hodaddy\n", - "hodads\n", - "hodden\n", - "hoddens\n", - "hoddin\n", - "hoddins\n", - "hodgepodge\n", - "hodgepodges\n", - "hods\n", - "hoe\n", - "hoecake\n", - "hoecakes\n", - "hoed\n", - "hoedown\n", - "hoedowns\n", - "hoeing\n", - "hoelike\n", - "hoer\n", - "hoers\n", - "hoes\n", - "hog\n", - "hogan\n", - "hogans\n", - "hogback\n", - "hogbacks\n", - "hogfish\n", - "hogfishes\n", - "hogg\n", - "hogged\n", - "hogger\n", - "hoggers\n", - "hogging\n", - "hoggish\n", - "hoggs\n", - "hoglike\n", - "hogmanay\n", - "hogmanays\n", - "hogmane\n", - "hogmanes\n", - "hogmenay\n", - "hogmenays\n", - "hognose\n", - "hognoses\n", - "hognut\n", - "hognuts\n", - "hogs\n", - "hogshead\n", - "hogsheads\n", - "hogtie\n", - "hogtied\n", - "hogtieing\n", - "hogties\n", - "hogtying\n", - "hogwash\n", - "hogwashes\n", - "hogweed\n", - "hogweeds\n", - "hoick\n", - "hoicked\n", - "hoicking\n", - "hoicks\n", - "hoiden\n", - "hoidened\n", - "hoidening\n", - "hoidens\n", - "hoise\n", - "hoised\n", - "hoises\n", - "hoising\n", - "hoist\n", - "hoisted\n", - "hoister\n", - "hoisters\n", - "hoisting\n", - "hoists\n", - "hoke\n", - "hoked\n", - "hokes\n", - "hokey\n", - "hoking\n", - "hokku\n", - "hokum\n", - "hokums\n", - "hokypokies\n", - "hokypoky\n", - "holard\n", - "holards\n", - "hold\n", - "holdable\n", - "holdall\n", - "holdalls\n", - "holdback\n", - "holdbacks\n", - "holden\n", - "holder\n", - "holders\n", - "holdfast\n", - "holdfasts\n", - "holding\n", - "holdings\n", - "holdout\n", - "holdouts\n", - "holdover\n", - "holdovers\n", - "holds\n", - "holdup\n", - "holdups\n", - "hole\n", - "holed\n", - "holeless\n", - "holer\n", - "holes\n", - "holey\n", - "holibut\n", - "holibuts\n", - "holiday\n", - "holidayed\n", - "holidaying\n", - "holidays\n", - "holier\n", - "holies\n", - "holiest\n", - "holily\n", - "holiness\n", - "holinesses\n", - "holing\n", - "holism\n", - "holisms\n", - "holist\n", - "holistic\n", - "holists\n", - "holk\n", - "holked\n", - "holking\n", - "holks\n", - "holla\n", - "hollaed\n", - "hollaing\n", - "holland\n", - "hollands\n", - "hollas\n", - "holler\n", - "hollered\n", - "hollering\n", - "hollers\n", - "hollies\n", - "hollo\n", - "holloa\n", - "holloaed\n", - "holloaing\n", - "holloas\n", - "holloed\n", - "holloes\n", - "holloing\n", - "holloo\n", - "hollooed\n", - "hollooing\n", - "holloos\n", - "hollos\n", - "hollow\n", - "hollowed\n", - "hollower\n", - "hollowest\n", - "hollowing\n", - "hollowly\n", - "hollowness\n", - "hollownesses\n", - "hollows\n", - "holly\n", - "hollyhock\n", - "hollyhocks\n", - "holm\n", - "holmic\n", - "holmium\n", - "holmiums\n", - "holms\n", - "holocaust\n", - "holocausts\n", - "hologram\n", - "holograms\n", - "hologynies\n", - "hologyny\n", - "holotype\n", - "holotypes\n", - "holozoic\n", - "holp\n", - "holpen\n", - "holstein\n", - "holsteins\n", - "holster\n", - "holsters\n", - "holt\n", - "holts\n", - "holy\n", - "holyday\n", - "holydays\n", - "holytide\n", - "holytides\n", - "homage\n", - "homaged\n", - "homager\n", - "homagers\n", - "homages\n", - "homaging\n", - "hombre\n", - "hombres\n", - "homburg\n", - "homburgs\n", - "home\n", - "homebodies\n", - "homebody\n", - "homebred\n", - "homebreds\n", - "homecoming\n", - "homecomings\n", - "homed\n", - "homeland\n", - "homelands\n", - "homeless\n", - "homelier\n", - "homeliest\n", - "homelike\n", - "homeliness\n", - "homelinesses\n", - "homely\n", - "homemade\n", - "homemaker\n", - "homemakers\n", - "homemaking\n", - "homemakings\n", - "homer\n", - "homered\n", - "homering\n", - "homeroom\n", - "homerooms\n", - "homers\n", - "homes\n", - "homesick\n", - "homesickness\n", - "homesicknesses\n", - "homesite\n", - "homesites\n", - "homespun\n", - "homespuns\n", - "homestead\n", - "homesteader\n", - "homesteaders\n", - "homesteads\n", - "homestretch\n", - "homestretches\n", - "hometown\n", - "hometowns\n", - "homeward\n", - "homewards\n", - "homework\n", - "homeworks\n", - "homey\n", - "homicidal\n", - "homicide\n", - "homicides\n", - "homier\n", - "homiest\n", - "homiletic\n", - "homilies\n", - "homilist\n", - "homilists\n", - "homily\n", - "hominess\n", - "hominesses\n", - "homing\n", - "hominian\n", - "hominians\n", - "hominid\n", - "hominids\n", - "hominies\n", - "hominine\n", - "hominoid\n", - "hominoids\n", - "hominy\n", - "hommock\n", - "hommocks\n", - "homo\n", - "homogamies\n", - "homogamy\n", - "homogeneities\n", - "homogeneity\n", - "homogeneous\n", - "homogeneously\n", - "homogeneousness\n", - "homogeneousnesses\n", - "homogenies\n", - "homogenize\n", - "homogenized\n", - "homogenizer\n", - "homogenizers\n", - "homogenizes\n", - "homogenizing\n", - "homogeny\n", - "homogonies\n", - "homogony\n", - "homograph\n", - "homographs\n", - "homolog\n", - "homologies\n", - "homologs\n", - "homology\n", - "homonym\n", - "homonymies\n", - "homonyms\n", - "homonymy\n", - "homophone\n", - "homophones\n", - "homos\n", - "homosexual\n", - "homosexuals\n", - "homy\n", - "honan\n", - "honans\n", - "honcho\n", - "honchos\n", - "honda\n", - "hondas\n", - "hondle\n", - "hondled\n", - "hondling\n", - "hone\n", - "honed\n", - "honer\n", - "honers\n", - "hones\n", - "honest\n", - "honester\n", - "honestest\n", - "honesties\n", - "honestly\n", - "honesty\n", - "honewort\n", - "honeworts\n", - "honey\n", - "honeybee\n", - "honeybees\n", - "honeybun\n", - "honeybuns\n", - "honeycomb\n", - "honeycombed\n", - "honeycombing\n", - "honeycombs\n", - "honeydew\n", - "honeydews\n", - "honeyed\n", - "honeyful\n", - "honeying\n", - "honeymoon\n", - "honeymooned\n", - "honeymooning\n", - "honeymoons\n", - "honeys\n", - "honeysuckle\n", - "honeysuckles\n", - "hong\n", - "hongs\n", - "honied\n", - "honing\n", - "honk\n", - "honked\n", - "honker\n", - "honkers\n", - "honkey\n", - "honkeys\n", - "honkie\n", - "honkies\n", - "honking\n", - "honks\n", - "honky\n", - "honor\n", - "honorable\n", - "honorably\n", - "honorand\n", - "honorands\n", - "honoraries\n", - "honorarily\n", - "honorary\n", - "honored\n", - "honoree\n", - "honorees\n", - "honorer\n", - "honorers\n", - "honoring\n", - "honors\n", - "honour\n", - "honoured\n", - "honourer\n", - "honourers\n", - "honouring\n", - "honours\n", - "hooch\n", - "hooches\n", - "hood\n", - "hooded\n", - "hoodie\n", - "hoodies\n", - "hooding\n", - "hoodless\n", - "hoodlike\n", - "hoodlum\n", - "hoodlums\n", - "hoodoo\n", - "hoodooed\n", - "hoodooing\n", - "hoodoos\n", - "hoods\n", - "hoodwink\n", - "hoodwinked\n", - "hoodwinking\n", - "hoodwinks\n", - "hooey\n", - "hooeys\n", - "hoof\n", - "hoofbeat\n", - "hoofbeats\n", - "hoofed\n", - "hoofer\n", - "hoofers\n", - "hoofing\n", - "hoofless\n", - "hooflike\n", - "hoofs\n", - "hook\n", - "hooka\n", - "hookah\n", - "hookahs\n", - "hookas\n", - "hooked\n", - "hooker\n", - "hookers\n", - "hookey\n", - "hookeys\n", - "hookier\n", - "hookies\n", - "hookiest\n", - "hooking\n", - "hookless\n", - "hooklet\n", - "hooklets\n", - "hooklike\n", - "hooknose\n", - "hooknoses\n", - "hooks\n", - "hookup\n", - "hookups\n", - "hookworm\n", - "hookworms\n", - "hooky\n", - "hoolie\n", - "hooligan\n", - "hooligans\n", - "hooly\n", - "hoop\n", - "hooped\n", - "hooper\n", - "hoopers\n", - "hooping\n", - "hoopla\n", - "hooplas\n", - "hoopless\n", - "hooplike\n", - "hoopoe\n", - "hoopoes\n", - "hoopoo\n", - "hoopoos\n", - "hoops\n", - "hoopster\n", - "hoopsters\n", - "hoorah\n", - "hoorahed\n", - "hoorahing\n", - "hoorahs\n", - "hooray\n", - "hoorayed\n", - "hooraying\n", - "hoorays\n", - "hoosegow\n", - "hoosegows\n", - "hoosgow\n", - "hoosgows\n", - "hoot\n", - "hootch\n", - "hootches\n", - "hooted\n", - "hooter\n", - "hooters\n", - "hootier\n", - "hootiest\n", - "hooting\n", - "hoots\n", - "hooty\n", - "hooves\n", - "hop\n", - "hope\n", - "hoped\n", - "hopeful\n", - "hopefully\n", - "hopefulness\n", - "hopefulnesses\n", - "hopefuls\n", - "hopeless\n", - "hopelessly\n", - "hopelessness\n", - "hopelessnesses\n", - "hoper\n", - "hopers\n", - "hopes\n", - "hophead\n", - "hopheads\n", - "hoping\n", - "hoplite\n", - "hoplites\n", - "hoplitic\n", - "hopped\n", - "hopper\n", - "hoppers\n", - "hopping\n", - "hopple\n", - "hoppled\n", - "hopples\n", - "hoppling\n", - "hops\n", - "hopsack\n", - "hopsacks\n", - "hoptoad\n", - "hoptoads\n", - "hora\n", - "horah\n", - "horahs\n", - "horal\n", - "horary\n", - "horas\n", - "horde\n", - "horded\n", - "hordein\n", - "hordeins\n", - "hordes\n", - "hording\n", - "horehound\n", - "horehounds\n", - "horizon\n", - "horizons\n", - "horizontal\n", - "horizontally\n", - "hormonal\n", - "hormone\n", - "hormones\n", - "hormonic\n", - "horn\n", - "hornbeam\n", - "hornbeams\n", - "hornbill\n", - "hornbills\n", - "hornbook\n", - "hornbooks\n", - "horned\n", - "hornet\n", - "hornets\n", - "hornfels\n", - "hornier\n", - "horniest\n", - "hornily\n", - "horning\n", - "hornito\n", - "hornitos\n", - "hornless\n", - "hornlike\n", - "hornpipe\n", - "hornpipes\n", - "hornpout\n", - "hornpouts\n", - "horns\n", - "horntail\n", - "horntails\n", - "hornworm\n", - "hornworms\n", - "hornwort\n", - "hornworts\n", - "horny\n", - "horologe\n", - "horologes\n", - "horological\n", - "horologies\n", - "horologist\n", - "horologists\n", - "horology\n", - "horoscope\n", - "horoscopes\n", - "horrendous\n", - "horrent\n", - "horrible\n", - "horribleness\n", - "horriblenesses\n", - "horribles\n", - "horribly\n", - "horrid\n", - "horridly\n", - "horrific\n", - "horrified\n", - "horrifies\n", - "horrify\n", - "horrifying\n", - "horror\n", - "horrors\n", - "horse\n", - "horseback\n", - "horsebacks\n", - "horsecar\n", - "horsecars\n", - "horsed\n", - "horseflies\n", - "horsefly\n", - "horsehair\n", - "horsehairs\n", - "horsehide\n", - "horsehides\n", - "horseless\n", - "horseman\n", - "horsemanship\n", - "horsemanships\n", - "horsemen\n", - "horseplay\n", - "horseplays\n", - "horsepower\n", - "horsepowers\n", - "horseradish\n", - "horseradishes\n", - "horses\n", - "horseshoe\n", - "horseshoes\n", - "horsewoman\n", - "horsewomen\n", - "horsey\n", - "horsier\n", - "horsiest\n", - "horsily\n", - "horsing\n", - "horst\n", - "horste\n", - "horstes\n", - "horsts\n", - "horsy\n", - "hortatory\n", - "horticultural\n", - "horticulture\n", - "horticultures\n", - "horticulturist\n", - "horticulturists\n", - "hosanna\n", - "hosannaed\n", - "hosannaing\n", - "hosannas\n", - "hose\n", - "hosed\n", - "hosel\n", - "hosels\n", - "hosen\n", - "hoses\n", - "hosier\n", - "hosieries\n", - "hosiers\n", - "hosiery\n", - "hosing\n", - "hospice\n", - "hospices\n", - "hospitable\n", - "hospitably\n", - "hospital\n", - "hospitalities\n", - "hospitality\n", - "hospitalization\n", - "hospitalizations\n", - "hospitalize\n", - "hospitalized\n", - "hospitalizes\n", - "hospitalizing\n", - "hospitals\n", - "hospitia\n", - "hospodar\n", - "hospodars\n", - "host\n", - "hostage\n", - "hostages\n", - "hosted\n", - "hostel\n", - "hosteled\n", - "hosteler\n", - "hostelers\n", - "hosteling\n", - "hostelries\n", - "hostelry\n", - "hostels\n", - "hostess\n", - "hostessed\n", - "hostesses\n", - "hostessing\n", - "hostile\n", - "hostilely\n", - "hostiles\n", - "hostilities\n", - "hostility\n", - "hosting\n", - "hostler\n", - "hostlers\n", - "hostly\n", - "hosts\n", - "hot\n", - "hotbed\n", - "hotbeds\n", - "hotblood\n", - "hotbloods\n", - "hotbox\n", - "hotboxes\n", - "hotcake\n", - "hotcakes\n", - "hotch\n", - "hotched\n", - "hotches\n", - "hotching\n", - "hotchpot\n", - "hotchpots\n", - "hotdog\n", - "hotdogged\n", - "hotdogging\n", - "hotdogs\n", - "hotel\n", - "hotelier\n", - "hoteliers\n", - "hotelman\n", - "hotelmen\n", - "hotels\n", - "hotfoot\n", - "hotfooted\n", - "hotfooting\n", - "hotfoots\n", - "hothead\n", - "hotheaded\n", - "hotheadedly\n", - "hotheadedness\n", - "hotheadednesses\n", - "hotheads\n", - "hothouse\n", - "hothouses\n", - "hotly\n", - "hotness\n", - "hotnesses\n", - "hotpress\n", - "hotpressed\n", - "hotpresses\n", - "hotpressing\n", - "hotrod\n", - "hotrods\n", - "hots\n", - "hotshot\n", - "hotshots\n", - "hotspur\n", - "hotspurs\n", - "hotted\n", - "hotter\n", - "hottest\n", - "hotting\n", - "hottish\n", - "houdah\n", - "houdahs\n", - "hound\n", - "hounded\n", - "hounder\n", - "hounders\n", - "hounding\n", - "hounds\n", - "hour\n", - "hourglass\n", - "hourglasses\n", - "houri\n", - "houris\n", - "hourly\n", - "hours\n", - "house\n", - "houseboat\n", - "houseboats\n", - "houseboy\n", - "houseboys\n", - "housebreak\n", - "housebreaks\n", - "housebroken\n", - "houseclean\n", - "housecleaned\n", - "housecleaning\n", - "housecleanings\n", - "housecleans\n", - "housed\n", - "houseflies\n", - "housefly\n", - "houseful\n", - "housefuls\n", - "household\n", - "householder\n", - "householders\n", - "households\n", - "housekeeper\n", - "housekeepers\n", - "housekeeping\n", - "housel\n", - "houseled\n", - "houseling\n", - "houselled\n", - "houselling\n", - "housels\n", - "housemaid\n", - "housemaids\n", - "houseman\n", - "housemate\n", - "housemates\n", - "housemen\n", - "houser\n", - "housers\n", - "houses\n", - "housetop\n", - "housetops\n", - "housewares\n", - "housewarming\n", - "housewarmings\n", - "housewife\n", - "housewifeliness\n", - "housewifelinesses\n", - "housewifely\n", - "housewiferies\n", - "housewifery\n", - "housewives\n", - "housework\n", - "houseworks\n", - "housing\n", - "housings\n", - "hove\n", - "hovel\n", - "hoveled\n", - "hoveling\n", - "hovelled\n", - "hovelling\n", - "hovels\n", - "hover\n", - "hovered\n", - "hoverer\n", - "hoverers\n", - "hovering\n", - "hovers\n", - "how\n", - "howbeit\n", - "howdah\n", - "howdahs\n", - "howdie\n", - "howdies\n", - "howdy\n", - "howe\n", - "howes\n", - "however\n", - "howf\n", - "howff\n", - "howffs\n", - "howfs\n", - "howitzer\n", - "howitzers\n", - "howk\n", - "howked\n", - "howking\n", - "howks\n", - "howl\n", - "howled\n", - "howler\n", - "howlers\n", - "howlet\n", - "howlets\n", - "howling\n", - "howls\n", - "hows\n", - "hoy\n", - "hoyden\n", - "hoydened\n", - "hoydening\n", - "hoydens\n", - "hoyle\n", - "hoyles\n", - "hoys\n", - "huarache\n", - "huaraches\n", - "huaracho\n", - "huarachos\n", - "hub\n", - "hubbies\n", - "hubbub\n", - "hubbubs\n", - "hubby\n", - "hubcap\n", - "hubcaps\n", - "hubris\n", - "hubrises\n", - "hubs\n", - "huck\n", - "huckle\n", - "huckleberries\n", - "huckleberry\n", - "huckles\n", - "hucks\n", - "huckster\n", - "huckstered\n", - "huckstering\n", - "hucksters\n", - "huddle\n", - "huddled\n", - "huddler\n", - "huddlers\n", - "huddles\n", - "huddling\n", - "hue\n", - "hued\n", - "hueless\n", - "hues\n", - "huff\n", - "huffed\n", - "huffier\n", - "huffiest\n", - "huffily\n", - "huffing\n", - "huffish\n", - "huffs\n", - "huffy\n", - "hug\n", - "huge\n", - "hugely\n", - "hugeness\n", - "hugenesses\n", - "hugeous\n", - "huger\n", - "hugest\n", - "huggable\n", - "hugged\n", - "hugger\n", - "huggers\n", - "hugging\n", - "hugs\n", - "huh\n", - "huic\n", - "hula\n", - "hulas\n", - "hulk\n", - "hulked\n", - "hulkier\n", - "hulkiest\n", - "hulking\n", - "hulks\n", - "hulky\n", - "hull\n", - "hullabaloo\n", - "hullabaloos\n", - "hulled\n", - "huller\n", - "hullers\n", - "hulling\n", - "hullo\n", - "hulloa\n", - "hulloaed\n", - "hulloaing\n", - "hulloas\n", - "hulloed\n", - "hulloes\n", - "hulloing\n", - "hullos\n", - "hulls\n", - "hum\n", - "human\n", - "humane\n", - "humanely\n", - "humaneness\n", - "humanenesses\n", - "humaner\n", - "humanest\n", - "humanise\n", - "humanised\n", - "humanises\n", - "humanising\n", - "humanism\n", - "humanisms\n", - "humanist\n", - "humanistic\n", - "humanists\n", - "humanitarian\n", - "humanitarianism\n", - "humanitarianisms\n", - "humanitarians\n", - "humanities\n", - "humanity\n", - "humanization\n", - "humanizations\n", - "humanize\n", - "humanized\n", - "humanizes\n", - "humanizing\n", - "humankind\n", - "humankinds\n", - "humanly\n", - "humanness\n", - "humannesses\n", - "humanoid\n", - "humanoids\n", - "humans\n", - "humate\n", - "humates\n", - "humble\n", - "humbled\n", - "humbleness\n", - "humblenesses\n", - "humbler\n", - "humblers\n", - "humbles\n", - "humblest\n", - "humbling\n", - "humbly\n", - "humbug\n", - "humbugged\n", - "humbugging\n", - "humbugs\n", - "humdrum\n", - "humdrums\n", - "humeral\n", - "humerals\n", - "humeri\n", - "humerus\n", - "humic\n", - "humid\n", - "humidification\n", - "humidifications\n", - "humidified\n", - "humidifier\n", - "humidifiers\n", - "humidifies\n", - "humidify\n", - "humidifying\n", - "humidities\n", - "humidity\n", - "humidly\n", - "humidor\n", - "humidors\n", - "humified\n", - "humiliate\n", - "humiliated\n", - "humiliates\n", - "humiliating\n", - "humiliatingly\n", - "humiliation\n", - "humiliations\n", - "humilities\n", - "humility\n", - "hummable\n", - "hummed\n", - "hummer\n", - "hummers\n", - "humming\n", - "hummingbird\n", - "hummingbirds\n", - "hummock\n", - "hummocks\n", - "hummocky\n", - "humor\n", - "humoral\n", - "humored\n", - "humorful\n", - "humoring\n", - "humorist\n", - "humorists\n", - "humorless\n", - "humorlessly\n", - "humorlessness\n", - "humorlessnesses\n", - "humorous\n", - "humorously\n", - "humorousness\n", - "humorousnesses\n", - "humors\n", - "humour\n", - "humoured\n", - "humouring\n", - "humours\n", - "hump\n", - "humpback\n", - "humpbacked\n", - "humpbacks\n", - "humped\n", - "humph\n", - "humphed\n", - "humphing\n", - "humphs\n", - "humpier\n", - "humpiest\n", - "humping\n", - "humpless\n", - "humps\n", - "humpy\n", - "hums\n", - "humus\n", - "humuses\n", - "hun\n", - "hunch\n", - "hunchback\n", - "hunchbacked\n", - "hunchbacks\n", - "hunched\n", - "hunches\n", - "hunching\n", - "hundred\n", - "hundreds\n", - "hundredth\n", - "hundredths\n", - "hung\n", - "hunger\n", - "hungered\n", - "hungering\n", - "hungers\n", - "hungrier\n", - "hungriest\n", - "hungrily\n", - "hungry\n", - "hunk\n", - "hunker\n", - "hunkered\n", - "hunkering\n", - "hunkers\n", - "hunkies\n", - "hunks\n", - "hunky\n", - "hunnish\n", - "huns\n", - "hunt\n", - "huntable\n", - "hunted\n", - "huntedly\n", - "hunter\n", - "hunters\n", - "hunting\n", - "huntings\n", - "huntington\n", - "huntress\n", - "huntresses\n", - "hunts\n", - "huntsman\n", - "huntsmen\n", - "hup\n", - "hurdies\n", - "hurdle\n", - "hurdled\n", - "hurdler\n", - "hurdlers\n", - "hurdles\n", - "hurdling\n", - "hurds\n", - "hurl\n", - "hurled\n", - "hurler\n", - "hurlers\n", - "hurley\n", - "hurleys\n", - "hurlies\n", - "hurling\n", - "hurlings\n", - "hurls\n", - "hurly\n", - "hurrah\n", - "hurrahed\n", - "hurrahing\n", - "hurrahs\n", - "hurray\n", - "hurrayed\n", - "hurraying\n", - "hurrays\n", - "hurricane\n", - "hurricanes\n", - "hurried\n", - "hurrier\n", - "hurriers\n", - "hurries\n", - "hurry\n", - "hurrying\n", - "hurt\n", - "hurter\n", - "hurters\n", - "hurtful\n", - "hurting\n", - "hurtle\n", - "hurtled\n", - "hurtles\n", - "hurtless\n", - "hurtling\n", - "hurts\n", - "husband\n", - "husbanded\n", - "husbanding\n", - "husbandries\n", - "husbandry\n", - "husbands\n", - "hush\n", - "hushaby\n", - "hushed\n", - "hushedly\n", - "hushes\n", - "hushful\n", - "hushing\n", - "husk\n", - "husked\n", - "husker\n", - "huskers\n", - "huskier\n", - "huskies\n", - "huskiest\n", - "huskily\n", - "huskiness\n", - "huskinesses\n", - "husking\n", - "huskings\n", - "husklike\n", - "husks\n", - "husky\n", - "hussar\n", - "hussars\n", - "hussies\n", - "hussy\n", - "hustings\n", - "hustle\n", - "hustled\n", - "hustler\n", - "hustlers\n", - "hustles\n", - "hustling\n", - "huswife\n", - "huswifes\n", - "huswives\n", - "hut\n", - "hutch\n", - "hutched\n", - "hutches\n", - "hutching\n", - "hutlike\n", - "hutment\n", - "hutments\n", - "huts\n", - "hutted\n", - "hutting\n", - "hutzpa\n", - "hutzpah\n", - "hutzpahs\n", - "hutzpas\n", - "huzza\n", - "huzzaed\n", - "huzzah\n", - "huzzahed\n", - "huzzahing\n", - "huzzahs\n", - "huzzaing\n", - "huzzas\n", - "hwan\n", - "hyacinth\n", - "hyacinths\n", - "hyaena\n", - "hyaenas\n", - "hyaenic\n", - "hyalin\n", - "hyaline\n", - "hyalines\n", - "hyalins\n", - "hyalite\n", - "hyalites\n", - "hyalogen\n", - "hyalogens\n", - "hyaloid\n", - "hyaloids\n", - "hybrid\n", - "hybridization\n", - "hybridizations\n", - "hybridize\n", - "hybridized\n", - "hybridizer\n", - "hybridizers\n", - "hybridizes\n", - "hybridizing\n", - "hybrids\n", - "hybris\n", - "hybrises\n", - "hydatid\n", - "hydatids\n", - "hydra\n", - "hydracid\n", - "hydracids\n", - "hydrae\n", - "hydragog\n", - "hydragogs\n", - "hydrant\n", - "hydranth\n", - "hydranths\n", - "hydrants\n", - "hydras\n", - "hydrase\n", - "hydrases\n", - "hydrate\n", - "hydrated\n", - "hydrates\n", - "hydrating\n", - "hydrator\n", - "hydrators\n", - "hydraulic\n", - "hydraulics\n", - "hydria\n", - "hydriae\n", - "hydric\n", - "hydrid\n", - "hydride\n", - "hydrides\n", - "hydrids\n", - "hydro\n", - "hydrocarbon\n", - "hydrocarbons\n", - "hydrochloride\n", - "hydroelectric\n", - "hydroelectrically\n", - "hydroelectricities\n", - "hydroelectricity\n", - "hydrogel\n", - "hydrogels\n", - "hydrogen\n", - "hydrogenous\n", - "hydrogens\n", - "hydroid\n", - "hydroids\n", - "hydromel\n", - "hydromels\n", - "hydronic\n", - "hydrophobia\n", - "hydrophobias\n", - "hydropic\n", - "hydroplane\n", - "hydroplanes\n", - "hydrops\n", - "hydropses\n", - "hydropsies\n", - "hydropsy\n", - "hydros\n", - "hydrosol\n", - "hydrosols\n", - "hydrous\n", - "hydroxy\n", - "hydroxyl\n", - "hydroxyls\n", - "hydroxyurea\n", - "hyena\n", - "hyenas\n", - "hyenic\n", - "hyenine\n", - "hyenoid\n", - "hyetal\n", - "hygeist\n", - "hygeists\n", - "hygieist\n", - "hygieists\n", - "hygiene\n", - "hygienes\n", - "hygienic\n", - "hygienically\n", - "hygrometer\n", - "hygrometers\n", - "hygrometries\n", - "hygrometry\n", - "hying\n", - "hyla\n", - "hylas\n", - "hylozoic\n", - "hymen\n", - "hymenal\n", - "hymeneal\n", - "hymeneals\n", - "hymenia\n", - "hymenial\n", - "hymenium\n", - "hymeniums\n", - "hymens\n", - "hymn\n", - "hymnal\n", - "hymnals\n", - "hymnaries\n", - "hymnary\n", - "hymnbook\n", - "hymnbooks\n", - "hymned\n", - "hymning\n", - "hymnist\n", - "hymnists\n", - "hymnless\n", - "hymnlike\n", - "hymnodies\n", - "hymnody\n", - "hymns\n", - "hyoid\n", - "hyoidal\n", - "hyoidean\n", - "hyoids\n", - "hyoscine\n", - "hyoscines\n", - "hyp\n", - "hype\n", - "hyperacid\n", - "hyperacidities\n", - "hyperacidity\n", - "hyperactive\n", - "hyperacute\n", - "hyperadrenalism\n", - "hyperaggressive\n", - "hyperaggressiveness\n", - "hyperaggressivenesses\n", - "hyperanxious\n", - "hyperbole\n", - "hyperboles\n", - "hypercalcemia\n", - "hypercalcemias\n", - "hypercautious\n", - "hyperclean\n", - "hyperconscientious\n", - "hypercorrect\n", - "hypercritical\n", - "hyperemotional\n", - "hyperenergetic\n", - "hyperexcitable\n", - "hyperfastidious\n", - "hypergol\n", - "hypergols\n", - "hyperintense\n", - "hypermasculine\n", - "hypermilitant\n", - "hypermoralistic\n", - "hypernationalistic\n", - "hyperon\n", - "hyperons\n", - "hyperope\n", - "hyperopes\n", - "hyperreactive\n", - "hyperrealistic\n", - "hyperromantic\n", - "hypersensitive\n", - "hypersensitiveness\n", - "hypersensitivenesses\n", - "hypersensitivities\n", - "hypersensitivity\n", - "hypersexual\n", - "hypersusceptible\n", - "hypersuspicious\n", - "hypertense\n", - "hypertension\n", - "hypertensions\n", - "hypertensive\n", - "hypertensives\n", - "hyperthermia\n", - "hyperthyroidism\n", - "hyperuricemia\n", - "hypervigilant\n", - "hypes\n", - "hypha\n", - "hyphae\n", - "hyphal\n", - "hyphemia\n", - "hyphemias\n", - "hyphen\n", - "hyphenate\n", - "hyphenated\n", - "hyphenates\n", - "hyphenating\n", - "hyphenation\n", - "hyphenations\n", - "hyphened\n", - "hyphening\n", - "hyphens\n", - "hypnic\n", - "hypnoid\n", - "hypnoses\n", - "hypnosis\n", - "hypnotic\n", - "hypnotically\n", - "hypnotics\n", - "hypnotism\n", - "hypnotisms\n", - "hypnotizable\n", - "hypnotize\n", - "hypnotized\n", - "hypnotizes\n", - "hypnotizing\n", - "hypo\n", - "hypoacid\n", - "hypocalcemia\n", - "hypochondria\n", - "hypochondriac\n", - "hypochondriacs\n", - "hypochondrias\n", - "hypocrisies\n", - "hypocrisy\n", - "hypocrite\n", - "hypocrites\n", - "hypocritical\n", - "hypocritically\n", - "hypoderm\n", - "hypodermic\n", - "hypodermics\n", - "hypoderms\n", - "hypoed\n", - "hypogea\n", - "hypogeal\n", - "hypogean\n", - "hypogene\n", - "hypogeum\n", - "hypogynies\n", - "hypogyny\n", - "hypoing\n", - "hypokalemia\n", - "hyponea\n", - "hyponeas\n", - "hyponoia\n", - "hyponoias\n", - "hypopnea\n", - "hypopneas\n", - "hypopyon\n", - "hypopyons\n", - "hypos\n", - "hypotension\n", - "hypotensions\n", - "hypotenuse\n", - "hypotenuses\n", - "hypothec\n", - "hypothecs\n", - "hypotheses\n", - "hypothesis\n", - "hypothetical\n", - "hypothetically\n", - "hypothyroidism\n", - "hypoxia\n", - "hypoxias\n", - "hypoxic\n", - "hyps\n", - "hyraces\n", - "hyracoid\n", - "hyracoids\n", - "hyrax\n", - "hyraxes\n", - "hyson\n", - "hysons\n", - "hyssop\n", - "hyssops\n", - "hysterectomies\n", - "hysterectomize\n", - "hysterectomized\n", - "hysterectomizes\n", - "hysterectomizing\n", - "hysterectomy\n", - "hysteria\n", - "hysterias\n", - "hysteric\n", - "hysterical\n", - "hysterically\n", - "hysterics\n", - "hyte\n", - "iamb\n", - "iambi\n", - "iambic\n", - "iambics\n", - "iambs\n", - "iambus\n", - "iambuses\n", - "iatric\n", - "iatrical\n", - "ibex\n", - "ibexes\n", - "ibices\n", - "ibidem\n", - "ibis\n", - "ibises\n", - "ice\n", - "iceberg\n", - "icebergs\n", - "iceblink\n", - "iceblinks\n", - "iceboat\n", - "iceboats\n", - "icebound\n", - "icebox\n", - "iceboxes\n", - "icebreaker\n", - "icebreakers\n", - "icecap\n", - "icecaps\n", - "iced\n", - "icefall\n", - "icefalls\n", - "icehouse\n", - "icehouses\n", - "icekhana\n", - "icekhanas\n", - "iceless\n", - "icelike\n", - "iceman\n", - "icemen\n", - "icers\n", - "ices\n", - "ich\n", - "ichnite\n", - "ichnites\n", - "ichor\n", - "ichorous\n", - "ichors\n", - "ichs\n", - "ichthyic\n", - "ichthyologies\n", - "ichthyologist\n", - "ichthyologists\n", - "ichthyology\n", - "icicle\n", - "icicled\n", - "icicles\n", - "icier\n", - "iciest\n", - "icily\n", - "iciness\n", - "icinesses\n", - "icing\n", - "icings\n", - "icker\n", - "ickers\n", - "ickier\n", - "ickiest\n", - "icky\n", - "icon\n", - "icones\n", - "iconic\n", - "iconical\n", - "iconoclasm\n", - "iconoclasms\n", - "iconoclast\n", - "iconoclasts\n", - "icons\n", - "icteric\n", - "icterics\n", - "icterus\n", - "icteruses\n", - "ictic\n", - "ictus\n", - "ictuses\n", - "icy\n", - "id\n", - "idea\n", - "ideal\n", - "idealess\n", - "idealise\n", - "idealised\n", - "idealises\n", - "idealising\n", - "idealism\n", - "idealisms\n", - "idealist\n", - "idealistic\n", - "idealists\n", - "idealities\n", - "ideality\n", - "idealization\n", - "idealizations\n", - "idealize\n", - "idealized\n", - "idealizes\n", - "idealizing\n", - "ideally\n", - "idealogies\n", - "idealogy\n", - "ideals\n", - "ideas\n", - "ideate\n", - "ideated\n", - "ideates\n", - "ideating\n", - "ideation\n", - "ideations\n", - "ideative\n", - "idem\n", - "idems\n", - "identic\n", - "identical\n", - "identifiable\n", - "identification\n", - "identifications\n", - "identified\n", - "identifier\n", - "identifiers\n", - "identifies\n", - "identify\n", - "identifying\n", - "identities\n", - "identity\n", - "ideogram\n", - "ideograms\n", - "ideological\n", - "ideologies\n", - "ideology\n", - "ides\n", - "idiocies\n", - "idiocy\n", - "idiolect\n", - "idiolects\n", - "idiom\n", - "idiomatic\n", - "idiomatically\n", - "idioms\n", - "idiosyncrasies\n", - "idiosyncrasy\n", - "idiosyncratic\n", - "idiot\n", - "idiotic\n", - "idiotically\n", - "idiotism\n", - "idiotisms\n", - "idiots\n", - "idle\n", - "idled\n", - "idleness\n", - "idlenesses\n", - "idler\n", - "idlers\n", - "idles\n", - "idlesse\n", - "idlesses\n", - "idlest\n", - "idling\n", - "idly\n", - "idocrase\n", - "idocrases\n", - "idol\n", - "idolater\n", - "idolaters\n", - "idolatries\n", - "idolatrous\n", - "idolatry\n", - "idolise\n", - "idolised\n", - "idoliser\n", - "idolisers\n", - "idolises\n", - "idolising\n", - "idolism\n", - "idolisms\n", - "idolize\n", - "idolized\n", - "idolizer\n", - "idolizers\n", - "idolizes\n", - "idolizing\n", - "idols\n", - "idoneities\n", - "idoneity\n", - "idoneous\n", - "ids\n", - "idyl\n", - "idylist\n", - "idylists\n", - "idyll\n", - "idyllic\n", - "idyllist\n", - "idyllists\n", - "idylls\n", - "idyls\n", - "if\n", - "iffier\n", - "iffiest\n", - "iffiness\n", - "iffinesses\n", - "iffy\n", - "ifs\n", - "igloo\n", - "igloos\n", - "iglu\n", - "iglus\n", - "ignatia\n", - "ignatias\n", - "igneous\n", - "ignified\n", - "ignifies\n", - "ignify\n", - "ignifying\n", - "ignite\n", - "ignited\n", - "igniter\n", - "igniters\n", - "ignites\n", - "igniting\n", - "ignition\n", - "ignitions\n", - "ignitor\n", - "ignitors\n", - "ignitron\n", - "ignitrons\n", - "ignoble\n", - "ignobly\n", - "ignominies\n", - "ignominious\n", - "ignominiously\n", - "ignominy\n", - "ignoramus\n", - "ignoramuses\n", - "ignorance\n", - "ignorances\n", - "ignorant\n", - "ignorantly\n", - "ignore\n", - "ignored\n", - "ignorer\n", - "ignorers\n", - "ignores\n", - "ignoring\n", - "iguana\n", - "iguanas\n", - "iguanian\n", - "iguanians\n", - "ihram\n", - "ihrams\n", - "ikebana\n", - "ikebanas\n", - "ikon\n", - "ikons\n", - "ilea\n", - "ileac\n", - "ileal\n", - "ileitides\n", - "ileitis\n", - "ileum\n", - "ileus\n", - "ileuses\n", - "ilex\n", - "ilexes\n", - "ilia\n", - "iliac\n", - "iliad\n", - "iliads\n", - "ilial\n", - "ilium\n", - "ilk\n", - "ilka\n", - "ilks\n", - "ill\n", - "illation\n", - "illations\n", - "illative\n", - "illatives\n", - "illegal\n", - "illegalities\n", - "illegality\n", - "illegally\n", - "illegibilities\n", - "illegibility\n", - "illegible\n", - "illegibly\n", - "illegitimacies\n", - "illegitimacy\n", - "illegitimate\n", - "illegitimately\n", - "illicit\n", - "illicitly\n", - "illimitable\n", - "illimitably\n", - "illinium\n", - "illiniums\n", - "illiquid\n", - "illite\n", - "illiteracies\n", - "illiteracy\n", - "illiterate\n", - "illiterates\n", - "illites\n", - "illitic\n", - "illnaturedly\n", - "illness\n", - "illnesses\n", - "illogic\n", - "illogical\n", - "illogically\n", - "illogics\n", - "ills\n", - "illume\n", - "illumed\n", - "illumes\n", - "illuminate\n", - "illuminated\n", - "illuminates\n", - "illuminating\n", - "illuminatingly\n", - "illumination\n", - "illuminations\n", - "illumine\n", - "illumined\n", - "illumines\n", - "illuming\n", - "illumining\n", - "illusion\n", - "illusions\n", - "illusive\n", - "illusory\n", - "illustrate\n", - "illustrated\n", - "illustrates\n", - "illustrating\n", - "illustration\n", - "illustrations\n", - "illustrative\n", - "illustratively\n", - "illustrator\n", - "illustrators\n", - "illustrious\n", - "illustriousness\n", - "illustriousnesses\n", - "illuvia\n", - "illuvial\n", - "illuvium\n", - "illuviums\n", - "illy\n", - "ilmenite\n", - "ilmenites\n", - "image\n", - "imaged\n", - "imageries\n", - "imagery\n", - "images\n", - "imaginable\n", - "imaginably\n", - "imaginal\n", - "imaginary\n", - "imagination\n", - "imaginations\n", - "imaginative\n", - "imaginatively\n", - "imagine\n", - "imagined\n", - "imaginer\n", - "imaginers\n", - "imagines\n", - "imaging\n", - "imagining\n", - "imagism\n", - "imagisms\n", - "imagist\n", - "imagists\n", - "imago\n", - "imagoes\n", - "imam\n", - "imamate\n", - "imamates\n", - "imams\n", - "imaret\n", - "imarets\n", - "imaum\n", - "imaums\n", - "imbalance\n", - "imbalances\n", - "imbalm\n", - "imbalmed\n", - "imbalmer\n", - "imbalmers\n", - "imbalming\n", - "imbalms\n", - "imbark\n", - "imbarked\n", - "imbarking\n", - "imbarks\n", - "imbecile\n", - "imbeciles\n", - "imbecilic\n", - "imbecilities\n", - "imbecility\n", - "imbed\n", - "imbedded\n", - "imbedding\n", - "imbeds\n", - "imbibe\n", - "imbibed\n", - "imbiber\n", - "imbibers\n", - "imbibes\n", - "imbibing\n", - "imbitter\n", - "imbittered\n", - "imbittering\n", - "imbitters\n", - "imblaze\n", - "imblazed\n", - "imblazes\n", - "imblazing\n", - "imbodied\n", - "imbodies\n", - "imbody\n", - "imbodying\n", - "imbolden\n", - "imboldened\n", - "imboldening\n", - "imboldens\n", - "imbosom\n", - "imbosomed\n", - "imbosoming\n", - "imbosoms\n", - "imbower\n", - "imbowered\n", - "imbowering\n", - "imbowers\n", - "imbroglio\n", - "imbroglios\n", - "imbrown\n", - "imbrowned\n", - "imbrowning\n", - "imbrowns\n", - "imbrue\n", - "imbrued\n", - "imbrues\n", - "imbruing\n", - "imbrute\n", - "imbruted\n", - "imbrutes\n", - "imbruting\n", - "imbue\n", - "imbued\n", - "imbues\n", - "imbuing\n", - "imid\n", - "imide\n", - "imides\n", - "imidic\n", - "imido\n", - "imids\n", - "imine\n", - "imines\n", - "imino\n", - "imitable\n", - "imitate\n", - "imitated\n", - "imitates\n", - "imitating\n", - "imitation\n", - "imitations\n", - "imitator\n", - "imitators\n", - "immaculate\n", - "immaculately\n", - "immane\n", - "immanent\n", - "immaterial\n", - "immaterialities\n", - "immateriality\n", - "immature\n", - "immatures\n", - "immaturities\n", - "immaturity\n", - "immeasurable\n", - "immeasurably\n", - "immediacies\n", - "immediacy\n", - "immediate\n", - "immediately\n", - "immemorial\n", - "immense\n", - "immensely\n", - "immenser\n", - "immensest\n", - "immensities\n", - "immensity\n", - "immerge\n", - "immerged\n", - "immerges\n", - "immerging\n", - "immerse\n", - "immersed\n", - "immerses\n", - "immersing\n", - "immersion\n", - "immersions\n", - "immesh\n", - "immeshed\n", - "immeshes\n", - "immeshing\n", - "immies\n", - "immigrant\n", - "immigrants\n", - "immigrate\n", - "immigrated\n", - "immigrates\n", - "immigrating\n", - "immigration\n", - "immigrations\n", - "imminence\n", - "imminences\n", - "imminent\n", - "imminently\n", - "immingle\n", - "immingled\n", - "immingles\n", - "immingling\n", - "immix\n", - "immixed\n", - "immixes\n", - "immixing\n", - "immobile\n", - "immobilities\n", - "immobility\n", - "immobilize\n", - "immobilized\n", - "immobilizes\n", - "immobilizing\n", - "immoderacies\n", - "immoderacy\n", - "immoderate\n", - "immoderately\n", - "immodest\n", - "immodesties\n", - "immodestly\n", - "immodesty\n", - "immolate\n", - "immolated\n", - "immolates\n", - "immolating\n", - "immolation\n", - "immolations\n", - "immoral\n", - "immoralities\n", - "immorality\n", - "immorally\n", - "immortal\n", - "immortalities\n", - "immortality\n", - "immortalize\n", - "immortalized\n", - "immortalizes\n", - "immortalizing\n", - "immortals\n", - "immotile\n", - "immovabilities\n", - "immovability\n", - "immovable\n", - "immovably\n", - "immune\n", - "immunes\n", - "immunise\n", - "immunised\n", - "immunises\n", - "immunising\n", - "immunities\n", - "immunity\n", - "immunization\n", - "immunizations\n", - "immunize\n", - "immunized\n", - "immunizes\n", - "immunizing\n", - "immunologic\n", - "immunological\n", - "immunologies\n", - "immunologist\n", - "immunologists\n", - "immunology\n", - "immure\n", - "immured\n", - "immures\n", - "immuring\n", - "immutabilities\n", - "immutability\n", - "immutable\n", - "immutably\n", - "immy\n", - "imp\n", - "impact\n", - "impacted\n", - "impacter\n", - "impacters\n", - "impacting\n", - "impactor\n", - "impactors\n", - "impacts\n", - "impaint\n", - "impainted\n", - "impainting\n", - "impaints\n", - "impair\n", - "impaired\n", - "impairer\n", - "impairers\n", - "impairing\n", - "impairment\n", - "impairments\n", - "impairs\n", - "impala\n", - "impalas\n", - "impale\n", - "impaled\n", - "impalement\n", - "impalements\n", - "impaler\n", - "impalers\n", - "impales\n", - "impaling\n", - "impalpable\n", - "impalpably\n", - "impanel\n", - "impaneled\n", - "impaneling\n", - "impanelled\n", - "impanelling\n", - "impanels\n", - "imparities\n", - "imparity\n", - "impark\n", - "imparked\n", - "imparking\n", - "imparks\n", - "impart\n", - "imparted\n", - "imparter\n", - "imparters\n", - "impartialities\n", - "impartiality\n", - "impartially\n", - "imparting\n", - "imparts\n", - "impassable\n", - "impasse\n", - "impasses\n", - "impassioned\n", - "impassive\n", - "impassively\n", - "impassivities\n", - "impassivity\n", - "impaste\n", - "impasted\n", - "impastes\n", - "impasting\n", - "impasto\n", - "impastos\n", - "impatience\n", - "impatiences\n", - "impatiens\n", - "impatient\n", - "impatiently\n", - "impavid\n", - "impawn\n", - "impawned\n", - "impawning\n", - "impawns\n", - "impeach\n", - "impeached\n", - "impeaches\n", - "impeaching\n", - "impeachment\n", - "impeachments\n", - "impearl\n", - "impearled\n", - "impearling\n", - "impearls\n", - "impeccable\n", - "impeccably\n", - "impecunious\n", - "impecuniousness\n", - "impecuniousnesses\n", - "imped\n", - "impedance\n", - "impedances\n", - "impede\n", - "impeded\n", - "impeder\n", - "impeders\n", - "impedes\n", - "impediment\n", - "impediments\n", - "impeding\n", - "impel\n", - "impelled\n", - "impeller\n", - "impellers\n", - "impelling\n", - "impellor\n", - "impellors\n", - "impels\n", - "impend\n", - "impended\n", - "impending\n", - "impends\n", - "impenetrabilities\n", - "impenetrability\n", - "impenetrable\n", - "impenetrably\n", - "impenitence\n", - "impenitences\n", - "impenitent\n", - "imperative\n", - "imperatively\n", - "imperatives\n", - "imperceptible\n", - "imperceptibly\n", - "imperfection\n", - "imperfections\n", - "imperfectly\n", - "imperia\n", - "imperial\n", - "imperialism\n", - "imperialist\n", - "imperialistic\n", - "imperials\n", - "imperil\n", - "imperiled\n", - "imperiling\n", - "imperilled\n", - "imperilling\n", - "imperils\n", - "imperious\n", - "imperiously\n", - "imperishable\n", - "imperium\n", - "imperiums\n", - "impermanent\n", - "impermanently\n", - "impermeable\n", - "impermissible\n", - "impersonal\n", - "impersonally\n", - "impersonate\n", - "impersonated\n", - "impersonates\n", - "impersonating\n", - "impersonation\n", - "impersonations\n", - "impersonator\n", - "impersonators\n", - "impertinence\n", - "impertinences\n", - "impertinent\n", - "impertinently\n", - "imperturbable\n", - "impervious\n", - "impetigo\n", - "impetigos\n", - "impetuous\n", - "impetuousities\n", - "impetuousity\n", - "impetuously\n", - "impetus\n", - "impetuses\n", - "imphee\n", - "imphees\n", - "impi\n", - "impieties\n", - "impiety\n", - "imping\n", - "impinge\n", - "impinged\n", - "impingement\n", - "impingements\n", - "impinger\n", - "impingers\n", - "impinges\n", - "impinging\n", - "impings\n", - "impious\n", - "impis\n", - "impish\n", - "impishly\n", - "impishness\n", - "impishnesses\n", - "implacabilities\n", - "implacability\n", - "implacable\n", - "implacably\n", - "implant\n", - "implanted\n", - "implanting\n", - "implants\n", - "implausibilities\n", - "implausibility\n", - "implausible\n", - "implead\n", - "impleaded\n", - "impleading\n", - "impleads\n", - "impledge\n", - "impledged\n", - "impledges\n", - "impledging\n", - "implement\n", - "implementation\n", - "implementations\n", - "implemented\n", - "implementing\n", - "implements\n", - "implicate\n", - "implicated\n", - "implicates\n", - "implicating\n", - "implication\n", - "implications\n", - "implicit\n", - "implicitly\n", - "implied\n", - "implies\n", - "implode\n", - "imploded\n", - "implodes\n", - "imploding\n", - "implore\n", - "implored\n", - "implorer\n", - "implorers\n", - "implores\n", - "imploring\n", - "implosion\n", - "implosions\n", - "implosive\n", - "imply\n", - "implying\n", - "impolicies\n", - "impolicy\n", - "impolite\n", - "impolitic\n", - "imponderable\n", - "imponderables\n", - "impone\n", - "imponed\n", - "impones\n", - "imponing\n", - "imporous\n", - "import\n", - "importance\n", - "important\n", - "importantly\n", - "importation\n", - "importations\n", - "imported\n", - "importer\n", - "importers\n", - "importing\n", - "imports\n", - "importunate\n", - "importune\n", - "importuned\n", - "importunes\n", - "importuning\n", - "importunities\n", - "importunity\n", - "impose\n", - "imposed\n", - "imposer\n", - "imposers\n", - "imposes\n", - "imposing\n", - "imposingly\n", - "imposition\n", - "impositions\n", - "impossibilities\n", - "impossibility\n", - "impossible\n", - "impossibly\n", - "impost\n", - "imposted\n", - "imposter\n", - "imposters\n", - "imposting\n", - "impostor\n", - "impostors\n", - "imposts\n", - "imposture\n", - "impostures\n", - "impotence\n", - "impotences\n", - "impotencies\n", - "impotency\n", - "impotent\n", - "impotently\n", - "impotents\n", - "impound\n", - "impounded\n", - "impounding\n", - "impoundment\n", - "impoundments\n", - "impounds\n", - "impoverish\n", - "impoverished\n", - "impoverishes\n", - "impoverishing\n", - "impoverishment\n", - "impoverishments\n", - "impower\n", - "impowered\n", - "impowering\n", - "impowers\n", - "impracticable\n", - "impractical\n", - "imprecise\n", - "imprecisely\n", - "impreciseness\n", - "imprecisenesses\n", - "imprecision\n", - "impregabilities\n", - "impregability\n", - "impregable\n", - "impregn\n", - "impregnate\n", - "impregnated\n", - "impregnates\n", - "impregnating\n", - "impregnation\n", - "impregnations\n", - "impregned\n", - "impregning\n", - "impregns\n", - "impresa\n", - "impresario\n", - "impresarios\n", - "impresas\n", - "imprese\n", - "impreses\n", - "impress\n", - "impressed\n", - "impresses\n", - "impressible\n", - "impressing\n", - "impression\n", - "impressionable\n", - "impressions\n", - "impressive\n", - "impressively\n", - "impressiveness\n", - "impressivenesses\n", - "impressment\n", - "impressments\n", - "imprest\n", - "imprests\n", - "imprimatur\n", - "imprimaturs\n", - "imprimis\n", - "imprint\n", - "imprinted\n", - "imprinting\n", - "imprints\n", - "imprison\n", - "imprisoned\n", - "imprisoning\n", - "imprisonment\n", - "imprisonments\n", - "imprisons\n", - "improbabilities\n", - "improbability\n", - "improbable\n", - "improbably\n", - "impromptu\n", - "impromptus\n", - "improper\n", - "improperly\n", - "improprieties\n", - "impropriety\n", - "improvable\n", - "improve\n", - "improved\n", - "improvement\n", - "improvements\n", - "improver\n", - "improvers\n", - "improves\n", - "improvidence\n", - "improvidences\n", - "improvident\n", - "improving\n", - "improvisation\n", - "improvisations\n", - "improviser\n", - "improvisers\n", - "improvisor\n", - "improvisors\n", - "imprudence\n", - "imprudences\n", - "imprudent\n", - "imps\n", - "impudence\n", - "impudences\n", - "impudent\n", - "impudently\n", - "impugn\n", - "impugned\n", - "impugner\n", - "impugners\n", - "impugning\n", - "impugns\n", - "impulse\n", - "impulsed\n", - "impulses\n", - "impulsing\n", - "impulsion\n", - "impulsions\n", - "impulsive\n", - "impulsively\n", - "impulsiveness\n", - "impulsivenesses\n", - "impunities\n", - "impunity\n", - "impure\n", - "impurely\n", - "impurities\n", - "impurity\n", - "imputation\n", - "imputations\n", - "impute\n", - "imputed\n", - "imputer\n", - "imputers\n", - "imputes\n", - "imputing\n", - "in\n", - "inabilities\n", - "inability\n", - "inaccessibilities\n", - "inaccessibility\n", - "inaccessible\n", - "inaccuracies\n", - "inaccuracy\n", - "inaccurate\n", - "inaction\n", - "inactions\n", - "inactivate\n", - "inactivated\n", - "inactivates\n", - "inactivating\n", - "inactive\n", - "inactivities\n", - "inactivity\n", - "inadequacies\n", - "inadequacy\n", - "inadequate\n", - "inadequately\n", - "inadmissibility\n", - "inadmissible\n", - "inadvertence\n", - "inadvertences\n", - "inadvertencies\n", - "inadvertency\n", - "inadvertent\n", - "inadvertently\n", - "inadvisabilities\n", - "inadvisability\n", - "inadvisable\n", - "inalienabilities\n", - "inalienability\n", - "inalienable\n", - "inalienably\n", - "inane\n", - "inanely\n", - "inaner\n", - "inanes\n", - "inanest\n", - "inanimate\n", - "inanimately\n", - "inanimateness\n", - "inanimatenesses\n", - "inanities\n", - "inanition\n", - "inanitions\n", - "inanity\n", - "inapparent\n", - "inapplicable\n", - "inapposite\n", - "inappositely\n", - "inappositeness\n", - "inappositenesses\n", - "inappreciable\n", - "inappreciably\n", - "inappreciative\n", - "inapproachable\n", - "inappropriate\n", - "inappropriately\n", - "inappropriateness\n", - "inappropriatenesses\n", - "inapt\n", - "inaptly\n", - "inarable\n", - "inarch\n", - "inarched\n", - "inarches\n", - "inarching\n", - "inarguable\n", - "inarm\n", - "inarmed\n", - "inarming\n", - "inarms\n", - "inarticulate\n", - "inarticulately\n", - "inartistic\n", - "inartistically\n", - "inattention\n", - "inattentions\n", - "inattentive\n", - "inattentively\n", - "inattentiveness\n", - "inattentivenesses\n", - "inaudible\n", - "inaudibly\n", - "inaugurate\n", - "inaugurated\n", - "inaugurates\n", - "inaugurating\n", - "inauguration\n", - "inaugurations\n", - "inauspicious\n", - "inauthentic\n", - "inbeing\n", - "inbeings\n", - "inboard\n", - "inboards\n", - "inborn\n", - "inbound\n", - "inbounds\n", - "inbred\n", - "inbreed\n", - "inbreeding\n", - "inbreedings\n", - "inbreeds\n", - "inbuilt\n", - "inburst\n", - "inbursts\n", - "inby\n", - "inbye\n", - "incage\n", - "incaged\n", - "incages\n", - "incaging\n", - "incalculable\n", - "incalculably\n", - "incandescence\n", - "incandescences\n", - "incandescent\n", - "incantation\n", - "incantations\n", - "incapabilities\n", - "incapability\n", - "incapable\n", - "incapacitate\n", - "incapacitated\n", - "incapacitates\n", - "incapacitating\n", - "incapacities\n", - "incapacity\n", - "incarcerate\n", - "incarcerated\n", - "incarcerates\n", - "incarcerating\n", - "incarceration\n", - "incarcerations\n", - "incarnation\n", - "incarnations\n", - "incase\n", - "incased\n", - "incases\n", - "incasing\n", - "incautious\n", - "incendiaries\n", - "incendiary\n", - "incense\n", - "incensed\n", - "incenses\n", - "incensing\n", - "incentive\n", - "incentives\n", - "incept\n", - "incepted\n", - "incepting\n", - "inception\n", - "inceptions\n", - "inceptor\n", - "inceptors\n", - "incepts\n", - "incessant\n", - "incessantly\n", - "incest\n", - "incests\n", - "incestuous\n", - "inch\n", - "inched\n", - "inches\n", - "inching\n", - "inchmeal\n", - "inchoate\n", - "inchworm\n", - "inchworms\n", - "incidence\n", - "incidences\n", - "incident\n", - "incidental\n", - "incidentally\n", - "incidentals\n", - "incidents\n", - "incinerate\n", - "incinerated\n", - "incinerates\n", - "incinerating\n", - "incinerator\n", - "incinerators\n", - "incipient\n", - "incipit\n", - "incipits\n", - "incise\n", - "incised\n", - "incises\n", - "incising\n", - "incision\n", - "incisions\n", - "incisive\n", - "incisively\n", - "incisor\n", - "incisors\n", - "incisory\n", - "incisure\n", - "incisures\n", - "incitant\n", - "incitants\n", - "incite\n", - "incited\n", - "incitement\n", - "incitements\n", - "inciter\n", - "inciters\n", - "incites\n", - "inciting\n", - "incivil\n", - "incivilities\n", - "incivility\n", - "inclasp\n", - "inclasped\n", - "inclasping\n", - "inclasps\n", - "inclemencies\n", - "inclemency\n", - "inclement\n", - "inclination\n", - "inclinations\n", - "incline\n", - "inclined\n", - "incliner\n", - "incliners\n", - "inclines\n", - "inclining\n", - "inclip\n", - "inclipped\n", - "inclipping\n", - "inclips\n", - "inclose\n", - "inclosed\n", - "incloser\n", - "inclosers\n", - "incloses\n", - "inclosing\n", - "inclosure\n", - "inclosures\n", - "include\n", - "included\n", - "includes\n", - "including\n", - "inclusion\n", - "inclusions\n", - "inclusive\n", - "incog\n", - "incognito\n", - "incogs\n", - "incoherence\n", - "incoherences\n", - "incoherent\n", - "incoherently\n", - "incohesive\n", - "incombustible\n", - "income\n", - "incomer\n", - "incomers\n", - "incomes\n", - "incoming\n", - "incomings\n", - "incommensurate\n", - "incommodious\n", - "incommunicable\n", - "incommunicado\n", - "incomparable\n", - "incompatibility\n", - "incompatible\n", - "incompetence\n", - "incompetences\n", - "incompetencies\n", - "incompetency\n", - "incompetent\n", - "incompetents\n", - "incomplete\n", - "incompletely\n", - "incompleteness\n", - "incompletenesses\n", - "incomprehensible\n", - "inconceivable\n", - "inconceivably\n", - "inconclusive\n", - "incongruent\n", - "incongruities\n", - "incongruity\n", - "incongruous\n", - "incongruously\n", - "inconnu\n", - "inconnus\n", - "inconsecutive\n", - "inconsequence\n", - "inconsequences\n", - "inconsequential\n", - "inconsequentially\n", - "inconsiderable\n", - "inconsiderate\n", - "inconsiderately\n", - "inconsiderateness\n", - "inconsideratenesses\n", - "inconsistencies\n", - "inconsistency\n", - "inconsistent\n", - "inconsistently\n", - "inconsolable\n", - "inconsolably\n", - "inconspicuous\n", - "inconspicuously\n", - "inconstancies\n", - "inconstancy\n", - "inconstant\n", - "inconstantly\n", - "inconsumable\n", - "incontestable\n", - "incontestably\n", - "incontinence\n", - "incontinences\n", - "inconvenience\n", - "inconvenienced\n", - "inconveniences\n", - "inconveniencing\n", - "inconvenient\n", - "inconveniently\n", - "incony\n", - "incorporate\n", - "incorporated\n", - "incorporates\n", - "incorporating\n", - "incorporation\n", - "incorporations\n", - "incorporeal\n", - "incorporeally\n", - "incorpse\n", - "incorpsed\n", - "incorpses\n", - "incorpsing\n", - "incorrect\n", - "incorrectly\n", - "incorrectness\n", - "incorrectnesses\n", - "incorrigibilities\n", - "incorrigibility\n", - "incorrigible\n", - "incorrigibly\n", - "incorruptible\n", - "increase\n", - "increased\n", - "increases\n", - "increasing\n", - "increasingly\n", - "increate\n", - "incredibilities\n", - "incredibility\n", - "incredible\n", - "incredibly\n", - "incredulities\n", - "incredulity\n", - "incredulous\n", - "incredulously\n", - "increment\n", - "incremental\n", - "incremented\n", - "incrementing\n", - "increments\n", - "incriminate\n", - "incriminated\n", - "incriminates\n", - "incriminating\n", - "incrimination\n", - "incriminations\n", - "incriminatory\n", - "incross\n", - "incrosses\n", - "incrust\n", - "incrusted\n", - "incrusting\n", - "incrusts\n", - "incubate\n", - "incubated\n", - "incubates\n", - "incubating\n", - "incubation\n", - "incubations\n", - "incubator\n", - "incubators\n", - "incubi\n", - "incubus\n", - "incubuses\n", - "incudal\n", - "incudate\n", - "incudes\n", - "inculcate\n", - "inculcated\n", - "inculcates\n", - "inculcating\n", - "inculcation\n", - "inculcations\n", - "inculpable\n", - "incult\n", - "incumbencies\n", - "incumbency\n", - "incumbent\n", - "incumbents\n", - "incumber\n", - "incumbered\n", - "incumbering\n", - "incumbers\n", - "incur\n", - "incurable\n", - "incurious\n", - "incurred\n", - "incurring\n", - "incurs\n", - "incursion\n", - "incursions\n", - "incurve\n", - "incurved\n", - "incurves\n", - "incurving\n", - "incus\n", - "incuse\n", - "incused\n", - "incuses\n", - "incusing\n", - "indaba\n", - "indabas\n", - "indagate\n", - "indagated\n", - "indagates\n", - "indagating\n", - "indamin\n", - "indamine\n", - "indamines\n", - "indamins\n", - "indebted\n", - "indebtedness\n", - "indebtednesses\n", - "indecencies\n", - "indecency\n", - "indecent\n", - "indecenter\n", - "indecentest\n", - "indecently\n", - "indecipherable\n", - "indecision\n", - "indecisions\n", - "indecisive\n", - "indecisively\n", - "indecisiveness\n", - "indecisivenesses\n", - "indecorous\n", - "indecorously\n", - "indecorousness\n", - "indecorousnesses\n", - "indeed\n", - "indefatigable\n", - "indefatigably\n", - "indefensible\n", - "indefinable\n", - "indefinably\n", - "indefinite\n", - "indefinitely\n", - "indelible\n", - "indelibly\n", - "indelicacies\n", - "indelicacy\n", - "indelicate\n", - "indemnification\n", - "indemnifications\n", - "indemnified\n", - "indemnifies\n", - "indemnify\n", - "indemnifying\n", - "indemnities\n", - "indemnity\n", - "indene\n", - "indenes\n", - "indent\n", - "indentation\n", - "indentations\n", - "indented\n", - "indenter\n", - "indenters\n", - "indenting\n", - "indentor\n", - "indentors\n", - "indents\n", - "indenture\n", - "indentured\n", - "indentures\n", - "indenturing\n", - "independence\n", - "independent\n", - "independently\n", - "indescribable\n", - "indescribably\n", - "indestrucibility\n", - "indestrucible\n", - "indeterminacies\n", - "indeterminacy\n", - "indeterminate\n", - "indeterminately\n", - "indevout\n", - "index\n", - "indexed\n", - "indexer\n", - "indexers\n", - "indexes\n", - "indexing\n", - "india\n", - "indican\n", - "indicans\n", - "indicant\n", - "indicants\n", - "indicate\n", - "indicated\n", - "indicates\n", - "indicating\n", - "indication\n", - "indications\n", - "indicative\n", - "indicator\n", - "indicators\n", - "indices\n", - "indicia\n", - "indicias\n", - "indicium\n", - "indiciums\n", - "indict\n", - "indictable\n", - "indicted\n", - "indictee\n", - "indictees\n", - "indicter\n", - "indicters\n", - "indicting\n", - "indictment\n", - "indictments\n", - "indictor\n", - "indictors\n", - "indicts\n", - "indifference\n", - "indifferences\n", - "indifferent\n", - "indifferently\n", - "indigen\n", - "indigence\n", - "indigences\n", - "indigene\n", - "indigenes\n", - "indigenous\n", - "indigens\n", - "indigent\n", - "indigents\n", - "indigestible\n", - "indigestion\n", - "indigestions\n", - "indign\n", - "indignant\n", - "indignantly\n", - "indignation\n", - "indignations\n", - "indignities\n", - "indignity\n", - "indignly\n", - "indigo\n", - "indigoes\n", - "indigoid\n", - "indigoids\n", - "indigos\n", - "indirect\n", - "indirection\n", - "indirections\n", - "indirectly\n", - "indirectness\n", - "indirectnesses\n", - "indiscernible\n", - "indiscreet\n", - "indiscretion\n", - "indiscretions\n", - "indiscriminate\n", - "indiscriminately\n", - "indispensabilities\n", - "indispensability\n", - "indispensable\n", - "indispensables\n", - "indispensably\n", - "indisposed\n", - "indisposition\n", - "indispositions\n", - "indisputable\n", - "indisputably\n", - "indissoluble\n", - "indistinct\n", - "indistinctly\n", - "indistinctness\n", - "indistinctnesses\n", - "indistinguishable\n", - "indite\n", - "indited\n", - "inditer\n", - "inditers\n", - "indites\n", - "inditing\n", - "indium\n", - "indiums\n", - "individual\n", - "individualities\n", - "individuality\n", - "individualize\n", - "individualized\n", - "individualizes\n", - "individualizing\n", - "individually\n", - "individuals\n", - "indivisibility\n", - "indivisible\n", - "indocile\n", - "indoctrinate\n", - "indoctrinated\n", - "indoctrinates\n", - "indoctrinating\n", - "indoctrination\n", - "indoctrinations\n", - "indol\n", - "indole\n", - "indolence\n", - "indolences\n", - "indolent\n", - "indoles\n", - "indols\n", - "indominitable\n", - "indominitably\n", - "indoor\n", - "indoors\n", - "indorse\n", - "indorsed\n", - "indorsee\n", - "indorsees\n", - "indorser\n", - "indorsers\n", - "indorses\n", - "indorsing\n", - "indorsor\n", - "indorsors\n", - "indow\n", - "indowed\n", - "indowing\n", - "indows\n", - "indoxyl\n", - "indoxyls\n", - "indraft\n", - "indrafts\n", - "indrawn\n", - "indri\n", - "indris\n", - "indubitable\n", - "indubitably\n", - "induce\n", - "induced\n", - "inducement\n", - "inducements\n", - "inducer\n", - "inducers\n", - "induces\n", - "inducing\n", - "induct\n", - "inducted\n", - "inductee\n", - "inductees\n", - "inducting\n", - "induction\n", - "inductions\n", - "inductive\n", - "inductor\n", - "inductors\n", - "inducts\n", - "indue\n", - "indued\n", - "indues\n", - "induing\n", - "indulge\n", - "indulged\n", - "indulgence\n", - "indulgent\n", - "indulgently\n", - "indulger\n", - "indulgers\n", - "indulges\n", - "indulging\n", - "indulin\n", - "induline\n", - "indulines\n", - "indulins\n", - "indult\n", - "indults\n", - "indurate\n", - "indurated\n", - "indurates\n", - "indurating\n", - "indusia\n", - "indusial\n", - "indusium\n", - "industrial\n", - "industrialist\n", - "industrialization\n", - "industrializations\n", - "industrialize\n", - "industrialized\n", - "industrializes\n", - "industrializing\n", - "industrially\n", - "industries\n", - "industrious\n", - "industriously\n", - "industriousness\n", - "industriousnesses\n", - "industry\n", - "indwell\n", - "indwelling\n", - "indwells\n", - "indwelt\n", - "inearth\n", - "inearthed\n", - "inearthing\n", - "inearths\n", - "inebriate\n", - "inebriated\n", - "inebriates\n", - "inebriating\n", - "inebriation\n", - "inebriations\n", - "inedible\n", - "inedita\n", - "inedited\n", - "ineducable\n", - "ineffable\n", - "ineffably\n", - "ineffective\n", - "ineffectively\n", - "ineffectiveness\n", - "ineffectivenesses\n", - "ineffectual\n", - "ineffectually\n", - "ineffectualness\n", - "ineffectualnesses\n", - "inefficiency\n", - "inefficient\n", - "inefficiently\n", - "inelastic\n", - "inelasticities\n", - "inelasticity\n", - "inelegance\n", - "inelegances\n", - "inelegant\n", - "ineligibility\n", - "ineligible\n", - "inept\n", - "ineptitude\n", - "ineptitudes\n", - "ineptly\n", - "ineptness\n", - "ineptnesses\n", - "inequalities\n", - "inequality\n", - "inequities\n", - "inequity\n", - "ineradicable\n", - "inerrant\n", - "inert\n", - "inertia\n", - "inertiae\n", - "inertial\n", - "inertias\n", - "inertly\n", - "inertness\n", - "inertnesses\n", - "inerts\n", - "inescapable\n", - "inescapably\n", - "inessential\n", - "inestimable\n", - "inestimably\n", - "inevitabilities\n", - "inevitability\n", - "inevitable\n", - "inevitably\n", - "inexact\n", - "inexcusable\n", - "inexcusably\n", - "inexhaustible\n", - "inexhaustibly\n", - "inexorable\n", - "inexorably\n", - "inexpedient\n", - "inexpensive\n", - "inexperience\n", - "inexperienced\n", - "inexperiences\n", - "inexpert\n", - "inexpertly\n", - "inexpertness\n", - "inexpertnesses\n", - "inexperts\n", - "inexplicable\n", - "inexplicably\n", - "inexplicit\n", - "inexpressible\n", - "inexpressibly\n", - "inextinguishable\n", - "inextricable\n", - "inextricably\n", - "infallibility\n", - "infallible\n", - "infallibly\n", - "infamies\n", - "infamous\n", - "infamously\n", - "infamy\n", - "infancies\n", - "infancy\n", - "infant\n", - "infanta\n", - "infantas\n", - "infante\n", - "infantes\n", - "infantile\n", - "infantries\n", - "infantry\n", - "infants\n", - "infarct\n", - "infarcts\n", - "infare\n", - "infares\n", - "infatuate\n", - "infatuated\n", - "infatuates\n", - "infatuating\n", - "infatuation\n", - "infatuations\n", - "infauna\n", - "infaunae\n", - "infaunal\n", - "infaunas\n", - "infeasibilities\n", - "infeasibility\n", - "infeasible\n", - "infect\n", - "infected\n", - "infecter\n", - "infecters\n", - "infecting\n", - "infection\n", - "infections\n", - "infectious\n", - "infective\n", - "infector\n", - "infectors\n", - "infects\n", - "infecund\n", - "infelicities\n", - "infelicitous\n", - "infelicity\n", - "infeoff\n", - "infeoffed\n", - "infeoffing\n", - "infeoffs\n", - "infer\n", - "inference\n", - "inferenced\n", - "inferences\n", - "inferencing\n", - "inferential\n", - "inferior\n", - "inferiority\n", - "inferiors\n", - "infernal\n", - "infernally\n", - "inferno\n", - "infernos\n", - "inferred\n", - "inferrer\n", - "inferrers\n", - "inferring\n", - "infers\n", - "infertile\n", - "infertilities\n", - "infertility\n", - "infest\n", - "infestation\n", - "infestations\n", - "infested\n", - "infester\n", - "infesters\n", - "infesting\n", - "infests\n", - "infidel\n", - "infidelities\n", - "infidelity\n", - "infidels\n", - "infield\n", - "infielder\n", - "infielders\n", - "infields\n", - "infiltrate\n", - "infiltrated\n", - "infiltrates\n", - "infiltrating\n", - "infiltration\n", - "infiltrations\n", - "infinite\n", - "infinitely\n", - "infinites\n", - "infinitesimal\n", - "infinitesimally\n", - "infinities\n", - "infinitive\n", - "infinitives\n", - "infinitude\n", - "infinitudes\n", - "infinity\n", - "infirm\n", - "infirmaries\n", - "infirmary\n", - "infirmed\n", - "infirming\n", - "infirmities\n", - "infirmity\n", - "infirmly\n", - "infirms\n", - "infix\n", - "infixed\n", - "infixes\n", - "infixing\n", - "infixion\n", - "infixions\n", - "inflame\n", - "inflamed\n", - "inflamer\n", - "inflamers\n", - "inflames\n", - "inflaming\n", - "inflammable\n", - "inflammation\n", - "inflammations\n", - "inflammatory\n", - "inflatable\n", - "inflate\n", - "inflated\n", - "inflater\n", - "inflaters\n", - "inflates\n", - "inflating\n", - "inflation\n", - "inflationary\n", - "inflator\n", - "inflators\n", - "inflect\n", - "inflected\n", - "inflecting\n", - "inflection\n", - "inflectional\n", - "inflections\n", - "inflects\n", - "inflexed\n", - "inflexibilities\n", - "inflexibility\n", - "inflexible\n", - "inflexibly\n", - "inflict\n", - "inflicted\n", - "inflicting\n", - "infliction\n", - "inflictions\n", - "inflicts\n", - "inflight\n", - "inflow\n", - "inflows\n", - "influence\n", - "influences\n", - "influent\n", - "influential\n", - "influents\n", - "influenza\n", - "influenzas\n", - "influx\n", - "influxes\n", - "info\n", - "infold\n", - "infolded\n", - "infolder\n", - "infolders\n", - "infolding\n", - "infolds\n", - "inform\n", - "informal\n", - "informalities\n", - "informality\n", - "informally\n", - "informant\n", - "informants\n", - "information\n", - "informational\n", - "informations\n", - "informative\n", - "informed\n", - "informer\n", - "informers\n", - "informing\n", - "informs\n", - "infos\n", - "infra\n", - "infract\n", - "infracted\n", - "infracting\n", - "infraction\n", - "infractions\n", - "infracts\n", - "infrared\n", - "infrareds\n", - "infrequent\n", - "infrequently\n", - "infringe\n", - "infringed\n", - "infringement\n", - "infringements\n", - "infringes\n", - "infringing\n", - "infrugal\n", - "infuriate\n", - "infuriated\n", - "infuriates\n", - "infuriating\n", - "infuriatingly\n", - "infuse\n", - "infused\n", - "infuser\n", - "infusers\n", - "infuses\n", - "infusing\n", - "infusion\n", - "infusions\n", - "infusive\n", - "ingate\n", - "ingates\n", - "ingather\n", - "ingathered\n", - "ingathering\n", - "ingathers\n", - "ingenious\n", - "ingeniously\n", - "ingeniousness\n", - "ingeniousnesses\n", - "ingenue\n", - "ingenues\n", - "ingenuities\n", - "ingenuity\n", - "ingenuous\n", - "ingenuously\n", - "ingenuousness\n", - "ingenuousnesses\n", - "ingest\n", - "ingesta\n", - "ingested\n", - "ingesting\n", - "ingests\n", - "ingle\n", - "inglenook\n", - "inglenooks\n", - "ingles\n", - "inglorious\n", - "ingloriously\n", - "ingoing\n", - "ingot\n", - "ingoted\n", - "ingoting\n", - "ingots\n", - "ingraft\n", - "ingrafted\n", - "ingrafting\n", - "ingrafts\n", - "ingrain\n", - "ingrained\n", - "ingraining\n", - "ingrains\n", - "ingrate\n", - "ingrates\n", - "ingratiate\n", - "ingratiated\n", - "ingratiates\n", - "ingratiating\n", - "ingratitude\n", - "ingratitudes\n", - "ingredient\n", - "ingredients\n", - "ingress\n", - "ingresses\n", - "ingroup\n", - "ingroups\n", - "ingrown\n", - "ingrowth\n", - "ingrowths\n", - "inguinal\n", - "ingulf\n", - "ingulfed\n", - "ingulfing\n", - "ingulfs\n", - "inhabit\n", - "inhabitable\n", - "inhabitant\n", - "inhabited\n", - "inhabiting\n", - "inhabits\n", - "inhalant\n", - "inhalants\n", - "inhalation\n", - "inhalations\n", - "inhale\n", - "inhaled\n", - "inhaler\n", - "inhalers\n", - "inhales\n", - "inhaling\n", - "inhaul\n", - "inhauler\n", - "inhaulers\n", - "inhauls\n", - "inhere\n", - "inhered\n", - "inherent\n", - "inherently\n", - "inheres\n", - "inhering\n", - "inherit\n", - "inheritance\n", - "inheritances\n", - "inherited\n", - "inheriting\n", - "inheritor\n", - "inheritors\n", - "inherits\n", - "inhesion\n", - "inhesions\n", - "inhibit\n", - "inhibited\n", - "inhibiting\n", - "inhibition\n", - "inhibitions\n", - "inhibits\n", - "inhuman\n", - "inhumane\n", - "inhumanely\n", - "inhumanities\n", - "inhumanity\n", - "inhumanly\n", - "inhume\n", - "inhumed\n", - "inhumer\n", - "inhumers\n", - "inhumes\n", - "inhuming\n", - "inia\n", - "inimical\n", - "inimically\n", - "inimitable\n", - "inion\n", - "iniquities\n", - "iniquitous\n", - "iniquity\n", - "initial\n", - "initialed\n", - "initialing\n", - "initialization\n", - "initializations\n", - "initialize\n", - "initialized\n", - "initializes\n", - "initializing\n", - "initialled\n", - "initialling\n", - "initially\n", - "initials\n", - "initiate\n", - "initiated\n", - "initiates\n", - "initiating\n", - "initiation\n", - "initiations\n", - "initiative\n", - "initiatory\n", - "inject\n", - "injected\n", - "injecting\n", - "injection\n", - "injections\n", - "injector\n", - "injectors\n", - "injects\n", - "injudicious\n", - "injudiciously\n", - "injudiciousness\n", - "injudiciousnesses\n", - "injunction\n", - "injunctions\n", - "injure\n", - "injured\n", - "injurer\n", - "injurers\n", - "injures\n", - "injuries\n", - "injuring\n", - "injurious\n", - "injury\n", - "ink\n", - "inkberries\n", - "inkberry\n", - "inkblot\n", - "inkblots\n", - "inked\n", - "inker\n", - "inkers\n", - "inkhorn\n", - "inkhorns\n", - "inkier\n", - "inkiest\n", - "inkiness\n", - "inkinesses\n", - "inking\n", - "inkle\n", - "inkles\n", - "inkless\n", - "inklike\n", - "inkling\n", - "inklings\n", - "inkpot\n", - "inkpots\n", - "inks\n", - "inkstand\n", - "inkstands\n", - "inkwell\n", - "inkwells\n", - "inkwood\n", - "inkwoods\n", - "inky\n", - "inlace\n", - "inlaced\n", - "inlaces\n", - "inlacing\n", - "inlaid\n", - "inland\n", - "inlander\n", - "inlanders\n", - "inlands\n", - "inlay\n", - "inlayer\n", - "inlayers\n", - "inlaying\n", - "inlays\n", - "inlet\n", - "inlets\n", - "inletting\n", - "inlier\n", - "inliers\n", - "inly\n", - "inmate\n", - "inmates\n", - "inmesh\n", - "inmeshed\n", - "inmeshes\n", - "inmeshing\n", - "inmost\n", - "inn\n", - "innards\n", - "innate\n", - "innately\n", - "inned\n", - "inner\n", - "innerly\n", - "innermost\n", - "inners\n", - "innersole\n", - "innersoles\n", - "innerve\n", - "innerved\n", - "innerves\n", - "innerving\n", - "inning\n", - "innings\n", - "innkeeper\n", - "innkeepers\n", - "innless\n", - "innocence\n", - "innocences\n", - "innocent\n", - "innocenter\n", - "innocentest\n", - "innocently\n", - "innocents\n", - "innocuous\n", - "innovate\n", - "innovated\n", - "innovates\n", - "innovating\n", - "innovation\n", - "innovations\n", - "innovative\n", - "innovator\n", - "innovators\n", - "inns\n", - "innuendo\n", - "innuendoed\n", - "innuendoes\n", - "innuendoing\n", - "innuendos\n", - "innumerable\n", - "inocula\n", - "inoculate\n", - "inoculated\n", - "inoculates\n", - "inoculating\n", - "inoculation\n", - "inoculations\n", - "inoculum\n", - "inoculums\n", - "inoffensive\n", - "inoperable\n", - "inoperative\n", - "inopportune\n", - "inopportunely\n", - "inordinate\n", - "inordinately\n", - "inorganic\n", - "inosite\n", - "inosites\n", - "inositol\n", - "inositols\n", - "inpatient\n", - "inpatients\n", - "inphase\n", - "inpour\n", - "inpoured\n", - "inpouring\n", - "inpours\n", - "input\n", - "inputs\n", - "inputted\n", - "inputting\n", - "inquest\n", - "inquests\n", - "inquiet\n", - "inquieted\n", - "inquieting\n", - "inquiets\n", - "inquire\n", - "inquired\n", - "inquirer\n", - "inquirers\n", - "inquires\n", - "inquiries\n", - "inquiring\n", - "inquiringly\n", - "inquiry\n", - "inquisition\n", - "inquisitions\n", - "inquisitive\n", - "inquisitively\n", - "inquisitiveness\n", - "inquisitivenesses\n", - "inquisitor\n", - "inquisitorial\n", - "inquisitors\n", - "inroad\n", - "inroads\n", - "inrush\n", - "inrushes\n", - "ins\n", - "insalubrious\n", - "insane\n", - "insanely\n", - "insaner\n", - "insanest\n", - "insanities\n", - "insanity\n", - "insatiable\n", - "insatiate\n", - "inscribe\n", - "inscribed\n", - "inscribes\n", - "inscribing\n", - "inscription\n", - "inscriptions\n", - "inscroll\n", - "inscrolled\n", - "inscrolling\n", - "inscrolls\n", - "inscrutable\n", - "inscrutably\n", - "insculp\n", - "insculped\n", - "insculping\n", - "insculps\n", - "inseam\n", - "inseams\n", - "insect\n", - "insectan\n", - "insecticidal\n", - "insecticide\n", - "insecticides\n", - "insects\n", - "insecuration\n", - "insecurations\n", - "insecure\n", - "insecurely\n", - "insecurities\n", - "insecurity\n", - "insensibilities\n", - "insensibility\n", - "insensible\n", - "insensibly\n", - "insensitive\n", - "insensitivities\n", - "insensitivity\n", - "insentience\n", - "insentiences\n", - "insentient\n", - "inseparable\n", - "insert\n", - "inserted\n", - "inserter\n", - "inserters\n", - "inserting\n", - "insertion\n", - "insertions\n", - "inserts\n", - "inset\n", - "insets\n", - "insetted\n", - "insetter\n", - "insetters\n", - "insetting\n", - "insheath\n", - "insheathed\n", - "insheathing\n", - "insheaths\n", - "inshore\n", - "inshrine\n", - "inshrined\n", - "inshrines\n", - "inshrining\n", - "inside\n", - "insider\n", - "insiders\n", - "insides\n", - "insidious\n", - "insidiously\n", - "insidiousness\n", - "insidiousnesses\n", - "insight\n", - "insightful\n", - "insights\n", - "insigne\n", - "insignia\n", - "insignias\n", - "insignificant\n", - "insincere\n", - "insincerely\n", - "insincerities\n", - "insincerity\n", - "insinuate\n", - "insinuated\n", - "insinuates\n", - "insinuating\n", - "insinuation\n", - "insinuations\n", - "insipid\n", - "insipidities\n", - "insipidity\n", - "insipidus\n", - "insist\n", - "insisted\n", - "insistence\n", - "insistences\n", - "insistent\n", - "insistently\n", - "insister\n", - "insisters\n", - "insisting\n", - "insists\n", - "insnare\n", - "insnared\n", - "insnarer\n", - "insnarers\n", - "insnares\n", - "insnaring\n", - "insofar\n", - "insolate\n", - "insolated\n", - "insolates\n", - "insolating\n", - "insole\n", - "insolence\n", - "insolences\n", - "insolent\n", - "insolents\n", - "insoles\n", - "insolubilities\n", - "insolubility\n", - "insoluble\n", - "insolvencies\n", - "insolvency\n", - "insolvent\n", - "insomnia\n", - "insomnias\n", - "insomuch\n", - "insouciance\n", - "insouciances\n", - "insouciant\n", - "insoul\n", - "insouled\n", - "insouling\n", - "insouls\n", - "inspan\n", - "inspanned\n", - "inspanning\n", - "inspans\n", - "inspect\n", - "inspected\n", - "inspecting\n", - "inspection\n", - "inspections\n", - "inspector\n", - "inspectors\n", - "inspects\n", - "insphere\n", - "insphered\n", - "inspheres\n", - "insphering\n", - "inspiration\n", - "inspirational\n", - "inspirations\n", - "inspire\n", - "inspired\n", - "inspirer\n", - "inspirers\n", - "inspires\n", - "inspiring\n", - "inspirit\n", - "inspirited\n", - "inspiriting\n", - "inspirits\n", - "instabilities\n", - "instability\n", - "instable\n", - "instal\n", - "install\n", - "installation\n", - "installations\n", - "installed\n", - "installing\n", - "installment\n", - "installments\n", - "installs\n", - "instals\n", - "instance\n", - "instanced\n", - "instances\n", - "instancies\n", - "instancing\n", - "instancy\n", - "instant\n", - "instantaneous\n", - "instantaneously\n", - "instantly\n", - "instants\n", - "instar\n", - "instarred\n", - "instarring\n", - "instars\n", - "instate\n", - "instated\n", - "instates\n", - "instating\n", - "instead\n", - "instep\n", - "insteps\n", - "instigate\n", - "instigated\n", - "instigates\n", - "instigating\n", - "instigation\n", - "instigations\n", - "instigator\n", - "instigators\n", - "instil\n", - "instill\n", - "instilled\n", - "instilling\n", - "instills\n", - "instils\n", - "instinct\n", - "instinctive\n", - "instinctively\n", - "instincts\n", - "institute\n", - "institutes\n", - "institution\n", - "institutional\n", - "institutionalize\n", - "institutionally\n", - "institutions\n", - "instransitive\n", - "instroke\n", - "instrokes\n", - "instruct\n", - "instructed\n", - "instructing\n", - "instruction\n", - "instructional\n", - "instructions\n", - "instructive\n", - "instructor\n", - "instructors\n", - "instructorship\n", - "instructorships\n", - "instructs\n", - "instrument\n", - "instrumental\n", - "instrumentalist\n", - "instrumentalists\n", - "instrumentalities\n", - "instrumentality\n", - "instrumentals\n", - "instrumentation\n", - "instrumentations\n", - "instruments\n", - "insubordinate\n", - "insubordination\n", - "insubordinations\n", - "insubstantial\n", - "insufferable\n", - "insufferably\n", - "insufficent\n", - "insufficiencies\n", - "insufficiency\n", - "insufficient\n", - "insufficiently\n", - "insulant\n", - "insulants\n", - "insular\n", - "insularities\n", - "insularity\n", - "insulars\n", - "insulate\n", - "insulated\n", - "insulates\n", - "insulating\n", - "insulation\n", - "insulations\n", - "insulator\n", - "insulators\n", - "insulin\n", - "insulins\n", - "insult\n", - "insulted\n", - "insulter\n", - "insulters\n", - "insulting\n", - "insultingly\n", - "insults\n", - "insuperable\n", - "insuperably\n", - "insupportable\n", - "insurable\n", - "insurance\n", - "insurances\n", - "insurant\n", - "insurants\n", - "insure\n", - "insured\n", - "insureds\n", - "insurer\n", - "insurers\n", - "insures\n", - "insurgence\n", - "insurgences\n", - "insurgencies\n", - "insurgency\n", - "insurgent\n", - "insurgents\n", - "insuring\n", - "insurmounable\n", - "insurmounably\n", - "insurrection\n", - "insurrectionist\n", - "insurrectionists\n", - "insurrections\n", - "inswathe\n", - "inswathed\n", - "inswathes\n", - "inswathing\n", - "inswept\n", - "intact\n", - "intagli\n", - "intaglio\n", - "intaglios\n", - "intake\n", - "intakes\n", - "intangibilities\n", - "intangibility\n", - "intangible\n", - "intangibly\n", - "intarsia\n", - "intarsias\n", - "integer\n", - "integers\n", - "integral\n", - "integrals\n", - "integrate\n", - "integrated\n", - "integrates\n", - "integrating\n", - "integration\n", - "integrities\n", - "integrity\n", - "intellect\n", - "intellects\n", - "intellectual\n", - "intellectualism\n", - "intellectualisms\n", - "intellectually\n", - "intellectuals\n", - "intelligence\n", - "intelligent\n", - "intelligently\n", - "intelligibilities\n", - "intelligibility\n", - "intelligible\n", - "intelligibly\n", - "intemperance\n", - "intemperances\n", - "intemperate\n", - "intemperateness\n", - "intemperatenesses\n", - "intend\n", - "intended\n", - "intendeds\n", - "intender\n", - "intenders\n", - "intending\n", - "intends\n", - "intense\n", - "intensely\n", - "intenser\n", - "intensest\n", - "intensification\n", - "intensifications\n", - "intensified\n", - "intensifies\n", - "intensify\n", - "intensifying\n", - "intensities\n", - "intensity\n", - "intensive\n", - "intensively\n", - "intent\n", - "intention\n", - "intentional\n", - "intentionally\n", - "intentions\n", - "intently\n", - "intentness\n", - "intentnesses\n", - "intents\n", - "inter\n", - "interact\n", - "interacted\n", - "interacting\n", - "interaction\n", - "interactions\n", - "interactive\n", - "interactively\n", - "interacts\n", - "interagency\n", - "interatomic\n", - "interbank\n", - "interborough\n", - "interbred\n", - "interbreed\n", - "interbreeding\n", - "interbreeds\n", - "interbusiness\n", - "intercalate\n", - "intercalated\n", - "intercalates\n", - "intercalating\n", - "intercalation\n", - "intercalations\n", - "intercampus\n", - "intercede\n", - "interceded\n", - "intercedes\n", - "interceding\n", - "intercept\n", - "intercepted\n", - "intercepting\n", - "interception\n", - "interceptions\n", - "interceptor\n", - "interceptors\n", - "intercepts\n", - "intercession\n", - "intercessions\n", - "intercessor\n", - "intercessors\n", - "intercessory\n", - "interchange\n", - "interchangeable\n", - "interchangeably\n", - "interchanged\n", - "interchanges\n", - "interchanging\n", - "interchurch\n", - "intercity\n", - "interclass\n", - "intercoastal\n", - "intercollegiate\n", - "intercolonial\n", - "intercom\n", - "intercommunal\n", - "intercommunity\n", - "intercompany\n", - "intercoms\n", - "intercontinental\n", - "interconversion\n", - "intercounty\n", - "intercourse\n", - "intercourses\n", - "intercultural\n", - "intercurrent\n", - "intercut\n", - "intercuts\n", - "intercutting\n", - "interdenominational\n", - "interdepartmental\n", - "interdependence\n", - "interdependences\n", - "interdependent\n", - "interdict\n", - "interdicted\n", - "interdicting\n", - "interdiction\n", - "interdictions\n", - "interdicts\n", - "interdivisional\n", - "interelectronic\n", - "interest\n", - "interested\n", - "interesting\n", - "interestingly\n", - "interests\n", - "interethnic\n", - "interface\n", - "interfaces\n", - "interfacial\n", - "interfaculty\n", - "interfamily\n", - "interfere\n", - "interfered\n", - "interference\n", - "interferences\n", - "interferes\n", - "interfering\n", - "interfiber\n", - "interfraternity\n", - "intergalactic\n", - "intergang\n", - "intergovernmental\n", - "intergroup\n", - "interhemispheric\n", - "interim\n", - "interims\n", - "interindustry\n", - "interinstitutional\n", - "interior\n", - "interiors\n", - "interisland\n", - "interject\n", - "interjected\n", - "interjecting\n", - "interjection\n", - "interjectionally\n", - "interjections\n", - "interjects\n", - "interlace\n", - "interlaced\n", - "interlaces\n", - "interlacing\n", - "interlaid\n", - "interlap\n", - "interlapped\n", - "interlapping\n", - "interlaps\n", - "interlard\n", - "interlards\n", - "interlay\n", - "interlaying\n", - "interlays\n", - "interleave\n", - "interleaved\n", - "interleaves\n", - "interleaving\n", - "interlibrary\n", - "interlinear\n", - "interlock\n", - "interlocked\n", - "interlocking\n", - "interlocks\n", - "interlope\n", - "interloped\n", - "interloper\n", - "interlopers\n", - "interlopes\n", - "interloping\n", - "interlude\n", - "interludes\n", - "intermarriage\n", - "intermarriages\n", - "intermarried\n", - "intermarries\n", - "intermarry\n", - "intermarrying\n", - "intermediaries\n", - "intermediary\n", - "intermediate\n", - "intermediates\n", - "interment\n", - "interments\n", - "interminable\n", - "interminably\n", - "intermingle\n", - "intermingled\n", - "intermingles\n", - "intermingling\n", - "intermission\n", - "intermissions\n", - "intermit\n", - "intermits\n", - "intermitted\n", - "intermittent\n", - "intermittently\n", - "intermitting\n", - "intermix\n", - "intermixed\n", - "intermixes\n", - "intermixing\n", - "intermixture\n", - "intermixtures\n", - "intermolecular\n", - "intermountain\n", - "intern\n", - "internal\n", - "internally\n", - "internals\n", - "international\n", - "internationalism\n", - "internationalisms\n", - "internationalize\n", - "internationalized\n", - "internationalizes\n", - "internationalizing\n", - "internationally\n", - "internationals\n", - "interne\n", - "interned\n", - "internee\n", - "internees\n", - "internes\n", - "interning\n", - "internist\n", - "internists\n", - "internment\n", - "internments\n", - "interns\n", - "internship\n", - "internships\n", - "interoceanic\n", - "interoffice\n", - "interparticle\n", - "interparty\n", - "interpersonal\n", - "interplanetary\n", - "interplay\n", - "interplays\n", - "interpolate\n", - "interpolated\n", - "interpolates\n", - "interpolating\n", - "interpolation\n", - "interpolations\n", - "interpopulation\n", - "interpose\n", - "interposed\n", - "interposes\n", - "interposing\n", - "interposition\n", - "interpositions\n", - "interpret\n", - "interpretation\n", - "interpretations\n", - "interpretative\n", - "interpreted\n", - "interpreter\n", - "interpreters\n", - "interpreting\n", - "interpretive\n", - "interprets\n", - "interprovincial\n", - "interpupil\n", - "interquartile\n", - "interracial\n", - "interred\n", - "interreges\n", - "interregional\n", - "interrelate\n", - "interrelated\n", - "interrelatedness\n", - "interrelatednesses\n", - "interrelates\n", - "interrelating\n", - "interrelation\n", - "interrelations\n", - "interrelationship\n", - "interreligious\n", - "interrex\n", - "interring\n", - "interrogate\n", - "interrogated\n", - "interrogates\n", - "interrogating\n", - "interrogation\n", - "interrogations\n", - "interrogative\n", - "interrogatives\n", - "interrogator\n", - "interrogators\n", - "interrogatory\n", - "interrupt\n", - "interrupted\n", - "interrupter\n", - "interrupters\n", - "interrupting\n", - "interruption\n", - "interruptions\n", - "interruptive\n", - "interrupts\n", - "inters\n", - "interscholastic\n", - "intersect\n", - "intersected\n", - "intersecting\n", - "intersection\n", - "intersectional\n", - "intersections\n", - "intersects\n", - "intersex\n", - "intersexes\n", - "intersperse\n", - "interspersed\n", - "intersperses\n", - "interspersing\n", - "interspersion\n", - "interspersions\n", - "interstate\n", - "interstellar\n", - "interstice\n", - "interstices\n", - "intersticial\n", - "interstitial\n", - "intersystem\n", - "interterm\n", - "interterminal\n", - "intertie\n", - "interties\n", - "intertribal\n", - "intertroop\n", - "intertropical\n", - "intertwine\n", - "intertwined\n", - "intertwines\n", - "intertwining\n", - "interuniversity\n", - "interurban\n", - "interval\n", - "intervalley\n", - "intervals\n", - "intervene\n", - "intervened\n", - "intervenes\n", - "intervening\n", - "intervention\n", - "interventions\n", - "interview\n", - "interviewed\n", - "interviewer\n", - "interviewers\n", - "interviewing\n", - "interviews\n", - "intervillage\n", - "interwar\n", - "interweave\n", - "interweaves\n", - "interweaving\n", - "interwoven\n", - "interzonal\n", - "interzone\n", - "intestate\n", - "intestinal\n", - "intestine\n", - "intestines\n", - "inthral\n", - "inthrall\n", - "inthralled\n", - "inthralling\n", - "inthralls\n", - "inthrals\n", - "inthrone\n", - "inthroned\n", - "inthrones\n", - "inthroning\n", - "intima\n", - "intimacies\n", - "intimacy\n", - "intimae\n", - "intimal\n", - "intimas\n", - "intimate\n", - "intimated\n", - "intimately\n", - "intimates\n", - "intimating\n", - "intimation\n", - "intimations\n", - "intime\n", - "intimidate\n", - "intimidated\n", - "intimidates\n", - "intimidating\n", - "intimidation\n", - "intimidations\n", - "intine\n", - "intines\n", - "intitle\n", - "intitled\n", - "intitles\n", - "intitling\n", - "intitule\n", - "intituled\n", - "intitules\n", - "intituling\n", - "into\n", - "intolerable\n", - "intolerably\n", - "intolerance\n", - "intolerances\n", - "intolerant\n", - "intomb\n", - "intombed\n", - "intombing\n", - "intombs\n", - "intonate\n", - "intonated\n", - "intonates\n", - "intonating\n", - "intonation\n", - "intonations\n", - "intone\n", - "intoned\n", - "intoner\n", - "intoners\n", - "intones\n", - "intoning\n", - "intort\n", - "intorted\n", - "intorting\n", - "intorts\n", - "intown\n", - "intoxicant\n", - "intoxicants\n", - "intoxicate\n", - "intoxicated\n", - "intoxicates\n", - "intoxicating\n", - "intoxication\n", - "intoxications\n", - "intractable\n", - "intrados\n", - "intradoses\n", - "intramural\n", - "intransigence\n", - "intransigences\n", - "intransigent\n", - "intransigents\n", - "intrant\n", - "intrants\n", - "intravenous\n", - "intravenously\n", - "intreat\n", - "intreated\n", - "intreating\n", - "intreats\n", - "intrench\n", - "intrenched\n", - "intrenches\n", - "intrenching\n", - "intrepid\n", - "intrepidities\n", - "intrepidity\n", - "intricacies\n", - "intricacy\n", - "intricate\n", - "intricately\n", - "intrigue\n", - "intrigued\n", - "intrigues\n", - "intriguing\n", - "intriguingly\n", - "intrinsic\n", - "intrinsically\n", - "intro\n", - "introduce\n", - "introduced\n", - "introduces\n", - "introducing\n", - "introduction\n", - "introductions\n", - "introductory\n", - "introfied\n", - "introfies\n", - "introfy\n", - "introfying\n", - "introit\n", - "introits\n", - "intromit\n", - "intromits\n", - "intromitted\n", - "intromitting\n", - "introrse\n", - "intros\n", - "introspect\n", - "introspected\n", - "introspecting\n", - "introspection\n", - "introspections\n", - "introspective\n", - "introspectively\n", - "introspects\n", - "introversion\n", - "introversions\n", - "introvert\n", - "introverted\n", - "introverts\n", - "intrude\n", - "intruded\n", - "intruder\n", - "intruders\n", - "intrudes\n", - "intruding\n", - "intrusion\n", - "intrusions\n", - "intrusive\n", - "intrusiveness\n", - "intrusivenesses\n", - "intrust\n", - "intrusted\n", - "intrusting\n", - "intrusts\n", - "intubate\n", - "intubated\n", - "intubates\n", - "intubating\n", - "intuit\n", - "intuited\n", - "intuiting\n", - "intuition\n", - "intuitions\n", - "intuitive\n", - "intuitively\n", - "intuits\n", - "inturn\n", - "inturned\n", - "inturns\n", - "intwine\n", - "intwined\n", - "intwines\n", - "intwining\n", - "intwist\n", - "intwisted\n", - "intwisting\n", - "intwists\n", - "inulase\n", - "inulases\n", - "inulin\n", - "inulins\n", - "inundant\n", - "inundate\n", - "inundated\n", - "inundates\n", - "inundating\n", - "inundation\n", - "inundations\n", - "inurbane\n", - "inure\n", - "inured\n", - "inures\n", - "inuring\n", - "inurn\n", - "inurned\n", - "inurning\n", - "inurns\n", - "inutile\n", - "invade\n", - "invaded\n", - "invader\n", - "invaders\n", - "invades\n", - "invading\n", - "invalid\n", - "invalidate\n", - "invalidated\n", - "invalidates\n", - "invalidating\n", - "invalided\n", - "invaliding\n", - "invalidism\n", - "invalidity\n", - "invalidly\n", - "invalids\n", - "invaluable\n", - "invar\n", - "invariable\n", - "invariably\n", - "invars\n", - "invasion\n", - "invasions\n", - "invasive\n", - "invected\n", - "invective\n", - "invectives\n", - "inveigh\n", - "inveighed\n", - "inveighing\n", - "inveighs\n", - "inveigle\n", - "inveigled\n", - "inveigles\n", - "inveigling\n", - "invent\n", - "invented\n", - "inventer\n", - "inventers\n", - "inventing\n", - "invention\n", - "inventions\n", - "inventive\n", - "inventiveness\n", - "inventivenesses\n", - "inventor\n", - "inventoried\n", - "inventories\n", - "inventors\n", - "inventory\n", - "inventorying\n", - "invents\n", - "inverities\n", - "inverity\n", - "inverse\n", - "inversely\n", - "inverses\n", - "inversion\n", - "inversions\n", - "invert\n", - "inverted\n", - "inverter\n", - "inverters\n", - "invertibrate\n", - "invertibrates\n", - "inverting\n", - "invertor\n", - "invertors\n", - "inverts\n", - "invest\n", - "invested\n", - "investigate\n", - "investigated\n", - "investigates\n", - "investigating\n", - "investigation\n", - "investigations\n", - "investigative\n", - "investigator\n", - "investigators\n", - "investing\n", - "investiture\n", - "investitures\n", - "investment\n", - "investments\n", - "investor\n", - "investors\n", - "invests\n", - "inveteracies\n", - "inveteracy\n", - "inveterate\n", - "inviable\n", - "inviably\n", - "invidious\n", - "invidiously\n", - "invigorate\n", - "invigorated\n", - "invigorates\n", - "invigorating\n", - "invigoration\n", - "invigorations\n", - "invincibilities\n", - "invincibility\n", - "invincible\n", - "invincibly\n", - "inviolabilities\n", - "inviolability\n", - "inviolable\n", - "inviolate\n", - "invirile\n", - "inviscid\n", - "invisibilities\n", - "invisibility\n", - "invisible\n", - "invisibly\n", - "invital\n", - "invitation\n", - "invitations\n", - "invite\n", - "invited\n", - "invitee\n", - "invitees\n", - "inviter\n", - "inviters\n", - "invites\n", - "inviting\n", - "invocate\n", - "invocated\n", - "invocates\n", - "invocating\n", - "invocation\n", - "invocations\n", - "invoice\n", - "invoiced\n", - "invoices\n", - "invoicing\n", - "invoke\n", - "invoked\n", - "invoker\n", - "invokers\n", - "invokes\n", - "invoking\n", - "involuntarily\n", - "involuntary\n", - "involute\n", - "involuted\n", - "involutes\n", - "involuting\n", - "involve\n", - "involved\n", - "involvement\n", - "involvements\n", - "involver\n", - "involvers\n", - "involves\n", - "involving\n", - "invulnerability\n", - "invulnerable\n", - "invulnerably\n", - "inwall\n", - "inwalled\n", - "inwalling\n", - "inwalls\n", - "inward\n", - "inwardly\n", - "inwards\n", - "inweave\n", - "inweaved\n", - "inweaves\n", - "inweaving\n", - "inwind\n", - "inwinding\n", - "inwinds\n", - "inwound\n", - "inwove\n", - "inwoven\n", - "inwrap\n", - "inwrapped\n", - "inwrapping\n", - "inwraps\n", - "iodate\n", - "iodated\n", - "iodates\n", - "iodating\n", - "iodation\n", - "iodations\n", - "iodic\n", - "iodid\n", - "iodide\n", - "iodides\n", - "iodids\n", - "iodin\n", - "iodinate\n", - "iodinated\n", - "iodinates\n", - "iodinating\n", - "iodine\n", - "iodines\n", - "iodins\n", - "iodism\n", - "iodisms\n", - "iodize\n", - "iodized\n", - "iodizer\n", - "iodizers\n", - "iodizes\n", - "iodizing\n", - "iodoform\n", - "iodoforms\n", - "iodol\n", - "iodols\n", - "iodophor\n", - "iodophors\n", - "iodopsin\n", - "iodopsins\n", - "iodous\n", - "iolite\n", - "iolites\n", - "ion\n", - "ionic\n", - "ionicities\n", - "ionicity\n", - "ionics\n", - "ionise\n", - "ionised\n", - "ionises\n", - "ionising\n", - "ionium\n", - "ioniums\n", - "ionizable\n", - "ionize\n", - "ionized\n", - "ionizer\n", - "ionizers\n", - "ionizes\n", - "ionizing\n", - "ionomer\n", - "ionomers\n", - "ionone\n", - "ionones\n", - "ionosphere\n", - "ionospheres\n", - "ionospheric\n", - "ions\n", - "iota\n", - "iotacism\n", - "iotacisms\n", - "iotas\n", - "ipecac\n", - "ipecacs\n", - "ipomoea\n", - "ipomoeas\n", - "iracund\n", - "irade\n", - "irades\n", - "irascibilities\n", - "irascibility\n", - "irascible\n", - "irate\n", - "irately\n", - "irater\n", - "iratest\n", - "ire\n", - "ired\n", - "ireful\n", - "irefully\n", - "ireless\n", - "irenic\n", - "irenical\n", - "irenics\n", - "ires\n", - "irides\n", - "iridescence\n", - "iridescences\n", - "iridescent\n", - "iridic\n", - "iridium\n", - "iridiums\n", - "irids\n", - "iring\n", - "iris\n", - "irised\n", - "irises\n", - "irising\n", - "iritic\n", - "iritis\n", - "iritises\n", - "irk\n", - "irked\n", - "irking\n", - "irks\n", - "irksome\n", - "irksomely\n", - "iron\n", - "ironbark\n", - "ironbarks\n", - "ironclad\n", - "ironclads\n", - "irone\n", - "ironed\n", - "ironer\n", - "ironers\n", - "irones\n", - "ironic\n", - "ironical\n", - "ironically\n", - "ironies\n", - "ironing\n", - "ironings\n", - "ironist\n", - "ironists\n", - "ironlike\n", - "ironness\n", - "ironnesses\n", - "irons\n", - "ironside\n", - "ironsides\n", - "ironware\n", - "ironwares\n", - "ironweed\n", - "ironweeds\n", - "ironwood\n", - "ironwoods\n", - "ironwork\n", - "ironworker\n", - "ironworkers\n", - "ironworks\n", - "irony\n", - "irradiate\n", - "irradiated\n", - "irradiates\n", - "irradiating\n", - "irradiation\n", - "irradiations\n", - "irrational\n", - "irrationalities\n", - "irrationality\n", - "irrationally\n", - "irrationals\n", - "irreal\n", - "irreconcilabilities\n", - "irreconcilability\n", - "irreconcilable\n", - "irrecoverable\n", - "irrecoverably\n", - "irredeemable\n", - "irreducible\n", - "irreducibly\n", - "irrefutable\n", - "irregular\n", - "irregularities\n", - "irregularity\n", - "irregularly\n", - "irregulars\n", - "irrelevance\n", - "irrelevances\n", - "irrelevant\n", - "irreligious\n", - "irreparable\n", - "irreplaceable\n", - "irrepressible\n", - "irreproachable\n", - "irresistible\n", - "irresolute\n", - "irresolutely\n", - "irresolution\n", - "irresolutions\n", - "irrespective\n", - "irresponsibilities\n", - "irresponsibility\n", - "irresponsible\n", - "irresponsibly\n", - "irretrievable\n", - "irreverence\n", - "irreverences\n", - "irreversible\n", - "irrevocable\n", - "irrigate\n", - "irrigated\n", - "irrigates\n", - "irrigating\n", - "irrigation\n", - "irrigations\n", - "irritabilities\n", - "irritability\n", - "irritable\n", - "irritably\n", - "irritant\n", - "irritants\n", - "irritate\n", - "irritated\n", - "irritates\n", - "irritating\n", - "irritatingly\n", - "irritation\n", - "irritations\n", - "irrupt\n", - "irrupted\n", - "irrupting\n", - "irrupts\n", - "is\n", - "isagoge\n", - "isagoges\n", - "isagogic\n", - "isagogics\n", - "isarithm\n", - "isarithms\n", - "isatin\n", - "isatine\n", - "isatines\n", - "isatinic\n", - "isatins\n", - "isba\n", - "isbas\n", - "ischemia\n", - "ischemias\n", - "ischemic\n", - "ischia\n", - "ischial\n", - "ischium\n", - "isinglass\n", - "island\n", - "islanded\n", - "islander\n", - "islanders\n", - "islanding\n", - "islands\n", - "isle\n", - "isled\n", - "isleless\n", - "isles\n", - "islet\n", - "islets\n", - "isling\n", - "ism\n", - "isms\n", - "isobar\n", - "isobare\n", - "isobares\n", - "isobaric\n", - "isobars\n", - "isobath\n", - "isobaths\n", - "isocheim\n", - "isocheims\n", - "isochime\n", - "isochimes\n", - "isochor\n", - "isochore\n", - "isochores\n", - "isochors\n", - "isochron\n", - "isochrons\n", - "isocline\n", - "isoclines\n", - "isocracies\n", - "isocracy\n", - "isodose\n", - "isogamies\n", - "isogamy\n", - "isogenic\n", - "isogenies\n", - "isogeny\n", - "isogloss\n", - "isoglosses\n", - "isogon\n", - "isogonal\n", - "isogonals\n", - "isogone\n", - "isogones\n", - "isogonic\n", - "isogonics\n", - "isogonies\n", - "isogons\n", - "isogony\n", - "isogram\n", - "isograms\n", - "isograph\n", - "isographs\n", - "isogriv\n", - "isogrivs\n", - "isohel\n", - "isohels\n", - "isohyet\n", - "isohyets\n", - "isolable\n", - "isolate\n", - "isolated\n", - "isolates\n", - "isolating\n", - "isolation\n", - "isolations\n", - "isolator\n", - "isolators\n", - "isolead\n", - "isoleads\n", - "isoline\n", - "isolines\n", - "isolog\n", - "isologs\n", - "isologue\n", - "isologues\n", - "isomer\n", - "isomeric\n", - "isomers\n", - "isometric\n", - "isometrics\n", - "isometries\n", - "isometry\n", - "isomorph\n", - "isomorphs\n", - "isonomic\n", - "isonomies\n", - "isonomy\n", - "isophote\n", - "isophotes\n", - "isopleth\n", - "isopleths\n", - "isopod\n", - "isopodan\n", - "isopodans\n", - "isopods\n", - "isoprene\n", - "isoprenes\n", - "isospin\n", - "isospins\n", - "isospories\n", - "isospory\n", - "isostasies\n", - "isostasy\n", - "isotach\n", - "isotachs\n", - "isothere\n", - "isotheres\n", - "isotherm\n", - "isotherms\n", - "isotone\n", - "isotones\n", - "isotonic\n", - "isotope\n", - "isotopes\n", - "isotopic\n", - "isotopically\n", - "isotopies\n", - "isotopy\n", - "isotropies\n", - "isotropy\n", - "isotype\n", - "isotypes\n", - "isotypic\n", - "isozyme\n", - "isozymes\n", - "isozymic\n", - "issei\n", - "isseis\n", - "issuable\n", - "issuably\n", - "issuance\n", - "issuances\n", - "issuant\n", - "issue\n", - "issued\n", - "issuer\n", - "issuers\n", - "issues\n", - "issuing\n", - "isthmi\n", - "isthmian\n", - "isthmians\n", - "isthmic\n", - "isthmoid\n", - "isthmus\n", - "isthmuses\n", - "istle\n", - "istles\n", - "it\n", - "italic\n", - "italicization\n", - "italicizations\n", - "italicize\n", - "italicized\n", - "italicizes\n", - "italicizing\n", - "italics\n", - "itch\n", - "itched\n", - "itches\n", - "itchier\n", - "itchiest\n", - "itching\n", - "itchings\n", - "itchy\n", - "item\n", - "itemed\n", - "iteming\n", - "itemization\n", - "itemizations\n", - "itemize\n", - "itemized\n", - "itemizer\n", - "itemizers\n", - "itemizes\n", - "itemizing\n", - "items\n", - "iterance\n", - "iterances\n", - "iterant\n", - "iterate\n", - "iterated\n", - "iterates\n", - "iterating\n", - "iteration\n", - "iterations\n", - "iterative\n", - "iterum\n", - "ither\n", - "itinerant\n", - "itinerants\n", - "itinerary\n", - "its\n", - "itself\n", - "ivied\n", - "ivies\n", - "ivories\n", - "ivory\n", - "ivy\n", - "ivylike\n", - "iwis\n", - "ixia\n", - "ixias\n", - "ixodid\n", - "ixodids\n", - "ixtle\n", - "ixtles\n", - "izar\n", - "izars\n", - "izzard\n", - "izzards\n", - "jab\n", - "jabbed\n", - "jabber\n", - "jabbered\n", - "jabberer\n", - "jabberers\n", - "jabbering\n", - "jabbers\n", - "jabbing\n", - "jabiru\n", - "jabirus\n", - "jabot\n", - "jabots\n", - "jabs\n", - "jacal\n", - "jacales\n", - "jacals\n", - "jacamar\n", - "jacamars\n", - "jacana\n", - "jacanas\n", - "jacinth\n", - "jacinthe\n", - "jacinthes\n", - "jacinths\n", - "jack\n", - "jackal\n", - "jackals\n", - "jackaroo\n", - "jackaroos\n", - "jackass\n", - "jackasses\n", - "jackboot\n", - "jackboots\n", - "jackdaw\n", - "jackdaws\n", - "jacked\n", - "jacker\n", - "jackeroo\n", - "jackeroos\n", - "jackers\n", - "jacket\n", - "jacketed\n", - "jacketing\n", - "jackets\n", - "jackfish\n", - "jackfishes\n", - "jackhammer\n", - "jackhammers\n", - "jackies\n", - "jacking\n", - "jackknife\n", - "jackknifed\n", - "jackknifes\n", - "jackknifing\n", - "jackknives\n", - "jackleg\n", - "jacklegs\n", - "jackpot\n", - "jackpots\n", - "jackrabbit\n", - "jackrabbits\n", - "jacks\n", - "jackstay\n", - "jackstays\n", - "jacky\n", - "jacobin\n", - "jacobins\n", - "jacobus\n", - "jacobuses\n", - "jaconet\n", - "jaconets\n", - "jacquard\n", - "jacquards\n", - "jacqueline\n", - "jaculate\n", - "jaculated\n", - "jaculates\n", - "jaculating\n", - "jade\n", - "jaded\n", - "jadedly\n", - "jadeite\n", - "jadeites\n", - "jades\n", - "jading\n", - "jadish\n", - "jadishly\n", - "jaditic\n", - "jaeger\n", - "jaegers\n", - "jag\n", - "jager\n", - "jagers\n", - "jagg\n", - "jaggaries\n", - "jaggary\n", - "jagged\n", - "jaggeder\n", - "jaggedest\n", - "jaggedly\n", - "jagger\n", - "jaggeries\n", - "jaggers\n", - "jaggery\n", - "jaggheries\n", - "jagghery\n", - "jaggier\n", - "jaggiest\n", - "jagging\n", - "jaggs\n", - "jaggy\n", - "jagless\n", - "jagra\n", - "jagras\n", - "jags\n", - "jaguar\n", - "jaguars\n", - "jail\n", - "jailbait\n", - "jailbird\n", - "jailbirds\n", - "jailbreak\n", - "jailbreaks\n", - "jailed\n", - "jailer\n", - "jailers\n", - "jailing\n", - "jailor\n", - "jailors\n", - "jails\n", - "jake\n", - "jakes\n", - "jalap\n", - "jalapic\n", - "jalapin\n", - "jalapins\n", - "jalaps\n", - "jalop\n", - "jalopies\n", - "jaloppies\n", - "jaloppy\n", - "jalops\n", - "jalopy\n", - "jalousie\n", - "jalousies\n", - "jam\n", - "jamb\n", - "jambe\n", - "jambeau\n", - "jambeaux\n", - "jambed\n", - "jambes\n", - "jambing\n", - "jamboree\n", - "jamborees\n", - "jambs\n", - "jammed\n", - "jammer\n", - "jammers\n", - "jamming\n", - "jams\n", - "jane\n", - "janes\n", - "jangle\n", - "jangled\n", - "jangler\n", - "janglers\n", - "jangles\n", - "jangling\n", - "janiform\n", - "janisaries\n", - "janisary\n", - "janitor\n", - "janitorial\n", - "janitors\n", - "janizaries\n", - "janizary\n", - "janty\n", - "japan\n", - "japanize\n", - "japanized\n", - "japanizes\n", - "japanizing\n", - "japanned\n", - "japanner\n", - "japanners\n", - "japanning\n", - "japans\n", - "jape\n", - "japed\n", - "japer\n", - "japeries\n", - "japers\n", - "japery\n", - "japes\n", - "japing\n", - "japingly\n", - "japonica\n", - "japonicas\n", - "jar\n", - "jarful\n", - "jarfuls\n", - "jargon\n", - "jargoned\n", - "jargonel\n", - "jargonels\n", - "jargoning\n", - "jargons\n", - "jargoon\n", - "jargoons\n", - "jarina\n", - "jarinas\n", - "jarl\n", - "jarldom\n", - "jarldoms\n", - "jarls\n", - "jarosite\n", - "jarosites\n", - "jarovize\n", - "jarovized\n", - "jarovizes\n", - "jarovizing\n", - "jarrah\n", - "jarrahs\n", - "jarred\n", - "jarring\n", - "jars\n", - "jarsful\n", - "jarvey\n", - "jarveys\n", - "jasey\n", - "jasmine\n", - "jasmines\n", - "jasper\n", - "jaspers\n", - "jaspery\n", - "jassid\n", - "jassids\n", - "jato\n", - "jatos\n", - "jauk\n", - "jauked\n", - "jauking\n", - "jauks\n", - "jaunce\n", - "jaunced\n", - "jaunces\n", - "jauncing\n", - "jaundice\n", - "jaundiced\n", - "jaundices\n", - "jaundicing\n", - "jaunt\n", - "jaunted\n", - "jauntier\n", - "jauntiest\n", - "jauntily\n", - "jauntiness\n", - "jauntinesses\n", - "jaunting\n", - "jaunts\n", - "jaunty\n", - "jaup\n", - "jauped\n", - "jauping\n", - "jaups\n", - "java\n", - "javas\n", - "javelin\n", - "javelina\n", - "javelinas\n", - "javelined\n", - "javelining\n", - "javelins\n", - "jaw\n", - "jawan\n", - "jawans\n", - "jawbone\n", - "jawboned\n", - "jawbones\n", - "jawboning\n", - "jawed\n", - "jawing\n", - "jawlike\n", - "jawline\n", - "jawlines\n", - "jaws\n", - "jay\n", - "jaybird\n", - "jaybirds\n", - "jaygee\n", - "jaygees\n", - "jays\n", - "jayvee\n", - "jayvees\n", - "jaywalk\n", - "jaywalked\n", - "jaywalker\n", - "jaywalkers\n", - "jaywalking\n", - "jaywalks\n", - "jazz\n", - "jazzed\n", - "jazzer\n", - "jazzers\n", - "jazzes\n", - "jazzier\n", - "jazziest\n", - "jazzily\n", - "jazzing\n", - "jazzman\n", - "jazzmen\n", - "jazzy\n", - "jealous\n", - "jealousies\n", - "jealously\n", - "jealousy\n", - "jean\n", - "jeans\n", - "jeapordize\n", - "jeapordized\n", - "jeapordizes\n", - "jeapordizing\n", - "jeapordous\n", - "jebel\n", - "jebels\n", - "jee\n", - "jeed\n", - "jeeing\n", - "jeep\n", - "jeepers\n", - "jeeps\n", - "jeer\n", - "jeered\n", - "jeerer\n", - "jeerers\n", - "jeering\n", - "jeers\n", - "jees\n", - "jeez\n", - "jefe\n", - "jefes\n", - "jehad\n", - "jehads\n", - "jehu\n", - "jehus\n", - "jejuna\n", - "jejunal\n", - "jejune\n", - "jejunely\n", - "jejunities\n", - "jejunity\n", - "jejunum\n", - "jell\n", - "jelled\n", - "jellied\n", - "jellies\n", - "jellified\n", - "jellifies\n", - "jellify\n", - "jellifying\n", - "jelling\n", - "jells\n", - "jelly\n", - "jellyfish\n", - "jellyfishes\n", - "jellying\n", - "jelutong\n", - "jelutongs\n", - "jemadar\n", - "jemadars\n", - "jemidar\n", - "jemidars\n", - "jemmied\n", - "jemmies\n", - "jemmy\n", - "jemmying\n", - "jennet\n", - "jennets\n", - "jennies\n", - "jenny\n", - "jeopard\n", - "jeoparded\n", - "jeopardies\n", - "jeoparding\n", - "jeopards\n", - "jeopardy\n", - "jeopordize\n", - "jeopordized\n", - "jeopordizes\n", - "jeopordizing\n", - "jerboa\n", - "jerboas\n", - "jereed\n", - "jereeds\n", - "jeremiad\n", - "jeremiads\n", - "jerid\n", - "jerids\n", - "jerk\n", - "jerked\n", - "jerker\n", - "jerkers\n", - "jerkier\n", - "jerkies\n", - "jerkiest\n", - "jerkily\n", - "jerkin\n", - "jerking\n", - "jerkins\n", - "jerks\n", - "jerky\n", - "jeroboam\n", - "jeroboams\n", - "jerreed\n", - "jerreeds\n", - "jerrican\n", - "jerricans\n", - "jerrid\n", - "jerrids\n", - "jerries\n", - "jerry\n", - "jerrycan\n", - "jerrycans\n", - "jersey\n", - "jerseyed\n", - "jerseys\n", - "jess\n", - "jessant\n", - "jesse\n", - "jessed\n", - "jesses\n", - "jessing\n", - "jest\n", - "jested\n", - "jester\n", - "jesters\n", - "jestful\n", - "jesting\n", - "jestings\n", - "jests\n", - "jesuit\n", - "jesuitic\n", - "jesuitries\n", - "jesuitry\n", - "jesuits\n", - "jet\n", - "jetbead\n", - "jetbeads\n", - "jete\n", - "jetes\n", - "jetliner\n", - "jetliners\n", - "jeton\n", - "jetons\n", - "jetport\n", - "jetports\n", - "jets\n", - "jetsam\n", - "jetsams\n", - "jetsom\n", - "jetsoms\n", - "jetted\n", - "jettied\n", - "jetties\n", - "jetting\n", - "jettison\n", - "jettisoned\n", - "jettisoning\n", - "jettisons\n", - "jetton\n", - "jettons\n", - "jetty\n", - "jettying\n", - "jeu\n", - "jeux\n", - "jew\n", - "jewed\n", - "jewel\n", - "jeweled\n", - "jeweler\n", - "jewelers\n", - "jeweling\n", - "jewelled\n", - "jeweller\n", - "jewellers\n", - "jewelling\n", - "jewelries\n", - "jewelry\n", - "jewels\n", - "jewfish\n", - "jewfishes\n", - "jewing\n", - "jews\n", - "jezail\n", - "jezails\n", - "jezebel\n", - "jezebels\n", - "jib\n", - "jibb\n", - "jibbed\n", - "jibber\n", - "jibbers\n", - "jibbing\n", - "jibboom\n", - "jibbooms\n", - "jibbs\n", - "jibe\n", - "jibed\n", - "jiber\n", - "jibers\n", - "jibes\n", - "jibing\n", - "jibingly\n", - "jibs\n", - "jiff\n", - "jiffies\n", - "jiffs\n", - "jiffy\n", - "jig\n", - "jigaboo\n", - "jigaboos\n", - "jigged\n", - "jigger\n", - "jiggered\n", - "jiggers\n", - "jigging\n", - "jiggle\n", - "jiggled\n", - "jiggles\n", - "jigglier\n", - "jiggliest\n", - "jiggling\n", - "jiggly\n", - "jigs\n", - "jigsaw\n", - "jigsawed\n", - "jigsawing\n", - "jigsawn\n", - "jigsaws\n", - "jihad\n", - "jihads\n", - "jill\n", - "jillion\n", - "jillions\n", - "jills\n", - "jilt\n", - "jilted\n", - "jilter\n", - "jilters\n", - "jilting\n", - "jilts\n", - "jiminy\n", - "jimjams\n", - "jimmied\n", - "jimmies\n", - "jimminy\n", - "jimmy\n", - "jimmying\n", - "jimp\n", - "jimper\n", - "jimpest\n", - "jimply\n", - "jimpy\n", - "jimsonweed\n", - "jimsonweeds\n", - "jin\n", - "jingal\n", - "jingall\n", - "jingalls\n", - "jingals\n", - "jingko\n", - "jingkoes\n", - "jingle\n", - "jingled\n", - "jingler\n", - "jinglers\n", - "jingles\n", - "jinglier\n", - "jingliest\n", - "jingling\n", - "jingly\n", - "jingo\n", - "jingoes\n", - "jingoish\n", - "jingoism\n", - "jingoisms\n", - "jingoist\n", - "jingoistic\n", - "jingoists\n", - "jink\n", - "jinked\n", - "jinker\n", - "jinkers\n", - "jinking\n", - "jinks\n", - "jinn\n", - "jinnee\n", - "jinni\n", - "jinns\n", - "jins\n", - "jinx\n", - "jinxed\n", - "jinxes\n", - "jinxing\n", - "jipijapa\n", - "jipijapas\n", - "jitney\n", - "jitneys\n", - "jitter\n", - "jittered\n", - "jittering\n", - "jitters\n", - "jittery\n", - "jiujitsu\n", - "jiujitsus\n", - "jiujutsu\n", - "jiujutsus\n", - "jive\n", - "jived\n", - "jives\n", - "jiving\n", - "jnana\n", - "jnanas\n", - "jo\n", - "joannes\n", - "job\n", - "jobbed\n", - "jobber\n", - "jobberies\n", - "jobbers\n", - "jobbery\n", - "jobbing\n", - "jobholder\n", - "jobholders\n", - "jobless\n", - "jobs\n", - "jock\n", - "jockey\n", - "jockeyed\n", - "jockeying\n", - "jockeys\n", - "jocko\n", - "jockos\n", - "jocks\n", - "jocose\n", - "jocosely\n", - "jocosities\n", - "jocosity\n", - "jocular\n", - "jocund\n", - "jocundly\n", - "jodhpur\n", - "jodhpurs\n", - "joe\n", - "joes\n", - "joey\n", - "joeys\n", - "jog\n", - "jogged\n", - "jogger\n", - "joggers\n", - "jogging\n", - "joggle\n", - "joggled\n", - "joggler\n", - "jogglers\n", - "joggles\n", - "joggling\n", - "jogs\n", - "johannes\n", - "john\n", - "johnboat\n", - "johnboats\n", - "johnnies\n", - "johnny\n", - "johns\n", - "join\n", - "joinable\n", - "joinder\n", - "joinders\n", - "joined\n", - "joiner\n", - "joineries\n", - "joiners\n", - "joinery\n", - "joining\n", - "joinings\n", - "joins\n", - "joint\n", - "jointed\n", - "jointer\n", - "jointers\n", - "jointing\n", - "jointly\n", - "joints\n", - "jointure\n", - "jointured\n", - "jointures\n", - "jointuring\n", - "joist\n", - "joisted\n", - "joisting\n", - "joists\n", - "jojoba\n", - "jojobas\n", - "joke\n", - "joked\n", - "joker\n", - "jokers\n", - "jokes\n", - "jokester\n", - "jokesters\n", - "joking\n", - "jokingly\n", - "jole\n", - "joles\n", - "jollied\n", - "jollier\n", - "jollies\n", - "jolliest\n", - "jollified\n", - "jollifies\n", - "jollify\n", - "jollifying\n", - "jollily\n", - "jollities\n", - "jollity\n", - "jolly\n", - "jollying\n", - "jolt\n", - "jolted\n", - "jolter\n", - "jolters\n", - "joltier\n", - "joltiest\n", - "joltily\n", - "jolting\n", - "jolts\n", - "jolty\n", - "jongleur\n", - "jongleurs\n", - "jonquil\n", - "jonquils\n", - "joram\n", - "jorams\n", - "jordan\n", - "jordans\n", - "jorum\n", - "jorums\n", - "joseph\n", - "josephs\n", - "josh\n", - "joshed\n", - "josher\n", - "joshers\n", - "joshes\n", - "joshing\n", - "joss\n", - "josses\n", - "jostle\n", - "jostled\n", - "jostler\n", - "jostlers\n", - "jostles\n", - "jostling\n", - "jot\n", - "jota\n", - "jotas\n", - "jots\n", - "jotted\n", - "jotting\n", - "jottings\n", - "jotty\n", - "jouk\n", - "jouked\n", - "jouking\n", - "jouks\n", - "joule\n", - "joules\n", - "jounce\n", - "jounced\n", - "jounces\n", - "jouncier\n", - "jounciest\n", - "jouncing\n", - "jouncy\n", - "journal\n", - "journalism\n", - "journalisms\n", - "journalist\n", - "journalistic\n", - "journalists\n", - "journals\n", - "journey\n", - "journeyed\n", - "journeying\n", - "journeyman\n", - "journeymen\n", - "journeys\n", - "joust\n", - "jousted\n", - "jouster\n", - "jousters\n", - "jousting\n", - "jousts\n", - "jovial\n", - "jovially\n", - "jow\n", - "jowed\n", - "jowing\n", - "jowl\n", - "jowled\n", - "jowlier\n", - "jowliest\n", - "jowls\n", - "jowly\n", - "jows\n", - "joy\n", - "joyance\n", - "joyances\n", - "joyed\n", - "joyful\n", - "joyfuller\n", - "joyfullest\n", - "joyfully\n", - "joying\n", - "joyless\n", - "joyous\n", - "joyously\n", - "joyousness\n", - "joyousnesses\n", - "joypop\n", - "joypopped\n", - "joypopping\n", - "joypops\n", - "joyride\n", - "joyrider\n", - "joyriders\n", - "joyrides\n", - "joyriding\n", - "joyridings\n", - "joys\n", - "joystick\n", - "joysticks\n", - "juba\n", - "jubas\n", - "jubbah\n", - "jubbahs\n", - "jube\n", - "jubes\n", - "jubhah\n", - "jubhahs\n", - "jubilant\n", - "jubilate\n", - "jubilated\n", - "jubilates\n", - "jubilating\n", - "jubile\n", - "jubilee\n", - "jubilees\n", - "jubiles\n", - "jublilantly\n", - "jublilation\n", - "jublilations\n", - "judas\n", - "judases\n", - "judder\n", - "juddered\n", - "juddering\n", - "judders\n", - "judge\n", - "judged\n", - "judgement\n", - "judgements\n", - "judger\n", - "judgers\n", - "judges\n", - "judgeship\n", - "judgeships\n", - "judging\n", - "judgment\n", - "judgments\n", - "judicature\n", - "judicatures\n", - "judicial\n", - "judicially\n", - "judiciaries\n", - "judiciary\n", - "judicious\n", - "judiciously\n", - "judiciousness\n", - "judiciousnesses\n", - "judo\n", - "judoist\n", - "judoists\n", - "judoka\n", - "judokas\n", - "judos\n", - "jug\n", - "juga\n", - "jugal\n", - "jugate\n", - "jugful\n", - "jugfuls\n", - "jugged\n", - "juggernaut\n", - "juggernauts\n", - "jugging\n", - "juggle\n", - "juggled\n", - "juggler\n", - "juggleries\n", - "jugglers\n", - "jugglery\n", - "juggles\n", - "juggling\n", - "jugglings\n", - "jughead\n", - "jugheads\n", - "jugs\n", - "jugsful\n", - "jugula\n", - "jugular\n", - "jugulars\n", - "jugulate\n", - "jugulated\n", - "jugulates\n", - "jugulating\n", - "jugulum\n", - "jugum\n", - "jugums\n", - "juice\n", - "juiced\n", - "juicer\n", - "juicers\n", - "juices\n", - "juicier\n", - "juiciest\n", - "juicily\n", - "juiciness\n", - "juicinesses\n", - "juicing\n", - "juicy\n", - "jujitsu\n", - "jujitsus\n", - "juju\n", - "jujube\n", - "jujubes\n", - "jujuism\n", - "jujuisms\n", - "jujuist\n", - "jujuists\n", - "jujus\n", - "jujutsu\n", - "jujutsus\n", - "juke\n", - "jukebox\n", - "jukeboxes\n", - "juked\n", - "jukes\n", - "juking\n", - "julep\n", - "juleps\n", - "julienne\n", - "juliennes\n", - "jumble\n", - "jumbled\n", - "jumbler\n", - "jumblers\n", - "jumbles\n", - "jumbling\n", - "jumbo\n", - "jumbos\n", - "jumbuck\n", - "jumbucks\n", - "jump\n", - "jumped\n", - "jumper\n", - "jumpers\n", - "jumpier\n", - "jumpiest\n", - "jumpily\n", - "jumping\n", - "jumpoff\n", - "jumpoffs\n", - "jumps\n", - "jumpy\n", - "jun\n", - "junco\n", - "juncoes\n", - "juncos\n", - "junction\n", - "junctions\n", - "juncture\n", - "junctures\n", - "jungle\n", - "jungles\n", - "junglier\n", - "jungliest\n", - "jungly\n", - "junior\n", - "juniors\n", - "juniper\n", - "junipers\n", - "junk\n", - "junked\n", - "junker\n", - "junkers\n", - "junket\n", - "junketed\n", - "junketer\n", - "junketers\n", - "junketing\n", - "junkets\n", - "junkie\n", - "junkier\n", - "junkies\n", - "junkiest\n", - "junking\n", - "junkman\n", - "junkmen\n", - "junks\n", - "junky\n", - "junkyard\n", - "junkyards\n", - "junta\n", - "juntas\n", - "junto\n", - "juntos\n", - "jupe\n", - "jupes\n", - "jupon\n", - "jupons\n", - "jura\n", - "jural\n", - "jurally\n", - "jurant\n", - "jurants\n", - "jurat\n", - "juratory\n", - "jurats\n", - "jurel\n", - "jurels\n", - "juridic\n", - "juries\n", - "jurisdiction\n", - "jurisdictional\n", - "jurisdictions\n", - "jurisprudence\n", - "jurisprudences\n", - "jurist\n", - "juristic\n", - "jurists\n", - "juror\n", - "jurors\n", - "jury\n", - "juryman\n", - "jurymen\n", - "jus\n", - "jussive\n", - "jussives\n", - "just\n", - "justed\n", - "juster\n", - "justers\n", - "justest\n", - "justice\n", - "justices\n", - "justifiable\n", - "justification\n", - "justifications\n", - "justified\n", - "justifies\n", - "justify\n", - "justifying\n", - "justing\n", - "justle\n", - "justled\n", - "justles\n", - "justling\n", - "justly\n", - "justness\n", - "justnesses\n", - "justs\n", - "jut\n", - "jute\n", - "jutes\n", - "juts\n", - "jutted\n", - "juttied\n", - "jutties\n", - "jutting\n", - "jutty\n", - "juttying\n", - "juvenal\n", - "juvenals\n", - "juvenile\n", - "juveniles\n", - "juxtapose\n", - "juxtaposed\n", - "juxtaposes\n", - "juxtaposing\n", - "juxtaposition\n", - "juxtapositions\n", - "ka\n", - "kaas\n", - "kab\n", - "kabab\n", - "kababs\n", - "kabaka\n", - "kabakas\n", - "kabala\n", - "kabalas\n", - "kabar\n", - "kabars\n", - "kabaya\n", - "kabayas\n", - "kabbala\n", - "kabbalah\n", - "kabbalahs\n", - "kabbalas\n", - "kabeljou\n", - "kabeljous\n", - "kabiki\n", - "kabikis\n", - "kabob\n", - "kabobs\n", - "kabs\n", - "kabuki\n", - "kabukis\n", - "kachina\n", - "kachinas\n", - "kaddish\n", - "kaddishim\n", - "kadi\n", - "kadis\n", - "kae\n", - "kaes\n", - "kaffir\n", - "kaffirs\n", - "kaffiyeh\n", - "kaffiyehs\n", - "kafir\n", - "kafirs\n", - "kaftan\n", - "kaftans\n", - "kagu\n", - "kagus\n", - "kahuna\n", - "kahunas\n", - "kaiak\n", - "kaiaks\n", - "kaif\n", - "kaifs\n", - "kail\n", - "kails\n", - "kailyard\n", - "kailyards\n", - "kain\n", - "kainit\n", - "kainite\n", - "kainites\n", - "kainits\n", - "kains\n", - "kaiser\n", - "kaiserin\n", - "kaiserins\n", - "kaisers\n", - "kajeput\n", - "kajeputs\n", - "kaka\n", - "kakapo\n", - "kakapos\n", - "kakas\n", - "kakemono\n", - "kakemonos\n", - "kaki\n", - "kakis\n", - "kalam\n", - "kalamazoo\n", - "kalams\n", - "kale\n", - "kaleidoscope\n", - "kaleidoscopes\n", - "kaleidoscopic\n", - "kaleidoscopical\n", - "kaleidoscopically\n", - "kalends\n", - "kales\n", - "kalewife\n", - "kalewives\n", - "kaleyard\n", - "kaleyards\n", - "kalian\n", - "kalians\n", - "kalif\n", - "kalifate\n", - "kalifates\n", - "kalifs\n", - "kalimba\n", - "kalimbas\n", - "kaliph\n", - "kaliphs\n", - "kalium\n", - "kaliums\n", - "kallidin\n", - "kallidins\n", - "kalmia\n", - "kalmias\n", - "kalong\n", - "kalongs\n", - "kalpa\n", - "kalpak\n", - "kalpaks\n", - "kalpas\n", - "kalyptra\n", - "kalyptras\n", - "kamaaina\n", - "kamaainas\n", - "kamacite\n", - "kamacites\n", - "kamala\n", - "kamalas\n", - "kame\n", - "kames\n", - "kami\n", - "kamik\n", - "kamikaze\n", - "kamikazes\n", - "kamiks\n", - "kampong\n", - "kampongs\n", - "kamseen\n", - "kamseens\n", - "kamsin\n", - "kamsins\n", - "kana\n", - "kanas\n", - "kane\n", - "kanes\n", - "kangaroo\n", - "kangaroos\n", - "kanji\n", - "kanjis\n", - "kantar\n", - "kantars\n", - "kantele\n", - "kanteles\n", - "kaoliang\n", - "kaoliangs\n", - "kaolin\n", - "kaoline\n", - "kaolines\n", - "kaolinic\n", - "kaolins\n", - "kaon\n", - "kaons\n", - "kapa\n", - "kapas\n", - "kaph\n", - "kaphs\n", - "kapok\n", - "kapoks\n", - "kappa\n", - "kappas\n", - "kaput\n", - "kaputt\n", - "karakul\n", - "karakuls\n", - "karat\n", - "karate\n", - "karates\n", - "karats\n", - "karma\n", - "karmas\n", - "karmic\n", - "karn\n", - "karnofsky\n", - "karns\n", - "karoo\n", - "karoos\n", - "kaross\n", - "karosses\n", - "karroo\n", - "karroos\n", - "karst\n", - "karstic\n", - "karsts\n", - "kart\n", - "karting\n", - "kartings\n", - "karts\n", - "karyotin\n", - "karyotins\n", - "kas\n", - "kasha\n", - "kashas\n", - "kasher\n", - "kashered\n", - "kashering\n", - "kashers\n", - "kashmir\n", - "kashmirs\n", - "kashrut\n", - "kashruth\n", - "kashruths\n", - "kashruts\n", - "kat\n", - "katakana\n", - "katakanas\n", - "kathodal\n", - "kathode\n", - "kathodes\n", - "kathodic\n", - "kation\n", - "kations\n", - "kats\n", - "katydid\n", - "katydids\n", - "kauri\n", - "kauries\n", - "kauris\n", - "kaury\n", - "kava\n", - "kavas\n", - "kavass\n", - "kavasses\n", - "kay\n", - "kayak\n", - "kayaker\n", - "kayakers\n", - "kayaks\n", - "kayles\n", - "kayo\n", - "kayoed\n", - "kayoes\n", - "kayoing\n", - "kayos\n", - "kays\n", - "kazoo\n", - "kazoos\n", - "kea\n", - "keas\n", - "kebab\n", - "kebabs\n", - "kebar\n", - "kebars\n", - "kebbie\n", - "kebbies\n", - "kebbock\n", - "kebbocks\n", - "kebbuck\n", - "kebbucks\n", - "keblah\n", - "keblahs\n", - "kebob\n", - "kebobs\n", - "keck\n", - "kecked\n", - "kecking\n", - "keckle\n", - "keckled\n", - "keckles\n", - "keckling\n", - "kecks\n", - "keddah\n", - "keddahs\n", - "kedge\n", - "kedged\n", - "kedgeree\n", - "kedgerees\n", - "kedges\n", - "kedging\n", - "keef\n", - "keefs\n", - "keek\n", - "keeked\n", - "keeking\n", - "keeks\n", - "keel\n", - "keelage\n", - "keelages\n", - "keelboat\n", - "keelboats\n", - "keeled\n", - "keelhale\n", - "keelhaled\n", - "keelhales\n", - "keelhaling\n", - "keelhaul\n", - "keelhauled\n", - "keelhauling\n", - "keelhauls\n", - "keeling\n", - "keelless\n", - "keels\n", - "keelson\n", - "keelsons\n", - "keen\n", - "keened\n", - "keener\n", - "keeners\n", - "keenest\n", - "keening\n", - "keenly\n", - "keenness\n", - "keennesses\n", - "keens\n", - "keep\n", - "keepable\n", - "keeper\n", - "keepers\n", - "keeping\n", - "keepings\n", - "keeps\n", - "keepsake\n", - "keepsakes\n", - "keeshond\n", - "keeshonden\n", - "keeshonds\n", - "keester\n", - "keesters\n", - "keet\n", - "keets\n", - "keeve\n", - "keeves\n", - "kef\n", - "kefir\n", - "kefirs\n", - "kefs\n", - "keg\n", - "kegeler\n", - "kegelers\n", - "kegler\n", - "keglers\n", - "kegling\n", - "keglings\n", - "kegs\n", - "keir\n", - "keirs\n", - "keister\n", - "keisters\n", - "keitloa\n", - "keitloas\n", - "keloid\n", - "keloidal\n", - "keloids\n", - "kelp\n", - "kelped\n", - "kelpie\n", - "kelpies\n", - "kelping\n", - "kelps\n", - "kelpy\n", - "kelson\n", - "kelsons\n", - "kelter\n", - "kelters\n", - "kelvin\n", - "kelvins\n", - "kemp\n", - "kemps\n", - "kempt\n", - "ken\n", - "kenaf\n", - "kenafs\n", - "kench\n", - "kenches\n", - "kendo\n", - "kendos\n", - "kenned\n", - "kennel\n", - "kenneled\n", - "kenneling\n", - "kennelled\n", - "kennelling\n", - "kennels\n", - "kenning\n", - "kennings\n", - "keno\n", - "kenos\n", - "kenosis\n", - "kenosises\n", - "kenotic\n", - "kenotron\n", - "kenotrons\n", - "kens\n", - "kent\n", - "kep\n", - "kephalin\n", - "kephalins\n", - "kepi\n", - "kepis\n", - "kepped\n", - "keppen\n", - "kepping\n", - "keps\n", - "kept\n", - "keramic\n", - "keramics\n", - "keratin\n", - "keratins\n", - "keratoid\n", - "keratoma\n", - "keratomas\n", - "keratomata\n", - "keratose\n", - "kerb\n", - "kerbed\n", - "kerbing\n", - "kerbs\n", - "kerchief\n", - "kerchiefs\n", - "kerchieves\n", - "kerchoo\n", - "kerf\n", - "kerfed\n", - "kerfing\n", - "kerfs\n", - "kermes\n", - "kermess\n", - "kermesses\n", - "kermis\n", - "kermises\n", - "kern\n", - "kerne\n", - "kerned\n", - "kernel\n", - "kerneled\n", - "kerneling\n", - "kernelled\n", - "kernelling\n", - "kernels\n", - "kernes\n", - "kerning\n", - "kernite\n", - "kernites\n", - "kerns\n", - "kerogen\n", - "kerogens\n", - "kerosene\n", - "kerosenes\n", - "kerosine\n", - "kerosines\n", - "kerplunk\n", - "kerria\n", - "kerrias\n", - "kerries\n", - "kerry\n", - "kersey\n", - "kerseys\n", - "kerygma\n", - "kerygmata\n", - "kestrel\n", - "kestrels\n", - "ketch\n", - "ketches\n", - "ketchup\n", - "ketchups\n", - "ketene\n", - "ketenes\n", - "keto\n", - "ketol\n", - "ketone\n", - "ketones\n", - "ketonic\n", - "ketose\n", - "ketoses\n", - "ketosis\n", - "ketotic\n", - "kettle\n", - "kettledrum\n", - "kettledrums\n", - "kettles\n", - "kevel\n", - "kevels\n", - "kevil\n", - "kevils\n", - "kex\n", - "kexes\n", - "key\n", - "keyboard\n", - "keyboarded\n", - "keyboarding\n", - "keyboards\n", - "keyed\n", - "keyer\n", - "keyhole\n", - "keyholes\n", - "keying\n", - "keyless\n", - "keynote\n", - "keynoted\n", - "keynoter\n", - "keynoters\n", - "keynotes\n", - "keynoting\n", - "keypunch\n", - "keypunched\n", - "keypuncher\n", - "keypunchers\n", - "keypunches\n", - "keypunching\n", - "keys\n", - "keyset\n", - "keysets\n", - "keyster\n", - "keysters\n", - "keystone\n", - "keystones\n", - "keyway\n", - "keyways\n", - "keyword\n", - "keywords\n", - "khaddar\n", - "khaddars\n", - "khadi\n", - "khadis\n", - "khaki\n", - "khakis\n", - "khalif\n", - "khalifa\n", - "khalifas\n", - "khalifs\n", - "khamseen\n", - "khamseens\n", - "khamsin\n", - "khamsins\n", - "khan\n", - "khanate\n", - "khanates\n", - "khans\n", - "khat\n", - "khats\n", - "khazen\n", - "khazenim\n", - "khazens\n", - "kheda\n", - "khedah\n", - "khedahs\n", - "khedas\n", - "khedival\n", - "khedive\n", - "khedives\n", - "khi\n", - "khirkah\n", - "khirkahs\n", - "khis\n", - "kiang\n", - "kiangs\n", - "kiaugh\n", - "kiaughs\n", - "kibble\n", - "kibbled\n", - "kibbles\n", - "kibbling\n", - "kibbutz\n", - "kibbutzim\n", - "kibe\n", - "kibes\n", - "kibitz\n", - "kibitzed\n", - "kibitzer\n", - "kibitzers\n", - "kibitzes\n", - "kibitzing\n", - "kibla\n", - "kiblah\n", - "kiblahs\n", - "kiblas\n", - "kibosh\n", - "kiboshed\n", - "kiboshes\n", - "kiboshing\n", - "kick\n", - "kickback\n", - "kickbacks\n", - "kicked\n", - "kicker\n", - "kickers\n", - "kicking\n", - "kickoff\n", - "kickoffs\n", - "kicks\n", - "kickshaw\n", - "kickshaws\n", - "kickup\n", - "kickups\n", - "kid\n", - "kidded\n", - "kidder\n", - "kidders\n", - "kiddie\n", - "kiddies\n", - "kidding\n", - "kiddingly\n", - "kiddish\n", - "kiddo\n", - "kiddoes\n", - "kiddos\n", - "kiddush\n", - "kiddushes\n", - "kiddy\n", - "kidlike\n", - "kidnap\n", - "kidnaped\n", - "kidnaper\n", - "kidnapers\n", - "kidnaping\n", - "kidnapped\n", - "kidnapper\n", - "kidnappers\n", - "kidnapping\n", - "kidnaps\n", - "kidney\n", - "kidneys\n", - "kids\n", - "kidskin\n", - "kidskins\n", - "kief\n", - "kiefs\n", - "kielbasa\n", - "kielbasas\n", - "kielbasy\n", - "kier\n", - "kiers\n", - "kiester\n", - "kiesters\n", - "kif\n", - "kifs\n", - "kike\n", - "kikes\n", - "kilim\n", - "kilims\n", - "kill\n", - "killdee\n", - "killdeer\n", - "killdeers\n", - "killdees\n", - "killed\n", - "killer\n", - "killers\n", - "killick\n", - "killicks\n", - "killing\n", - "killings\n", - "killjoy\n", - "killjoys\n", - "killock\n", - "killocks\n", - "kills\n", - "kiln\n", - "kilned\n", - "kilning\n", - "kilns\n", - "kilo\n", - "kilobar\n", - "kilobars\n", - "kilobit\n", - "kilobits\n", - "kilocycle\n", - "kilocycles\n", - "kilogram\n", - "kilograms\n", - "kilohertz\n", - "kilometer\n", - "kilometers\n", - "kilomole\n", - "kilomoles\n", - "kilorad\n", - "kilorads\n", - "kilos\n", - "kiloton\n", - "kilotons\n", - "kilovolt\n", - "kilovolts\n", - "kilowatt\n", - "kilowatts\n", - "kilt\n", - "kilted\n", - "kilter\n", - "kilters\n", - "kiltie\n", - "kilties\n", - "kilting\n", - "kiltings\n", - "kilts\n", - "kilty\n", - "kimono\n", - "kimonoed\n", - "kimonos\n", - "kin\n", - "kinase\n", - "kinases\n", - "kind\n", - "kinder\n", - "kindergarten\n", - "kindergartens\n", - "kindergartner\n", - "kindergartners\n", - "kindest\n", - "kindhearted\n", - "kindle\n", - "kindled\n", - "kindler\n", - "kindlers\n", - "kindles\n", - "kindless\n", - "kindlier\n", - "kindliest\n", - "kindliness\n", - "kindlinesses\n", - "kindling\n", - "kindlings\n", - "kindly\n", - "kindness\n", - "kindnesses\n", - "kindred\n", - "kindreds\n", - "kinds\n", - "kine\n", - "kinema\n", - "kinemas\n", - "kines\n", - "kineses\n", - "kinesics\n", - "kinesis\n", - "kinetic\n", - "kinetics\n", - "kinetin\n", - "kinetins\n", - "kinfolk\n", - "kinfolks\n", - "king\n", - "kingbird\n", - "kingbirds\n", - "kingbolt\n", - "kingbolts\n", - "kingcup\n", - "kingcups\n", - "kingdom\n", - "kingdoms\n", - "kinged\n", - "kingfish\n", - "kingfisher\n", - "kingfishers\n", - "kingfishes\n", - "kinghood\n", - "kinghoods\n", - "kinging\n", - "kingless\n", - "kinglet\n", - "kinglets\n", - "kinglier\n", - "kingliest\n", - "kinglike\n", - "kingly\n", - "kingpin\n", - "kingpins\n", - "kingpost\n", - "kingposts\n", - "kings\n", - "kingship\n", - "kingships\n", - "kingside\n", - "kingsides\n", - "kingwood\n", - "kingwoods\n", - "kinin\n", - "kinins\n", - "kink\n", - "kinkajou\n", - "kinkajous\n", - "kinked\n", - "kinkier\n", - "kinkiest\n", - "kinkily\n", - "kinking\n", - "kinks\n", - "kinky\n", - "kino\n", - "kinos\n", - "kins\n", - "kinsfolk\n", - "kinship\n", - "kinships\n", - "kinsman\n", - "kinsmen\n", - "kinswoman\n", - "kinswomen\n", - "kiosk\n", - "kiosks\n", - "kip\n", - "kipped\n", - "kippen\n", - "kipper\n", - "kippered\n", - "kippering\n", - "kippers\n", - "kipping\n", - "kips\n", - "kipskin\n", - "kipskins\n", - "kirigami\n", - "kirigamis\n", - "kirk\n", - "kirkman\n", - "kirkmen\n", - "kirks\n", - "kirmess\n", - "kirmesses\n", - "kirn\n", - "kirned\n", - "kirning\n", - "kirns\n", - "kirsch\n", - "kirsches\n", - "kirtle\n", - "kirtled\n", - "kirtles\n", - "kishka\n", - "kishkas\n", - "kishke\n", - "kishkes\n", - "kismat\n", - "kismats\n", - "kismet\n", - "kismetic\n", - "kismets\n", - "kiss\n", - "kissable\n", - "kissably\n", - "kissed\n", - "kisser\n", - "kissers\n", - "kisses\n", - "kissing\n", - "kist\n", - "kistful\n", - "kistfuls\n", - "kists\n", - "kit\n", - "kitchen\n", - "kitchens\n", - "kite\n", - "kited\n", - "kiter\n", - "kiters\n", - "kites\n", - "kith\n", - "kithara\n", - "kitharas\n", - "kithe\n", - "kithed\n", - "kithes\n", - "kithing\n", - "kiths\n", - "kiting\n", - "kitling\n", - "kitlings\n", - "kits\n", - "kitsch\n", - "kitsches\n", - "kitschy\n", - "kitted\n", - "kittel\n", - "kitten\n", - "kittened\n", - "kittening\n", - "kittenish\n", - "kittens\n", - "kitties\n", - "kitting\n", - "kittle\n", - "kittled\n", - "kittler\n", - "kittles\n", - "kittlest\n", - "kittling\n", - "kitty\n", - "kiva\n", - "kivas\n", - "kiwi\n", - "kiwis\n", - "klatch\n", - "klatches\n", - "klatsch\n", - "klatsches\n", - "klavern\n", - "klaverns\n", - "klaxon\n", - "klaxons\n", - "kleagle\n", - "kleagles\n", - "kleig\n", - "klepht\n", - "klephtic\n", - "klephts\n", - "kleptomania\n", - "kleptomaniac\n", - "kleptomaniacs\n", - "kleptomanias\n", - "klieg\n", - "klong\n", - "klongs\n", - "kloof\n", - "kloofs\n", - "kludge\n", - "kludges\n", - "klutz\n", - "klutzes\n", - "klutzier\n", - "klutziest\n", - "klutzy\n", - "klystron\n", - "klystrons\n", - "knack\n", - "knacked\n", - "knacker\n", - "knackeries\n", - "knackers\n", - "knackery\n", - "knacking\n", - "knacks\n", - "knap\n", - "knapped\n", - "knapper\n", - "knappers\n", - "knapping\n", - "knaps\n", - "knapsack\n", - "knapsacks\n", - "knapweed\n", - "knapweeds\n", - "knar\n", - "knarred\n", - "knarry\n", - "knars\n", - "knave\n", - "knaveries\n", - "knavery\n", - "knaves\n", - "knavish\n", - "knawel\n", - "knawels\n", - "knead\n", - "kneaded\n", - "kneader\n", - "kneaders\n", - "kneading\n", - "kneads\n", - "knee\n", - "kneecap\n", - "kneecaps\n", - "kneed\n", - "kneehole\n", - "kneeholes\n", - "kneeing\n", - "kneel\n", - "kneeled\n", - "kneeler\n", - "kneelers\n", - "kneeling\n", - "kneels\n", - "kneepad\n", - "kneepads\n", - "kneepan\n", - "kneepans\n", - "knees\n", - "knell\n", - "knelled\n", - "knelling\n", - "knells\n", - "knelt\n", - "knew\n", - "knickers\n", - "knickknack\n", - "knickknacks\n", - "knife\n", - "knifed\n", - "knifer\n", - "knifers\n", - "knifes\n", - "knifing\n", - "knight\n", - "knighted\n", - "knighthood\n", - "knighthoods\n", - "knighting\n", - "knightly\n", - "knights\n", - "knish\n", - "knishes\n", - "knit\n", - "knits\n", - "knitted\n", - "knitter\n", - "knitters\n", - "knitting\n", - "knittings\n", - "knitwear\n", - "knitwears\n", - "knives\n", - "knob\n", - "knobbed\n", - "knobbier\n", - "knobbiest\n", - "knobby\n", - "knoblike\n", - "knobs\n", - "knock\n", - "knocked\n", - "knocker\n", - "knockers\n", - "knocking\n", - "knockoff\n", - "knockoffs\n", - "knockout\n", - "knockouts\n", - "knocks\n", - "knockwurst\n", - "knockwursts\n", - "knoll\n", - "knolled\n", - "knoller\n", - "knollers\n", - "knolling\n", - "knolls\n", - "knolly\n", - "knop\n", - "knopped\n", - "knops\n", - "knosp\n", - "knosps\n", - "knot\n", - "knothole\n", - "knotholes\n", - "knotless\n", - "knotlike\n", - "knots\n", - "knotted\n", - "knotter\n", - "knotters\n", - "knottier\n", - "knottiest\n", - "knottily\n", - "knotting\n", - "knotty\n", - "knotweed\n", - "knotweeds\n", - "knout\n", - "knouted\n", - "knouting\n", - "knouts\n", - "know\n", - "knowable\n", - "knower\n", - "knowers\n", - "knowing\n", - "knowinger\n", - "knowingest\n", - "knowings\n", - "knowledge\n", - "knowledgeable\n", - "knowledges\n", - "known\n", - "knowns\n", - "knows\n", - "knuckle\n", - "knucklebone\n", - "knucklebones\n", - "knuckled\n", - "knuckler\n", - "knucklers\n", - "knuckles\n", - "knucklier\n", - "knuckliest\n", - "knuckling\n", - "knuckly\n", - "knur\n", - "knurl\n", - "knurled\n", - "knurlier\n", - "knurliest\n", - "knurling\n", - "knurls\n", - "knurly\n", - "knurs\n", - "koa\n", - "koala\n", - "koalas\n", - "koan\n", - "koans\n", - "koas\n", - "kobold\n", - "kobolds\n", - "koel\n", - "koels\n", - "kohl\n", - "kohlrabi\n", - "kohlrabies\n", - "kohls\n", - "koine\n", - "koines\n", - "kokanee\n", - "kokanees\n", - "kola\n", - "kolacky\n", - "kolas\n", - "kolhoz\n", - "kolhozes\n", - "kolhozy\n", - "kolinski\n", - "kolinskies\n", - "kolinsky\n", - "kolkhos\n", - "kolkhoses\n", - "kolkhosy\n", - "kolkhoz\n", - "kolkhozes\n", - "kolkhozy\n", - "kolkoz\n", - "kolkozes\n", - "kolkozy\n", - "kolo\n", - "kolos\n", - "komatik\n", - "komatiks\n", - "komondor\n", - "komondorock\n", - "komondorok\n", - "komondors\n", - "koodoo\n", - "koodoos\n", - "kook\n", - "kookie\n", - "kookier\n", - "kookiest\n", - "kooks\n", - "kooky\n", - "kop\n", - "kopeck\n", - "kopecks\n", - "kopek\n", - "kopeks\n", - "koph\n", - "kophs\n", - "kopje\n", - "kopjes\n", - "koppa\n", - "koppas\n", - "koppie\n", - "koppies\n", - "kops\n", - "kor\n", - "kors\n", - "korun\n", - "koruna\n", - "korunas\n", - "koruny\n", - "kos\n", - "kosher\n", - "koshered\n", - "koshering\n", - "koshers\n", - "koss\n", - "koto\n", - "kotos\n", - "kotow\n", - "kotowed\n", - "kotower\n", - "kotowers\n", - "kotowing\n", - "kotows\n", - "koumis\n", - "koumises\n", - "koumiss\n", - "koumisses\n", - "koumys\n", - "koumyses\n", - "koumyss\n", - "koumysses\n", - "kousso\n", - "koussos\n", - "kowtow\n", - "kowtowed\n", - "kowtower\n", - "kowtowers\n", - "kowtowing\n", - "kowtows\n", - "kraal\n", - "kraaled\n", - "kraaling\n", - "kraals\n", - "kraft\n", - "krafts\n", - "krait\n", - "kraits\n", - "kraken\n", - "krakens\n", - "krater\n", - "kraters\n", - "kraut\n", - "krauts\n", - "kremlin\n", - "kremlins\n", - "kreutzer\n", - "kreutzers\n", - "kreuzer\n", - "kreuzers\n", - "krikorian\n", - "krill\n", - "krills\n", - "krimmer\n", - "krimmers\n", - "kris\n", - "krises\n", - "krona\n", - "krone\n", - "kronen\n", - "kroner\n", - "kronor\n", - "kronur\n", - "kroon\n", - "krooni\n", - "kroons\n", - "krubi\n", - "krubis\n", - "krubut\n", - "krubuts\n", - "kruller\n", - "krullers\n", - "kryolite\n", - "kryolites\n", - "kryolith\n", - "kryoliths\n", - "krypton\n", - "kryptons\n", - "kuchen\n", - "kudo\n", - "kudos\n", - "kudu\n", - "kudus\n", - "kudzu\n", - "kudzus\n", - "kue\n", - "kues\n", - "kulak\n", - "kulaki\n", - "kulaks\n", - "kultur\n", - "kulturs\n", - "kumiss\n", - "kumisses\n", - "kummel\n", - "kummels\n", - "kumquat\n", - "kumquats\n", - "kumys\n", - "kumyses\n", - "kunzite\n", - "kunzites\n", - "kurbash\n", - "kurbashed\n", - "kurbashes\n", - "kurbashing\n", - "kurgan\n", - "kurgans\n", - "kurta\n", - "kurtas\n", - "kurtosis\n", - "kurtosises\n", - "kuru\n", - "kurus\n", - "kusso\n", - "kussos\n", - "kvas\n", - "kvases\n", - "kvass\n", - "kvasses\n", - "kvetch\n", - "kvetched\n", - "kvetches\n", - "kvetching\n", - "kwacha\n", - "kyack\n", - "kyacks\n", - "kyanise\n", - "kyanised\n", - "kyanises\n", - "kyanising\n", - "kyanite\n", - "kyanites\n", - "kyanize\n", - "kyanized\n", - "kyanizes\n", - "kyanizing\n", - "kyar\n", - "kyars\n", - "kyat\n", - "kyats\n", - "kylikes\n", - "kylix\n", - "kymogram\n", - "kymograms\n", - "kyphoses\n", - "kyphosis\n", - "kyphotic\n", - "kyrie\n", - "kyries\n", - "kyte\n", - "kytes\n", - "kythe\n", - "kythed\n", - "kythes\n", - "kything\n", - "la\n", - "laager\n", - "laagered\n", - "laagering\n", - "laagers\n", - "lab\n", - "labara\n", - "labarum\n", - "labarums\n", - "labdanum\n", - "labdanums\n", - "label\n", - "labeled\n", - "labeler\n", - "labelers\n", - "labeling\n", - "labella\n", - "labelled\n", - "labeller\n", - "labellers\n", - "labelling\n", - "labellum\n", - "labels\n", - "labia\n", - "labial\n", - "labially\n", - "labials\n", - "labiate\n", - "labiated\n", - "labiates\n", - "labile\n", - "labilities\n", - "lability\n", - "labium\n", - "labor\n", - "laboratories\n", - "laboratory\n", - "labored\n", - "laborer\n", - "laborers\n", - "laboring\n", - "laborious\n", - "laboriously\n", - "laborite\n", - "laborites\n", - "labors\n", - "labour\n", - "laboured\n", - "labourer\n", - "labourers\n", - "labouring\n", - "labours\n", - "labra\n", - "labret\n", - "labrets\n", - "labroid\n", - "labroids\n", - "labrum\n", - "labrums\n", - "labs\n", - "laburnum\n", - "laburnums\n", - "labyrinth\n", - "labyrinthine\n", - "labyrinths\n", - "lac\n", - "lace\n", - "laced\n", - "laceless\n", - "lacelike\n", - "lacer\n", - "lacerate\n", - "lacerated\n", - "lacerates\n", - "lacerating\n", - "laceration\n", - "lacerations\n", - "lacers\n", - "lacertid\n", - "lacertids\n", - "laces\n", - "lacewing\n", - "lacewings\n", - "lacewood\n", - "lacewoods\n", - "lacework\n", - "laceworks\n", - "lacey\n", - "laches\n", - "lachrymose\n", - "lacier\n", - "laciest\n", - "lacily\n", - "laciness\n", - "lacinesses\n", - "lacing\n", - "lacings\n", - "lack\n", - "lackadaisical\n", - "lackadaisically\n", - "lackaday\n", - "lacked\n", - "lacker\n", - "lackered\n", - "lackering\n", - "lackers\n", - "lackey\n", - "lackeyed\n", - "lackeying\n", - "lackeys\n", - "lacking\n", - "lackluster\n", - "lacks\n", - "laconic\n", - "laconically\n", - "laconism\n", - "laconisms\n", - "lacquer\n", - "lacquered\n", - "lacquering\n", - "lacquers\n", - "lacquey\n", - "lacqueyed\n", - "lacqueying\n", - "lacqueys\n", - "lacrimal\n", - "lacrimals\n", - "lacrosse\n", - "lacrosses\n", - "lacs\n", - "lactam\n", - "lactams\n", - "lactary\n", - "lactase\n", - "lactases\n", - "lactate\n", - "lactated\n", - "lactates\n", - "lactating\n", - "lactation\n", - "lactations\n", - "lacteal\n", - "lacteals\n", - "lactean\n", - "lacteous\n", - "lactic\n", - "lactone\n", - "lactones\n", - "lactonic\n", - "lactose\n", - "lactoses\n", - "lacuna\n", - "lacunae\n", - "lacunal\n", - "lacunar\n", - "lacunaria\n", - "lacunars\n", - "lacunary\n", - "lacunas\n", - "lacunate\n", - "lacune\n", - "lacunes\n", - "lacunose\n", - "lacy\n", - "lad\n", - "ladanum\n", - "ladanums\n", - "ladder\n", - "laddered\n", - "laddering\n", - "ladders\n", - "laddie\n", - "laddies\n", - "lade\n", - "laded\n", - "laden\n", - "ladened\n", - "ladening\n", - "ladens\n", - "lader\n", - "laders\n", - "lades\n", - "ladies\n", - "lading\n", - "ladings\n", - "ladino\n", - "ladinos\n", - "ladle\n", - "ladled\n", - "ladleful\n", - "ladlefuls\n", - "ladler\n", - "ladlers\n", - "ladles\n", - "ladling\n", - "ladron\n", - "ladrone\n", - "ladrones\n", - "ladrons\n", - "lads\n", - "lady\n", - "ladybird\n", - "ladybirds\n", - "ladybug\n", - "ladybugs\n", - "ladyfish\n", - "ladyfishes\n", - "ladyhood\n", - "ladyhoods\n", - "ladyish\n", - "ladykin\n", - "ladykins\n", - "ladylike\n", - "ladylove\n", - "ladyloves\n", - "ladypalm\n", - "ladypalms\n", - "ladyship\n", - "ladyships\n", - "laevo\n", - "lag\n", - "lagan\n", - "lagans\n", - "lagend\n", - "lagends\n", - "lager\n", - "lagered\n", - "lagering\n", - "lagers\n", - "laggard\n", - "laggardly\n", - "laggardness\n", - "laggardnesses\n", - "laggards\n", - "lagged\n", - "lagger\n", - "laggers\n", - "lagging\n", - "laggings\n", - "lagnappe\n", - "lagnappes\n", - "lagniappe\n", - "lagniappes\n", - "lagoon\n", - "lagoonal\n", - "lagoons\n", - "lags\n", - "laguna\n", - "lagunas\n", - "lagune\n", - "lagunes\n", - "laic\n", - "laical\n", - "laically\n", - "laich\n", - "laichs\n", - "laicise\n", - "laicised\n", - "laicises\n", - "laicising\n", - "laicism\n", - "laicisms\n", - "laicize\n", - "laicized\n", - "laicizes\n", - "laicizing\n", - "laics\n", - "laid\n", - "laigh\n", - "laighs\n", - "lain\n", - "lair\n", - "laird\n", - "lairdly\n", - "lairds\n", - "laired\n", - "lairing\n", - "lairs\n", - "laitance\n", - "laitances\n", - "laith\n", - "laithly\n", - "laities\n", - "laity\n", - "lake\n", - "laked\n", - "lakeport\n", - "lakeports\n", - "laker\n", - "lakers\n", - "lakes\n", - "lakeside\n", - "lakesides\n", - "lakh\n", - "lakhs\n", - "lakier\n", - "lakiest\n", - "laking\n", - "lakings\n", - "laky\n", - "lall\n", - "lallan\n", - "lalland\n", - "lallands\n", - "lallans\n", - "lalled\n", - "lalling\n", - "lalls\n", - "lallygag\n", - "lallygagged\n", - "lallygagging\n", - "lallygags\n", - "lam\n", - "lama\n", - "lamas\n", - "lamaseries\n", - "lamasery\n", - "lamb\n", - "lambast\n", - "lambaste\n", - "lambasted\n", - "lambastes\n", - "lambasting\n", - "lambasts\n", - "lambda\n", - "lambdas\n", - "lambdoid\n", - "lambed\n", - "lambencies\n", - "lambency\n", - "lambent\n", - "lambently\n", - "lamber\n", - "lambers\n", - "lambert\n", - "lamberts\n", - "lambie\n", - "lambies\n", - "lambing\n", - "lambkill\n", - "lambkills\n", - "lambkin\n", - "lambkins\n", - "lamblike\n", - "lambs\n", - "lambskin\n", - "lambskins\n", - "lame\n", - "lamebrain\n", - "lamebrains\n", - "lamed\n", - "lamedh\n", - "lamedhs\n", - "lameds\n", - "lamella\n", - "lamellae\n", - "lamellar\n", - "lamellas\n", - "lamely\n", - "lameness\n", - "lamenesses\n", - "lament\n", - "lamentable\n", - "lamentably\n", - "lamentation\n", - "lamentations\n", - "lamented\n", - "lamenter\n", - "lamenters\n", - "lamenting\n", - "laments\n", - "lamer\n", - "lames\n", - "lamest\n", - "lamia\n", - "lamiae\n", - "lamias\n", - "lamina\n", - "laminae\n", - "laminal\n", - "laminar\n", - "laminary\n", - "laminas\n", - "laminate\n", - "laminated\n", - "laminates\n", - "laminating\n", - "lamination\n", - "laminations\n", - "laming\n", - "laminose\n", - "laminous\n", - "lamister\n", - "lamisters\n", - "lammed\n", - "lamming\n", - "lamp\n", - "lampad\n", - "lampads\n", - "lampas\n", - "lampases\n", - "lamped\n", - "lampers\n", - "lamperses\n", - "lamping\n", - "lampion\n", - "lampions\n", - "lampoon\n", - "lampooned\n", - "lampooning\n", - "lampoons\n", - "lamppost\n", - "lampposts\n", - "lamprey\n", - "lampreys\n", - "lamps\n", - "lampyrid\n", - "lampyrids\n", - "lams\n", - "lamster\n", - "lamsters\n", - "lanai\n", - "lanais\n", - "lanate\n", - "lanated\n", - "lance\n", - "lanced\n", - "lancelet\n", - "lancelets\n", - "lancer\n", - "lancers\n", - "lances\n", - "lancet\n", - "lanceted\n", - "lancets\n", - "lanciers\n", - "lancing\n", - "land\n", - "landau\n", - "landaus\n", - "landed\n", - "lander\n", - "landers\n", - "landfall\n", - "landfalls\n", - "landfill\n", - "landfills\n", - "landform\n", - "landforms\n", - "landholder\n", - "landholders\n", - "landholding\n", - "landholdings\n", - "landing\n", - "landings\n", - "landladies\n", - "landlady\n", - "landler\n", - "landlers\n", - "landless\n", - "landlocked\n", - "landlord\n", - "landlords\n", - "landlubber\n", - "landlubbers\n", - "landman\n", - "landmark\n", - "landmarks\n", - "landmass\n", - "landmasses\n", - "landmen\n", - "lands\n", - "landscape\n", - "landscaped\n", - "landscapes\n", - "landscaping\n", - "landside\n", - "landsides\n", - "landskip\n", - "landskips\n", - "landsleit\n", - "landslid\n", - "landslide\n", - "landslides\n", - "landslip\n", - "landslips\n", - "landsman\n", - "landsmen\n", - "landward\n", - "lane\n", - "lanely\n", - "lanes\n", - "lang\n", - "langlauf\n", - "langlaufs\n", - "langley\n", - "langleys\n", - "langourous\n", - "langourously\n", - "langrage\n", - "langrages\n", - "langrel\n", - "langrels\n", - "langshan\n", - "langshans\n", - "langsyne\n", - "langsynes\n", - "language\n", - "languages\n", - "langue\n", - "langues\n", - "languet\n", - "languets\n", - "languid\n", - "languidly\n", - "languidness\n", - "languidnesses\n", - "languish\n", - "languished\n", - "languishes\n", - "languishing\n", - "languor\n", - "languors\n", - "langur\n", - "langurs\n", - "laniard\n", - "laniards\n", - "laniaries\n", - "laniary\n", - "lanital\n", - "lanitals\n", - "lank\n", - "lanker\n", - "lankest\n", - "lankier\n", - "lankiest\n", - "lankily\n", - "lankly\n", - "lankness\n", - "lanknesses\n", - "lanky\n", - "lanner\n", - "lanneret\n", - "lannerets\n", - "lanners\n", - "lanolin\n", - "lanoline\n", - "lanolines\n", - "lanolins\n", - "lanose\n", - "lanosities\n", - "lanosity\n", - "lantana\n", - "lantanas\n", - "lantern\n", - "lanterns\n", - "lanthorn\n", - "lanthorns\n", - "lanugo\n", - "lanugos\n", - "lanyard\n", - "lanyards\n", - "lap\n", - "lapboard\n", - "lapboards\n", - "lapdog\n", - "lapdogs\n", - "lapel\n", - "lapelled\n", - "lapels\n", - "lapful\n", - "lapfuls\n", - "lapidaries\n", - "lapidary\n", - "lapidate\n", - "lapidated\n", - "lapidates\n", - "lapidating\n", - "lapides\n", - "lapidified\n", - "lapidifies\n", - "lapidify\n", - "lapidifying\n", - "lapidist\n", - "lapidists\n", - "lapilli\n", - "lapillus\n", - "lapin\n", - "lapins\n", - "lapis\n", - "lapises\n", - "lapped\n", - "lapper\n", - "lappered\n", - "lappering\n", - "lappers\n", - "lappet\n", - "lappeted\n", - "lappets\n", - "lapping\n", - "laps\n", - "lapsable\n", - "lapse\n", - "lapsed\n", - "lapser\n", - "lapsers\n", - "lapses\n", - "lapsible\n", - "lapsing\n", - "lapsus\n", - "lapwing\n", - "lapwings\n", - "lar\n", - "larboard\n", - "larboards\n", - "larcener\n", - "larceners\n", - "larcenies\n", - "larcenous\n", - "larceny\n", - "larch\n", - "larches\n", - "lard\n", - "larded\n", - "larder\n", - "larders\n", - "lardier\n", - "lardiest\n", - "larding\n", - "lardlike\n", - "lardon\n", - "lardons\n", - "lardoon\n", - "lardoons\n", - "lards\n", - "lardy\n", - "lares\n", - "large\n", - "largely\n", - "largeness\n", - "largenesses\n", - "larger\n", - "larges\n", - "largess\n", - "largesse\n", - "largesses\n", - "largest\n", - "largish\n", - "largo\n", - "largos\n", - "lariat\n", - "lariated\n", - "lariating\n", - "lariats\n", - "larine\n", - "lark\n", - "larked\n", - "larker\n", - "larkers\n", - "larkier\n", - "larkiest\n", - "larking\n", - "larks\n", - "larksome\n", - "larkspur\n", - "larkspurs\n", - "larky\n", - "larrigan\n", - "larrigans\n", - "larrikin\n", - "larrikins\n", - "larrup\n", - "larruped\n", - "larruper\n", - "larrupers\n", - "larruping\n", - "larrups\n", - "lars\n", - "larum\n", - "larums\n", - "larva\n", - "larvae\n", - "larval\n", - "larvas\n", - "laryngal\n", - "laryngeal\n", - "larynges\n", - "laryngitis\n", - "laryngitises\n", - "laryngoscopy\n", - "larynx\n", - "larynxes\n", - "las\n", - "lasagna\n", - "lasagnas\n", - "lasagne\n", - "lasagnes\n", - "lascar\n", - "lascars\n", - "lascivious\n", - "lasciviousness\n", - "lasciviousnesses\n", - "lase\n", - "lased\n", - "laser\n", - "lasers\n", - "lases\n", - "lash\n", - "lashed\n", - "lasher\n", - "lashers\n", - "lashes\n", - "lashing\n", - "lashings\n", - "lashins\n", - "lashkar\n", - "lashkars\n", - "lasing\n", - "lass\n", - "lasses\n", - "lassie\n", - "lassies\n", - "lassitude\n", - "lassitudes\n", - "lasso\n", - "lassoed\n", - "lassoer\n", - "lassoers\n", - "lassoes\n", - "lassoing\n", - "lassos\n", - "last\n", - "lasted\n", - "laster\n", - "lasters\n", - "lasting\n", - "lastings\n", - "lastly\n", - "lasts\n", - "lat\n", - "latakia\n", - "latakias\n", - "latch\n", - "latched\n", - "latches\n", - "latchet\n", - "latchets\n", - "latching\n", - "latchkey\n", - "latchkeys\n", - "late\n", - "latecomer\n", - "latecomers\n", - "lated\n", - "lateen\n", - "lateener\n", - "lateeners\n", - "lateens\n", - "lately\n", - "laten\n", - "latencies\n", - "latency\n", - "latened\n", - "lateness\n", - "latenesses\n", - "latening\n", - "latens\n", - "latent\n", - "latently\n", - "latents\n", - "later\n", - "laterad\n", - "lateral\n", - "lateraled\n", - "lateraling\n", - "laterally\n", - "laterals\n", - "laterite\n", - "laterites\n", - "latest\n", - "latests\n", - "latewood\n", - "latewoods\n", - "latex\n", - "latexes\n", - "lath\n", - "lathe\n", - "lathed\n", - "lather\n", - "lathered\n", - "latherer\n", - "latherers\n", - "lathering\n", - "lathers\n", - "lathery\n", - "lathes\n", - "lathier\n", - "lathiest\n", - "lathing\n", - "lathings\n", - "laths\n", - "lathwork\n", - "lathworks\n", - "lathy\n", - "lati\n", - "latices\n", - "latigo\n", - "latigoes\n", - "latigos\n", - "latinities\n", - "latinity\n", - "latinize\n", - "latinized\n", - "latinizes\n", - "latinizing\n", - "latish\n", - "latitude\n", - "latitudes\n", - "latosol\n", - "latosols\n", - "latria\n", - "latrias\n", - "latrine\n", - "latrines\n", - "lats\n", - "latten\n", - "lattens\n", - "latter\n", - "latterly\n", - "lattice\n", - "latticed\n", - "lattices\n", - "latticing\n", - "lattin\n", - "lattins\n", - "lauan\n", - "lauans\n", - "laud\n", - "laudable\n", - "laudably\n", - "laudanum\n", - "laudanums\n", - "laudator\n", - "laudators\n", - "lauded\n", - "lauder\n", - "lauders\n", - "lauding\n", - "lauds\n", - "laugh\n", - "laughable\n", - "laughed\n", - "laugher\n", - "laughers\n", - "laughing\n", - "laughingly\n", - "laughings\n", - "laughingstock\n", - "laughingstocks\n", - "laughs\n", - "laughter\n", - "laughters\n", - "launce\n", - "launces\n", - "launch\n", - "launched\n", - "launcher\n", - "launchers\n", - "launches\n", - "launching\n", - "launder\n", - "laundered\n", - "launderer\n", - "launderers\n", - "launderess\n", - "launderesses\n", - "laundering\n", - "launders\n", - "laundries\n", - "laundry\n", - "laura\n", - "laurae\n", - "lauras\n", - "laureate\n", - "laureated\n", - "laureates\n", - "laureateship\n", - "laureateships\n", - "laureating\n", - "laurel\n", - "laureled\n", - "laureling\n", - "laurelled\n", - "laurelling\n", - "laurels\n", - "lauwine\n", - "lauwines\n", - "lava\n", - "lavabo\n", - "lavaboes\n", - "lavabos\n", - "lavage\n", - "lavages\n", - "lavalava\n", - "lavalavas\n", - "lavalier\n", - "lavaliers\n", - "lavalike\n", - "lavas\n", - "lavation\n", - "lavations\n", - "lavatories\n", - "lavatory\n", - "lave\n", - "laved\n", - "laveer\n", - "laveered\n", - "laveering\n", - "laveers\n", - "lavender\n", - "lavendered\n", - "lavendering\n", - "lavenders\n", - "laver\n", - "laverock\n", - "laverocks\n", - "lavers\n", - "laves\n", - "laving\n", - "lavish\n", - "lavished\n", - "lavisher\n", - "lavishers\n", - "lavishes\n", - "lavishest\n", - "lavishing\n", - "lavishly\n", - "lavrock\n", - "lavrocks\n", - "law\n", - "lawbreaker\n", - "lawbreakers\n", - "lawed\n", - "lawful\n", - "lawfully\n", - "lawgiver\n", - "lawgivers\n", - "lawine\n", - "lawines\n", - "lawing\n", - "lawings\n", - "lawless\n", - "lawlike\n", - "lawmaker\n", - "lawmakers\n", - "lawman\n", - "lawmen\n", - "lawn\n", - "lawns\n", - "lawny\n", - "laws\n", - "lawsuit\n", - "lawsuits\n", - "lawyer\n", - "lawyerly\n", - "lawyers\n", - "lax\n", - "laxation\n", - "laxations\n", - "laxative\n", - "laxatives\n", - "laxer\n", - "laxest\n", - "laxities\n", - "laxity\n", - "laxly\n", - "laxness\n", - "laxnesses\n", - "lay\n", - "layabout\n", - "layabouts\n", - "layaway\n", - "layaways\n", - "layed\n", - "layer\n", - "layerage\n", - "layerages\n", - "layered\n", - "layering\n", - "layerings\n", - "layers\n", - "layette\n", - "layettes\n", - "laying\n", - "layman\n", - "laymen\n", - "layoff\n", - "layoffs\n", - "layout\n", - "layouts\n", - "layover\n", - "layovers\n", - "lays\n", - "laywoman\n", - "laywomen\n", - "lazar\n", - "lazaret\n", - "lazarets\n", - "lazars\n", - "laze\n", - "lazed\n", - "lazes\n", - "lazied\n", - "lazier\n", - "lazies\n", - "laziest\n", - "lazily\n", - "laziness\n", - "lazinesses\n", - "lazing\n", - "lazuli\n", - "lazulis\n", - "lazulite\n", - "lazulites\n", - "lazurite\n", - "lazurites\n", - "lazy\n", - "lazying\n", - "lazyish\n", - "lazys\n", - "lea\n", - "leach\n", - "leachate\n", - "leachates\n", - "leached\n", - "leacher\n", - "leachers\n", - "leaches\n", - "leachier\n", - "leachiest\n", - "leaching\n", - "leachy\n", - "lead\n", - "leaded\n", - "leaden\n", - "leadenly\n", - "leader\n", - "leaderless\n", - "leaders\n", - "leadership\n", - "leaderships\n", - "leadier\n", - "leadiest\n", - "leading\n", - "leadings\n", - "leadless\n", - "leadoff\n", - "leadoffs\n", - "leads\n", - "leadsman\n", - "leadsmen\n", - "leadwork\n", - "leadworks\n", - "leadwort\n", - "leadworts\n", - "leady\n", - "leaf\n", - "leafage\n", - "leafages\n", - "leafed\n", - "leafier\n", - "leafiest\n", - "leafing\n", - "leafless\n", - "leaflet\n", - "leaflets\n", - "leaflike\n", - "leafs\n", - "leafworm\n", - "leafworms\n", - "leafy\n", - "league\n", - "leagued\n", - "leaguer\n", - "leaguered\n", - "leaguering\n", - "leaguers\n", - "leagues\n", - "leaguing\n", - "leak\n", - "leakage\n", - "leakages\n", - "leaked\n", - "leaker\n", - "leakers\n", - "leakier\n", - "leakiest\n", - "leakily\n", - "leaking\n", - "leakless\n", - "leaks\n", - "leaky\n", - "leal\n", - "leally\n", - "lealties\n", - "lealty\n", - "lean\n", - "leaned\n", - "leaner\n", - "leanest\n", - "leaning\n", - "leanings\n", - "leanly\n", - "leanness\n", - "leannesses\n", - "leans\n", - "leant\n", - "leap\n", - "leaped\n", - "leaper\n", - "leapers\n", - "leapfrog\n", - "leapfrogged\n", - "leapfrogging\n", - "leapfrogs\n", - "leaping\n", - "leaps\n", - "leapt\n", - "lear\n", - "learier\n", - "leariest\n", - "learn\n", - "learned\n", - "learner\n", - "learners\n", - "learning\n", - "learnings\n", - "learns\n", - "learnt\n", - "lears\n", - "leary\n", - "leas\n", - "leasable\n", - "lease\n", - "leased\n", - "leaser\n", - "leasers\n", - "leases\n", - "leash\n", - "leashed\n", - "leashes\n", - "leashing\n", - "leasing\n", - "leasings\n", - "least\n", - "leasts\n", - "leather\n", - "leathered\n", - "leathering\n", - "leathern\n", - "leathers\n", - "leathery\n", - "leave\n", - "leaved\n", - "leaven\n", - "leavened\n", - "leavening\n", - "leavens\n", - "leaver\n", - "leavers\n", - "leaves\n", - "leavier\n", - "leaviest\n", - "leaving\n", - "leavings\n", - "leavy\n", - "leben\n", - "lebens\n", - "lech\n", - "lechayim\n", - "lechayims\n", - "lecher\n", - "lechered\n", - "lecheries\n", - "lechering\n", - "lecherous\n", - "lecherousness\n", - "lecherousnesses\n", - "lechers\n", - "lechery\n", - "leches\n", - "lecithin\n", - "lecithins\n", - "lectern\n", - "lecterns\n", - "lection\n", - "lections\n", - "lector\n", - "lectors\n", - "lecture\n", - "lectured\n", - "lecturer\n", - "lecturers\n", - "lectures\n", - "lectureship\n", - "lectureships\n", - "lecturing\n", - "lecythi\n", - "lecythus\n", - "led\n", - "ledge\n", - "ledger\n", - "ledgers\n", - "ledges\n", - "ledgier\n", - "ledgiest\n", - "ledgy\n", - "lee\n", - "leeboard\n", - "leeboards\n", - "leech\n", - "leeched\n", - "leeches\n", - "leeching\n", - "leek\n", - "leeks\n", - "leer\n", - "leered\n", - "leerier\n", - "leeriest\n", - "leerily\n", - "leering\n", - "leers\n", - "leery\n", - "lees\n", - "leet\n", - "leets\n", - "leeward\n", - "leewards\n", - "leeway\n", - "leeways\n", - "left\n", - "lefter\n", - "leftest\n", - "lefties\n", - "leftism\n", - "leftisms\n", - "leftist\n", - "leftists\n", - "leftover\n", - "leftovers\n", - "lefts\n", - "leftward\n", - "leftwing\n", - "lefty\n", - "leg\n", - "legacies\n", - "legacy\n", - "legal\n", - "legalese\n", - "legaleses\n", - "legalise\n", - "legalised\n", - "legalises\n", - "legalising\n", - "legalism\n", - "legalisms\n", - "legalist\n", - "legalistic\n", - "legalists\n", - "legalities\n", - "legality\n", - "legalize\n", - "legalized\n", - "legalizes\n", - "legalizing\n", - "legally\n", - "legals\n", - "legate\n", - "legated\n", - "legatee\n", - "legatees\n", - "legates\n", - "legatine\n", - "legating\n", - "legation\n", - "legations\n", - "legato\n", - "legator\n", - "legators\n", - "legatos\n", - "legend\n", - "legendary\n", - "legendries\n", - "legendry\n", - "legends\n", - "leger\n", - "legerdemain\n", - "legerdemains\n", - "legerities\n", - "legerity\n", - "legers\n", - "leges\n", - "legged\n", - "leggier\n", - "leggiest\n", - "leggin\n", - "legging\n", - "leggings\n", - "leggins\n", - "leggy\n", - "leghorn\n", - "leghorns\n", - "legibilities\n", - "legibility\n", - "legible\n", - "legibly\n", - "legion\n", - "legionaries\n", - "legionary\n", - "legionnaire\n", - "legionnaires\n", - "legions\n", - "legislate\n", - "legislated\n", - "legislates\n", - "legislating\n", - "legislation\n", - "legislations\n", - "legislative\n", - "legislator\n", - "legislators\n", - "legislature\n", - "legislatures\n", - "legist\n", - "legists\n", - "legit\n", - "legitimacy\n", - "legitimate\n", - "legitimately\n", - "legits\n", - "legless\n", - "leglike\n", - "legman\n", - "legmen\n", - "legroom\n", - "legrooms\n", - "legs\n", - "legume\n", - "legumes\n", - "legumin\n", - "leguminous\n", - "legumins\n", - "legwork\n", - "legworks\n", - "lehayim\n", - "lehayims\n", - "lehr\n", - "lehrs\n", - "lehua\n", - "lehuas\n", - "lei\n", - "leis\n", - "leister\n", - "leistered\n", - "leistering\n", - "leisters\n", - "leisure\n", - "leisured\n", - "leisurely\n", - "leisures\n", - "lek\n", - "leks\n", - "lekythi\n", - "lekythoi\n", - "lekythos\n", - "lekythus\n", - "leman\n", - "lemans\n", - "lemma\n", - "lemmas\n", - "lemmata\n", - "lemming\n", - "lemmings\n", - "lemnisci\n", - "lemon\n", - "lemonade\n", - "lemonades\n", - "lemonish\n", - "lemons\n", - "lemony\n", - "lempira\n", - "lempiras\n", - "lemur\n", - "lemures\n", - "lemuroid\n", - "lemuroids\n", - "lemurs\n", - "lend\n", - "lender\n", - "lenders\n", - "lending\n", - "lends\n", - "lenes\n", - "length\n", - "lengthen\n", - "lengthened\n", - "lengthening\n", - "lengthens\n", - "lengthier\n", - "lengthiest\n", - "lengths\n", - "lengthwise\n", - "lengthy\n", - "lenience\n", - "leniences\n", - "leniencies\n", - "leniency\n", - "lenient\n", - "leniently\n", - "lenis\n", - "lenities\n", - "lenitive\n", - "lenitives\n", - "lenity\n", - "leno\n", - "lenos\n", - "lens\n", - "lense\n", - "lensed\n", - "lenses\n", - "lensless\n", - "lent\n", - "lentando\n", - "lenten\n", - "lentic\n", - "lenticel\n", - "lenticels\n", - "lentigines\n", - "lentigo\n", - "lentil\n", - "lentils\n", - "lentisk\n", - "lentisks\n", - "lento\n", - "lentoid\n", - "lentos\n", - "leone\n", - "leones\n", - "leonine\n", - "leopard\n", - "leopards\n", - "leotard\n", - "leotards\n", - "leper\n", - "lepers\n", - "lepidote\n", - "leporid\n", - "leporids\n", - "leporine\n", - "leprechaun\n", - "leprechauns\n", - "leprose\n", - "leprosies\n", - "leprosy\n", - "leprotic\n", - "leprous\n", - "lepta\n", - "lepton\n", - "leptonic\n", - "leptons\n", - "lesbian\n", - "lesbianism\n", - "lesbianisms\n", - "lesbians\n", - "lesion\n", - "lesions\n", - "less\n", - "lessee\n", - "lessees\n", - "lessen\n", - "lessened\n", - "lessening\n", - "lessens\n", - "lesser\n", - "lesson\n", - "lessoned\n", - "lessoning\n", - "lessons\n", - "lessor\n", - "lessors\n", - "lest\n", - "let\n", - "letch\n", - "letches\n", - "letdown\n", - "letdowns\n", - "lethal\n", - "lethally\n", - "lethals\n", - "lethargic\n", - "lethargies\n", - "lethargy\n", - "lethe\n", - "lethean\n", - "lethes\n", - "lets\n", - "letted\n", - "letter\n", - "lettered\n", - "letterer\n", - "letterers\n", - "letterhead\n", - "lettering\n", - "letters\n", - "letting\n", - "lettuce\n", - "lettuces\n", - "letup\n", - "letups\n", - "leu\n", - "leucemia\n", - "leucemias\n", - "leucemic\n", - "leucin\n", - "leucine\n", - "leucines\n", - "leucins\n", - "leucite\n", - "leucites\n", - "leucitic\n", - "leucoma\n", - "leucomas\n", - "leud\n", - "leudes\n", - "leuds\n", - "leukemia\n", - "leukemias\n", - "leukemic\n", - "leukemics\n", - "leukocytosis\n", - "leukoma\n", - "leukomas\n", - "leukon\n", - "leukons\n", - "leukopenia\n", - "leukophoresis\n", - "leukoses\n", - "leukosis\n", - "leukotic\n", - "lev\n", - "leva\n", - "levant\n", - "levanted\n", - "levanter\n", - "levanters\n", - "levanting\n", - "levants\n", - "levator\n", - "levatores\n", - "levators\n", - "levee\n", - "leveed\n", - "leveeing\n", - "levees\n", - "level\n", - "leveled\n", - "leveler\n", - "levelers\n", - "leveling\n", - "levelled\n", - "leveller\n", - "levellers\n", - "levelling\n", - "levelly\n", - "levelness\n", - "levelnesses\n", - "levels\n", - "lever\n", - "leverage\n", - "leveraged\n", - "leverages\n", - "leveraging\n", - "levered\n", - "leveret\n", - "leverets\n", - "levering\n", - "levers\n", - "leviable\n", - "leviathan\n", - "leviathans\n", - "levied\n", - "levier\n", - "leviers\n", - "levies\n", - "levigate\n", - "levigated\n", - "levigates\n", - "levigating\n", - "levin\n", - "levins\n", - "levirate\n", - "levirates\n", - "levitate\n", - "levitated\n", - "levitates\n", - "levitating\n", - "levities\n", - "levity\n", - "levo\n", - "levogyre\n", - "levulin\n", - "levulins\n", - "levulose\n", - "levuloses\n", - "levy\n", - "levying\n", - "lewd\n", - "lewder\n", - "lewdest\n", - "lewdly\n", - "lewdness\n", - "lewdnesses\n", - "lewis\n", - "lewises\n", - "lewisite\n", - "lewisites\n", - "lewisson\n", - "lewissons\n", - "lex\n", - "lexica\n", - "lexical\n", - "lexicographer\n", - "lexicographers\n", - "lexicographic\n", - "lexicographical\n", - "lexicographies\n", - "lexicography\n", - "lexicon\n", - "lexicons\n", - "ley\n", - "leys\n", - "li\n", - "liabilities\n", - "liability\n", - "liable\n", - "liaise\n", - "liaised\n", - "liaises\n", - "liaising\n", - "liaison\n", - "liaisons\n", - "liana\n", - "lianas\n", - "liane\n", - "lianes\n", - "liang\n", - "liangs\n", - "lianoid\n", - "liar\n", - "liard\n", - "liards\n", - "liars\n", - "lib\n", - "libation\n", - "libations\n", - "libber\n", - "libbers\n", - "libeccio\n", - "libeccios\n", - "libel\n", - "libelant\n", - "libelants\n", - "libeled\n", - "libelee\n", - "libelees\n", - "libeler\n", - "libelers\n", - "libeling\n", - "libelist\n", - "libelists\n", - "libelled\n", - "libellee\n", - "libellees\n", - "libeller\n", - "libellers\n", - "libelling\n", - "libellous\n", - "libelous\n", - "libels\n", - "liber\n", - "liberal\n", - "liberalism\n", - "liberalisms\n", - "liberalities\n", - "liberality\n", - "liberalize\n", - "liberalized\n", - "liberalizes\n", - "liberalizing\n", - "liberally\n", - "liberals\n", - "liberate\n", - "liberated\n", - "liberates\n", - "liberating\n", - "liberation\n", - "liberations\n", - "liberator\n", - "liberators\n", - "libers\n", - "liberties\n", - "libertine\n", - "libertines\n", - "liberty\n", - "libidinal\n", - "libidinous\n", - "libido\n", - "libidos\n", - "libra\n", - "librae\n", - "librarian\n", - "librarians\n", - "libraries\n", - "library\n", - "libras\n", - "librate\n", - "librated\n", - "librates\n", - "librating\n", - "libretti\n", - "librettist\n", - "librettists\n", - "libretto\n", - "librettos\n", - "libri\n", - "libs\n", - "lice\n", - "licence\n", - "licenced\n", - "licencee\n", - "licencees\n", - "licencer\n", - "licencers\n", - "licences\n", - "licencing\n", - "license\n", - "licensed\n", - "licensee\n", - "licensees\n", - "licenser\n", - "licensers\n", - "licenses\n", - "licensing\n", - "licensor\n", - "licensors\n", - "licentious\n", - "licentiously\n", - "licentiousness\n", - "licentiousnesses\n", - "lichee\n", - "lichees\n", - "lichen\n", - "lichened\n", - "lichenin\n", - "lichening\n", - "lichenins\n", - "lichenous\n", - "lichens\n", - "lichi\n", - "lichis\n", - "licht\n", - "lichted\n", - "lichting\n", - "lichtly\n", - "lichts\n", - "licit\n", - "licitly\n", - "lick\n", - "licked\n", - "licker\n", - "lickers\n", - "licking\n", - "lickings\n", - "licks\n", - "lickspit\n", - "lickspits\n", - "licorice\n", - "licorices\n", - "lictor\n", - "lictors\n", - "lid\n", - "lidar\n", - "lidars\n", - "lidded\n", - "lidding\n", - "lidless\n", - "lido\n", - "lidos\n", - "lids\n", - "lie\n", - "lied\n", - "lieder\n", - "lief\n", - "liefer\n", - "liefest\n", - "liefly\n", - "liege\n", - "liegeman\n", - "liegemen\n", - "lieges\n", - "lien\n", - "lienable\n", - "lienal\n", - "liens\n", - "lienteries\n", - "lientery\n", - "lier\n", - "lierne\n", - "liernes\n", - "liers\n", - "lies\n", - "lieu\n", - "lieus\n", - "lieutenancies\n", - "lieutenancy\n", - "lieutenant\n", - "lieutenants\n", - "lieve\n", - "liever\n", - "lievest\n", - "life\n", - "lifeblood\n", - "lifebloods\n", - "lifeboat\n", - "lifeboats\n", - "lifeful\n", - "lifeguard\n", - "lifeguards\n", - "lifeless\n", - "lifelike\n", - "lifeline\n", - "lifelines\n", - "lifelong\n", - "lifer\n", - "lifers\n", - "lifesaver\n", - "lifesavers\n", - "lifesaving\n", - "lifesavings\n", - "lifetime\n", - "lifetimes\n", - "lifeway\n", - "lifeways\n", - "lifework\n", - "lifeworks\n", - "lift\n", - "liftable\n", - "lifted\n", - "lifter\n", - "lifters\n", - "lifting\n", - "liftman\n", - "liftmen\n", - "liftoff\n", - "liftoffs\n", - "lifts\n", - "ligament\n", - "ligaments\n", - "ligan\n", - "ligand\n", - "ligands\n", - "ligans\n", - "ligase\n", - "ligases\n", - "ligate\n", - "ligated\n", - "ligates\n", - "ligating\n", - "ligation\n", - "ligations\n", - "ligative\n", - "ligature\n", - "ligatured\n", - "ligatures\n", - "ligaturing\n", - "light\n", - "lightbulb\n", - "lightbulbs\n", - "lighted\n", - "lighten\n", - "lightened\n", - "lightening\n", - "lightens\n", - "lighter\n", - "lightered\n", - "lightering\n", - "lighters\n", - "lightest\n", - "lightful\n", - "lighthearted\n", - "lightheartedly\n", - "lightheartedness\n", - "lightheartednesses\n", - "lighthouse\n", - "lighthouses\n", - "lighting\n", - "lightings\n", - "lightish\n", - "lightly\n", - "lightness\n", - "lightnesses\n", - "lightning\n", - "lightnings\n", - "lightproof\n", - "lights\n", - "ligneous\n", - "lignified\n", - "lignifies\n", - "lignify\n", - "lignifying\n", - "lignin\n", - "lignins\n", - "lignite\n", - "lignites\n", - "lignitic\n", - "ligroin\n", - "ligroine\n", - "ligroines\n", - "ligroins\n", - "ligula\n", - "ligulae\n", - "ligular\n", - "ligulas\n", - "ligulate\n", - "ligule\n", - "ligules\n", - "liguloid\n", - "ligure\n", - "ligures\n", - "likable\n", - "like\n", - "likeable\n", - "liked\n", - "likelier\n", - "likeliest\n", - "likelihood\n", - "likelihoods\n", - "likely\n", - "liken\n", - "likened\n", - "likeness\n", - "likenesses\n", - "likening\n", - "likens\n", - "liker\n", - "likers\n", - "likes\n", - "likest\n", - "likewise\n", - "liking\n", - "likings\n", - "likuta\n", - "lilac\n", - "lilacs\n", - "lilied\n", - "lilies\n", - "lilliput\n", - "lilliputs\n", - "lilt\n", - "lilted\n", - "lilting\n", - "lilts\n", - "lilty\n", - "lily\n", - "lilylike\n", - "lima\n", - "limacine\n", - "limacon\n", - "limacons\n", - "liman\n", - "limans\n", - "limas\n", - "limb\n", - "limba\n", - "limbas\n", - "limbate\n", - "limbeck\n", - "limbecks\n", - "limbed\n", - "limber\n", - "limbered\n", - "limberer\n", - "limberest\n", - "limbering\n", - "limberly\n", - "limbers\n", - "limbi\n", - "limbic\n", - "limbier\n", - "limbiest\n", - "limbing\n", - "limbless\n", - "limbo\n", - "limbos\n", - "limbs\n", - "limbus\n", - "limbuses\n", - "limby\n", - "lime\n", - "limeade\n", - "limeades\n", - "limed\n", - "limekiln\n", - "limekilns\n", - "limeless\n", - "limelight\n", - "limelights\n", - "limen\n", - "limens\n", - "limerick\n", - "limericks\n", - "limes\n", - "limestone\n", - "limestones\n", - "limey\n", - "limeys\n", - "limier\n", - "limiest\n", - "limina\n", - "liminal\n", - "liminess\n", - "liminesses\n", - "liming\n", - "limit\n", - "limitary\n", - "limitation\n", - "limitations\n", - "limited\n", - "limiteds\n", - "limiter\n", - "limiters\n", - "limites\n", - "limiting\n", - "limitless\n", - "limits\n", - "limmer\n", - "limmers\n", - "limn\n", - "limned\n", - "limner\n", - "limners\n", - "limnetic\n", - "limnic\n", - "limning\n", - "limns\n", - "limo\n", - "limonene\n", - "limonenes\n", - "limonite\n", - "limonites\n", - "limos\n", - "limousine\n", - "limousines\n", - "limp\n", - "limped\n", - "limper\n", - "limpers\n", - "limpest\n", - "limpet\n", - "limpets\n", - "limpid\n", - "limpidly\n", - "limping\n", - "limpkin\n", - "limpkins\n", - "limply\n", - "limpness\n", - "limpnesses\n", - "limps\n", - "limpsy\n", - "limuli\n", - "limuloid\n", - "limuloids\n", - "limulus\n", - "limy\n", - "lin\n", - "linable\n", - "linac\n", - "linacs\n", - "linage\n", - "linages\n", - "linalol\n", - "linalols\n", - "linalool\n", - "linalools\n", - "linchpin\n", - "linchpins\n", - "lindane\n", - "lindanes\n", - "linden\n", - "lindens\n", - "lindies\n", - "lindy\n", - "line\n", - "lineable\n", - "lineage\n", - "lineages\n", - "lineal\n", - "lineally\n", - "lineaments\n", - "linear\n", - "linearly\n", - "lineate\n", - "lineated\n", - "linebred\n", - "linecut\n", - "linecuts\n", - "lined\n", - "lineless\n", - "linelike\n", - "lineman\n", - "linemen\n", - "linen\n", - "linens\n", - "lineny\n", - "liner\n", - "liners\n", - "lines\n", - "linesman\n", - "linesmen\n", - "lineup\n", - "lineups\n", - "liney\n", - "ling\n", - "linga\n", - "lingam\n", - "lingams\n", - "lingas\n", - "lingcod\n", - "lingcods\n", - "linger\n", - "lingered\n", - "lingerer\n", - "lingerers\n", - "lingerie\n", - "lingeries\n", - "lingering\n", - "lingers\n", - "lingier\n", - "lingiest\n", - "lingo\n", - "lingoes\n", - "lings\n", - "lingua\n", - "linguae\n", - "lingual\n", - "linguals\n", - "linguine\n", - "linguines\n", - "linguini\n", - "linguinis\n", - "linguist\n", - "linguistic\n", - "linguistics\n", - "linguists\n", - "lingy\n", - "linier\n", - "liniest\n", - "liniment\n", - "liniments\n", - "linin\n", - "lining\n", - "linings\n", - "linins\n", - "link\n", - "linkable\n", - "linkage\n", - "linkages\n", - "linkboy\n", - "linkboys\n", - "linked\n", - "linker\n", - "linkers\n", - "linking\n", - "linkman\n", - "linkmen\n", - "links\n", - "linksman\n", - "linksmen\n", - "linkup\n", - "linkups\n", - "linkwork\n", - "linkworks\n", - "linky\n", - "linn\n", - "linnet\n", - "linnets\n", - "linns\n", - "lino\n", - "linocut\n", - "linocuts\n", - "linoleum\n", - "linoleums\n", - "linos\n", - "lins\n", - "linsang\n", - "linsangs\n", - "linseed\n", - "linseeds\n", - "linsey\n", - "linseys\n", - "linstock\n", - "linstocks\n", - "lint\n", - "lintel\n", - "lintels\n", - "linter\n", - "linters\n", - "lintier\n", - "lintiest\n", - "lintless\n", - "lintol\n", - "lintols\n", - "lints\n", - "linty\n", - "linum\n", - "linums\n", - "liny\n", - "lion\n", - "lioness\n", - "lionesses\n", - "lionfish\n", - "lionfishes\n", - "lionise\n", - "lionised\n", - "lioniser\n", - "lionisers\n", - "lionises\n", - "lionising\n", - "lionization\n", - "lionizations\n", - "lionize\n", - "lionized\n", - "lionizer\n", - "lionizers\n", - "lionizes\n", - "lionizing\n", - "lionlike\n", - "lions\n", - "lip\n", - "lipase\n", - "lipases\n", - "lipid\n", - "lipide\n", - "lipides\n", - "lipidic\n", - "lipids\n", - "lipin\n", - "lipins\n", - "lipless\n", - "liplike\n", - "lipocyte\n", - "lipocytes\n", - "lipoid\n", - "lipoidal\n", - "lipoids\n", - "lipoma\n", - "lipomas\n", - "lipomata\n", - "lipped\n", - "lippen\n", - "lippened\n", - "lippening\n", - "lippens\n", - "lipper\n", - "lippered\n", - "lippering\n", - "lippers\n", - "lippier\n", - "lippiest\n", - "lipping\n", - "lippings\n", - "lippy\n", - "lipreading\n", - "lipreadings\n", - "lips\n", - "lipstick\n", - "lipsticks\n", - "liquate\n", - "liquated\n", - "liquates\n", - "liquating\n", - "liquefaction\n", - "liquefactions\n", - "liquefiable\n", - "liquefied\n", - "liquefier\n", - "liquefiers\n", - "liquefies\n", - "liquefy\n", - "liquefying\n", - "liqueur\n", - "liqueurs\n", - "liquid\n", - "liquidate\n", - "liquidated\n", - "liquidates\n", - "liquidating\n", - "liquidation\n", - "liquidations\n", - "liquidities\n", - "liquidity\n", - "liquidly\n", - "liquids\n", - "liquified\n", - "liquifies\n", - "liquify\n", - "liquifying\n", - "liquor\n", - "liquored\n", - "liquoring\n", - "liquors\n", - "lira\n", - "liras\n", - "lire\n", - "liripipe\n", - "liripipes\n", - "lirot\n", - "liroth\n", - "lis\n", - "lisle\n", - "lisles\n", - "lisp\n", - "lisped\n", - "lisper\n", - "lispers\n", - "lisping\n", - "lisps\n", - "lissom\n", - "lissome\n", - "lissomly\n", - "list\n", - "listable\n", - "listed\n", - "listel\n", - "listels\n", - "listen\n", - "listened\n", - "listener\n", - "listeners\n", - "listening\n", - "listens\n", - "lister\n", - "listers\n", - "listing\n", - "listings\n", - "listless\n", - "listlessly\n", - "listlessness\n", - "listlessnesses\n", - "lists\n", - "lit\n", - "litai\n", - "litanies\n", - "litany\n", - "litas\n", - "litchi\n", - "litchis\n", - "liter\n", - "literacies\n", - "literacy\n", - "literal\n", - "literally\n", - "literals\n", - "literary\n", - "literate\n", - "literates\n", - "literati\n", - "literature\n", - "literatures\n", - "liters\n", - "litharge\n", - "litharges\n", - "lithe\n", - "lithely\n", - "lithemia\n", - "lithemias\n", - "lithemic\n", - "lither\n", - "lithesome\n", - "lithest\n", - "lithia\n", - "lithias\n", - "lithic\n", - "lithium\n", - "lithiums\n", - "litho\n", - "lithograph\n", - "lithographer\n", - "lithographers\n", - "lithographic\n", - "lithographies\n", - "lithographs\n", - "lithography\n", - "lithoid\n", - "lithos\n", - "lithosol\n", - "lithosols\n", - "litigant\n", - "litigants\n", - "litigate\n", - "litigated\n", - "litigates\n", - "litigating\n", - "litigation\n", - "litigations\n", - "litigious\n", - "litigiousness\n", - "litigiousnesses\n", - "litmus\n", - "litmuses\n", - "litoral\n", - "litotes\n", - "litre\n", - "litres\n", - "lits\n", - "litten\n", - "litter\n", - "littered\n", - "litterer\n", - "litterers\n", - "littering\n", - "litters\n", - "littery\n", - "little\n", - "littleness\n", - "littlenesses\n", - "littler\n", - "littles\n", - "littlest\n", - "littlish\n", - "littoral\n", - "littorals\n", - "litu\n", - "liturgic\n", - "liturgical\n", - "liturgically\n", - "liturgies\n", - "liturgy\n", - "livabilities\n", - "livability\n", - "livable\n", - "live\n", - "liveable\n", - "lived\n", - "livelier\n", - "liveliest\n", - "livelihood\n", - "livelihoods\n", - "livelily\n", - "liveliness\n", - "livelinesses\n", - "livelong\n", - "lively\n", - "liven\n", - "livened\n", - "livener\n", - "liveners\n", - "liveness\n", - "livenesses\n", - "livening\n", - "livens\n", - "liver\n", - "liveried\n", - "liveries\n", - "liverish\n", - "livers\n", - "livery\n", - "liveryman\n", - "liverymen\n", - "lives\n", - "livest\n", - "livestock\n", - "livestocks\n", - "livetrap\n", - "livetrapped\n", - "livetrapping\n", - "livetraps\n", - "livid\n", - "lividities\n", - "lividity\n", - "lividly\n", - "livier\n", - "liviers\n", - "living\n", - "livingly\n", - "livings\n", - "livre\n", - "livres\n", - "livyer\n", - "livyers\n", - "lixivia\n", - "lixivial\n", - "lixivium\n", - "lixiviums\n", - "lizard\n", - "lizards\n", - "llama\n", - "llamas\n", - "llano\n", - "llanos\n", - "lo\n", - "loach\n", - "loaches\n", - "load\n", - "loaded\n", - "loader\n", - "loaders\n", - "loading\n", - "loadings\n", - "loads\n", - "loadstar\n", - "loadstars\n", - "loaf\n", - "loafed\n", - "loafer\n", - "loafers\n", - "loafing\n", - "loafs\n", - "loam\n", - "loamed\n", - "loamier\n", - "loamiest\n", - "loaming\n", - "loamless\n", - "loams\n", - "loamy\n", - "loan\n", - "loanable\n", - "loaned\n", - "loaner\n", - "loaners\n", - "loaning\n", - "loanings\n", - "loans\n", - "loanword\n", - "loanwords\n", - "loath\n", - "loathe\n", - "loathed\n", - "loather\n", - "loathers\n", - "loathes\n", - "loathful\n", - "loathing\n", - "loathings\n", - "loathly\n", - "loathsome\n", - "loaves\n", - "lob\n", - "lobar\n", - "lobate\n", - "lobated\n", - "lobately\n", - "lobation\n", - "lobations\n", - "lobbed\n", - "lobbied\n", - "lobbies\n", - "lobbing\n", - "lobby\n", - "lobbyer\n", - "lobbyers\n", - "lobbygow\n", - "lobbygows\n", - "lobbying\n", - "lobbyism\n", - "lobbyisms\n", - "lobbyist\n", - "lobbyists\n", - "lobe\n", - "lobed\n", - "lobefin\n", - "lobefins\n", - "lobelia\n", - "lobelias\n", - "lobeline\n", - "lobelines\n", - "lobes\n", - "loblollies\n", - "loblolly\n", - "lobo\n", - "lobos\n", - "lobotomies\n", - "lobotomy\n", - "lobs\n", - "lobster\n", - "lobsters\n", - "lobstick\n", - "lobsticks\n", - "lobular\n", - "lobulate\n", - "lobule\n", - "lobules\n", - "lobulose\n", - "lobworm\n", - "lobworms\n", - "loca\n", - "local\n", - "locale\n", - "locales\n", - "localise\n", - "localised\n", - "localises\n", - "localising\n", - "localism\n", - "localisms\n", - "localist\n", - "localists\n", - "localite\n", - "localites\n", - "localities\n", - "locality\n", - "localization\n", - "localizations\n", - "localize\n", - "localized\n", - "localizes\n", - "localizing\n", - "locally\n", - "locals\n", - "locate\n", - "located\n", - "locater\n", - "locaters\n", - "locates\n", - "locating\n", - "location\n", - "locations\n", - "locative\n", - "locatives\n", - "locator\n", - "locators\n", - "loch\n", - "lochia\n", - "lochial\n", - "lochs\n", - "loci\n", - "lock\n", - "lockable\n", - "lockage\n", - "lockages\n", - "lockbox\n", - "lockboxes\n", - "locked\n", - "locker\n", - "lockers\n", - "locket\n", - "lockets\n", - "locking\n", - "lockjaw\n", - "lockjaws\n", - "locknut\n", - "locknuts\n", - "lockout\n", - "lockouts\n", - "lockram\n", - "lockrams\n", - "locks\n", - "locksmith\n", - "locksmiths\n", - "lockstep\n", - "locksteps\n", - "lockup\n", - "lockups\n", - "loco\n", - "locoed\n", - "locoes\n", - "locofoco\n", - "locofocos\n", - "locoing\n", - "locoism\n", - "locoisms\n", - "locomote\n", - "locomoted\n", - "locomotes\n", - "locomoting\n", - "locomotion\n", - "locomotions\n", - "locomotive\n", - "locomotives\n", - "locos\n", - "locoweed\n", - "locoweeds\n", - "locular\n", - "loculate\n", - "locule\n", - "loculed\n", - "locules\n", - "loculi\n", - "loculus\n", - "locum\n", - "locums\n", - "locus\n", - "locust\n", - "locusta\n", - "locustae\n", - "locustal\n", - "locusts\n", - "locution\n", - "locutions\n", - "locutories\n", - "locutory\n", - "lode\n", - "loden\n", - "lodens\n", - "lodes\n", - "lodestar\n", - "lodestars\n", - "lodge\n", - "lodged\n", - "lodgement\n", - "lodgements\n", - "lodger\n", - "lodgers\n", - "lodges\n", - "lodging\n", - "lodgings\n", - "lodgment\n", - "lodgments\n", - "lodicule\n", - "lodicules\n", - "loess\n", - "loessal\n", - "loesses\n", - "loessial\n", - "loft\n", - "lofted\n", - "lofter\n", - "lofters\n", - "loftier\n", - "loftiest\n", - "loftily\n", - "loftiness\n", - "loftinesses\n", - "lofting\n", - "loftless\n", - "lofts\n", - "lofty\n", - "log\n", - "logan\n", - "logans\n", - "logarithm\n", - "logarithmic\n", - "logarithms\n", - "logbook\n", - "logbooks\n", - "loge\n", - "loges\n", - "loggats\n", - "logged\n", - "logger\n", - "loggerhead\n", - "loggerheads\n", - "loggers\n", - "loggets\n", - "loggia\n", - "loggias\n", - "loggie\n", - "loggier\n", - "loggiest\n", - "logging\n", - "loggings\n", - "loggy\n", - "logia\n", - "logic\n", - "logical\n", - "logically\n", - "logician\n", - "logicians\n", - "logicise\n", - "logicised\n", - "logicises\n", - "logicising\n", - "logicize\n", - "logicized\n", - "logicizes\n", - "logicizing\n", - "logics\n", - "logier\n", - "logiest\n", - "logily\n", - "loginess\n", - "loginesses\n", - "logion\n", - "logions\n", - "logistic\n", - "logistical\n", - "logistics\n", - "logjam\n", - "logjams\n", - "logo\n", - "logogram\n", - "logograms\n", - "logoi\n", - "logomach\n", - "logomachs\n", - "logos\n", - "logotype\n", - "logotypes\n", - "logotypies\n", - "logotypy\n", - "logroll\n", - "logrolled\n", - "logrolling\n", - "logrolls\n", - "logs\n", - "logway\n", - "logways\n", - "logwood\n", - "logwoods\n", - "logy\n", - "loin\n", - "loins\n", - "loiter\n", - "loitered\n", - "loiterer\n", - "loiterers\n", - "loitering\n", - "loiters\n", - "loll\n", - "lolled\n", - "loller\n", - "lollers\n", - "lollies\n", - "lolling\n", - "lollipop\n", - "lollipops\n", - "lollop\n", - "lolloped\n", - "lolloping\n", - "lollops\n", - "lolls\n", - "lolly\n", - "lollygag\n", - "lollygagged\n", - "lollygagging\n", - "lollygags\n", - "lollypop\n", - "lollypops\n", - "loment\n", - "lomenta\n", - "loments\n", - "lomentum\n", - "lomentums\n", - "lone\n", - "lonelier\n", - "loneliest\n", - "lonelily\n", - "loneliness\n", - "lonelinesses\n", - "lonely\n", - "loneness\n", - "lonenesses\n", - "loner\n", - "loners\n", - "lonesome\n", - "lonesomely\n", - "lonesomeness\n", - "lonesomenesses\n", - "lonesomes\n", - "long\n", - "longan\n", - "longans\n", - "longboat\n", - "longboats\n", - "longbow\n", - "longbows\n", - "longe\n", - "longed\n", - "longeing\n", - "longer\n", - "longeron\n", - "longerons\n", - "longers\n", - "longes\n", - "longest\n", - "longevities\n", - "longevity\n", - "longhair\n", - "longhairs\n", - "longhand\n", - "longhands\n", - "longhead\n", - "longheads\n", - "longhorn\n", - "longhorns\n", - "longing\n", - "longingly\n", - "longings\n", - "longish\n", - "longitude\n", - "longitudes\n", - "longitudinal\n", - "longitudinally\n", - "longleaf\n", - "longleaves\n", - "longline\n", - "longlines\n", - "longly\n", - "longness\n", - "longnesses\n", - "longs\n", - "longship\n", - "longships\n", - "longshoreman\n", - "longshoremen\n", - "longsome\n", - "longspur\n", - "longspurs\n", - "longtime\n", - "longueur\n", - "longueurs\n", - "longways\n", - "longwise\n", - "loo\n", - "loobies\n", - "looby\n", - "looed\n", - "looey\n", - "looeys\n", - "loof\n", - "loofa\n", - "loofah\n", - "loofahs\n", - "loofas\n", - "loofs\n", - "looie\n", - "looies\n", - "looing\n", - "look\n", - "lookdown\n", - "lookdowns\n", - "looked\n", - "looker\n", - "lookers\n", - "looking\n", - "lookout\n", - "lookouts\n", - "looks\n", - "lookup\n", - "lookups\n", - "loom\n", - "loomed\n", - "looming\n", - "looms\n", - "loon\n", - "looney\n", - "loonier\n", - "loonies\n", - "looniest\n", - "loons\n", - "loony\n", - "loop\n", - "looped\n", - "looper\n", - "loopers\n", - "loophole\n", - "loopholed\n", - "loopholes\n", - "loopholing\n", - "loopier\n", - "loopiest\n", - "looping\n", - "loops\n", - "loopy\n", - "loos\n", - "loose\n", - "loosed\n", - "looseleaf\n", - "looseleafs\n", - "loosely\n", - "loosen\n", - "loosened\n", - "loosener\n", - "looseners\n", - "looseness\n", - "loosenesses\n", - "loosening\n", - "loosens\n", - "looser\n", - "looses\n", - "loosest\n", - "loosing\n", - "loot\n", - "looted\n", - "looter\n", - "looters\n", - "looting\n", - "loots\n", - "lop\n", - "lope\n", - "loped\n", - "loper\n", - "lopers\n", - "lopes\n", - "loping\n", - "lopped\n", - "lopper\n", - "loppered\n", - "loppering\n", - "loppers\n", - "loppier\n", - "loppiest\n", - "lopping\n", - "loppy\n", - "lops\n", - "lopsided\n", - "lopsidedly\n", - "lopsidedness\n", - "lopsidednesses\n", - "lopstick\n", - "lopsticks\n", - "loquacious\n", - "loquacities\n", - "loquacity\n", - "loquat\n", - "loquats\n", - "loral\n", - "loran\n", - "lorans\n", - "lord\n", - "lorded\n", - "lording\n", - "lordings\n", - "lordless\n", - "lordlier\n", - "lordliest\n", - "lordlike\n", - "lordling\n", - "lordlings\n", - "lordly\n", - "lordoma\n", - "lordomas\n", - "lordoses\n", - "lordosis\n", - "lordotic\n", - "lords\n", - "lordship\n", - "lordships\n", - "lordy\n", - "lore\n", - "loreal\n", - "lores\n", - "lorgnon\n", - "lorgnons\n", - "lorica\n", - "loricae\n", - "loricate\n", - "loricates\n", - "lories\n", - "lorikeet\n", - "lorikeets\n", - "lorimer\n", - "lorimers\n", - "loriner\n", - "loriners\n", - "loris\n", - "lorises\n", - "lorn\n", - "lornness\n", - "lornnesses\n", - "lorries\n", - "lorry\n", - "lory\n", - "losable\n", - "lose\n", - "losel\n", - "losels\n", - "loser\n", - "losers\n", - "loses\n", - "losing\n", - "losingly\n", - "losings\n", - "loss\n", - "losses\n", - "lossy\n", - "lost\n", - "lostness\n", - "lostnesses\n", - "lot\n", - "lota\n", - "lotah\n", - "lotahs\n", - "lotas\n", - "loth\n", - "lothario\n", - "lotharios\n", - "lothsome\n", - "lotic\n", - "lotion\n", - "lotions\n", - "lotos\n", - "lotoses\n", - "lots\n", - "lotted\n", - "lotteries\n", - "lottery\n", - "lotting\n", - "lotto\n", - "lottos\n", - "lotus\n", - "lotuses\n", - "loud\n", - "louden\n", - "loudened\n", - "loudening\n", - "loudens\n", - "louder\n", - "loudest\n", - "loudish\n", - "loudlier\n", - "loudliest\n", - "loudly\n", - "loudness\n", - "loudnesses\n", - "loudspeaker\n", - "loudspeakers\n", - "lough\n", - "loughs\n", - "louie\n", - "louies\n", - "louis\n", - "lounge\n", - "lounged\n", - "lounger\n", - "loungers\n", - "lounges\n", - "lounging\n", - "loungy\n", - "loup\n", - "loupe\n", - "louped\n", - "loupen\n", - "loupes\n", - "louping\n", - "loups\n", - "lour\n", - "loured\n", - "louring\n", - "lours\n", - "loury\n", - "louse\n", - "loused\n", - "louses\n", - "lousier\n", - "lousiest\n", - "lousily\n", - "lousiness\n", - "lousinesses\n", - "lousing\n", - "lousy\n", - "lout\n", - "louted\n", - "louting\n", - "loutish\n", - "loutishly\n", - "louts\n", - "louver\n", - "louvered\n", - "louvers\n", - "louvre\n", - "louvres\n", - "lovable\n", - "lovably\n", - "lovage\n", - "lovages\n", - "love\n", - "loveable\n", - "loveably\n", - "lovebird\n", - "lovebirds\n", - "loved\n", - "loveless\n", - "lovelier\n", - "lovelies\n", - "loveliest\n", - "lovelily\n", - "loveliness\n", - "lovelinesses\n", - "lovelock\n", - "lovelocks\n", - "lovelorn\n", - "lovely\n", - "lover\n", - "loverly\n", - "lovers\n", - "loves\n", - "lovesick\n", - "lovesome\n", - "lovevine\n", - "lovevines\n", - "loving\n", - "lovingly\n", - "low\n", - "lowborn\n", - "lowboy\n", - "lowboys\n", - "lowbred\n", - "lowbrow\n", - "lowbrows\n", - "lowdown\n", - "lowdowns\n", - "lowe\n", - "lowed\n", - "lower\n", - "lowercase\n", - "lowered\n", - "lowering\n", - "lowers\n", - "lowery\n", - "lowes\n", - "lowest\n", - "lowing\n", - "lowings\n", - "lowish\n", - "lowland\n", - "lowlands\n", - "lowlier\n", - "lowliest\n", - "lowlife\n", - "lowlifes\n", - "lowliness\n", - "lowlinesses\n", - "lowly\n", - "lown\n", - "lowness\n", - "lownesses\n", - "lows\n", - "lowse\n", - "lox\n", - "loxed\n", - "loxes\n", - "loxing\n", - "loyal\n", - "loyaler\n", - "loyalest\n", - "loyalism\n", - "loyalisms\n", - "loyalist\n", - "loyalists\n", - "loyally\n", - "loyalties\n", - "loyalty\n", - "lozenge\n", - "lozenges\n", - "luau\n", - "luaus\n", - "lubber\n", - "lubberly\n", - "lubbers\n", - "lube\n", - "lubes\n", - "lubric\n", - "lubricant\n", - "lubricants\n", - "lubricate\n", - "lubricated\n", - "lubricates\n", - "lubricating\n", - "lubrication\n", - "lubrications\n", - "lubricator\n", - "lubricators\n", - "lucarne\n", - "lucarnes\n", - "luce\n", - "lucence\n", - "lucences\n", - "lucencies\n", - "lucency\n", - "lucent\n", - "lucently\n", - "lucern\n", - "lucerne\n", - "lucernes\n", - "lucerns\n", - "luces\n", - "lucid\n", - "lucidities\n", - "lucidity\n", - "lucidly\n", - "lucidness\n", - "lucidnesses\n", - "lucifer\n", - "lucifers\n", - "luck\n", - "lucked\n", - "luckie\n", - "luckier\n", - "luckies\n", - "luckiest\n", - "luckily\n", - "luckiness\n", - "luckinesses\n", - "lucking\n", - "luckless\n", - "lucks\n", - "lucky\n", - "lucrative\n", - "lucratively\n", - "lucrativeness\n", - "lucrativenesses\n", - "lucre\n", - "lucres\n", - "luculent\n", - "ludicrous\n", - "ludicrously\n", - "ludicrousness\n", - "ludicrousnesses\n", - "lues\n", - "luetic\n", - "luetics\n", - "luff\n", - "luffa\n", - "luffas\n", - "luffed\n", - "luffing\n", - "luffs\n", - "lug\n", - "luge\n", - "luges\n", - "luggage\n", - "luggages\n", - "lugged\n", - "lugger\n", - "luggers\n", - "luggie\n", - "luggies\n", - "lugging\n", - "lugs\n", - "lugsail\n", - "lugsails\n", - "lugubrious\n", - "lugubriously\n", - "lugubriousness\n", - "lugubriousnesses\n", - "lugworm\n", - "lugworms\n", - "lukewarm\n", - "lull\n", - "lullabied\n", - "lullabies\n", - "lullaby\n", - "lullabying\n", - "lulled\n", - "lulling\n", - "lulls\n", - "lulu\n", - "lulus\n", - "lum\n", - "lumbago\n", - "lumbagos\n", - "lumbar\n", - "lumbars\n", - "lumber\n", - "lumbered\n", - "lumberer\n", - "lumberers\n", - "lumbering\n", - "lumberjack\n", - "lumberjacks\n", - "lumberman\n", - "lumbermen\n", - "lumbers\n", - "lumberyard\n", - "lumberyards\n", - "lumen\n", - "lumenal\n", - "lumens\n", - "lumina\n", - "luminal\n", - "luminance\n", - "luminances\n", - "luminaries\n", - "luminary\n", - "luminescence\n", - "luminescences\n", - "luminescent\n", - "luminist\n", - "luminists\n", - "luminosities\n", - "luminosity\n", - "luminous\n", - "luminously\n", - "lummox\n", - "lummoxes\n", - "lump\n", - "lumped\n", - "lumpen\n", - "lumpens\n", - "lumper\n", - "lumpers\n", - "lumpfish\n", - "lumpfishes\n", - "lumpier\n", - "lumpiest\n", - "lumpily\n", - "lumping\n", - "lumpish\n", - "lumps\n", - "lumpy\n", - "lums\n", - "luna\n", - "lunacies\n", - "lunacy\n", - "lunar\n", - "lunarian\n", - "lunarians\n", - "lunars\n", - "lunas\n", - "lunate\n", - "lunated\n", - "lunately\n", - "lunatic\n", - "lunatics\n", - "lunation\n", - "lunations\n", - "lunch\n", - "lunched\n", - "luncheon\n", - "luncheons\n", - "luncher\n", - "lunchers\n", - "lunches\n", - "lunching\n", - "lune\n", - "lunes\n", - "lunet\n", - "lunets\n", - "lunette\n", - "lunettes\n", - "lung\n", - "lungan\n", - "lungans\n", - "lunge\n", - "lunged\n", - "lungee\n", - "lungees\n", - "lunger\n", - "lungers\n", - "lunges\n", - "lungfish\n", - "lungfishes\n", - "lungi\n", - "lunging\n", - "lungis\n", - "lungs\n", - "lungworm\n", - "lungworms\n", - "lungwort\n", - "lungworts\n", - "lungyi\n", - "lungyis\n", - "lunier\n", - "lunies\n", - "luniest\n", - "lunk\n", - "lunker\n", - "lunkers\n", - "lunkhead\n", - "lunkheads\n", - "lunks\n", - "lunt\n", - "lunted\n", - "lunting\n", - "lunts\n", - "lunula\n", - "lunulae\n", - "lunular\n", - "lunulate\n", - "lunule\n", - "lunules\n", - "luny\n", - "lupanar\n", - "lupanars\n", - "lupin\n", - "lupine\n", - "lupines\n", - "lupins\n", - "lupous\n", - "lupulin\n", - "lupulins\n", - "lupus\n", - "lupuses\n", - "lurch\n", - "lurched\n", - "lurcher\n", - "lurchers\n", - "lurches\n", - "lurching\n", - "lurdan\n", - "lurdane\n", - "lurdanes\n", - "lurdans\n", - "lure\n", - "lured\n", - "lurer\n", - "lurers\n", - "lures\n", - "lurid\n", - "luridly\n", - "luring\n", - "lurk\n", - "lurked\n", - "lurker\n", - "lurkers\n", - "lurking\n", - "lurks\n", - "luscious\n", - "lusciously\n", - "lusciousness\n", - "lusciousnesses\n", - "lush\n", - "lushed\n", - "lusher\n", - "lushes\n", - "lushest\n", - "lushing\n", - "lushly\n", - "lushness\n", - "lushnesses\n", - "lust\n", - "lusted\n", - "luster\n", - "lustered\n", - "lustering\n", - "lusterless\n", - "lusters\n", - "lustful\n", - "lustier\n", - "lustiest\n", - "lustily\n", - "lustiness\n", - "lustinesses\n", - "lusting\n", - "lustra\n", - "lustral\n", - "lustrate\n", - "lustrated\n", - "lustrates\n", - "lustrating\n", - "lustre\n", - "lustred\n", - "lustres\n", - "lustring\n", - "lustrings\n", - "lustrous\n", - "lustrum\n", - "lustrums\n", - "lusts\n", - "lusty\n", - "lusus\n", - "lususes\n", - "lutanist\n", - "lutanists\n", - "lute\n", - "lutea\n", - "luteal\n", - "lutecium\n", - "luteciums\n", - "luted\n", - "lutein\n", - "luteins\n", - "lutenist\n", - "lutenists\n", - "luteolin\n", - "luteolins\n", - "luteous\n", - "lutes\n", - "lutetium\n", - "lutetiums\n", - "luteum\n", - "luthern\n", - "lutherns\n", - "luting\n", - "lutings\n", - "lutist\n", - "lutists\n", - "lux\n", - "luxate\n", - "luxated\n", - "luxates\n", - "luxating\n", - "luxation\n", - "luxations\n", - "luxe\n", - "luxes\n", - "luxuriance\n", - "luxuriances\n", - "luxuriant\n", - "luxuriantly\n", - "luxuriate\n", - "luxuriated\n", - "luxuriates\n", - "luxuriating\n", - "luxuries\n", - "luxurious\n", - "luxuriously\n", - "luxury\n", - "lyard\n", - "lyart\n", - "lyase\n", - "lyases\n", - "lycanthropies\n", - "lycanthropy\n", - "lycea\n", - "lycee\n", - "lycees\n", - "lyceum\n", - "lyceums\n", - "lychee\n", - "lychees\n", - "lychnis\n", - "lychnises\n", - "lycopene\n", - "lycopenes\n", - "lycopod\n", - "lycopods\n", - "lyddite\n", - "lyddites\n", - "lye\n", - "lyes\n", - "lying\n", - "lyingly\n", - "lyings\n", - "lymph\n", - "lymphatic\n", - "lymphocytopenia\n", - "lymphocytosis\n", - "lymphoid\n", - "lymphoma\n", - "lymphomas\n", - "lymphomata\n", - "lymphs\n", - "lyncean\n", - "lynch\n", - "lynched\n", - "lyncher\n", - "lynchers\n", - "lynches\n", - "lynching\n", - "lynchings\n", - "lynx\n", - "lynxes\n", - "lyophile\n", - "lyrate\n", - "lyrated\n", - "lyrately\n", - "lyre\n", - "lyrebird\n", - "lyrebirds\n", - "lyres\n", - "lyric\n", - "lyrical\n", - "lyricise\n", - "lyricised\n", - "lyricises\n", - "lyricising\n", - "lyricism\n", - "lyricisms\n", - "lyricist\n", - "lyricists\n", - "lyricize\n", - "lyricized\n", - "lyricizes\n", - "lyricizing\n", - "lyrics\n", - "lyriform\n", - "lyrism\n", - "lyrisms\n", - "lyrist\n", - "lyrists\n", - "lysate\n", - "lysates\n", - "lyse\n", - "lysed\n", - "lyses\n", - "lysin\n", - "lysine\n", - "lysines\n", - "lysing\n", - "lysins\n", - "lysis\n", - "lysogen\n", - "lysogenies\n", - "lysogens\n", - "lysogeny\n", - "lysosome\n", - "lysosomes\n", - "lysozyme\n", - "lysozymes\n", - "lyssa\n", - "lyssas\n", - "lytic\n", - "lytta\n", - "lyttae\n", - "lyttas\n", - "ma\n", - "maar\n", - "maars\n", - "mac\n", - "macaber\n", - "macabre\n", - "macaco\n", - "macacos\n", - "macadam\n", - "macadamize\n", - "macadamized\n", - "macadamizes\n", - "macadamizing\n", - "macadams\n", - "macaque\n", - "macaques\n", - "macaroni\n", - "macaronies\n", - "macaronis\n", - "macaroon\n", - "macaroons\n", - "macaw\n", - "macaws\n", - "maccabaw\n", - "maccabaws\n", - "maccaboy\n", - "maccaboys\n", - "macchia\n", - "macchie\n", - "maccoboy\n", - "maccoboys\n", - "mace\n", - "maced\n", - "macer\n", - "macerate\n", - "macerated\n", - "macerates\n", - "macerating\n", - "macers\n", - "maces\n", - "mach\n", - "machete\n", - "machetes\n", - "machinate\n", - "machinated\n", - "machinates\n", - "machinating\n", - "machination\n", - "machinations\n", - "machine\n", - "machineable\n", - "machined\n", - "machineries\n", - "machinery\n", - "machines\n", - "machining\n", - "machinist\n", - "machinists\n", - "machismo\n", - "machismos\n", - "macho\n", - "machos\n", - "machree\n", - "machrees\n", - "machs\n", - "machzor\n", - "machzorim\n", - "machzors\n", - "macing\n", - "mack\n", - "mackerel\n", - "mackerels\n", - "mackinaw\n", - "mackinaws\n", - "mackle\n", - "mackled\n", - "mackles\n", - "mackling\n", - "macks\n", - "macle\n", - "macled\n", - "macles\n", - "macrame\n", - "macrames\n", - "macro\n", - "macrocosm\n", - "macrocosms\n", - "macron\n", - "macrons\n", - "macros\n", - "macrural\n", - "macruran\n", - "macrurans\n", - "macs\n", - "macula\n", - "maculae\n", - "macular\n", - "maculas\n", - "maculate\n", - "maculated\n", - "maculates\n", - "maculating\n", - "macule\n", - "maculed\n", - "macules\n", - "maculing\n", - "mad\n", - "madam\n", - "madame\n", - "madames\n", - "madams\n", - "madcap\n", - "madcaps\n", - "madded\n", - "madden\n", - "maddened\n", - "maddening\n", - "maddens\n", - "madder\n", - "madders\n", - "maddest\n", - "madding\n", - "maddish\n", - "made\n", - "madeira\n", - "madeiras\n", - "mademoiselle\n", - "mademoiselles\n", - "madhouse\n", - "madhouses\n", - "madly\n", - "madman\n", - "madmen\n", - "madness\n", - "madnesses\n", - "madonna\n", - "madonnas\n", - "madras\n", - "madrases\n", - "madre\n", - "madres\n", - "madrigal\n", - "madrigals\n", - "madrona\n", - "madronas\n", - "madrone\n", - "madrones\n", - "madrono\n", - "madronos\n", - "mads\n", - "maduro\n", - "maduros\n", - "madwoman\n", - "madwomen\n", - "madwort\n", - "madworts\n", - "madzoon\n", - "madzoons\n", - "mae\n", - "maelstrom\n", - "maelstroms\n", - "maenad\n", - "maenades\n", - "maenadic\n", - "maenads\n", - "maes\n", - "maestoso\n", - "maestosos\n", - "maestri\n", - "maestro\n", - "maestros\n", - "maffia\n", - "maffias\n", - "maffick\n", - "mafficked\n", - "mafficking\n", - "mafficks\n", - "mafia\n", - "mafias\n", - "mafic\n", - "mafiosi\n", - "mafioso\n", - "maftir\n", - "maftirs\n", - "mag\n", - "magazine\n", - "magazines\n", - "magdalen\n", - "magdalens\n", - "mage\n", - "magenta\n", - "magentas\n", - "mages\n", - "magestical\n", - "magestically\n", - "maggot\n", - "maggots\n", - "maggoty\n", - "magi\n", - "magic\n", - "magical\n", - "magically\n", - "magician\n", - "magicians\n", - "magicked\n", - "magicking\n", - "magics\n", - "magilp\n", - "magilps\n", - "magister\n", - "magisterial\n", - "magisters\n", - "magistracies\n", - "magistracy\n", - "magistrate\n", - "magistrates\n", - "magma\n", - "magmas\n", - "magmata\n", - "magmatic\n", - "magnanimities\n", - "magnanimity\n", - "magnanimous\n", - "magnanimously\n", - "magnanimousness\n", - "magnanimousnesses\n", - "magnate\n", - "magnates\n", - "magnesia\n", - "magnesias\n", - "magnesic\n", - "magnesium\n", - "magnesiums\n", - "magnet\n", - "magnetic\n", - "magnetically\n", - "magnetics\n", - "magnetism\n", - "magnetisms\n", - "magnetite\n", - "magnetites\n", - "magnetizable\n", - "magnetization\n", - "magnetizations\n", - "magnetize\n", - "magnetized\n", - "magnetizer\n", - "magnetizers\n", - "magnetizes\n", - "magnetizing\n", - "magneto\n", - "magneton\n", - "magnetons\n", - "magnetos\n", - "magnets\n", - "magnific\n", - "magnification\n", - "magnifications\n", - "magnificence\n", - "magnificences\n", - "magnificent\n", - "magnificently\n", - "magnified\n", - "magnifier\n", - "magnifiers\n", - "magnifies\n", - "magnify\n", - "magnifying\n", - "magnitude\n", - "magnitudes\n", - "magnolia\n", - "magnolias\n", - "magnum\n", - "magnums\n", - "magot\n", - "magots\n", - "magpie\n", - "magpies\n", - "mags\n", - "maguey\n", - "magueys\n", - "magus\n", - "maharaja\n", - "maharajas\n", - "maharani\n", - "maharanis\n", - "mahatma\n", - "mahatmas\n", - "mahjong\n", - "mahjongg\n", - "mahjonggs\n", - "mahjongs\n", - "mahoe\n", - "mahoes\n", - "mahogonies\n", - "mahogony\n", - "mahonia\n", - "mahonias\n", - "mahout\n", - "mahouts\n", - "mahuang\n", - "mahuangs\n", - "mahzor\n", - "mahzorim\n", - "mahzors\n", - "maid\n", - "maiden\n", - "maidenhair\n", - "maidenhairs\n", - "maidenhood\n", - "maidenhoods\n", - "maidenly\n", - "maidens\n", - "maidhood\n", - "maidhoods\n", - "maidish\n", - "maids\n", - "maieutic\n", - "maigre\n", - "maihem\n", - "maihems\n", - "mail\n", - "mailable\n", - "mailbag\n", - "mailbags\n", - "mailbox\n", - "mailboxes\n", - "maile\n", - "mailed\n", - "mailer\n", - "mailers\n", - "mailes\n", - "mailing\n", - "mailings\n", - "maill\n", - "mailless\n", - "maillot\n", - "maillots\n", - "maills\n", - "mailman\n", - "mailmen\n", - "mailperson\n", - "mailpersons\n", - "mails\n", - "mailwoman\n", - "maim\n", - "maimed\n", - "maimer\n", - "maimers\n", - "maiming\n", - "maims\n", - "main\n", - "mainland\n", - "mainlands\n", - "mainline\n", - "mainlined\n", - "mainlines\n", - "mainlining\n", - "mainly\n", - "mainmast\n", - "mainmasts\n", - "mains\n", - "mainsail\n", - "mainsails\n", - "mainstay\n", - "mainstays\n", - "mainstream\n", - "mainstreams\n", - "maintain\n", - "maintainabilities\n", - "maintainability\n", - "maintainable\n", - "maintainance\n", - "maintainances\n", - "maintained\n", - "maintaining\n", - "maintains\n", - "maintenance\n", - "maintenances\n", - "maintop\n", - "maintops\n", - "maiolica\n", - "maiolicas\n", - "mair\n", - "mairs\n", - "maist\n", - "maists\n", - "maize\n", - "maizes\n", - "majagua\n", - "majaguas\n", - "majestic\n", - "majesties\n", - "majesty\n", - "majolica\n", - "majolicas\n", - "major\n", - "majordomo\n", - "majordomos\n", - "majored\n", - "majoring\n", - "majorities\n", - "majority\n", - "majors\n", - "makable\n", - "makar\n", - "makars\n", - "make\n", - "makeable\n", - "makebate\n", - "makebates\n", - "makefast\n", - "makefasts\n", - "maker\n", - "makers\n", - "makes\n", - "makeshift\n", - "makeshifts\n", - "makeup\n", - "makeups\n", - "makimono\n", - "makimonos\n", - "making\n", - "makings\n", - "mako\n", - "makos\n", - "makuta\n", - "maladies\n", - "maladjusted\n", - "maladjustment\n", - "maladjustments\n", - "maladroit\n", - "malady\n", - "malaise\n", - "malaises\n", - "malamute\n", - "malamutes\n", - "malapert\n", - "malaperts\n", - "malaprop\n", - "malapropism\n", - "malapropisms\n", - "malaprops\n", - "malar\n", - "malaria\n", - "malarial\n", - "malarian\n", - "malarias\n", - "malarkey\n", - "malarkeys\n", - "malarkies\n", - "malarky\n", - "malaroma\n", - "malaromas\n", - "malars\n", - "malate\n", - "malates\n", - "malcontent\n", - "malcontents\n", - "male\n", - "maleate\n", - "maleates\n", - "maledict\n", - "maledicted\n", - "maledicting\n", - "malediction\n", - "maledictions\n", - "maledicts\n", - "malefactor\n", - "malefactors\n", - "malefic\n", - "maleficence\n", - "maleficences\n", - "maleficent\n", - "malemiut\n", - "malemiuts\n", - "malemute\n", - "malemutes\n", - "maleness\n", - "malenesses\n", - "males\n", - "malevolence\n", - "malevolences\n", - "malevolent\n", - "malfeasance\n", - "malfeasances\n", - "malfed\n", - "malformation\n", - "malformations\n", - "malformed\n", - "malfunction\n", - "malfunctioned\n", - "malfunctioning\n", - "malfunctions\n", - "malgre\n", - "malic\n", - "malice\n", - "malices\n", - "malicious\n", - "maliciously\n", - "malign\n", - "malignancies\n", - "malignancy\n", - "malignant\n", - "malignantly\n", - "maligned\n", - "maligner\n", - "maligners\n", - "maligning\n", - "malignities\n", - "malignity\n", - "malignly\n", - "maligns\n", - "malihini\n", - "malihinis\n", - "maline\n", - "malines\n", - "malinger\n", - "malingered\n", - "malingerer\n", - "malingerers\n", - "malingering\n", - "malingers\n", - "malison\n", - "malisons\n", - "malkin\n", - "malkins\n", - "mall\n", - "mallard\n", - "mallards\n", - "malleabilities\n", - "malleability\n", - "malleable\n", - "malled\n", - "mallee\n", - "mallees\n", - "mallei\n", - "malleoli\n", - "mallet\n", - "mallets\n", - "malleus\n", - "malling\n", - "mallow\n", - "mallows\n", - "malls\n", - "malm\n", - "malmier\n", - "malmiest\n", - "malms\n", - "malmsey\n", - "malmseys\n", - "malmy\n", - "malnourished\n", - "malnutrition\n", - "malnutritions\n", - "malodor\n", - "malodorous\n", - "malodorously\n", - "malodorousness\n", - "malodorousnesses\n", - "malodors\n", - "malposed\n", - "malpractice\n", - "malpractices\n", - "malt\n", - "maltase\n", - "maltases\n", - "malted\n", - "maltha\n", - "malthas\n", - "maltier\n", - "maltiest\n", - "malting\n", - "maltol\n", - "maltols\n", - "maltose\n", - "maltoses\n", - "maltreat\n", - "maltreated\n", - "maltreating\n", - "maltreatment\n", - "maltreatments\n", - "maltreats\n", - "malts\n", - "maltster\n", - "maltsters\n", - "malty\n", - "malvasia\n", - "malvasias\n", - "mama\n", - "mamas\n", - "mamba\n", - "mambas\n", - "mambo\n", - "mamboed\n", - "mamboes\n", - "mamboing\n", - "mambos\n", - "mameluke\n", - "mamelukes\n", - "mamey\n", - "mameyes\n", - "mameys\n", - "mamie\n", - "mamies\n", - "mamluk\n", - "mamluks\n", - "mamma\n", - "mammae\n", - "mammal\n", - "mammalian\n", - "mammals\n", - "mammary\n", - "mammas\n", - "mammate\n", - "mammati\n", - "mammatus\n", - "mammee\n", - "mammees\n", - "mammer\n", - "mammered\n", - "mammering\n", - "mammers\n", - "mammet\n", - "mammets\n", - "mammey\n", - "mammeys\n", - "mammie\n", - "mammies\n", - "mammilla\n", - "mammillae\n", - "mammitides\n", - "mammitis\n", - "mammock\n", - "mammocked\n", - "mammocking\n", - "mammocks\n", - "mammon\n", - "mammons\n", - "mammoth\n", - "mammoths\n", - "mammy\n", - "man\n", - "mana\n", - "manacle\n", - "manacled\n", - "manacles\n", - "manacling\n", - "manage\n", - "manageabilities\n", - "manageability\n", - "manageable\n", - "manageableness\n", - "manageablenesses\n", - "manageably\n", - "managed\n", - "management\n", - "managemental\n", - "managements\n", - "manager\n", - "managerial\n", - "managers\n", - "manages\n", - "managing\n", - "manakin\n", - "manakins\n", - "manana\n", - "mananas\n", - "manas\n", - "manatee\n", - "manatees\n", - "manatoid\n", - "manche\n", - "manches\n", - "manchet\n", - "manchets\n", - "manciple\n", - "manciples\n", - "mandala\n", - "mandalas\n", - "mandalic\n", - "mandamus\n", - "mandamused\n", - "mandamuses\n", - "mandamusing\n", - "mandarin\n", - "mandarins\n", - "mandate\n", - "mandated\n", - "mandates\n", - "mandating\n", - "mandator\n", - "mandators\n", - "mandatory\n", - "mandible\n", - "mandibles\n", - "mandibular\n", - "mandioca\n", - "mandiocas\n", - "mandola\n", - "mandolas\n", - "mandolin\n", - "mandolins\n", - "mandrake\n", - "mandrakes\n", - "mandrel\n", - "mandrels\n", - "mandril\n", - "mandrill\n", - "mandrills\n", - "mandrils\n", - "mane\n", - "maned\n", - "manege\n", - "maneges\n", - "maneless\n", - "manes\n", - "maneuver\n", - "maneuverabilities\n", - "maneuverability\n", - "maneuvered\n", - "maneuvering\n", - "maneuvers\n", - "manful\n", - "manfully\n", - "mangabey\n", - "mangabeys\n", - "mangabies\n", - "mangaby\n", - "manganese\n", - "manganeses\n", - "manganesian\n", - "manganic\n", - "mange\n", - "mangel\n", - "mangels\n", - "manger\n", - "mangers\n", - "manges\n", - "mangey\n", - "mangier\n", - "mangiest\n", - "mangily\n", - "mangle\n", - "mangled\n", - "mangler\n", - "manglers\n", - "mangles\n", - "mangling\n", - "mango\n", - "mangoes\n", - "mangold\n", - "mangolds\n", - "mangonel\n", - "mangonels\n", - "mangos\n", - "mangrove\n", - "mangroves\n", - "mangy\n", - "manhandle\n", - "manhandled\n", - "manhandles\n", - "manhandling\n", - "manhole\n", - "manholes\n", - "manhood\n", - "manhoods\n", - "manhunt\n", - "manhunts\n", - "mania\n", - "maniac\n", - "maniacal\n", - "maniacs\n", - "manias\n", - "manic\n", - "manics\n", - "manicure\n", - "manicured\n", - "manicures\n", - "manicuring\n", - "manicurist\n", - "manicurists\n", - "manifest\n", - "manifestation\n", - "manifestations\n", - "manifested\n", - "manifesting\n", - "manifestly\n", - "manifesto\n", - "manifestos\n", - "manifests\n", - "manifold\n", - "manifolded\n", - "manifolding\n", - "manifolds\n", - "manihot\n", - "manihots\n", - "manikin\n", - "manikins\n", - "manila\n", - "manilas\n", - "manilla\n", - "manillas\n", - "manille\n", - "manilles\n", - "manioc\n", - "manioca\n", - "maniocas\n", - "maniocs\n", - "maniple\n", - "maniples\n", - "manipulate\n", - "manipulated\n", - "manipulates\n", - "manipulating\n", - "manipulation\n", - "manipulations\n", - "manipulative\n", - "manipulator\n", - "manipulators\n", - "manito\n", - "manitos\n", - "manitou\n", - "manitous\n", - "manitu\n", - "manitus\n", - "mankind\n", - "manless\n", - "manlier\n", - "manliest\n", - "manlike\n", - "manlily\n", - "manly\n", - "manmade\n", - "manna\n", - "mannan\n", - "mannans\n", - "mannas\n", - "manned\n", - "mannequin\n", - "mannequins\n", - "manner\n", - "mannered\n", - "mannerism\n", - "mannerisms\n", - "mannerliness\n", - "mannerlinesses\n", - "mannerly\n", - "manners\n", - "mannikin\n", - "mannikins\n", - "manning\n", - "mannish\n", - "mannishly\n", - "mannishness\n", - "mannishnesses\n", - "mannite\n", - "mannites\n", - "mannitic\n", - "mannitol\n", - "mannitols\n", - "mannose\n", - "mannoses\n", - "mano\n", - "manor\n", - "manorial\n", - "manorialism\n", - "manorialisms\n", - "manors\n", - "manos\n", - "manpack\n", - "manpower\n", - "manpowers\n", - "manque\n", - "manrope\n", - "manropes\n", - "mans\n", - "mansard\n", - "mansards\n", - "manse\n", - "manservant\n", - "manses\n", - "mansion\n", - "mansions\n", - "manslaughter\n", - "manslaughters\n", - "manta\n", - "mantas\n", - "manteau\n", - "manteaus\n", - "manteaux\n", - "mantel\n", - "mantelet\n", - "mantelets\n", - "mantels\n", - "mantes\n", - "mantic\n", - "mantid\n", - "mantids\n", - "mantilla\n", - "mantillas\n", - "mantis\n", - "mantises\n", - "mantissa\n", - "mantissas\n", - "mantle\n", - "mantled\n", - "mantles\n", - "mantlet\n", - "mantlets\n", - "mantling\n", - "mantlings\n", - "mantra\n", - "mantrap\n", - "mantraps\n", - "mantras\n", - "mantua\n", - "mantuas\n", - "manual\n", - "manually\n", - "manuals\n", - "manuary\n", - "manubria\n", - "manufacture\n", - "manufactured\n", - "manufacturer\n", - "manufacturers\n", - "manufactures\n", - "manufacturing\n", - "manumit\n", - "manumits\n", - "manumitted\n", - "manumitting\n", - "manure\n", - "manured\n", - "manurer\n", - "manurers\n", - "manures\n", - "manurial\n", - "manuring\n", - "manus\n", - "manuscript\n", - "manuscripts\n", - "manward\n", - "manwards\n", - "manwise\n", - "many\n", - "manyfold\n", - "map\n", - "maple\n", - "maples\n", - "mapmaker\n", - "mapmakers\n", - "mappable\n", - "mapped\n", - "mapper\n", - "mappers\n", - "mapping\n", - "mappings\n", - "maps\n", - "maquette\n", - "maquettes\n", - "maqui\n", - "maquis\n", - "mar\n", - "marabou\n", - "marabous\n", - "marabout\n", - "marabouts\n", - "maraca\n", - "maracas\n", - "maranta\n", - "marantas\n", - "marasca\n", - "marascas\n", - "maraschino\n", - "maraschinos\n", - "marasmic\n", - "marasmus\n", - "marasmuses\n", - "marathon\n", - "marathons\n", - "maraud\n", - "marauded\n", - "marauder\n", - "marauders\n", - "marauding\n", - "marauds\n", - "maravedi\n", - "maravedis\n", - "marble\n", - "marbled\n", - "marbler\n", - "marblers\n", - "marbles\n", - "marblier\n", - "marbliest\n", - "marbling\n", - "marblings\n", - "marbly\n", - "marc\n", - "marcel\n", - "marcelled\n", - "marcelling\n", - "marcels\n", - "march\n", - "marched\n", - "marchen\n", - "marcher\n", - "marchers\n", - "marches\n", - "marchesa\n", - "marchese\n", - "marchesi\n", - "marching\n", - "marchioness\n", - "marchionesses\n", - "marcs\n", - "mare\n", - "maremma\n", - "maremme\n", - "mares\n", - "margaric\n", - "margarin\n", - "margarine\n", - "margarines\n", - "margarins\n", - "margay\n", - "margays\n", - "marge\n", - "margent\n", - "margented\n", - "margenting\n", - "margents\n", - "marges\n", - "margin\n", - "marginal\n", - "marginally\n", - "margined\n", - "margining\n", - "margins\n", - "margrave\n", - "margraves\n", - "maria\n", - "mariachi\n", - "mariachis\n", - "marigold\n", - "marigolds\n", - "marihuana\n", - "marihuanas\n", - "marijuana\n", - "marijuanas\n", - "marimba\n", - "marimbas\n", - "marina\n", - "marinade\n", - "marinaded\n", - "marinades\n", - "marinading\n", - "marinara\n", - "marinaras\n", - "marinas\n", - "marinate\n", - "marinated\n", - "marinates\n", - "marinating\n", - "marine\n", - "mariner\n", - "mariners\n", - "marines\n", - "marionette\n", - "marionettes\n", - "mariposa\n", - "mariposas\n", - "marish\n", - "marishes\n", - "marital\n", - "maritime\n", - "marjoram\n", - "marjorams\n", - "mark\n", - "markdown\n", - "markdowns\n", - "marked\n", - "markedly\n", - "marker\n", - "markers\n", - "market\n", - "marketable\n", - "marketech\n", - "marketed\n", - "marketer\n", - "marketers\n", - "marketing\n", - "marketplace\n", - "marketplaces\n", - "markets\n", - "markhoor\n", - "markhoors\n", - "markhor\n", - "markhors\n", - "marking\n", - "markings\n", - "markka\n", - "markkaa\n", - "markkas\n", - "marks\n", - "marksman\n", - "marksmanship\n", - "marksmanships\n", - "marksmen\n", - "markup\n", - "markups\n", - "marl\n", - "marled\n", - "marlier\n", - "marliest\n", - "marlin\n", - "marline\n", - "marlines\n", - "marling\n", - "marlings\n", - "marlins\n", - "marlite\n", - "marlites\n", - "marlitic\n", - "marls\n", - "marly\n", - "marmalade\n", - "marmalades\n", - "marmite\n", - "marmites\n", - "marmoset\n", - "marmosets\n", - "marmot\n", - "marmots\n", - "maroon\n", - "marooned\n", - "marooning\n", - "maroons\n", - "marplot\n", - "marplots\n", - "marque\n", - "marquee\n", - "marquees\n", - "marques\n", - "marquess\n", - "marquesses\n", - "marquis\n", - "marquise\n", - "marquises\n", - "marram\n", - "marrams\n", - "marred\n", - "marrer\n", - "marrers\n", - "marriage\n", - "marriageable\n", - "marriages\n", - "married\n", - "marrieds\n", - "marrier\n", - "marriers\n", - "marries\n", - "marring\n", - "marron\n", - "marrons\n", - "marrow\n", - "marrowed\n", - "marrowing\n", - "marrows\n", - "marrowy\n", - "marry\n", - "marrying\n", - "mars\n", - "marse\n", - "marses\n", - "marsh\n", - "marshal\n", - "marshaled\n", - "marshaling\n", - "marshall\n", - "marshalled\n", - "marshalling\n", - "marshalls\n", - "marshals\n", - "marshes\n", - "marshier\n", - "marshiest\n", - "marshmallow\n", - "marshmallows\n", - "marshy\n", - "marsupia\n", - "marsupial\n", - "marsupials\n", - "mart\n", - "martagon\n", - "martagons\n", - "marted\n", - "martello\n", - "martellos\n", - "marten\n", - "martens\n", - "martial\n", - "martian\n", - "martians\n", - "martin\n", - "martinet\n", - "martinets\n", - "marting\n", - "martini\n", - "martinis\n", - "martins\n", - "martlet\n", - "martlets\n", - "marts\n", - "martyr\n", - "martyrdom\n", - "martyrdoms\n", - "martyred\n", - "martyries\n", - "martyring\n", - "martyrly\n", - "martyrs\n", - "martyry\n", - "marvel\n", - "marveled\n", - "marveling\n", - "marvelled\n", - "marvelling\n", - "marvellous\n", - "marvelous\n", - "marvelously\n", - "marvelousness\n", - "marvelousnesses\n", - "marvels\n", - "marzipan\n", - "marzipans\n", - "mas\n", - "mascara\n", - "mascaras\n", - "mascon\n", - "mascons\n", - "mascot\n", - "mascots\n", - "masculine\n", - "masculinities\n", - "masculinity\n", - "masculinization\n", - "masculinizations\n", - "maser\n", - "masers\n", - "mash\n", - "mashed\n", - "masher\n", - "mashers\n", - "mashes\n", - "mashie\n", - "mashies\n", - "mashing\n", - "mashy\n", - "masjid\n", - "masjids\n", - "mask\n", - "maskable\n", - "masked\n", - "maskeg\n", - "maskegs\n", - "masker\n", - "maskers\n", - "masking\n", - "maskings\n", - "masklike\n", - "masks\n", - "masochism\n", - "masochisms\n", - "masochist\n", - "masochistic\n", - "masochists\n", - "mason\n", - "masoned\n", - "masonic\n", - "masoning\n", - "masonries\n", - "masonry\n", - "masons\n", - "masque\n", - "masquer\n", - "masquerade\n", - "masqueraded\n", - "masquerader\n", - "masqueraders\n", - "masquerades\n", - "masquerading\n", - "masquers\n", - "masques\n", - "mass\n", - "massa\n", - "massachusetts\n", - "massacre\n", - "massacred\n", - "massacres\n", - "massacring\n", - "massage\n", - "massaged\n", - "massager\n", - "massagers\n", - "massages\n", - "massaging\n", - "massas\n", - "masse\n", - "massed\n", - "massedly\n", - "masses\n", - "masseter\n", - "masseters\n", - "masseur\n", - "masseurs\n", - "masseuse\n", - "masseuses\n", - "massicot\n", - "massicots\n", - "massier\n", - "massiest\n", - "massif\n", - "massifs\n", - "massing\n", - "massive\n", - "massiveness\n", - "massivenesses\n", - "massless\n", - "masslessness\n", - "masslessnesses\n", - "massy\n", - "mast\n", - "mastaba\n", - "mastabah\n", - "mastabahs\n", - "mastabas\n", - "mastectomies\n", - "mastectomy\n", - "masted\n", - "master\n", - "mastered\n", - "masterful\n", - "masterfully\n", - "masteries\n", - "mastering\n", - "masterly\n", - "mastermind\n", - "masterminds\n", - "masters\n", - "mastership\n", - "masterships\n", - "masterwork\n", - "masterworks\n", - "mastery\n", - "masthead\n", - "mastheaded\n", - "mastheading\n", - "mastheads\n", - "mastic\n", - "masticate\n", - "masticated\n", - "masticates\n", - "masticating\n", - "mastication\n", - "mastications\n", - "mastiche\n", - "mastiches\n", - "mastics\n", - "mastiff\n", - "mastiffs\n", - "masting\n", - "mastitic\n", - "mastitides\n", - "mastitis\n", - "mastix\n", - "mastixes\n", - "mastless\n", - "mastlike\n", - "mastodon\n", - "mastodons\n", - "mastoid\n", - "mastoids\n", - "masts\n", - "masturbate\n", - "masturbated\n", - "masturbates\n", - "masturbating\n", - "masturbation\n", - "masturbations\n", - "masurium\n", - "masuriums\n", - "mat\n", - "matador\n", - "matadors\n", - "match\n", - "matchbox\n", - "matchboxes\n", - "matched\n", - "matcher\n", - "matchers\n", - "matches\n", - "matching\n", - "matchless\n", - "matchmaker\n", - "matchmakers\n", - "mate\n", - "mated\n", - "mateless\n", - "matelote\n", - "matelotes\n", - "mater\n", - "material\n", - "materialism\n", - "materialisms\n", - "materialist\n", - "materialistic\n", - "materialists\n", - "materialization\n", - "materializations\n", - "materialize\n", - "materialized\n", - "materializes\n", - "materializing\n", - "materially\n", - "materials\n", - "materiel\n", - "materiels\n", - "maternal\n", - "maternally\n", - "maternities\n", - "maternity\n", - "maters\n", - "mates\n", - "mateship\n", - "mateships\n", - "matey\n", - "mateys\n", - "math\n", - "mathematical\n", - "mathematically\n", - "mathematician\n", - "mathematicians\n", - "mathematics\n", - "maths\n", - "matilda\n", - "matildas\n", - "matin\n", - "matinal\n", - "matinee\n", - "matinees\n", - "matiness\n", - "matinesses\n", - "mating\n", - "matings\n", - "matins\n", - "matless\n", - "matrass\n", - "matrasses\n", - "matres\n", - "matriarch\n", - "matriarchal\n", - "matriarches\n", - "matriarchies\n", - "matriarchy\n", - "matrices\n", - "matricidal\n", - "matricide\n", - "matricides\n", - "matriculate\n", - "matriculated\n", - "matriculates\n", - "matriculating\n", - "matriculation\n", - "matriculations\n", - "matrimonial\n", - "matrimonially\n", - "matrimonies\n", - "matrimony\n", - "matrix\n", - "matrixes\n", - "matron\n", - "matronal\n", - "matronly\n", - "matrons\n", - "mats\n", - "matt\n", - "matte\n", - "matted\n", - "mattedly\n", - "matter\n", - "mattered\n", - "mattering\n", - "matters\n", - "mattery\n", - "mattes\n", - "mattin\n", - "matting\n", - "mattings\n", - "mattins\n", - "mattock\n", - "mattocks\n", - "mattoid\n", - "mattoids\n", - "mattrass\n", - "mattrasses\n", - "mattress\n", - "mattresses\n", - "matts\n", - "maturate\n", - "maturated\n", - "maturates\n", - "maturating\n", - "maturation\n", - "maturational\n", - "maturations\n", - "maturative\n", - "mature\n", - "matured\n", - "maturely\n", - "maturer\n", - "matures\n", - "maturest\n", - "maturing\n", - "maturities\n", - "maturity\n", - "matza\n", - "matzah\n", - "matzahs\n", - "matzas\n", - "matzo\n", - "matzoh\n", - "matzohs\n", - "matzoon\n", - "matzoons\n", - "matzos\n", - "matzot\n", - "matzoth\n", - "maudlin\n", - "mauger\n", - "maugre\n", - "maul\n", - "mauled\n", - "mauler\n", - "maulers\n", - "mauling\n", - "mauls\n", - "maumet\n", - "maumetries\n", - "maumetry\n", - "maumets\n", - "maun\n", - "maund\n", - "maunder\n", - "maundered\n", - "maundering\n", - "maunders\n", - "maundies\n", - "maunds\n", - "maundy\n", - "mausolea\n", - "mausoleum\n", - "mausoleums\n", - "maut\n", - "mauts\n", - "mauve\n", - "mauves\n", - "maven\n", - "mavens\n", - "maverick\n", - "mavericks\n", - "mavie\n", - "mavies\n", - "mavin\n", - "mavins\n", - "mavis\n", - "mavises\n", - "maw\n", - "mawed\n", - "mawing\n", - "mawkish\n", - "mawkishly\n", - "mawkishness\n", - "mawkishnesses\n", - "mawn\n", - "maws\n", - "maxi\n", - "maxicoat\n", - "maxicoats\n", - "maxilla\n", - "maxillae\n", - "maxillas\n", - "maxim\n", - "maxima\n", - "maximal\n", - "maximals\n", - "maximin\n", - "maximins\n", - "maximise\n", - "maximised\n", - "maximises\n", - "maximising\n", - "maximite\n", - "maximites\n", - "maximize\n", - "maximized\n", - "maximizes\n", - "maximizing\n", - "maxims\n", - "maximum\n", - "maximums\n", - "maxis\n", - "maxixe\n", - "maxixes\n", - "maxwell\n", - "maxwells\n", - "may\n", - "maya\n", - "mayan\n", - "mayapple\n", - "mayapples\n", - "mayas\n", - "maybe\n", - "maybush\n", - "maybushes\n", - "mayday\n", - "maydays\n", - "mayed\n", - "mayest\n", - "mayflies\n", - "mayflower\n", - "mayflowers\n", - "mayfly\n", - "mayhap\n", - "mayhem\n", - "mayhems\n", - "maying\n", - "mayings\n", - "mayonnaise\n", - "mayonnaises\n", - "mayor\n", - "mayoral\n", - "mayoralties\n", - "mayoralty\n", - "mayoress\n", - "mayoresses\n", - "mayors\n", - "maypole\n", - "maypoles\n", - "maypop\n", - "maypops\n", - "mays\n", - "mayst\n", - "mayvin\n", - "mayvins\n", - "mayweed\n", - "mayweeds\n", - "mazaedia\n", - "mazard\n", - "mazards\n", - "maze\n", - "mazed\n", - "mazedly\n", - "mazelike\n", - "mazer\n", - "mazers\n", - "mazes\n", - "mazier\n", - "maziest\n", - "mazily\n", - "maziness\n", - "mazinesses\n", - "mazing\n", - "mazourka\n", - "mazourkas\n", - "mazuma\n", - "mazumas\n", - "mazurka\n", - "mazurkas\n", - "mazy\n", - "mazzard\n", - "mazzards\n", - "mbira\n", - "mbiras\n", - "mccaffrey\n", - "me\n", - "mead\n", - "meadow\n", - "meadowland\n", - "meadowlands\n", - "meadowlark\n", - "meadowlarks\n", - "meadows\n", - "meadowy\n", - "meads\n", - "meager\n", - "meagerly\n", - "meagerness\n", - "meagernesses\n", - "meagre\n", - "meagrely\n", - "meal\n", - "mealie\n", - "mealier\n", - "mealies\n", - "mealiest\n", - "mealless\n", - "meals\n", - "mealtime\n", - "mealtimes\n", - "mealworm\n", - "mealworms\n", - "mealy\n", - "mealybug\n", - "mealybugs\n", - "mean\n", - "meander\n", - "meandered\n", - "meandering\n", - "meanders\n", - "meaner\n", - "meaners\n", - "meanest\n", - "meanie\n", - "meanies\n", - "meaning\n", - "meaningful\n", - "meaningfully\n", - "meaningless\n", - "meanings\n", - "meanly\n", - "meanness\n", - "meannesses\n", - "means\n", - "meant\n", - "meantime\n", - "meantimes\n", - "meanwhile\n", - "meanwhiles\n", - "meany\n", - "measle\n", - "measled\n", - "measles\n", - "measlier\n", - "measliest\n", - "measly\n", - "measurable\n", - "measurably\n", - "measure\n", - "measured\n", - "measureless\n", - "measurement\n", - "measurements\n", - "measurer\n", - "measurers\n", - "measures\n", - "measuring\n", - "meat\n", - "meatal\n", - "meatball\n", - "meatballs\n", - "meathead\n", - "meatheads\n", - "meatier\n", - "meatiest\n", - "meatily\n", - "meatless\n", - "meatman\n", - "meatmen\n", - "meats\n", - "meatus\n", - "meatuses\n", - "meaty\n", - "mecca\n", - "meccas\n", - "mechanic\n", - "mechanical\n", - "mechanically\n", - "mechanics\n", - "mechanism\n", - "mechanisms\n", - "mechanistic\n", - "mechanistically\n", - "mechanization\n", - "mechanizations\n", - "mechanize\n", - "mechanized\n", - "mechanizer\n", - "mechanizers\n", - "mechanizes\n", - "mechanizing\n", - "meconium\n", - "meconiums\n", - "medaka\n", - "medakas\n", - "medal\n", - "medaled\n", - "medaling\n", - "medalist\n", - "medalists\n", - "medalled\n", - "medallic\n", - "medalling\n", - "medallion\n", - "medallions\n", - "medals\n", - "meddle\n", - "meddled\n", - "meddler\n", - "meddlers\n", - "meddles\n", - "meddlesome\n", - "meddling\n", - "media\n", - "mediacies\n", - "mediacy\n", - "mediad\n", - "mediae\n", - "mediaeval\n", - "medial\n", - "medially\n", - "medials\n", - "median\n", - "medianly\n", - "medians\n", - "mediant\n", - "mediants\n", - "medias\n", - "mediastinum\n", - "mediate\n", - "mediated\n", - "mediates\n", - "mediating\n", - "mediation\n", - "mediations\n", - "mediator\n", - "mediators\n", - "medic\n", - "medicable\n", - "medicably\n", - "medicaid\n", - "medicaids\n", - "medical\n", - "medically\n", - "medicals\n", - "medicare\n", - "medicares\n", - "medicate\n", - "medicated\n", - "medicates\n", - "medicating\n", - "medication\n", - "medications\n", - "medicinal\n", - "medicinally\n", - "medicine\n", - "medicined\n", - "medicines\n", - "medicining\n", - "medick\n", - "medicks\n", - "medico\n", - "medicos\n", - "medics\n", - "medieval\n", - "medievalism\n", - "medievalisms\n", - "medievalist\n", - "medievalists\n", - "medievals\n", - "medii\n", - "mediocre\n", - "mediocrities\n", - "mediocrity\n", - "meditate\n", - "meditated\n", - "meditates\n", - "meditating\n", - "meditation\n", - "meditations\n", - "meditative\n", - "meditatively\n", - "medium\n", - "mediums\n", - "medius\n", - "medlar\n", - "medlars\n", - "medley\n", - "medleys\n", - "medulla\n", - "medullae\n", - "medullar\n", - "medullas\n", - "medusa\n", - "medusae\n", - "medusan\n", - "medusans\n", - "medusas\n", - "medusoid\n", - "medusoids\n", - "meed\n", - "meeds\n", - "meek\n", - "meeker\n", - "meekest\n", - "meekly\n", - "meekness\n", - "meeknesses\n", - "meerschaum\n", - "meerschaums\n", - "meet\n", - "meeter\n", - "meeters\n", - "meeting\n", - "meetinghouse\n", - "meetinghouses\n", - "meetings\n", - "meetly\n", - "meetness\n", - "meetnesses\n", - "meets\n", - "megabar\n", - "megabars\n", - "megabit\n", - "megabits\n", - "megabuck\n", - "megabucks\n", - "megacycle\n", - "megacycles\n", - "megadyne\n", - "megadynes\n", - "megahertz\n", - "megalith\n", - "megaliths\n", - "megaphone\n", - "megaphones\n", - "megapod\n", - "megapode\n", - "megapodes\n", - "megass\n", - "megasse\n", - "megasses\n", - "megaton\n", - "megatons\n", - "megavolt\n", - "megavolts\n", - "megawatt\n", - "megawatts\n", - "megillah\n", - "megillahs\n", - "megilp\n", - "megilph\n", - "megilphs\n", - "megilps\n", - "megohm\n", - "megohms\n", - "megrim\n", - "megrims\n", - "meikle\n", - "meinie\n", - "meinies\n", - "meiny\n", - "meioses\n", - "meiosis\n", - "meiotic\n", - "mel\n", - "melamine\n", - "melamines\n", - "melancholia\n", - "melancholic\n", - "melancholies\n", - "melancholy\n", - "melange\n", - "melanges\n", - "melanian\n", - "melanic\n", - "melanics\n", - "melanin\n", - "melanins\n", - "melanism\n", - "melanisms\n", - "melanist\n", - "melanists\n", - "melanite\n", - "melanites\n", - "melanize\n", - "melanized\n", - "melanizes\n", - "melanizing\n", - "melanoid\n", - "melanoids\n", - "melanoma\n", - "melanomas\n", - "melanomata\n", - "melanous\n", - "melatonin\n", - "melba\n", - "meld\n", - "melded\n", - "melder\n", - "melders\n", - "melding\n", - "melds\n", - "melee\n", - "melees\n", - "melic\n", - "melilite\n", - "melilites\n", - "melilot\n", - "melilots\n", - "melinite\n", - "melinites\n", - "meliorate\n", - "meliorated\n", - "meliorates\n", - "meliorating\n", - "melioration\n", - "meliorations\n", - "meliorative\n", - "melisma\n", - "melismas\n", - "melismata\n", - "mell\n", - "melled\n", - "mellific\n", - "mellifluous\n", - "mellifluously\n", - "mellifluousness\n", - "mellifluousnesses\n", - "melling\n", - "mellow\n", - "mellowed\n", - "mellower\n", - "mellowest\n", - "mellowing\n", - "mellowly\n", - "mellowness\n", - "mellownesses\n", - "mellows\n", - "mells\n", - "melodeon\n", - "melodeons\n", - "melodia\n", - "melodias\n", - "melodic\n", - "melodically\n", - "melodies\n", - "melodious\n", - "melodiously\n", - "melodiousness\n", - "melodiousnesses\n", - "melodise\n", - "melodised\n", - "melodises\n", - "melodising\n", - "melodist\n", - "melodists\n", - "melodize\n", - "melodized\n", - "melodizes\n", - "melodizing\n", - "melodrama\n", - "melodramas\n", - "melodramatic\n", - "melodramatist\n", - "melodramatists\n", - "melody\n", - "meloid\n", - "meloids\n", - "melon\n", - "melons\n", - "mels\n", - "melt\n", - "meltable\n", - "meltage\n", - "meltages\n", - "melted\n", - "melter\n", - "melters\n", - "melting\n", - "melton\n", - "meltons\n", - "melts\n", - "mem\n", - "member\n", - "membered\n", - "members\n", - "membership\n", - "memberships\n", - "membrane\n", - "membranes\n", - "membranous\n", - "memento\n", - "mementoes\n", - "mementos\n", - "memo\n", - "memoir\n", - "memoirs\n", - "memorabilia\n", - "memorabilities\n", - "memorability\n", - "memorable\n", - "memorableness\n", - "memorablenesses\n", - "memorably\n", - "memoranda\n", - "memorandum\n", - "memorandums\n", - "memorial\n", - "memorialize\n", - "memorialized\n", - "memorializes\n", - "memorializing\n", - "memorials\n", - "memories\n", - "memorization\n", - "memorizations\n", - "memorize\n", - "memorized\n", - "memorizes\n", - "memorizing\n", - "memory\n", - "memos\n", - "mems\n", - "memsahib\n", - "memsahibs\n", - "men\n", - "menace\n", - "menaced\n", - "menacer\n", - "menacers\n", - "menaces\n", - "menacing\n", - "menacingly\n", - "menad\n", - "menads\n", - "menage\n", - "menagerie\n", - "menageries\n", - "menages\n", - "menarche\n", - "menarches\n", - "mend\n", - "mendable\n", - "mendacious\n", - "mendaciously\n", - "mendacities\n", - "mendacity\n", - "mended\n", - "mendelson\n", - "mender\n", - "menders\n", - "mendicancies\n", - "mendicancy\n", - "mendicant\n", - "mendicants\n", - "mendigo\n", - "mendigos\n", - "mending\n", - "mendings\n", - "mends\n", - "menfolk\n", - "menfolks\n", - "menhaden\n", - "menhadens\n", - "menhir\n", - "menhirs\n", - "menial\n", - "menially\n", - "menials\n", - "meninges\n", - "meningitides\n", - "meningitis\n", - "meninx\n", - "meniscal\n", - "menisci\n", - "meniscus\n", - "meniscuses\n", - "meno\n", - "menologies\n", - "menology\n", - "menopausal\n", - "menopause\n", - "menopauses\n", - "menorah\n", - "menorahs\n", - "mensa\n", - "mensae\n", - "mensal\n", - "mensas\n", - "mensch\n", - "menschen\n", - "mensches\n", - "mense\n", - "mensed\n", - "menseful\n", - "menservants\n", - "menses\n", - "mensing\n", - "menstrua\n", - "menstrual\n", - "menstruate\n", - "menstruated\n", - "menstruates\n", - "menstruating\n", - "menstruation\n", - "menstruations\n", - "mensural\n", - "menswear\n", - "menswears\n", - "menta\n", - "mental\n", - "mentalities\n", - "mentality\n", - "mentally\n", - "menthene\n", - "menthenes\n", - "menthol\n", - "mentholated\n", - "menthols\n", - "mention\n", - "mentioned\n", - "mentioning\n", - "mentions\n", - "mentor\n", - "mentors\n", - "mentum\n", - "menu\n", - "menus\n", - "meow\n", - "meowed\n", - "meowing\n", - "meows\n", - "mephitic\n", - "mephitis\n", - "mephitises\n", - "mercantile\n", - "mercapto\n", - "mercenaries\n", - "mercenarily\n", - "mercenariness\n", - "mercenarinesses\n", - "mercenary\n", - "mercer\n", - "merceries\n", - "mercers\n", - "mercery\n", - "merchandise\n", - "merchandised\n", - "merchandiser\n", - "merchandisers\n", - "merchandises\n", - "merchandising\n", - "merchant\n", - "merchanted\n", - "merchanting\n", - "merchants\n", - "mercies\n", - "merciful\n", - "mercifully\n", - "merciless\n", - "mercilessly\n", - "mercurial\n", - "mercurially\n", - "mercurialness\n", - "mercurialnesses\n", - "mercuric\n", - "mercuries\n", - "mercurous\n", - "mercury\n", - "mercy\n", - "mere\n", - "merely\n", - "merengue\n", - "merengues\n", - "merer\n", - "meres\n", - "merest\n", - "merge\n", - "merged\n", - "mergence\n", - "mergences\n", - "merger\n", - "mergers\n", - "merges\n", - "merging\n", - "meridian\n", - "meridians\n", - "meringue\n", - "meringues\n", - "merino\n", - "merinos\n", - "merises\n", - "merisis\n", - "meristem\n", - "meristems\n", - "meristic\n", - "merit\n", - "merited\n", - "meriting\n", - "meritorious\n", - "meritoriously\n", - "meritoriousness\n", - "meritoriousnesses\n", - "merits\n", - "merk\n", - "merks\n", - "merl\n", - "merle\n", - "merles\n", - "merlin\n", - "merlins\n", - "merlon\n", - "merlons\n", - "merls\n", - "mermaid\n", - "mermaids\n", - "merman\n", - "mermen\n", - "meropia\n", - "meropias\n", - "meropic\n", - "merrier\n", - "merriest\n", - "merrily\n", - "merriment\n", - "merriments\n", - "merry\n", - "merrymaker\n", - "merrymakers\n", - "merrymaking\n", - "merrymakings\n", - "mesa\n", - "mesally\n", - "mesarch\n", - "mesas\n", - "mescal\n", - "mescals\n", - "mesdames\n", - "mesdemoiselles\n", - "meseemed\n", - "meseems\n", - "mesh\n", - "meshed\n", - "meshes\n", - "meshier\n", - "meshiest\n", - "meshing\n", - "meshwork\n", - "meshworks\n", - "meshy\n", - "mesial\n", - "mesially\n", - "mesian\n", - "mesic\n", - "mesmeric\n", - "mesmerism\n", - "mesmerisms\n", - "mesmerize\n", - "mesmerized\n", - "mesmerizes\n", - "mesmerizing\n", - "mesnalties\n", - "mesnalty\n", - "mesne\n", - "mesocarp\n", - "mesocarps\n", - "mesoderm\n", - "mesoderms\n", - "mesoglea\n", - "mesogleas\n", - "mesomere\n", - "mesomeres\n", - "meson\n", - "mesonic\n", - "mesons\n", - "mesophyl\n", - "mesophyls\n", - "mesosome\n", - "mesosomes\n", - "mesotron\n", - "mesotrons\n", - "mesquit\n", - "mesquite\n", - "mesquites\n", - "mesquits\n", - "mess\n", - "message\n", - "messages\n", - "messan\n", - "messans\n", - "messed\n", - "messenger\n", - "messengers\n", - "messes\n", - "messiah\n", - "messiahs\n", - "messier\n", - "messiest\n", - "messieurs\n", - "messily\n", - "messing\n", - "messman\n", - "messmate\n", - "messmates\n", - "messmen\n", - "messuage\n", - "messuages\n", - "messy\n", - "mestee\n", - "mestees\n", - "mesteso\n", - "mestesoes\n", - "mestesos\n", - "mestino\n", - "mestinoes\n", - "mestinos\n", - "mestiza\n", - "mestizas\n", - "mestizo\n", - "mestizoes\n", - "mestizos\n", - "met\n", - "meta\n", - "metabolic\n", - "metabolism\n", - "metabolisms\n", - "metabolize\n", - "metabolized\n", - "metabolizes\n", - "metabolizing\n", - "metage\n", - "metages\n", - "metal\n", - "metaled\n", - "metaling\n", - "metalise\n", - "metalised\n", - "metalises\n", - "metalising\n", - "metalist\n", - "metalists\n", - "metalize\n", - "metalized\n", - "metalizes\n", - "metalizing\n", - "metalled\n", - "metallic\n", - "metalling\n", - "metallurgical\n", - "metallurgically\n", - "metallurgies\n", - "metallurgist\n", - "metallurgists\n", - "metallurgy\n", - "metals\n", - "metalware\n", - "metalwares\n", - "metalwork\n", - "metalworker\n", - "metalworkers\n", - "metalworking\n", - "metalworkings\n", - "metalworks\n", - "metamer\n", - "metamere\n", - "metameres\n", - "metamers\n", - "metamorphose\n", - "metamorphosed\n", - "metamorphoses\n", - "metamorphosing\n", - "metamorphosis\n", - "metaphor\n", - "metaphorical\n", - "metaphors\n", - "metaphysical\n", - "metaphysician\n", - "metaphysicians\n", - "metaphysics\n", - "metastases\n", - "metastatic\n", - "metate\n", - "metates\n", - "metazoa\n", - "metazoal\n", - "metazoan\n", - "metazoans\n", - "metazoic\n", - "metazoon\n", - "mete\n", - "meted\n", - "meteor\n", - "meteoric\n", - "meteorically\n", - "meteorite\n", - "meteorites\n", - "meteoritic\n", - "meteorological\n", - "meteorologies\n", - "meteorologist\n", - "meteorologists\n", - "meteorology\n", - "meteors\n", - "metepa\n", - "metepas\n", - "meter\n", - "meterage\n", - "meterages\n", - "metered\n", - "metering\n", - "meters\n", - "metes\n", - "methadon\n", - "methadone\n", - "methadones\n", - "methadons\n", - "methane\n", - "methanes\n", - "methanol\n", - "methanols\n", - "methinks\n", - "method\n", - "methodic\n", - "methodical\n", - "methodically\n", - "methodicalness\n", - "methodicalnesses\n", - "methodological\n", - "methodologies\n", - "methodology\n", - "methods\n", - "methotrexate\n", - "methought\n", - "methoxy\n", - "methoxyl\n", - "methyl\n", - "methylal\n", - "methylals\n", - "methylic\n", - "methyls\n", - "meticulous\n", - "meticulously\n", - "meticulousness\n", - "meticulousnesses\n", - "metier\n", - "metiers\n", - "meting\n", - "metis\n", - "metisse\n", - "metisses\n", - "metonym\n", - "metonymies\n", - "metonyms\n", - "metonymy\n", - "metopae\n", - "metope\n", - "metopes\n", - "metopic\n", - "metopon\n", - "metopons\n", - "metre\n", - "metred\n", - "metres\n", - "metric\n", - "metrical\n", - "metrically\n", - "metrication\n", - "metrications\n", - "metrics\n", - "metrified\n", - "metrifies\n", - "metrify\n", - "metrifying\n", - "metring\n", - "metrist\n", - "metrists\n", - "metritis\n", - "metritises\n", - "metro\n", - "metronome\n", - "metronomes\n", - "metropolis\n", - "metropolises\n", - "metropolitan\n", - "metros\n", - "mettle\n", - "mettled\n", - "mettles\n", - "mettlesome\n", - "metump\n", - "metumps\n", - "meuniere\n", - "mew\n", - "mewed\n", - "mewing\n", - "mewl\n", - "mewled\n", - "mewler\n", - "mewlers\n", - "mewling\n", - "mewls\n", - "mews\n", - "mezcal\n", - "mezcals\n", - "mezereon\n", - "mezereons\n", - "mezereum\n", - "mezereums\n", - "mezquit\n", - "mezquite\n", - "mezquites\n", - "mezquits\n", - "mezuza\n", - "mezuzah\n", - "mezuzahs\n", - "mezuzas\n", - "mezuzot\n", - "mezuzoth\n", - "mezzanine\n", - "mezzanines\n", - "mezzo\n", - "mezzos\n", - "mho\n", - "mhos\n", - "mi\n", - "miaou\n", - "miaoued\n", - "miaouing\n", - "miaous\n", - "miaow\n", - "miaowed\n", - "miaowing\n", - "miaows\n", - "miasm\n", - "miasma\n", - "miasmal\n", - "miasmas\n", - "miasmata\n", - "miasmic\n", - "miasms\n", - "miaul\n", - "miauled\n", - "miauling\n", - "miauls\n", - "mib\n", - "mibs\n", - "mica\n", - "micas\n", - "micawber\n", - "micawbers\n", - "mice\n", - "micell\n", - "micella\n", - "micellae\n", - "micellar\n", - "micelle\n", - "micelles\n", - "micells\n", - "mick\n", - "mickey\n", - "mickeys\n", - "mickle\n", - "mickler\n", - "mickles\n", - "micklest\n", - "micks\n", - "micra\n", - "micrified\n", - "micrifies\n", - "micrify\n", - "micrifying\n", - "micro\n", - "microbar\n", - "microbars\n", - "microbe\n", - "microbes\n", - "microbial\n", - "microbic\n", - "microbiological\n", - "microbiologies\n", - "microbiologist\n", - "microbiologists\n", - "microbiology\n", - "microbus\n", - "microbuses\n", - "microbusses\n", - "microcomputer\n", - "microcomputers\n", - "microcosm\n", - "microfilm\n", - "microfilmed\n", - "microfilming\n", - "microfilms\n", - "microhm\n", - "microhms\n", - "microluces\n", - "microlux\n", - "microluxes\n", - "micrometer\n", - "micrometers\n", - "micromho\n", - "micromhos\n", - "microminiature\n", - "microminiatures\n", - "microminiaturization\n", - "microminiaturizations\n", - "microminiaturized\n", - "micron\n", - "microns\n", - "microorganism\n", - "microorganisms\n", - "microphone\n", - "microphones\n", - "microscope\n", - "microscopes\n", - "microscopic\n", - "microscopical\n", - "microscopically\n", - "microscopies\n", - "microscopy\n", - "microwave\n", - "microwaves\n", - "micrurgies\n", - "micrurgy\n", - "mid\n", - "midair\n", - "midairs\n", - "midbrain\n", - "midbrains\n", - "midday\n", - "middays\n", - "midden\n", - "middens\n", - "middies\n", - "middle\n", - "middled\n", - "middleman\n", - "middlemen\n", - "middler\n", - "middlers\n", - "middles\n", - "middlesex\n", - "middling\n", - "middlings\n", - "middy\n", - "midfield\n", - "midfields\n", - "midge\n", - "midges\n", - "midget\n", - "midgets\n", - "midgut\n", - "midguts\n", - "midi\n", - "midiron\n", - "midirons\n", - "midis\n", - "midland\n", - "midlands\n", - "midleg\n", - "midlegs\n", - "midline\n", - "midlines\n", - "midmonth\n", - "midmonths\n", - "midmost\n", - "midmosts\n", - "midnight\n", - "midnights\n", - "midnoon\n", - "midnoons\n", - "midpoint\n", - "midpoints\n", - "midrange\n", - "midranges\n", - "midrash\n", - "midrashim\n", - "midrib\n", - "midribs\n", - "midriff\n", - "midriffs\n", - "mids\n", - "midship\n", - "midshipman\n", - "midshipmen\n", - "midships\n", - "midspace\n", - "midspaces\n", - "midst\n", - "midstories\n", - "midstory\n", - "midstream\n", - "midstreams\n", - "midsts\n", - "midsummer\n", - "midsummers\n", - "midterm\n", - "midterms\n", - "midtown\n", - "midtowns\n", - "midwatch\n", - "midwatches\n", - "midway\n", - "midways\n", - "midweek\n", - "midweeks\n", - "midwife\n", - "midwifed\n", - "midwiferies\n", - "midwifery\n", - "midwifes\n", - "midwifing\n", - "midwinter\n", - "midwinters\n", - "midwived\n", - "midwives\n", - "midwiving\n", - "midyear\n", - "midyears\n", - "mien\n", - "miens\n", - "miff\n", - "miffed\n", - "miffier\n", - "miffiest\n", - "miffing\n", - "miffs\n", - "miffy\n", - "mig\n", - "migg\n", - "miggle\n", - "miggles\n", - "miggs\n", - "might\n", - "mightier\n", - "mightiest\n", - "mightily\n", - "mights\n", - "mighty\n", - "mignon\n", - "mignonne\n", - "mignons\n", - "migraine\n", - "migraines\n", - "migrant\n", - "migrants\n", - "migratation\n", - "migratational\n", - "migratations\n", - "migrate\n", - "migrated\n", - "migrates\n", - "migrating\n", - "migrator\n", - "migrators\n", - "migratory\n", - "migs\n", - "mijnheer\n", - "mijnheers\n", - "mikado\n", - "mikados\n", - "mike\n", - "mikes\n", - "mikra\n", - "mikron\n", - "mikrons\n", - "mikvah\n", - "mikvahs\n", - "mikveh\n", - "mikvehs\n", - "mikvoth\n", - "mil\n", - "miladi\n", - "miladies\n", - "miladis\n", - "milady\n", - "milage\n", - "milages\n", - "milch\n", - "milchig\n", - "mild\n", - "milden\n", - "mildened\n", - "mildening\n", - "mildens\n", - "milder\n", - "mildest\n", - "mildew\n", - "mildewed\n", - "mildewing\n", - "mildews\n", - "mildewy\n", - "mildly\n", - "mildness\n", - "mildnesses\n", - "mile\n", - "mileage\n", - "mileages\n", - "milepost\n", - "mileposts\n", - "miler\n", - "milers\n", - "miles\n", - "milesimo\n", - "milesimos\n", - "milestone\n", - "milestones\n", - "milfoil\n", - "milfoils\n", - "milia\n", - "miliaria\n", - "miliarias\n", - "miliary\n", - "milieu\n", - "milieus\n", - "milieux\n", - "militancies\n", - "militancy\n", - "militant\n", - "militantly\n", - "militants\n", - "militaries\n", - "militarily\n", - "militarism\n", - "militarisms\n", - "militarist\n", - "militaristic\n", - "militarists\n", - "military\n", - "militate\n", - "militated\n", - "militates\n", - "militating\n", - "militia\n", - "militiaman\n", - "militiamen\n", - "militias\n", - "milium\n", - "milk\n", - "milked\n", - "milker\n", - "milkers\n", - "milkfish\n", - "milkfishes\n", - "milkier\n", - "milkiest\n", - "milkily\n", - "milkiness\n", - "milkinesses\n", - "milking\n", - "milkmaid\n", - "milkmaids\n", - "milkman\n", - "milkmen\n", - "milks\n", - "milksop\n", - "milksops\n", - "milkweed\n", - "milkweeds\n", - "milkwood\n", - "milkwoods\n", - "milkwort\n", - "milkworts\n", - "milky\n", - "mill\n", - "millable\n", - "millage\n", - "millages\n", - "milldam\n", - "milldams\n", - "mille\n", - "milled\n", - "millennia\n", - "millennium\n", - "millenniums\n", - "milleped\n", - "millepeds\n", - "miller\n", - "millers\n", - "milles\n", - "millet\n", - "millets\n", - "milliard\n", - "milliards\n", - "milliare\n", - "milliares\n", - "milliary\n", - "millibar\n", - "millibars\n", - "millieme\n", - "milliemes\n", - "millier\n", - "milliers\n", - "milligal\n", - "milligals\n", - "milligram\n", - "milligrams\n", - "milliliter\n", - "milliliters\n", - "milliluces\n", - "millilux\n", - "milliluxes\n", - "millime\n", - "millimes\n", - "millimeter\n", - "millimeters\n", - "millimho\n", - "millimhos\n", - "milline\n", - "milliner\n", - "milliners\n", - "millines\n", - "milling\n", - "millings\n", - "milliohm\n", - "milliohms\n", - "million\n", - "millionaire\n", - "millionaires\n", - "millions\n", - "millionth\n", - "millionths\n", - "milliped\n", - "millipede\n", - "millipedes\n", - "millipeds\n", - "millirem\n", - "millirems\n", - "millpond\n", - "millponds\n", - "millrace\n", - "millraces\n", - "millrun\n", - "millruns\n", - "mills\n", - "millstone\n", - "millstones\n", - "millwork\n", - "millworks\n", - "milo\n", - "milord\n", - "milords\n", - "milos\n", - "milpa\n", - "milpas\n", - "milreis\n", - "mils\n", - "milt\n", - "milted\n", - "milter\n", - "milters\n", - "miltier\n", - "miltiest\n", - "milting\n", - "milts\n", - "milty\n", - "mim\n", - "mimbar\n", - "mimbars\n", - "mime\n", - "mimed\n", - "mimeograph\n", - "mimeographed\n", - "mimeographing\n", - "mimeographs\n", - "mimer\n", - "mimers\n", - "mimes\n", - "mimesis\n", - "mimesises\n", - "mimetic\n", - "mimetite\n", - "mimetites\n", - "mimic\n", - "mimical\n", - "mimicked\n", - "mimicker\n", - "mimickers\n", - "mimicking\n", - "mimicries\n", - "mimicry\n", - "mimics\n", - "miming\n", - "mimosa\n", - "mimosas\n", - "mina\n", - "minable\n", - "minacities\n", - "minacity\n", - "minae\n", - "minaret\n", - "minarets\n", - "minas\n", - "minatory\n", - "mince\n", - "minced\n", - "mincer\n", - "mincers\n", - "minces\n", - "mincier\n", - "minciest\n", - "mincing\n", - "mincy\n", - "mind\n", - "minded\n", - "minder\n", - "minders\n", - "mindful\n", - "minding\n", - "mindless\n", - "mindlessly\n", - "mindlessness\n", - "mindlessnesses\n", - "minds\n", - "mine\n", - "mineable\n", - "mined\n", - "miner\n", - "mineral\n", - "mineralize\n", - "mineralized\n", - "mineralizes\n", - "mineralizing\n", - "minerals\n", - "minerological\n", - "minerologies\n", - "minerologist\n", - "minerologists\n", - "minerology\n", - "miners\n", - "mines\n", - "mingier\n", - "mingiest\n", - "mingle\n", - "mingled\n", - "mingler\n", - "minglers\n", - "mingles\n", - "mingling\n", - "mingy\n", - "mini\n", - "miniature\n", - "miniatures\n", - "miniaturist\n", - "miniaturists\n", - "miniaturize\n", - "miniaturized\n", - "miniaturizes\n", - "miniaturizing\n", - "minibike\n", - "minibikes\n", - "minibrain\n", - "minibrains\n", - "minibudget\n", - "minibudgets\n", - "minibus\n", - "minibuses\n", - "minibusses\n", - "minicab\n", - "minicabs\n", - "minicalculator\n", - "minicalculators\n", - "minicamera\n", - "minicameras\n", - "minicar\n", - "minicars\n", - "miniclock\n", - "miniclocks\n", - "minicomponent\n", - "minicomponents\n", - "minicomputer\n", - "minicomputers\n", - "miniconvention\n", - "miniconventions\n", - "minicourse\n", - "minicourses\n", - "minicrisis\n", - "minicrisises\n", - "minidrama\n", - "minidramas\n", - "minidress\n", - "minidresses\n", - "minifestival\n", - "minifestivals\n", - "minified\n", - "minifies\n", - "minify\n", - "minifying\n", - "minigarden\n", - "minigardens\n", - "minigrant\n", - "minigrants\n", - "minigroup\n", - "minigroups\n", - "miniguide\n", - "miniguides\n", - "minihospital\n", - "minihospitals\n", - "minikin\n", - "minikins\n", - "minileague\n", - "minileagues\n", - "minilecture\n", - "minilectures\n", - "minim\n", - "minima\n", - "minimal\n", - "minimally\n", - "minimals\n", - "minimarket\n", - "minimarkets\n", - "minimax\n", - "minimaxes\n", - "minimiracle\n", - "minimiracles\n", - "minimise\n", - "minimised\n", - "minimises\n", - "minimising\n", - "minimization\n", - "minimize\n", - "minimized\n", - "minimizes\n", - "minimizing\n", - "minims\n", - "minimum\n", - "minimums\n", - "minimuseum\n", - "minimuseums\n", - "minination\n", - "mininations\n", - "mininetwork\n", - "mininetworks\n", - "mining\n", - "minings\n", - "mininovel\n", - "mininovels\n", - "minion\n", - "minions\n", - "minipanic\n", - "minipanics\n", - "miniprice\n", - "miniprices\n", - "miniproblem\n", - "miniproblems\n", - "minirebellion\n", - "minirebellions\n", - "minirecession\n", - "minirecessions\n", - "minirobot\n", - "minirobots\n", - "minis\n", - "miniscandal\n", - "miniscandals\n", - "minischool\n", - "minischools\n", - "miniscule\n", - "minisedan\n", - "minisedans\n", - "miniseries\n", - "miniserieses\n", - "minish\n", - "minished\n", - "minishes\n", - "minishing\n", - "miniskirt\n", - "miniskirts\n", - "minislump\n", - "minislumps\n", - "minisocieties\n", - "minisociety\n", - "ministate\n", - "ministates\n", - "minister\n", - "ministered\n", - "ministerial\n", - "ministering\n", - "ministers\n", - "ministration\n", - "ministrations\n", - "ministries\n", - "ministrike\n", - "ministrikes\n", - "ministry\n", - "minisubmarine\n", - "minisubmarines\n", - "minisurvey\n", - "minisurveys\n", - "minisystem\n", - "minisystems\n", - "miniterritories\n", - "miniterritory\n", - "minitheater\n", - "minitheaters\n", - "minitrain\n", - "minitrains\n", - "minium\n", - "miniums\n", - "minivacation\n", - "minivacations\n", - "miniver\n", - "minivers\n", - "miniversion\n", - "miniversions\n", - "mink\n", - "minks\n", - "minnies\n", - "minnow\n", - "minnows\n", - "minny\n", - "minor\n", - "minorca\n", - "minorcas\n", - "minored\n", - "minoring\n", - "minorities\n", - "minority\n", - "minors\n", - "minster\n", - "minsters\n", - "minstrel\n", - "minstrels\n", - "minstrelsies\n", - "minstrelsy\n", - "mint\n", - "mintage\n", - "mintages\n", - "minted\n", - "minter\n", - "minters\n", - "mintier\n", - "mintiest\n", - "minting\n", - "mints\n", - "minty\n", - "minuend\n", - "minuends\n", - "minuet\n", - "minuets\n", - "minus\n", - "minuscule\n", - "minuses\n", - "minute\n", - "minuted\n", - "minutely\n", - "minuteness\n", - "minutenesses\n", - "minuter\n", - "minutes\n", - "minutest\n", - "minutia\n", - "minutiae\n", - "minutial\n", - "minuting\n", - "minx\n", - "minxes\n", - "minxish\n", - "minyan\n", - "minyanim\n", - "minyans\n", - "mioses\n", - "miosis\n", - "miotic\n", - "miotics\n", - "miquelet\n", - "miquelets\n", - "mir\n", - "miracle\n", - "miracles\n", - "miraculous\n", - "miraculously\n", - "mirador\n", - "miradors\n", - "mirage\n", - "mirages\n", - "mire\n", - "mired\n", - "mires\n", - "mirex\n", - "mirexes\n", - "miri\n", - "mirier\n", - "miriest\n", - "miriness\n", - "mirinesses\n", - "miring\n", - "mirk\n", - "mirker\n", - "mirkest\n", - "mirkier\n", - "mirkiest\n", - "mirkily\n", - "mirks\n", - "mirky\n", - "mirror\n", - "mirrored\n", - "mirroring\n", - "mirrors\n", - "mirs\n", - "mirth\n", - "mirthful\n", - "mirthfully\n", - "mirthfulness\n", - "mirthfulnesses\n", - "mirthless\n", - "mirths\n", - "miry\n", - "mirza\n", - "mirzas\n", - "mis\n", - "misact\n", - "misacted\n", - "misacting\n", - "misacts\n", - "misadapt\n", - "misadapted\n", - "misadapting\n", - "misadapts\n", - "misadd\n", - "misadded\n", - "misadding\n", - "misadds\n", - "misagent\n", - "misagents\n", - "misaim\n", - "misaimed\n", - "misaiming\n", - "misaims\n", - "misallied\n", - "misallies\n", - "misally\n", - "misallying\n", - "misalter\n", - "misaltered\n", - "misaltering\n", - "misalters\n", - "misanthrope\n", - "misanthropes\n", - "misanthropic\n", - "misanthropies\n", - "misanthropy\n", - "misapplied\n", - "misapplies\n", - "misapply\n", - "misapplying\n", - "misapprehend\n", - "misapprehended\n", - "misapprehending\n", - "misapprehends\n", - "misapprehension\n", - "misapprehensions\n", - "misappropriate\n", - "misappropriated\n", - "misappropriates\n", - "misappropriating\n", - "misappropriation\n", - "misappropriations\n", - "misassay\n", - "misassayed\n", - "misassaying\n", - "misassays\n", - "misate\n", - "misatone\n", - "misatoned\n", - "misatones\n", - "misatoning\n", - "misaver\n", - "misaverred\n", - "misaverring\n", - "misavers\n", - "misaward\n", - "misawarded\n", - "misawarding\n", - "misawards\n", - "misbegan\n", - "misbegin\n", - "misbeginning\n", - "misbegins\n", - "misbegot\n", - "misbegun\n", - "misbehave\n", - "misbehaved\n", - "misbehaver\n", - "misbehavers\n", - "misbehaves\n", - "misbehaving\n", - "misbehavior\n", - "misbehaviors\n", - "misbias\n", - "misbiased\n", - "misbiases\n", - "misbiasing\n", - "misbiassed\n", - "misbiasses\n", - "misbiassing\n", - "misbill\n", - "misbilled\n", - "misbilling\n", - "misbills\n", - "misbind\n", - "misbinding\n", - "misbinds\n", - "misbound\n", - "misbrand\n", - "misbranded\n", - "misbranding\n", - "misbrands\n", - "misbuild\n", - "misbuilding\n", - "misbuilds\n", - "misbuilt\n", - "miscalculate\n", - "miscalculated\n", - "miscalculates\n", - "miscalculating\n", - "miscalculation\n", - "miscalculations\n", - "miscall\n", - "miscalled\n", - "miscalling\n", - "miscalls\n", - "miscarriage\n", - "miscarriages\n", - "miscarried\n", - "miscarries\n", - "miscarry\n", - "miscarrying\n", - "miscast\n", - "miscasting\n", - "miscasts\n", - "miscegenation\n", - "miscegenations\n", - "miscellaneous\n", - "miscellaneously\n", - "miscellaneousness\n", - "miscellaneousnesses\n", - "miscellanies\n", - "miscellany\n", - "mischance\n", - "mischances\n", - "mischief\n", - "mischiefs\n", - "mischievous\n", - "mischievously\n", - "mischievousness\n", - "mischievousnesses\n", - "miscible\n", - "miscite\n", - "miscited\n", - "miscites\n", - "misciting\n", - "misclaim\n", - "misclaimed\n", - "misclaiming\n", - "misclaims\n", - "misclass\n", - "misclassed\n", - "misclasses\n", - "misclassing\n", - "miscoin\n", - "miscoined\n", - "miscoining\n", - "miscoins\n", - "miscolor\n", - "miscolored\n", - "miscoloring\n", - "miscolors\n", - "misconceive\n", - "misconceived\n", - "misconceives\n", - "misconceiving\n", - "misconception\n", - "misconceptions\n", - "misconduct\n", - "misconducts\n", - "misconstruction\n", - "misconstructions\n", - "misconstrue\n", - "misconstrued\n", - "misconstrues\n", - "misconstruing\n", - "miscook\n", - "miscooked\n", - "miscooking\n", - "miscooks\n", - "miscopied\n", - "miscopies\n", - "miscopy\n", - "miscopying\n", - "miscount\n", - "miscounted\n", - "miscounting\n", - "miscounts\n", - "miscreant\n", - "miscreants\n", - "miscue\n", - "miscued\n", - "miscues\n", - "miscuing\n", - "miscut\n", - "miscuts\n", - "miscutting\n", - "misdate\n", - "misdated\n", - "misdates\n", - "misdating\n", - "misdeal\n", - "misdealing\n", - "misdeals\n", - "misdealt\n", - "misdeed\n", - "misdeeds\n", - "misdeem\n", - "misdeemed\n", - "misdeeming\n", - "misdeems\n", - "misdemeanor\n", - "misdemeanors\n", - "misdid\n", - "misdo\n", - "misdoer\n", - "misdoers\n", - "misdoes\n", - "misdoing\n", - "misdoings\n", - "misdone\n", - "misdoubt\n", - "misdoubted\n", - "misdoubting\n", - "misdoubts\n", - "misdraw\n", - "misdrawing\n", - "misdrawn\n", - "misdraws\n", - "misdrew\n", - "misdrive\n", - "misdriven\n", - "misdrives\n", - "misdriving\n", - "misdrove\n", - "mise\n", - "misease\n", - "miseases\n", - "miseat\n", - "miseating\n", - "miseats\n", - "misedit\n", - "misedited\n", - "misediting\n", - "misedits\n", - "misenrol\n", - "misenrolled\n", - "misenrolling\n", - "misenrols\n", - "misenter\n", - "misentered\n", - "misentering\n", - "misenters\n", - "misentries\n", - "misentry\n", - "miser\n", - "miserable\n", - "miserableness\n", - "miserablenesses\n", - "miserably\n", - "miserere\n", - "misereres\n", - "miseries\n", - "miserliness\n", - "miserlinesses\n", - "miserly\n", - "misers\n", - "misery\n", - "mises\n", - "misevent\n", - "misevents\n", - "misfaith\n", - "misfaiths\n", - "misfield\n", - "misfielded\n", - "misfielding\n", - "misfields\n", - "misfile\n", - "misfiled\n", - "misfiles\n", - "misfiling\n", - "misfire\n", - "misfired\n", - "misfires\n", - "misfiring\n", - "misfit\n", - "misfits\n", - "misfitted\n", - "misfitting\n", - "misform\n", - "misformed\n", - "misforming\n", - "misforms\n", - "misfortune\n", - "misfortunes\n", - "misframe\n", - "misframed\n", - "misframes\n", - "misframing\n", - "misgauge\n", - "misgauged\n", - "misgauges\n", - "misgauging\n", - "misgave\n", - "misgive\n", - "misgiven\n", - "misgives\n", - "misgiving\n", - "misgivings\n", - "misgraft\n", - "misgrafted\n", - "misgrafting\n", - "misgrafts\n", - "misgrew\n", - "misgrow\n", - "misgrowing\n", - "misgrown\n", - "misgrows\n", - "misguess\n", - "misguessed\n", - "misguesses\n", - "misguessing\n", - "misguide\n", - "misguided\n", - "misguides\n", - "misguiding\n", - "mishap\n", - "mishaps\n", - "mishear\n", - "misheard\n", - "mishearing\n", - "mishears\n", - "mishit\n", - "mishits\n", - "mishitting\n", - "mishmash\n", - "mishmashes\n", - "mishmosh\n", - "mishmoshes\n", - "misinfer\n", - "misinferred\n", - "misinferring\n", - "misinfers\n", - "misinform\n", - "misinformation\n", - "misinformations\n", - "misinforms\n", - "misinter\n", - "misinterpret\n", - "misinterpretation\n", - "misinterpretations\n", - "misinterpreted\n", - "misinterpreting\n", - "misinterprets\n", - "misinterred\n", - "misinterring\n", - "misinters\n", - "misjoin\n", - "misjoined\n", - "misjoining\n", - "misjoins\n", - "misjudge\n", - "misjudged\n", - "misjudges\n", - "misjudging\n", - "misjudgment\n", - "misjudgments\n", - "miskal\n", - "miskals\n", - "miskeep\n", - "miskeeping\n", - "miskeeps\n", - "miskept\n", - "misknew\n", - "misknow\n", - "misknowing\n", - "misknown\n", - "misknows\n", - "mislabel\n", - "mislabeled\n", - "mislabeling\n", - "mislabelled\n", - "mislabelling\n", - "mislabels\n", - "mislabor\n", - "mislabored\n", - "mislaboring\n", - "mislabors\n", - "mislaid\n", - "mislain\n", - "mislay\n", - "mislayer\n", - "mislayers\n", - "mislaying\n", - "mislays\n", - "mislead\n", - "misleading\n", - "misleadingly\n", - "misleads\n", - "mislearn\n", - "mislearned\n", - "mislearning\n", - "mislearns\n", - "mislearnt\n", - "misled\n", - "mislie\n", - "mislies\n", - "mislight\n", - "mislighted\n", - "mislighting\n", - "mislights\n", - "mislike\n", - "misliked\n", - "misliker\n", - "mislikers\n", - "mislikes\n", - "misliking\n", - "mislit\n", - "mislive\n", - "mislived\n", - "mislives\n", - "misliving\n", - "mislodge\n", - "mislodged\n", - "mislodges\n", - "mislodging\n", - "mislying\n", - "mismanage\n", - "mismanaged\n", - "mismanagement\n", - "mismanagements\n", - "mismanages\n", - "mismanaging\n", - "mismark\n", - "mismarked\n", - "mismarking\n", - "mismarks\n", - "mismatch\n", - "mismatched\n", - "mismatches\n", - "mismatching\n", - "mismate\n", - "mismated\n", - "mismates\n", - "mismating\n", - "mismeet\n", - "mismeeting\n", - "mismeets\n", - "mismet\n", - "mismove\n", - "mismoved\n", - "mismoves\n", - "mismoving\n", - "misname\n", - "misnamed\n", - "misnames\n", - "misnaming\n", - "misnomer\n", - "misnomers\n", - "miso\n", - "misogamies\n", - "misogamy\n", - "misogynies\n", - "misogynist\n", - "misogynists\n", - "misogyny\n", - "misologies\n", - "misology\n", - "misos\n", - "mispage\n", - "mispaged\n", - "mispages\n", - "mispaging\n", - "mispaint\n", - "mispainted\n", - "mispainting\n", - "mispaints\n", - "misparse\n", - "misparsed\n", - "misparses\n", - "misparsing\n", - "mispart\n", - "misparted\n", - "misparting\n", - "misparts\n", - "mispatch\n", - "mispatched\n", - "mispatches\n", - "mispatching\n", - "mispen\n", - "mispenned\n", - "mispenning\n", - "mispens\n", - "misplace\n", - "misplaced\n", - "misplaces\n", - "misplacing\n", - "misplant\n", - "misplanted\n", - "misplanting\n", - "misplants\n", - "misplay\n", - "misplayed\n", - "misplaying\n", - "misplays\n", - "misplead\n", - "mispleaded\n", - "mispleading\n", - "mispleads\n", - "mispled\n", - "mispoint\n", - "mispointed\n", - "mispointing\n", - "mispoints\n", - "mispoise\n", - "mispoised\n", - "mispoises\n", - "mispoising\n", - "misprint\n", - "misprinted\n", - "misprinting\n", - "misprints\n", - "misprize\n", - "misprized\n", - "misprizes\n", - "misprizing\n", - "mispronounce\n", - "mispronounced\n", - "mispronounces\n", - "mispronouncing\n", - "mispronunciation\n", - "mispronunciations\n", - "misquotation\n", - "misquotations\n", - "misquote\n", - "misquoted\n", - "misquotes\n", - "misquoting\n", - "misraise\n", - "misraised\n", - "misraises\n", - "misraising\n", - "misrate\n", - "misrated\n", - "misrates\n", - "misrating\n", - "misread\n", - "misreading\n", - "misreads\n", - "misrefer\n", - "misreferred\n", - "misreferring\n", - "misrefers\n", - "misrelied\n", - "misrelies\n", - "misrely\n", - "misrelying\n", - "misrepresent\n", - "misrepresentation\n", - "misrepresentations\n", - "misrepresented\n", - "misrepresenting\n", - "misrepresents\n", - "misrule\n", - "misruled\n", - "misrules\n", - "misruling\n", - "miss\n", - "missaid\n", - "missal\n", - "missals\n", - "missay\n", - "missaying\n", - "missays\n", - "misseat\n", - "misseated\n", - "misseating\n", - "misseats\n", - "missed\n", - "missel\n", - "missels\n", - "missend\n", - "missending\n", - "missends\n", - "missense\n", - "missenses\n", - "missent\n", - "misses\n", - "misshape\n", - "misshaped\n", - "misshapen\n", - "misshapes\n", - "misshaping\n", - "misshod\n", - "missies\n", - "missile\n", - "missiles\n", - "missilries\n", - "missilry\n", - "missing\n", - "mission\n", - "missionaries\n", - "missionary\n", - "missioned\n", - "missioning\n", - "missions\n", - "missis\n", - "missises\n", - "missive\n", - "missives\n", - "missort\n", - "missorted\n", - "missorting\n", - "missorts\n", - "missound\n", - "missounded\n", - "missounding\n", - "missounds\n", - "missout\n", - "missouts\n", - "misspace\n", - "misspaced\n", - "misspaces\n", - "misspacing\n", - "misspeak\n", - "misspeaking\n", - "misspeaks\n", - "misspell\n", - "misspelled\n", - "misspelling\n", - "misspellings\n", - "misspells\n", - "misspelt\n", - "misspend\n", - "misspending\n", - "misspends\n", - "misspent\n", - "misspoke\n", - "misspoken\n", - "misstart\n", - "misstarted\n", - "misstarting\n", - "misstarts\n", - "misstate\n", - "misstated\n", - "misstatement\n", - "misstatements\n", - "misstates\n", - "misstating\n", - "missteer\n", - "missteered\n", - "missteering\n", - "missteers\n", - "misstep\n", - "missteps\n", - "misstop\n", - "misstopped\n", - "misstopping\n", - "misstops\n", - "misstyle\n", - "misstyled\n", - "misstyles\n", - "misstyling\n", - "missuit\n", - "missuited\n", - "missuiting\n", - "missuits\n", - "missus\n", - "missuses\n", - "missy\n", - "mist\n", - "mistake\n", - "mistaken\n", - "mistakenly\n", - "mistaker\n", - "mistakers\n", - "mistakes\n", - "mistaking\n", - "mistaught\n", - "mistbow\n", - "mistbows\n", - "misteach\n", - "misteaches\n", - "misteaching\n", - "misted\n", - "mistend\n", - "mistended\n", - "mistending\n", - "mistends\n", - "mister\n", - "misterm\n", - "mistermed\n", - "misterming\n", - "misterms\n", - "misters\n", - "misteuk\n", - "misthink\n", - "misthinking\n", - "misthinks\n", - "misthought\n", - "misthrew\n", - "misthrow\n", - "misthrowing\n", - "misthrown\n", - "misthrows\n", - "mistier\n", - "mistiest\n", - "mistily\n", - "mistime\n", - "mistimed\n", - "mistimes\n", - "mistiming\n", - "misting\n", - "mistitle\n", - "mistitled\n", - "mistitles\n", - "mistitling\n", - "mistletoe\n", - "mistook\n", - "mistouch\n", - "mistouched\n", - "mistouches\n", - "mistouching\n", - "mistrace\n", - "mistraced\n", - "mistraces\n", - "mistracing\n", - "mistral\n", - "mistrals\n", - "mistreat\n", - "mistreated\n", - "mistreating\n", - "mistreatment\n", - "mistreatments\n", - "mistreats\n", - "mistress\n", - "mistresses\n", - "mistrial\n", - "mistrials\n", - "mistrust\n", - "mistrusted\n", - "mistrustful\n", - "mistrustfully\n", - "mistrustfulness\n", - "mistrustfulnesses\n", - "mistrusting\n", - "mistrusts\n", - "mistryst\n", - "mistrysted\n", - "mistrysting\n", - "mistrysts\n", - "mists\n", - "mistune\n", - "mistuned\n", - "mistunes\n", - "mistuning\n", - "mistutor\n", - "mistutored\n", - "mistutoring\n", - "mistutors\n", - "misty\n", - "mistype\n", - "mistyped\n", - "mistypes\n", - "mistyping\n", - "misunderstand\n", - "misunderstanded\n", - "misunderstanding\n", - "misunderstandings\n", - "misunderstands\n", - "misunion\n", - "misunions\n", - "misusage\n", - "misusages\n", - "misuse\n", - "misused\n", - "misuser\n", - "misusers\n", - "misuses\n", - "misusing\n", - "misvalue\n", - "misvalued\n", - "misvalues\n", - "misvaluing\n", - "misword\n", - "misworded\n", - "miswording\n", - "miswords\n", - "miswrit\n", - "miswrite\n", - "miswrites\n", - "miswriting\n", - "miswritten\n", - "miswrote\n", - "misyoke\n", - "misyoked\n", - "misyokes\n", - "misyoking\n", - "mite\n", - "miter\n", - "mitered\n", - "miterer\n", - "miterers\n", - "mitering\n", - "miters\n", - "mites\n", - "mither\n", - "mithers\n", - "miticide\n", - "miticides\n", - "mitier\n", - "mitiest\n", - "mitigate\n", - "mitigated\n", - "mitigates\n", - "mitigating\n", - "mitigation\n", - "mitigations\n", - "mitigative\n", - "mitigator\n", - "mitigators\n", - "mitigatory\n", - "mitis\n", - "mitises\n", - "mitogen\n", - "mitogens\n", - "mitoses\n", - "mitosis\n", - "mitotic\n", - "mitral\n", - "mitre\n", - "mitred\n", - "mitres\n", - "mitring\n", - "mitsvah\n", - "mitsvahs\n", - "mitsvoth\n", - "mitt\n", - "mitten\n", - "mittens\n", - "mittimus\n", - "mittimuses\n", - "mitts\n", - "mity\n", - "mitzvah\n", - "mitzvahs\n", - "mitzvoth\n", - "mix\n", - "mixable\n", - "mixed\n", - "mixer\n", - "mixers\n", - "mixes\n", - "mixible\n", - "mixing\n", - "mixologies\n", - "mixology\n", - "mixt\n", - "mixture\n", - "mixtures\n", - "mixup\n", - "mixups\n", - "mizen\n", - "mizens\n", - "mizzen\n", - "mizzens\n", - "mizzle\n", - "mizzled\n", - "mizzles\n", - "mizzling\n", - "mizzly\n", - "mnemonic\n", - "mnemonics\n", - "moa\n", - "moan\n", - "moaned\n", - "moanful\n", - "moaning\n", - "moans\n", - "moas\n", - "moat\n", - "moated\n", - "moating\n", - "moatlike\n", - "moats\n", - "mob\n", - "mobbed\n", - "mobber\n", - "mobbers\n", - "mobbing\n", - "mobbish\n", - "mobcap\n", - "mobcaps\n", - "mobile\n", - "mobiles\n", - "mobilise\n", - "mobilised\n", - "mobilises\n", - "mobilising\n", - "mobilities\n", - "mobility\n", - "mobilization\n", - "mobilizations\n", - "mobilize\n", - "mobilized\n", - "mobilizer\n", - "mobilizers\n", - "mobilizes\n", - "mobilizing\n", - "mobocrat\n", - "mobocrats\n", - "mobs\n", - "mobster\n", - "mobsters\n", - "moccasin\n", - "moccasins\n", - "mocha\n", - "mochas\n", - "mochila\n", - "mochilas\n", - "mock\n", - "mockable\n", - "mocked\n", - "mocker\n", - "mockeries\n", - "mockers\n", - "mockery\n", - "mocking\n", - "mockingbird\n", - "mockingbirds\n", - "mockingly\n", - "mocks\n", - "mockup\n", - "mockups\n", - "mod\n", - "modal\n", - "modalities\n", - "modality\n", - "modally\n", - "mode\n", - "model\n", - "modeled\n", - "modeler\n", - "modelers\n", - "modeling\n", - "modelings\n", - "modelled\n", - "modeller\n", - "modellers\n", - "modelling\n", - "models\n", - "moderate\n", - "moderated\n", - "moderately\n", - "moderateness\n", - "moderatenesses\n", - "moderates\n", - "moderating\n", - "moderation\n", - "moderations\n", - "moderato\n", - "moderator\n", - "moderators\n", - "moderatos\n", - "modern\n", - "moderner\n", - "modernest\n", - "modernities\n", - "modernity\n", - "modernization\n", - "modernizations\n", - "modernize\n", - "modernized\n", - "modernizer\n", - "modernizers\n", - "modernizes\n", - "modernizing\n", - "modernly\n", - "modernness\n", - "modernnesses\n", - "moderns\n", - "modes\n", - "modest\n", - "modester\n", - "modestest\n", - "modesties\n", - "modestly\n", - "modesty\n", - "modi\n", - "modica\n", - "modicum\n", - "modicums\n", - "modification\n", - "modifications\n", - "modified\n", - "modifier\n", - "modifiers\n", - "modifies\n", - "modify\n", - "modifying\n", - "modioli\n", - "modiolus\n", - "modish\n", - "modishly\n", - "modiste\n", - "modistes\n", - "mods\n", - "modular\n", - "modularities\n", - "modularity\n", - "modularized\n", - "modulate\n", - "modulated\n", - "modulates\n", - "modulating\n", - "modulation\n", - "modulations\n", - "modulator\n", - "modulators\n", - "modulatory\n", - "module\n", - "modules\n", - "moduli\n", - "modulo\n", - "modulus\n", - "modus\n", - "mofette\n", - "mofettes\n", - "moffette\n", - "moffettes\n", - "mog\n", - "mogged\n", - "mogging\n", - "mogs\n", - "mogul\n", - "moguls\n", - "mohair\n", - "mohairs\n", - "mohalim\n", - "mohel\n", - "mohels\n", - "mohur\n", - "mohurs\n", - "moidore\n", - "moidores\n", - "moieties\n", - "moiety\n", - "moil\n", - "moiled\n", - "moiler\n", - "moilers\n", - "moiling\n", - "moils\n", - "moira\n", - "moirai\n", - "moire\n", - "moires\n", - "moist\n", - "moisten\n", - "moistened\n", - "moistener\n", - "moisteners\n", - "moistening\n", - "moistens\n", - "moister\n", - "moistest\n", - "moistful\n", - "moistly\n", - "moistness\n", - "moistnesses\n", - "moisture\n", - "moistures\n", - "mojarra\n", - "mojarras\n", - "moke\n", - "mokes\n", - "mol\n", - "mola\n", - "molal\n", - "molalities\n", - "molality\n", - "molar\n", - "molarities\n", - "molarity\n", - "molars\n", - "molas\n", - "molasses\n", - "molasseses\n", - "mold\n", - "moldable\n", - "molded\n", - "molder\n", - "moldered\n", - "moldering\n", - "molders\n", - "moldier\n", - "moldiest\n", - "moldiness\n", - "moldinesses\n", - "molding\n", - "moldings\n", - "molds\n", - "moldwarp\n", - "moldwarps\n", - "moldy\n", - "mole\n", - "molecular\n", - "molecule\n", - "molecules\n", - "molehill\n", - "molehills\n", - "moles\n", - "moleskin\n", - "moleskins\n", - "molest\n", - "molestation\n", - "molestations\n", - "molested\n", - "molester\n", - "molesters\n", - "molesting\n", - "molests\n", - "molies\n", - "moline\n", - "moll\n", - "mollah\n", - "mollahs\n", - "mollie\n", - "mollies\n", - "mollification\n", - "mollifications\n", - "mollified\n", - "mollifies\n", - "mollify\n", - "mollifying\n", - "molls\n", - "mollusc\n", - "molluscan\n", - "molluscs\n", - "mollusk\n", - "mollusks\n", - "molly\n", - "mollycoddle\n", - "mollycoddled\n", - "mollycoddles\n", - "mollycoddling\n", - "moloch\n", - "molochs\n", - "mols\n", - "molt\n", - "molted\n", - "molten\n", - "moltenly\n", - "molter\n", - "molters\n", - "molting\n", - "molto\n", - "molts\n", - "moly\n", - "molybdic\n", - "molys\n", - "mom\n", - "mome\n", - "moment\n", - "momenta\n", - "momentarily\n", - "momentary\n", - "momently\n", - "momento\n", - "momentoes\n", - "momentos\n", - "momentous\n", - "momentously\n", - "momentousment\n", - "momentousments\n", - "momentousness\n", - "momentousnesses\n", - "moments\n", - "momentum\n", - "momentums\n", - "momes\n", - "momi\n", - "momism\n", - "momisms\n", - "momma\n", - "mommas\n", - "mommies\n", - "mommy\n", - "moms\n", - "momus\n", - "momuses\n", - "mon\n", - "monachal\n", - "monacid\n", - "monacids\n", - "monad\n", - "monadal\n", - "monades\n", - "monadic\n", - "monadism\n", - "monadisms\n", - "monads\n", - "monandries\n", - "monandry\n", - "monarch\n", - "monarchic\n", - "monarchical\n", - "monarchies\n", - "monarchs\n", - "monarchy\n", - "monarda\n", - "monardas\n", - "monas\n", - "monasterial\n", - "monasteries\n", - "monastery\n", - "monastic\n", - "monastically\n", - "monasticism\n", - "monasticisms\n", - "monastics\n", - "monaural\n", - "monaxial\n", - "monazite\n", - "monazites\n", - "monde\n", - "mondes\n", - "mondo\n", - "mondos\n", - "monecian\n", - "monetary\n", - "monetise\n", - "monetised\n", - "monetises\n", - "monetising\n", - "monetize\n", - "monetized\n", - "monetizes\n", - "monetizing\n", - "money\n", - "moneybag\n", - "moneybags\n", - "moneyed\n", - "moneyer\n", - "moneyers\n", - "moneylender\n", - "moneylenders\n", - "moneys\n", - "mongeese\n", - "monger\n", - "mongered\n", - "mongering\n", - "mongers\n", - "mongo\n", - "mongoe\n", - "mongoes\n", - "mongol\n", - "mongolism\n", - "mongolisms\n", - "mongols\n", - "mongoose\n", - "mongooses\n", - "mongos\n", - "mongrel\n", - "mongrels\n", - "mongst\n", - "monicker\n", - "monickers\n", - "monie\n", - "monied\n", - "monies\n", - "moniker\n", - "monikers\n", - "monish\n", - "monished\n", - "monishes\n", - "monishing\n", - "monism\n", - "monisms\n", - "monist\n", - "monistic\n", - "monists\n", - "monition\n", - "monitions\n", - "monitive\n", - "monitor\n", - "monitored\n", - "monitories\n", - "monitoring\n", - "monitors\n", - "monitory\n", - "monk\n", - "monkeries\n", - "monkery\n", - "monkey\n", - "monkeyed\n", - "monkeying\n", - "monkeys\n", - "monkeyshines\n", - "monkfish\n", - "monkfishes\n", - "monkhood\n", - "monkhoods\n", - "monkish\n", - "monkishly\n", - "monkishness\n", - "monkishnesses\n", - "monks\n", - "monkshood\n", - "monkshoods\n", - "mono\n", - "monoacid\n", - "monoacids\n", - "monocarp\n", - "monocarps\n", - "monocle\n", - "monocled\n", - "monocles\n", - "monocot\n", - "monocots\n", - "monocrat\n", - "monocrats\n", - "monocyte\n", - "monocytes\n", - "monodic\n", - "monodies\n", - "monodist\n", - "monodists\n", - "monody\n", - "monoecies\n", - "monoecy\n", - "monofil\n", - "monofils\n", - "monofuel\n", - "monofuels\n", - "monogamic\n", - "monogamies\n", - "monogamist\n", - "monogamists\n", - "monogamous\n", - "monogamy\n", - "monogenies\n", - "monogeny\n", - "monogerm\n", - "monogram\n", - "monogramed\n", - "monograming\n", - "monogrammed\n", - "monogramming\n", - "monograms\n", - "monograph\n", - "monographs\n", - "monogynies\n", - "monogyny\n", - "monolingual\n", - "monolith\n", - "monolithic\n", - "monoliths\n", - "monolog\n", - "monologies\n", - "monologist\n", - "monologists\n", - "monologs\n", - "monologue\n", - "monologues\n", - "monologuist\n", - "monologuists\n", - "monology\n", - "monomer\n", - "monomers\n", - "monomial\n", - "monomials\n", - "mononucleosis\n", - "mononucleosises\n", - "monopode\n", - "monopodes\n", - "monopodies\n", - "monopody\n", - "monopole\n", - "monopoles\n", - "monopolies\n", - "monopolist\n", - "monopolistic\n", - "monopolists\n", - "monopolization\n", - "monopolizations\n", - "monopolize\n", - "monopolized\n", - "monopolizes\n", - "monopolizing\n", - "monopoly\n", - "monorail\n", - "monorails\n", - "monos\n", - "monosome\n", - "monosomes\n", - "monosyllable\n", - "monosyllables\n", - "monosyllablic\n", - "monotheism\n", - "monotheisms\n", - "monotheist\n", - "monotheists\n", - "monotint\n", - "monotints\n", - "monotone\n", - "monotones\n", - "monotonies\n", - "monotonous\n", - "monotonously\n", - "monotonousness\n", - "monotonousnesses\n", - "monotony\n", - "monotype\n", - "monotypes\n", - "monoxide\n", - "monoxides\n", - "mons\n", - "monsieur\n", - "monsignor\n", - "monsignori\n", - "monsignors\n", - "monsoon\n", - "monsoonal\n", - "monsoons\n", - "monster\n", - "monsters\n", - "monstrosities\n", - "monstrosity\n", - "monstrously\n", - "montage\n", - "montaged\n", - "montages\n", - "montaging\n", - "montane\n", - "montanes\n", - "monte\n", - "monteith\n", - "monteiths\n", - "montero\n", - "monteros\n", - "montes\n", - "month\n", - "monthlies\n", - "monthly\n", - "months\n", - "monument\n", - "monumental\n", - "monumentally\n", - "monuments\n", - "monuron\n", - "monurons\n", - "mony\n", - "moo\n", - "mooch\n", - "mooched\n", - "moocher\n", - "moochers\n", - "mooches\n", - "mooching\n", - "mood\n", - "moodier\n", - "moodiest\n", - "moodily\n", - "moodiness\n", - "moodinesses\n", - "moods\n", - "moody\n", - "mooed\n", - "mooing\n", - "mool\n", - "moola\n", - "moolah\n", - "moolahs\n", - "moolas\n", - "mooley\n", - "mooleys\n", - "mools\n", - "moon\n", - "moonbeam\n", - "moonbeams\n", - "moonbow\n", - "moonbows\n", - "mooncalf\n", - "mooncalves\n", - "mooned\n", - "mooneye\n", - "mooneyes\n", - "moonfish\n", - "moonfishes\n", - "moonier\n", - "mooniest\n", - "moonily\n", - "mooning\n", - "moonish\n", - "moonless\n", - "moonlet\n", - "moonlets\n", - "moonlight\n", - "moonlighted\n", - "moonlighter\n", - "moonlighters\n", - "moonlighting\n", - "moonlights\n", - "moonlike\n", - "moonlit\n", - "moonrise\n", - "moonrises\n", - "moons\n", - "moonsail\n", - "moonsails\n", - "moonseed\n", - "moonseeds\n", - "moonset\n", - "moonsets\n", - "moonshine\n", - "moonshines\n", - "moonshot\n", - "moonshots\n", - "moonward\n", - "moonwort\n", - "moonworts\n", - "moony\n", - "moor\n", - "moorage\n", - "moorages\n", - "moored\n", - "moorfowl\n", - "moorfowls\n", - "moorhen\n", - "moorhens\n", - "moorier\n", - "mooriest\n", - "mooring\n", - "moorings\n", - "moorish\n", - "moorland\n", - "moorlands\n", - "moors\n", - "moorwort\n", - "moorworts\n", - "moory\n", - "moos\n", - "moose\n", - "moot\n", - "mooted\n", - "mooter\n", - "mooters\n", - "mooting\n", - "moots\n", - "mop\n", - "mopboard\n", - "mopboards\n", - "mope\n", - "moped\n", - "mopeds\n", - "moper\n", - "mopers\n", - "mopes\n", - "moping\n", - "mopingly\n", - "mopish\n", - "mopishly\n", - "mopoke\n", - "mopokes\n", - "mopped\n", - "mopper\n", - "moppers\n", - "moppet\n", - "moppets\n", - "mopping\n", - "mops\n", - "moquette\n", - "moquettes\n", - "mor\n", - "mora\n", - "morae\n", - "morainal\n", - "moraine\n", - "moraines\n", - "morainic\n", - "moral\n", - "morale\n", - "morales\n", - "moralise\n", - "moralised\n", - "moralises\n", - "moralising\n", - "moralism\n", - "moralisms\n", - "moralist\n", - "moralistic\n", - "moralists\n", - "moralities\n", - "morality\n", - "moralize\n", - "moralized\n", - "moralizes\n", - "moralizing\n", - "morally\n", - "morals\n", - "moras\n", - "morass\n", - "morasses\n", - "morassy\n", - "moratoria\n", - "moratorium\n", - "moratoriums\n", - "moratory\n", - "moray\n", - "morays\n", - "morbid\n", - "morbidities\n", - "morbidity\n", - "morbidly\n", - "morbidness\n", - "morbidnesses\n", - "morbific\n", - "morbilli\n", - "morceau\n", - "morceaux\n", - "mordancies\n", - "mordancy\n", - "mordant\n", - "mordanted\n", - "mordanting\n", - "mordantly\n", - "mordants\n", - "mordent\n", - "mordents\n", - "more\n", - "moreen\n", - "moreens\n", - "morel\n", - "morelle\n", - "morelles\n", - "morello\n", - "morellos\n", - "morels\n", - "moreover\n", - "mores\n", - "moresque\n", - "moresques\n", - "morgen\n", - "morgens\n", - "morgue\n", - "morgues\n", - "moribund\n", - "moribundities\n", - "moribundity\n", - "morion\n", - "morions\n", - "morn\n", - "morning\n", - "mornings\n", - "morns\n", - "morocco\n", - "moroccos\n", - "moron\n", - "moronic\n", - "moronically\n", - "moronism\n", - "moronisms\n", - "moronities\n", - "moronity\n", - "morons\n", - "morose\n", - "morosely\n", - "moroseness\n", - "morosenesses\n", - "morosities\n", - "morosity\n", - "morph\n", - "morpheme\n", - "morphemes\n", - "morphia\n", - "morphias\n", - "morphic\n", - "morphin\n", - "morphine\n", - "morphines\n", - "morphins\n", - "morpho\n", - "morphologic\n", - "morphologically\n", - "morphologies\n", - "morphology\n", - "morphos\n", - "morphs\n", - "morrion\n", - "morrions\n", - "morris\n", - "morrises\n", - "morro\n", - "morros\n", - "morrow\n", - "morrows\n", - "mors\n", - "morsel\n", - "morseled\n", - "morseling\n", - "morselled\n", - "morselling\n", - "morsels\n", - "mort\n", - "mortal\n", - "mortalities\n", - "mortality\n", - "mortally\n", - "mortals\n", - "mortar\n", - "mortared\n", - "mortaring\n", - "mortars\n", - "mortary\n", - "mortgage\n", - "mortgaged\n", - "mortgagee\n", - "mortgagees\n", - "mortgages\n", - "mortgaging\n", - "mortgagor\n", - "mortgagors\n", - "mortice\n", - "morticed\n", - "mortices\n", - "morticing\n", - "mortification\n", - "mortifications\n", - "mortified\n", - "mortifies\n", - "mortify\n", - "mortifying\n", - "mortise\n", - "mortised\n", - "mortiser\n", - "mortisers\n", - "mortises\n", - "mortising\n", - "mortmain\n", - "mortmains\n", - "morts\n", - "mortuaries\n", - "mortuary\n", - "morula\n", - "morulae\n", - "morular\n", - "morulas\n", - "mosaic\n", - "mosaicked\n", - "mosaicking\n", - "mosaics\n", - "moschate\n", - "mosey\n", - "moseyed\n", - "moseying\n", - "moseys\n", - "moshav\n", - "moshavim\n", - "mosk\n", - "mosks\n", - "mosque\n", - "mosques\n", - "mosquito\n", - "mosquitoes\n", - "mosquitos\n", - "moss\n", - "mossback\n", - "mossbacks\n", - "mossed\n", - "mosser\n", - "mossers\n", - "mosses\n", - "mossier\n", - "mossiest\n", - "mossing\n", - "mosslike\n", - "mosso\n", - "mossy\n", - "most\n", - "moste\n", - "mostly\n", - "mosts\n", - "mot\n", - "mote\n", - "motel\n", - "motels\n", - "motes\n", - "motet\n", - "motets\n", - "motey\n", - "moth\n", - "mothball\n", - "mothballed\n", - "mothballing\n", - "mothballs\n", - "mother\n", - "mothered\n", - "motherhood\n", - "motherhoods\n", - "mothering\n", - "motherland\n", - "motherlands\n", - "motherless\n", - "motherly\n", - "mothers\n", - "mothery\n", - "mothier\n", - "mothiest\n", - "moths\n", - "mothy\n", - "motif\n", - "motifs\n", - "motile\n", - "motiles\n", - "motilities\n", - "motility\n", - "motion\n", - "motional\n", - "motioned\n", - "motioner\n", - "motioners\n", - "motioning\n", - "motionless\n", - "motionlessly\n", - "motionlessness\n", - "motionlessnesses\n", - "motions\n", - "motivate\n", - "motivated\n", - "motivates\n", - "motivating\n", - "motivation\n", - "motivations\n", - "motive\n", - "motived\n", - "motiveless\n", - "motives\n", - "motivic\n", - "motiving\n", - "motivities\n", - "motivity\n", - "motley\n", - "motleyer\n", - "motleyest\n", - "motleys\n", - "motlier\n", - "motliest\n", - "motmot\n", - "motmots\n", - "motor\n", - "motorbike\n", - "motorbikes\n", - "motorboat\n", - "motorboats\n", - "motorbus\n", - "motorbuses\n", - "motorbusses\n", - "motorcar\n", - "motorcars\n", - "motorcycle\n", - "motorcycles\n", - "motorcyclist\n", - "motorcyclists\n", - "motored\n", - "motoric\n", - "motoring\n", - "motorings\n", - "motorise\n", - "motorised\n", - "motorises\n", - "motorising\n", - "motorist\n", - "motorists\n", - "motorize\n", - "motorized\n", - "motorizes\n", - "motorizing\n", - "motorman\n", - "motormen\n", - "motors\n", - "motortruck\n", - "motortrucks\n", - "motorway\n", - "motorways\n", - "mots\n", - "mott\n", - "motte\n", - "mottes\n", - "mottle\n", - "mottled\n", - "mottler\n", - "mottlers\n", - "mottles\n", - "mottling\n", - "motto\n", - "mottoes\n", - "mottos\n", - "motts\n", - "mouch\n", - "mouched\n", - "mouches\n", - "mouching\n", - "mouchoir\n", - "mouchoirs\n", - "moue\n", - "moues\n", - "moufflon\n", - "moufflons\n", - "mouflon\n", - "mouflons\n", - "mouille\n", - "moujik\n", - "moujiks\n", - "moulage\n", - "moulages\n", - "mould\n", - "moulded\n", - "moulder\n", - "mouldered\n", - "mouldering\n", - "moulders\n", - "mouldier\n", - "mouldiest\n", - "moulding\n", - "mouldings\n", - "moulds\n", - "mouldy\n", - "moulin\n", - "moulins\n", - "moult\n", - "moulted\n", - "moulter\n", - "moulters\n", - "moulting\n", - "moults\n", - "mound\n", - "mounded\n", - "mounding\n", - "mounds\n", - "mount\n", - "mountable\n", - "mountain\n", - "mountaineer\n", - "mountaineered\n", - "mountaineering\n", - "mountaineers\n", - "mountainous\n", - "mountains\n", - "mountaintop\n", - "mountaintops\n", - "mountebank\n", - "mountebanks\n", - "mounted\n", - "mounter\n", - "mounters\n", - "mounting\n", - "mountings\n", - "mounts\n", - "mourn\n", - "mourned\n", - "mourner\n", - "mourners\n", - "mournful\n", - "mournfuller\n", - "mournfullest\n", - "mournfully\n", - "mournfulness\n", - "mournfulnesses\n", - "mourning\n", - "mournings\n", - "mourns\n", - "mouse\n", - "moused\n", - "mouser\n", - "mousers\n", - "mouses\n", - "mousetrap\n", - "mousetraps\n", - "mousey\n", - "mousier\n", - "mousiest\n", - "mousily\n", - "mousing\n", - "mousings\n", - "moussaka\n", - "moussakas\n", - "mousse\n", - "mousses\n", - "moustache\n", - "moustaches\n", - "mousy\n", - "mouth\n", - "mouthed\n", - "mouther\n", - "mouthers\n", - "mouthful\n", - "mouthfuls\n", - "mouthier\n", - "mouthiest\n", - "mouthily\n", - "mouthing\n", - "mouthpiece\n", - "mouthpieces\n", - "mouths\n", - "mouthy\n", - "mouton\n", - "moutons\n", - "movable\n", - "movables\n", - "movably\n", - "move\n", - "moveable\n", - "moveables\n", - "moveably\n", - "moved\n", - "moveless\n", - "movement\n", - "movements\n", - "mover\n", - "movers\n", - "moves\n", - "movie\n", - "moviedom\n", - "moviedoms\n", - "movies\n", - "moving\n", - "movingly\n", - "mow\n", - "mowed\n", - "mower\n", - "mowers\n", - "mowing\n", - "mown\n", - "mows\n", - "moxa\n", - "moxas\n", - "moxie\n", - "moxies\n", - "mozetta\n", - "mozettas\n", - "mozette\n", - "mozo\n", - "mozos\n", - "mozzetta\n", - "mozzettas\n", - "mozzette\n", - "mridanga\n", - "mridangas\n", - "mu\n", - "much\n", - "muches\n", - "muchness\n", - "muchnesses\n", - "mucic\n", - "mucid\n", - "mucidities\n", - "mucidity\n", - "mucilage\n", - "mucilages\n", - "mucilaginous\n", - "mucin\n", - "mucinoid\n", - "mucinous\n", - "mucins\n", - "muck\n", - "mucked\n", - "mucker\n", - "muckers\n", - "muckier\n", - "muckiest\n", - "muckily\n", - "mucking\n", - "muckle\n", - "muckles\n", - "muckluck\n", - "mucklucks\n", - "muckrake\n", - "muckraked\n", - "muckrakes\n", - "muckraking\n", - "mucks\n", - "muckworm\n", - "muckworms\n", - "mucky\n", - "mucluc\n", - "muclucs\n", - "mucoid\n", - "mucoidal\n", - "mucoids\n", - "mucor\n", - "mucors\n", - "mucosa\n", - "mucosae\n", - "mucosal\n", - "mucosas\n", - "mucose\n", - "mucosities\n", - "mucositis\n", - "mucosity\n", - "mucous\n", - "mucro\n", - "mucrones\n", - "mucus\n", - "mucuses\n", - "mud\n", - "mudcap\n", - "mudcapped\n", - "mudcapping\n", - "mudcaps\n", - "mudded\n", - "mudder\n", - "mudders\n", - "muddied\n", - "muddier\n", - "muddies\n", - "muddiest\n", - "muddily\n", - "muddiness\n", - "muddinesses\n", - "mudding\n", - "muddle\n", - "muddled\n", - "muddler\n", - "muddlers\n", - "muddles\n", - "muddling\n", - "muddy\n", - "muddying\n", - "mudfish\n", - "mudfishes\n", - "mudguard\n", - "mudguards\n", - "mudlark\n", - "mudlarks\n", - "mudpuppies\n", - "mudpuppy\n", - "mudra\n", - "mudras\n", - "mudrock\n", - "mudrocks\n", - "mudroom\n", - "mudrooms\n", - "muds\n", - "mudsill\n", - "mudsills\n", - "mudstone\n", - "mudstones\n", - "mueddin\n", - "mueddins\n", - "muenster\n", - "muensters\n", - "muezzin\n", - "muezzins\n", - "muff\n", - "muffed\n", - "muffin\n", - "muffing\n", - "muffins\n", - "muffle\n", - "muffled\n", - "muffler\n", - "mufflers\n", - "muffles\n", - "muffling\n", - "muffs\n", - "mufti\n", - "muftis\n", - "mug\n", - "mugg\n", - "muggar\n", - "muggars\n", - "mugged\n", - "mugger\n", - "muggers\n", - "muggier\n", - "muggiest\n", - "muggily\n", - "mugginess\n", - "mugginesses\n", - "mugging\n", - "muggings\n", - "muggins\n", - "muggs\n", - "muggur\n", - "muggurs\n", - "muggy\n", - "mugho\n", - "mugs\n", - "mugwort\n", - "mugworts\n", - "mugwump\n", - "mugwumps\n", - "muhlies\n", - "muhly\n", - "mujik\n", - "mujiks\n", - "mukluk\n", - "mukluks\n", - "mulatto\n", - "mulattoes\n", - "mulattos\n", - "mulberries\n", - "mulberry\n", - "mulch\n", - "mulched\n", - "mulches\n", - "mulching\n", - "mulct\n", - "mulcted\n", - "mulcting\n", - "mulcts\n", - "mule\n", - "muled\n", - "mules\n", - "muleta\n", - "muletas\n", - "muleteer\n", - "muleteers\n", - "muley\n", - "muleys\n", - "muling\n", - "mulish\n", - "mulishly\n", - "mulishness\n", - "mulishnesses\n", - "mull\n", - "mulla\n", - "mullah\n", - "mullahs\n", - "mullas\n", - "mulled\n", - "mullein\n", - "mulleins\n", - "mullen\n", - "mullens\n", - "muller\n", - "mullers\n", - "mullet\n", - "mullets\n", - "mulley\n", - "mulleys\n", - "mulligan\n", - "mulligans\n", - "mulling\n", - "mullion\n", - "mullioned\n", - "mullioning\n", - "mullions\n", - "mullite\n", - "mullites\n", - "mullock\n", - "mullocks\n", - "mullocky\n", - "mulls\n", - "multiarmed\n", - "multibarreled\n", - "multibillion\n", - "multibranched\n", - "multibuilding\n", - "multicenter\n", - "multichambered\n", - "multichannel\n", - "multicolored\n", - "multicounty\n", - "multicultural\n", - "multidenominational\n", - "multidimensional\n", - "multidirectional\n", - "multidisciplinary\n", - "multidiscipline\n", - "multidivisional\n", - "multidwelling\n", - "multifaceted\n", - "multifamily\n", - "multifarous\n", - "multifarously\n", - "multifid\n", - "multifilament\n", - "multifunction\n", - "multifunctional\n", - "multigrade\n", - "multiheaded\n", - "multihospital\n", - "multihued\n", - "multijet\n", - "multilane\n", - "multilateral\n", - "multilevel\n", - "multilingual\n", - "multilingualism\n", - "multilingualisms\n", - "multimedia\n", - "multimember\n", - "multimillion\n", - "multimillionaire\n", - "multimodalities\n", - "multimodality\n", - "multipart\n", - "multipartite\n", - "multiparty\n", - "multiped\n", - "multipeds\n", - "multiplant\n", - "multiple\n", - "multiples\n", - "multiplexor\n", - "multiplexors\n", - "multiplication\n", - "multiplications\n", - "multiplicities\n", - "multiplicity\n", - "multiplied\n", - "multiplier\n", - "multipliers\n", - "multiplies\n", - "multiply\n", - "multiplying\n", - "multipolar\n", - "multiproblem\n", - "multiproduct\n", - "multipurpose\n", - "multiracial\n", - "multiroomed\n", - "multisense\n", - "multiservice\n", - "multisided\n", - "multispeed\n", - "multistage\n", - "multistep\n", - "multistory\n", - "multisyllabic\n", - "multitalented\n", - "multitrack\n", - "multitude\n", - "multitudes\n", - "multitudinous\n", - "multiunion\n", - "multiunit\n", - "multivariate\n", - "multiwarhead\n", - "multiyear\n", - "multure\n", - "multures\n", - "mum\n", - "mumble\n", - "mumbled\n", - "mumbler\n", - "mumblers\n", - "mumbles\n", - "mumbling\n", - "mumbo\n", - "mumm\n", - "mummed\n", - "mummer\n", - "mummeries\n", - "mummers\n", - "mummery\n", - "mummied\n", - "mummies\n", - "mummification\n", - "mummifications\n", - "mummified\n", - "mummifies\n", - "mummify\n", - "mummifying\n", - "mumming\n", - "mumms\n", - "mummy\n", - "mummying\n", - "mump\n", - "mumped\n", - "mumper\n", - "mumpers\n", - "mumping\n", - "mumps\n", - "mums\n", - "mun\n", - "munch\n", - "munched\n", - "muncher\n", - "munchers\n", - "munches\n", - "munching\n", - "mundane\n", - "mundanely\n", - "mundungo\n", - "mundungos\n", - "munge\n", - "mungo\n", - "mungoose\n", - "mungooses\n", - "mungos\n", - "mungs\n", - "municipal\n", - "municipalities\n", - "municipality\n", - "municipally\n", - "munificence\n", - "munificences\n", - "munificent\n", - "muniment\n", - "muniments\n", - "munition\n", - "munitioned\n", - "munitioning\n", - "munitions\n", - "munnion\n", - "munnions\n", - "muns\n", - "munster\n", - "munsters\n", - "muntin\n", - "munting\n", - "muntings\n", - "muntins\n", - "muntjac\n", - "muntjacs\n", - "muntjak\n", - "muntjaks\n", - "muon\n", - "muonic\n", - "muons\n", - "mura\n", - "muraenid\n", - "muraenids\n", - "mural\n", - "muralist\n", - "muralists\n", - "murals\n", - "muras\n", - "murder\n", - "murdered\n", - "murderee\n", - "murderees\n", - "murderer\n", - "murderers\n", - "murderess\n", - "murderesses\n", - "murdering\n", - "murderous\n", - "murderously\n", - "murders\n", - "mure\n", - "mured\n", - "murein\n", - "mureins\n", - "mures\n", - "murex\n", - "murexes\n", - "muriate\n", - "muriated\n", - "muriates\n", - "muricate\n", - "murices\n", - "murid\n", - "murids\n", - "murine\n", - "murines\n", - "muring\n", - "murk\n", - "murker\n", - "murkest\n", - "murkier\n", - "murkiest\n", - "murkily\n", - "murkiness\n", - "murkinesses\n", - "murkly\n", - "murks\n", - "murky\n", - "murmur\n", - "murmured\n", - "murmurer\n", - "murmurers\n", - "murmuring\n", - "murmurous\n", - "murmurs\n", - "murphies\n", - "murphy\n", - "murr\n", - "murra\n", - "murrain\n", - "murrains\n", - "murras\n", - "murre\n", - "murrelet\n", - "murrelets\n", - "murres\n", - "murrey\n", - "murreys\n", - "murrha\n", - "murrhas\n", - "murrhine\n", - "murries\n", - "murrine\n", - "murrs\n", - "murry\n", - "murther\n", - "murthered\n", - "murthering\n", - "murthers\n", - "mus\n", - "musca\n", - "muscadel\n", - "muscadels\n", - "muscae\n", - "muscat\n", - "muscatel\n", - "muscatels\n", - "muscats\n", - "muscid\n", - "muscids\n", - "muscle\n", - "muscled\n", - "muscles\n", - "muscling\n", - "muscly\n", - "muscular\n", - "muscularities\n", - "muscularity\n", - "musculature\n", - "musculatures\n", - "muse\n", - "mused\n", - "museful\n", - "muser\n", - "musers\n", - "muses\n", - "musette\n", - "musettes\n", - "museum\n", - "museums\n", - "mush\n", - "mushed\n", - "musher\n", - "mushers\n", - "mushes\n", - "mushier\n", - "mushiest\n", - "mushily\n", - "mushing\n", - "mushroom\n", - "mushroomed\n", - "mushrooming\n", - "mushrooms\n", - "mushy\n", - "music\n", - "musical\n", - "musicale\n", - "musicales\n", - "musically\n", - "musicals\n", - "musician\n", - "musicianly\n", - "musicians\n", - "musicianship\n", - "musicianships\n", - "musics\n", - "musing\n", - "musingly\n", - "musings\n", - "musjid\n", - "musjids\n", - "musk\n", - "muskeg\n", - "muskegs\n", - "muskellunge\n", - "musket\n", - "musketries\n", - "musketry\n", - "muskets\n", - "muskie\n", - "muskier\n", - "muskies\n", - "muskiest\n", - "muskily\n", - "muskiness\n", - "muskinesses\n", - "muskit\n", - "muskits\n", - "muskmelon\n", - "muskmelons\n", - "muskrat\n", - "muskrats\n", - "musks\n", - "musky\n", - "muslin\n", - "muslins\n", - "muspike\n", - "muspikes\n", - "musquash\n", - "musquashes\n", - "muss\n", - "mussed\n", - "mussel\n", - "mussels\n", - "musses\n", - "mussier\n", - "mussiest\n", - "mussily\n", - "mussiness\n", - "mussinesses\n", - "mussing\n", - "mussy\n", - "must\n", - "mustache\n", - "mustaches\n", - "mustang\n", - "mustangs\n", - "mustard\n", - "mustards\n", - "musted\n", - "mustee\n", - "mustees\n", - "muster\n", - "mustered\n", - "mustering\n", - "musters\n", - "musth\n", - "musths\n", - "mustier\n", - "mustiest\n", - "mustily\n", - "mustiness\n", - "mustinesses\n", - "musting\n", - "musts\n", - "musty\n", - "mut\n", - "mutabilities\n", - "mutability\n", - "mutable\n", - "mutably\n", - "mutagen\n", - "mutagens\n", - "mutant\n", - "mutants\n", - "mutase\n", - "mutases\n", - "mutate\n", - "mutated\n", - "mutates\n", - "mutating\n", - "mutation\n", - "mutational\n", - "mutations\n", - "mutative\n", - "mutch\n", - "mutches\n", - "mutchkin\n", - "mutchkins\n", - "mute\n", - "muted\n", - "mutedly\n", - "mutely\n", - "muteness\n", - "mutenesses\n", - "muter\n", - "mutes\n", - "mutest\n", - "muticous\n", - "mutilate\n", - "mutilated\n", - "mutilates\n", - "mutilating\n", - "mutilation\n", - "mutilations\n", - "mutilator\n", - "mutilators\n", - "mutine\n", - "mutined\n", - "mutineer\n", - "mutineered\n", - "mutineering\n", - "mutineers\n", - "mutines\n", - "muting\n", - "mutinied\n", - "mutinies\n", - "mutining\n", - "mutinous\n", - "mutinously\n", - "mutiny\n", - "mutinying\n", - "mutism\n", - "mutisms\n", - "muts\n", - "mutt\n", - "mutter\n", - "muttered\n", - "mutterer\n", - "mutterers\n", - "muttering\n", - "mutters\n", - "mutton\n", - "muttons\n", - "muttony\n", - "mutts\n", - "mutual\n", - "mutually\n", - "mutuel\n", - "mutuels\n", - "mutular\n", - "mutule\n", - "mutules\n", - "muumuu\n", - "muumuus\n", - "muzhik\n", - "muzhiks\n", - "muzjik\n", - "muzjiks\n", - "muzzier\n", - "muzziest\n", - "muzzily\n", - "muzzle\n", - "muzzled\n", - "muzzler\n", - "muzzlers\n", - "muzzles\n", - "muzzling\n", - "muzzy\n", - "my\n", - "myalgia\n", - "myalgias\n", - "myalgic\n", - "myases\n", - "myasis\n", - "mycele\n", - "myceles\n", - "mycelia\n", - "mycelial\n", - "mycelian\n", - "mycelium\n", - "myceloid\n", - "mycetoma\n", - "mycetomas\n", - "mycetomata\n", - "mycologies\n", - "mycology\n", - "mycoses\n", - "mycosis\n", - "mycotic\n", - "myelin\n", - "myeline\n", - "myelines\n", - "myelinic\n", - "myelins\n", - "myelitides\n", - "myelitis\n", - "myeloid\n", - "myeloma\n", - "myelomas\n", - "myelomata\n", - "myelosuppression\n", - "myelosuppressions\n", - "myiases\n", - "myiasis\n", - "mylonite\n", - "mylonites\n", - "myna\n", - "mynah\n", - "mynahs\n", - "mynas\n", - "mynheer\n", - "mynheers\n", - "myoblast\n", - "myoblasts\n", - "myogenic\n", - "myograph\n", - "myographs\n", - "myoid\n", - "myologic\n", - "myologies\n", - "myology\n", - "myoma\n", - "myomas\n", - "myomata\n", - "myopathies\n", - "myopathy\n", - "myope\n", - "myopes\n", - "myopia\n", - "myopias\n", - "myopic\n", - "myopically\n", - "myopies\n", - "myopy\n", - "myoscope\n", - "myoscopes\n", - "myoses\n", - "myosin\n", - "myosins\n", - "myosis\n", - "myosote\n", - "myosotes\n", - "myosotis\n", - "myosotises\n", - "myotic\n", - "myotics\n", - "myotome\n", - "myotomes\n", - "myotonia\n", - "myotonias\n", - "myotonic\n", - "myriad\n", - "myriads\n", - "myriapod\n", - "myriapods\n", - "myrica\n", - "myricas\n", - "myriopod\n", - "myriopods\n", - "myrmidon\n", - "myrmidons\n", - "myrrh\n", - "myrrhic\n", - "myrrhs\n", - "myrtle\n", - "myrtles\n", - "myself\n", - "mysost\n", - "mysosts\n", - "mystagog\n", - "mystagogs\n", - "mysteries\n", - "mysterious\n", - "mysteriously\n", - "mysteriousness\n", - "mysteriousnesses\n", - "mystery\n", - "mystic\n", - "mystical\n", - "mysticly\n", - "mystics\n", - "mystification\n", - "mystifications\n", - "mystified\n", - "mystifies\n", - "mystify\n", - "mystifying\n", - "mystique\n", - "mystiques\n", - "myth\n", - "mythic\n", - "mythical\n", - "mythoi\n", - "mythological\n", - "mythologies\n", - "mythologist\n", - "mythologists\n", - "mythology\n", - "mythos\n", - "myths\n", - "myxedema\n", - "myxedemas\n", - "myxocyte\n", - "myxocytes\n", - "myxoid\n", - "myxoma\n", - "myxomas\n", - "myxomata\n", - "na\n", - "nab\n", - "nabbed\n", - "nabbing\n", - "nabis\n", - "nabob\n", - "naboberies\n", - "nabobery\n", - "nabobess\n", - "nabobesses\n", - "nabobism\n", - "nabobisms\n", - "nabobs\n", - "nabs\n", - "nacelle\n", - "nacelles\n", - "nacre\n", - "nacred\n", - "nacreous\n", - "nacres\n", - "nadir\n", - "nadiral\n", - "nadirs\n", - "nae\n", - "naething\n", - "naethings\n", - "naevi\n", - "naevoid\n", - "naevus\n", - "nag\n", - "nagana\n", - "naganas\n", - "nagged\n", - "nagger\n", - "naggers\n", - "nagging\n", - "nags\n", - "naiad\n", - "naiades\n", - "naiads\n", - "naif\n", - "naifs\n", - "nail\n", - "nailed\n", - "nailer\n", - "nailers\n", - "nailfold\n", - "nailfolds\n", - "nailhead\n", - "nailheads\n", - "nailing\n", - "nails\n", - "nailset\n", - "nailsets\n", - "nainsook\n", - "nainsooks\n", - "naive\n", - "naively\n", - "naiveness\n", - "naivenesses\n", - "naiver\n", - "naives\n", - "naivest\n", - "naivete\n", - "naivetes\n", - "naiveties\n", - "naivety\n", - "naked\n", - "nakeder\n", - "nakedest\n", - "nakedly\n", - "nakedness\n", - "nakednesses\n", - "naled\n", - "naleds\n", - "naloxone\n", - "naloxones\n", - "namable\n", - "name\n", - "nameable\n", - "named\n", - "nameless\n", - "namelessly\n", - "namely\n", - "namer\n", - "namers\n", - "names\n", - "namesake\n", - "namesakes\n", - "naming\n", - "nana\n", - "nanas\n", - "nance\n", - "nances\n", - "nandin\n", - "nandins\n", - "nanism\n", - "nanisms\n", - "nankeen\n", - "nankeens\n", - "nankin\n", - "nankins\n", - "nannie\n", - "nannies\n", - "nanny\n", - "nanogram\n", - "nanograms\n", - "nanowatt\n", - "nanowatts\n", - "naoi\n", - "naos\n", - "nap\n", - "napalm\n", - "napalmed\n", - "napalming\n", - "napalms\n", - "nape\n", - "naperies\n", - "napery\n", - "napes\n", - "naphtha\n", - "naphthas\n", - "naphthol\n", - "naphthols\n", - "naphthyl\n", - "napiform\n", - "napkin\n", - "napkins\n", - "napless\n", - "napoleon\n", - "napoleons\n", - "nappe\n", - "napped\n", - "napper\n", - "nappers\n", - "nappes\n", - "nappie\n", - "nappier\n", - "nappies\n", - "nappiest\n", - "napping\n", - "nappy\n", - "naps\n", - "narc\n", - "narcein\n", - "narceine\n", - "narceines\n", - "narceins\n", - "narcism\n", - "narcisms\n", - "narcissi\n", - "narcissism\n", - "narcissisms\n", - "narcissist\n", - "narcissists\n", - "narcissus\n", - "narcissuses\n", - "narcist\n", - "narcists\n", - "narco\n", - "narcos\n", - "narcose\n", - "narcoses\n", - "narcosis\n", - "narcotic\n", - "narcotics\n", - "narcs\n", - "nard\n", - "nardine\n", - "nards\n", - "nares\n", - "narghile\n", - "narghiles\n", - "nargile\n", - "nargileh\n", - "nargilehs\n", - "nargiles\n", - "narial\n", - "naric\n", - "narine\n", - "naris\n", - "nark\n", - "narked\n", - "narking\n", - "narks\n", - "narrate\n", - "narrated\n", - "narrater\n", - "narraters\n", - "narrates\n", - "narrating\n", - "narration\n", - "narrations\n", - "narrative\n", - "narratives\n", - "narrator\n", - "narrators\n", - "narrow\n", - "narrowed\n", - "narrower\n", - "narrowest\n", - "narrowing\n", - "narrowly\n", - "narrowness\n", - "narrownesses\n", - "narrows\n", - "narthex\n", - "narthexes\n", - "narwal\n", - "narwals\n", - "narwhal\n", - "narwhale\n", - "narwhales\n", - "narwhals\n", - "nary\n", - "nasal\n", - "nasalise\n", - "nasalised\n", - "nasalises\n", - "nasalising\n", - "nasalities\n", - "nasality\n", - "nasalize\n", - "nasalized\n", - "nasalizes\n", - "nasalizing\n", - "nasally\n", - "nasals\n", - "nascence\n", - "nascences\n", - "nascencies\n", - "nascency\n", - "nascent\n", - "nasial\n", - "nasion\n", - "nasions\n", - "nastic\n", - "nastier\n", - "nastiest\n", - "nastily\n", - "nastiness\n", - "nastinesses\n", - "nasturtium\n", - "nasturtiums\n", - "nasty\n", - "natal\n", - "natalities\n", - "natality\n", - "natant\n", - "natantly\n", - "natation\n", - "natations\n", - "natatory\n", - "nates\n", - "nathless\n", - "nation\n", - "national\n", - "nationalism\n", - "nationalisms\n", - "nationalist\n", - "nationalistic\n", - "nationalists\n", - "nationalities\n", - "nationality\n", - "nationalization\n", - "nationalizations\n", - "nationalize\n", - "nationalized\n", - "nationalizes\n", - "nationalizing\n", - "nationally\n", - "nationals\n", - "nationhood\n", - "nationhoods\n", - "nations\n", - "native\n", - "natively\n", - "natives\n", - "nativism\n", - "nativisms\n", - "nativist\n", - "nativists\n", - "nativities\n", - "nativity\n", - "natrium\n", - "natriums\n", - "natron\n", - "natrons\n", - "natter\n", - "nattered\n", - "nattering\n", - "natters\n", - "nattier\n", - "nattiest\n", - "nattily\n", - "nattiness\n", - "nattinesses\n", - "natty\n", - "natural\n", - "naturalism\n", - "naturalisms\n", - "naturalist\n", - "naturalistic\n", - "naturalists\n", - "naturalization\n", - "naturalizations\n", - "naturalize\n", - "naturalized\n", - "naturalizes\n", - "naturalizing\n", - "naturally\n", - "naturalness\n", - "naturalnesses\n", - "naturals\n", - "nature\n", - "natured\n", - "natures\n", - "naught\n", - "naughtier\n", - "naughtiest\n", - "naughtily\n", - "naughtiness\n", - "naughtinesses\n", - "naughts\n", - "naughty\n", - "naumachies\n", - "naumachy\n", - "nauplial\n", - "nauplii\n", - "nauplius\n", - "nausea\n", - "nauseant\n", - "nauseants\n", - "nauseas\n", - "nauseate\n", - "nauseated\n", - "nauseates\n", - "nauseating\n", - "nauseatingly\n", - "nauseous\n", - "nautch\n", - "nautches\n", - "nautical\n", - "nautically\n", - "nautili\n", - "nautilus\n", - "nautiluses\n", - "navaid\n", - "navaids\n", - "naval\n", - "navally\n", - "navar\n", - "navars\n", - "nave\n", - "navel\n", - "navels\n", - "naves\n", - "navette\n", - "navettes\n", - "navicert\n", - "navicerts\n", - "navies\n", - "navigabilities\n", - "navigability\n", - "navigable\n", - "navigably\n", - "navigate\n", - "navigated\n", - "navigates\n", - "navigating\n", - "navigation\n", - "navigations\n", - "navigator\n", - "navigators\n", - "navvies\n", - "navvy\n", - "navy\n", - "nawab\n", - "nawabs\n", - "nay\n", - "nays\n", - "nazi\n", - "nazified\n", - "nazifies\n", - "nazify\n", - "nazifying\n", - "nazis\n", - "neap\n", - "neaps\n", - "near\n", - "nearby\n", - "neared\n", - "nearer\n", - "nearest\n", - "nearing\n", - "nearlier\n", - "nearliest\n", - "nearly\n", - "nearness\n", - "nearnesses\n", - "nears\n", - "nearsighted\n", - "nearsightedly\n", - "nearsightedness\n", - "nearsightednesses\n", - "neat\n", - "neaten\n", - "neatened\n", - "neatening\n", - "neatens\n", - "neater\n", - "neatest\n", - "neath\n", - "neatherd\n", - "neatherds\n", - "neatly\n", - "neatness\n", - "neatnesses\n", - "neats\n", - "neb\n", - "nebbish\n", - "nebbishes\n", - "nebs\n", - "nebula\n", - "nebulae\n", - "nebular\n", - "nebulas\n", - "nebule\n", - "nebulise\n", - "nebulised\n", - "nebulises\n", - "nebulising\n", - "nebulize\n", - "nebulized\n", - "nebulizes\n", - "nebulizing\n", - "nebulose\n", - "nebulous\n", - "nebuly\n", - "necessaries\n", - "necessarily\n", - "necessary\n", - "necessitate\n", - "necessitated\n", - "necessitates\n", - "necessitating\n", - "necessities\n", - "necessity\n", - "neck\n", - "neckband\n", - "neckbands\n", - "necked\n", - "neckerchief\n", - "neckerchiefs\n", - "necking\n", - "neckings\n", - "necklace\n", - "necklaces\n", - "neckless\n", - "necklike\n", - "neckline\n", - "necklines\n", - "necks\n", - "necktie\n", - "neckties\n", - "neckwear\n", - "neckwears\n", - "necrologies\n", - "necrology\n", - "necromancer\n", - "necromancers\n", - "necromancies\n", - "necromancy\n", - "necropsied\n", - "necropsies\n", - "necropsy\n", - "necropsying\n", - "necrose\n", - "necrosed\n", - "necroses\n", - "necrosing\n", - "necrosis\n", - "necrotic\n", - "nectar\n", - "nectaries\n", - "nectarine\n", - "nectarines\n", - "nectars\n", - "nectary\n", - "nee\n", - "need\n", - "needed\n", - "needer\n", - "needers\n", - "needful\n", - "needfuls\n", - "needier\n", - "neediest\n", - "needily\n", - "needing\n", - "needle\n", - "needled\n", - "needlepoint\n", - "needlepoints\n", - "needler\n", - "needlers\n", - "needles\n", - "needless\n", - "needlessly\n", - "needlework\n", - "needleworks\n", - "needling\n", - "needlings\n", - "needs\n", - "needy\n", - "neem\n", - "neems\n", - "neep\n", - "neeps\n", - "nefarious\n", - "nefariouses\n", - "nefariously\n", - "negate\n", - "negated\n", - "negater\n", - "negaters\n", - "negates\n", - "negating\n", - "negation\n", - "negations\n", - "negative\n", - "negatived\n", - "negatively\n", - "negatives\n", - "negativing\n", - "negaton\n", - "negatons\n", - "negator\n", - "negators\n", - "negatron\n", - "negatrons\n", - "neglect\n", - "neglected\n", - "neglectful\n", - "neglecting\n", - "neglects\n", - "neglige\n", - "negligee\n", - "negligees\n", - "negligence\n", - "negligences\n", - "negligent\n", - "negligently\n", - "negliges\n", - "negligible\n", - "negotiable\n", - "negotiate\n", - "negotiated\n", - "negotiates\n", - "negotiating\n", - "negotiation\n", - "negotiations\n", - "negotiator\n", - "negotiators\n", - "negro\n", - "negroes\n", - "negroid\n", - "negroids\n", - "negus\n", - "neguses\n", - "neif\n", - "neifs\n", - "neigh\n", - "neighbor\n", - "neighbored\n", - "neighborhood\n", - "neighborhoods\n", - "neighboring\n", - "neighborliness\n", - "neighborlinesses\n", - "neighborly\n", - "neighbors\n", - "neighed\n", - "neighing\n", - "neighs\n", - "neist\n", - "neither\n", - "nekton\n", - "nektonic\n", - "nektons\n", - "nelson\n", - "nelsons\n", - "nelumbo\n", - "nelumbos\n", - "nema\n", - "nemas\n", - "nematic\n", - "nematode\n", - "nematodes\n", - "nemeses\n", - "nemesis\n", - "nene\n", - "neolith\n", - "neoliths\n", - "neologic\n", - "neologies\n", - "neologism\n", - "neologisms\n", - "neology\n", - "neomorph\n", - "neomorphs\n", - "neomycin\n", - "neomycins\n", - "neon\n", - "neonatal\n", - "neonate\n", - "neonates\n", - "neoned\n", - "neons\n", - "neophyte\n", - "neophytes\n", - "neoplasm\n", - "neoplasms\n", - "neoprene\n", - "neoprenes\n", - "neotenic\n", - "neotenies\n", - "neoteny\n", - "neoteric\n", - "neoterics\n", - "neotype\n", - "neotypes\n", - "nepenthe\n", - "nepenthes\n", - "nephew\n", - "nephews\n", - "nephric\n", - "nephrism\n", - "nephrisms\n", - "nephrite\n", - "nephrites\n", - "nephron\n", - "nephrons\n", - "nepotic\n", - "nepotism\n", - "nepotisms\n", - "nepotist\n", - "nepotists\n", - "nereid\n", - "nereides\n", - "nereids\n", - "nereis\n", - "neritic\n", - "nerol\n", - "neroli\n", - "nerolis\n", - "nerols\n", - "nerts\n", - "nertz\n", - "nervate\n", - "nerve\n", - "nerved\n", - "nerveless\n", - "nerves\n", - "nervier\n", - "nerviest\n", - "nervily\n", - "nervine\n", - "nervines\n", - "nerving\n", - "nervings\n", - "nervous\n", - "nervously\n", - "nervousness\n", - "nervousnesses\n", - "nervule\n", - "nervules\n", - "nervure\n", - "nervures\n", - "nervy\n", - "nescient\n", - "nescients\n", - "ness\n", - "nesses\n", - "nest\n", - "nested\n", - "nester\n", - "nesters\n", - "nesting\n", - "nestle\n", - "nestled\n", - "nestler\n", - "nestlers\n", - "nestles\n", - "nestlike\n", - "nestling\n", - "nestlings\n", - "nestor\n", - "nestors\n", - "nests\n", - "net\n", - "nether\n", - "netless\n", - "netlike\n", - "netop\n", - "netops\n", - "nets\n", - "netsuke\n", - "netsukes\n", - "nett\n", - "nettable\n", - "netted\n", - "netter\n", - "netters\n", - "nettier\n", - "nettiest\n", - "netting\n", - "nettings\n", - "nettle\n", - "nettled\n", - "nettler\n", - "nettlers\n", - "nettles\n", - "nettlesome\n", - "nettlier\n", - "nettliest\n", - "nettling\n", - "nettly\n", - "netts\n", - "netty\n", - "network\n", - "networked\n", - "networking\n", - "networks\n", - "neum\n", - "neumatic\n", - "neume\n", - "neumes\n", - "neumic\n", - "neums\n", - "neural\n", - "neuralgia\n", - "neuralgias\n", - "neuralgic\n", - "neurally\n", - "neuraxon\n", - "neuraxons\n", - "neuritic\n", - "neuritics\n", - "neuritides\n", - "neuritis\n", - "neuritises\n", - "neuroid\n", - "neurologic\n", - "neurological\n", - "neurologically\n", - "neurologies\n", - "neurologist\n", - "neurologists\n", - "neurology\n", - "neuroma\n", - "neuromas\n", - "neuromata\n", - "neuron\n", - "neuronal\n", - "neurone\n", - "neurones\n", - "neuronic\n", - "neurons\n", - "neuropathies\n", - "neuropathy\n", - "neuropsych\n", - "neurosal\n", - "neuroses\n", - "neurosis\n", - "neurosurgeon\n", - "neurosurgeons\n", - "neurotic\n", - "neurotically\n", - "neurotics\n", - "neurotoxicities\n", - "neurotoxicity\n", - "neuston\n", - "neustons\n", - "neuter\n", - "neutered\n", - "neutering\n", - "neuters\n", - "neutral\n", - "neutralities\n", - "neutrality\n", - "neutralization\n", - "neutralizations\n", - "neutralize\n", - "neutralized\n", - "neutralizes\n", - "neutralizing\n", - "neutrals\n", - "neutrino\n", - "neutrinos\n", - "neutron\n", - "neutrons\n", - "neve\n", - "never\n", - "nevermore\n", - "nevertheless\n", - "neves\n", - "nevi\n", - "nevoid\n", - "nevus\n", - "new\n", - "newborn\n", - "newborns\n", - "newcomer\n", - "newcomers\n", - "newel\n", - "newels\n", - "newer\n", - "newest\n", - "newfound\n", - "newish\n", - "newly\n", - "newlywed\n", - "newlyweds\n", - "newmown\n", - "newness\n", - "newnesses\n", - "news\n", - "newsboy\n", - "newsboys\n", - "newscast\n", - "newscaster\n", - "newscasters\n", - "newscasts\n", - "newsier\n", - "newsies\n", - "newsiest\n", - "newsless\n", - "newsletter\n", - "newsmagazine\n", - "newsmagazines\n", - "newsman\n", - "newsmen\n", - "newspaper\n", - "newspaperman\n", - "newspapermen\n", - "newspapers\n", - "newspeak\n", - "newspeaks\n", - "newsprint\n", - "newsprints\n", - "newsreel\n", - "newsreels\n", - "newsroom\n", - "newsrooms\n", - "newsstand\n", - "newsstands\n", - "newsworthy\n", - "newsy\n", - "newt\n", - "newton\n", - "newtons\n", - "newts\n", - "next\n", - "nextdoor\n", - "nexus\n", - "nexuses\n", - "ngwee\n", - "niacin\n", - "niacins\n", - "nib\n", - "nibbed\n", - "nibbing\n", - "nibble\n", - "nibbled\n", - "nibbler\n", - "nibblers\n", - "nibbles\n", - "nibbling\n", - "niblick\n", - "niblicks\n", - "niblike\n", - "nibs\n", - "nice\n", - "nicely\n", - "niceness\n", - "nicenesses\n", - "nicer\n", - "nicest\n", - "niceties\n", - "nicety\n", - "niche\n", - "niched\n", - "niches\n", - "niching\n", - "nick\n", - "nicked\n", - "nickel\n", - "nickeled\n", - "nickelic\n", - "nickeling\n", - "nickelled\n", - "nickelling\n", - "nickels\n", - "nicker\n", - "nickered\n", - "nickering\n", - "nickers\n", - "nicking\n", - "nickle\n", - "nickles\n", - "nicknack\n", - "nicknacks\n", - "nickname\n", - "nicknamed\n", - "nicknames\n", - "nicknaming\n", - "nicks\n", - "nicol\n", - "nicols\n", - "nicotin\n", - "nicotine\n", - "nicotines\n", - "nicotins\n", - "nictate\n", - "nictated\n", - "nictates\n", - "nictating\n", - "nidal\n", - "nide\n", - "nided\n", - "nidering\n", - "niderings\n", - "nides\n", - "nidget\n", - "nidgets\n", - "nidi\n", - "nidified\n", - "nidifies\n", - "nidify\n", - "nidifying\n", - "niding\n", - "nidus\n", - "niduses\n", - "niece\n", - "nieces\n", - "nielli\n", - "niellist\n", - "niellists\n", - "niello\n", - "nielloed\n", - "nielloing\n", - "niellos\n", - "nieve\n", - "nieves\n", - "niffer\n", - "niffered\n", - "niffering\n", - "niffers\n", - "niftier\n", - "niftiest\n", - "nifty\n", - "niggard\n", - "niggarded\n", - "niggarding\n", - "niggardliness\n", - "niggardlinesses\n", - "niggardly\n", - "niggards\n", - "niggle\n", - "niggled\n", - "niggler\n", - "nigglers\n", - "niggles\n", - "niggling\n", - "nigglings\n", - "nigh\n", - "nighed\n", - "nigher\n", - "nighest\n", - "nighing\n", - "nighness\n", - "nighnesses\n", - "nighs\n", - "night\n", - "nightcap\n", - "nightcaps\n", - "nightclothes\n", - "nightclub\n", - "nightclubs\n", - "nightfall\n", - "nightfalls\n", - "nightgown\n", - "nightgowns\n", - "nightie\n", - "nighties\n", - "nightingale\n", - "nightingales\n", - "nightjar\n", - "nightjars\n", - "nightly\n", - "nightmare\n", - "nightmares\n", - "nightmarish\n", - "nights\n", - "nightshade\n", - "nightshades\n", - "nighttime\n", - "nighttimes\n", - "nighty\n", - "nigrified\n", - "nigrifies\n", - "nigrify\n", - "nigrifying\n", - "nigrosin\n", - "nigrosins\n", - "nihil\n", - "nihilism\n", - "nihilisms\n", - "nihilist\n", - "nihilists\n", - "nihilities\n", - "nihility\n", - "nihils\n", - "nil\n", - "nilgai\n", - "nilgais\n", - "nilgau\n", - "nilgaus\n", - "nilghai\n", - "nilghais\n", - "nilghau\n", - "nilghaus\n", - "nill\n", - "nilled\n", - "nilling\n", - "nills\n", - "nils\n", - "nim\n", - "nimbi\n", - "nimble\n", - "nimbleness\n", - "nimblenesses\n", - "nimbler\n", - "nimblest\n", - "nimbly\n", - "nimbus\n", - "nimbused\n", - "nimbuses\n", - "nimieties\n", - "nimiety\n", - "nimious\n", - "nimmed\n", - "nimming\n", - "nimrod\n", - "nimrods\n", - "nims\n", - "nincompoop\n", - "nincompoops\n", - "nine\n", - "ninebark\n", - "ninebarks\n", - "ninefold\n", - "ninepin\n", - "ninepins\n", - "nines\n", - "nineteen\n", - "nineteens\n", - "nineteenth\n", - "nineteenths\n", - "nineties\n", - "ninetieth\n", - "ninetieths\n", - "ninety\n", - "ninnies\n", - "ninny\n", - "ninnyish\n", - "ninon\n", - "ninons\n", - "ninth\n", - "ninthly\n", - "ninths\n", - "niobic\n", - "niobium\n", - "niobiums\n", - "niobous\n", - "nip\n", - "nipa\n", - "nipas\n", - "nipped\n", - "nipper\n", - "nippers\n", - "nippier\n", - "nippiest\n", - "nippily\n", - "nipping\n", - "nipple\n", - "nipples\n", - "nippy\n", - "nips\n", - "nirvana\n", - "nirvanas\n", - "nirvanic\n", - "nisei\n", - "niseis\n", - "nisi\n", - "nisus\n", - "nit\n", - "nitchie\n", - "nitchies\n", - "niter\n", - "niters\n", - "nitid\n", - "niton\n", - "nitons\n", - "nitpick\n", - "nitpicked\n", - "nitpicking\n", - "nitpicks\n", - "nitrate\n", - "nitrated\n", - "nitrates\n", - "nitrating\n", - "nitrator\n", - "nitrators\n", - "nitre\n", - "nitres\n", - "nitric\n", - "nitrid\n", - "nitride\n", - "nitrides\n", - "nitrids\n", - "nitrified\n", - "nitrifies\n", - "nitrify\n", - "nitrifying\n", - "nitril\n", - "nitrile\n", - "nitriles\n", - "nitrils\n", - "nitrite\n", - "nitrites\n", - "nitro\n", - "nitrogen\n", - "nitrogenous\n", - "nitrogens\n", - "nitroglycerin\n", - "nitroglycerine\n", - "nitroglycerines\n", - "nitroglycerins\n", - "nitrolic\n", - "nitros\n", - "nitroso\n", - "nitrosurea\n", - "nitrosyl\n", - "nitrosyls\n", - "nitrous\n", - "nits\n", - "nittier\n", - "nittiest\n", - "nitty\n", - "nitwit\n", - "nitwits\n", - "nival\n", - "niveous\n", - "nix\n", - "nixed\n", - "nixes\n", - "nixie\n", - "nixies\n", - "nixing\n", - "nixy\n", - "nizam\n", - "nizamate\n", - "nizamates\n", - "nizams\n", - "no\n", - "nob\n", - "nobbier\n", - "nobbiest\n", - "nobbily\n", - "nobble\n", - "nobbled\n", - "nobbler\n", - "nobblers\n", - "nobbles\n", - "nobbling\n", - "nobby\n", - "nobelium\n", - "nobeliums\n", - "nobilities\n", - "nobility\n", - "noble\n", - "nobleman\n", - "noblemen\n", - "nobleness\n", - "noblenesses\n", - "nobler\n", - "nobles\n", - "noblesse\n", - "noblesses\n", - "noblest\n", - "nobly\n", - "nobodies\n", - "nobody\n", - "nobs\n", - "nocent\n", - "nock\n", - "nocked\n", - "nocking\n", - "nocks\n", - "noctuid\n", - "noctuids\n", - "noctule\n", - "noctules\n", - "noctuoid\n", - "nocturn\n", - "nocturnal\n", - "nocturne\n", - "nocturnes\n", - "nocturns\n", - "nocuous\n", - "nod\n", - "nodal\n", - "nodalities\n", - "nodality\n", - "nodally\n", - "nodded\n", - "nodder\n", - "nodders\n", - "noddies\n", - "nodding\n", - "noddle\n", - "noddled\n", - "noddles\n", - "noddling\n", - "noddy\n", - "node\n", - "nodes\n", - "nodi\n", - "nodical\n", - "nodose\n", - "nodosities\n", - "nodosity\n", - "nodous\n", - "nods\n", - "nodular\n", - "nodule\n", - "nodules\n", - "nodulose\n", - "nodulous\n", - "nodus\n", - "noel\n", - "noels\n", - "noes\n", - "noesis\n", - "noesises\n", - "noetic\n", - "nog\n", - "nogg\n", - "noggin\n", - "nogging\n", - "noggings\n", - "noggins\n", - "noggs\n", - "nogs\n", - "noh\n", - "nohes\n", - "nohow\n", - "noil\n", - "noils\n", - "noily\n", - "noir\n", - "noise\n", - "noised\n", - "noisemaker\n", - "noisemakers\n", - "noises\n", - "noisier\n", - "noisiest\n", - "noisily\n", - "noisiness\n", - "noisinesses\n", - "noising\n", - "noisome\n", - "noisy\n", - "nolo\n", - "nolos\n", - "nom\n", - "noma\n", - "nomad\n", - "nomadic\n", - "nomadism\n", - "nomadisms\n", - "nomads\n", - "nomarch\n", - "nomarchies\n", - "nomarchs\n", - "nomarchy\n", - "nomas\n", - "nombles\n", - "nombril\n", - "nombrils\n", - "nome\n", - "nomen\n", - "nomenclature\n", - "nomenclatures\n", - "nomes\n", - "nomina\n", - "nominal\n", - "nominally\n", - "nominals\n", - "nominate\n", - "nominated\n", - "nominates\n", - "nominating\n", - "nomination\n", - "nominations\n", - "nominative\n", - "nominatives\n", - "nominee\n", - "nominees\n", - "nomism\n", - "nomisms\n", - "nomistic\n", - "nomogram\n", - "nomograms\n", - "nomoi\n", - "nomologies\n", - "nomology\n", - "nomos\n", - "noms\n", - "nona\n", - "nonabrasive\n", - "nonabsorbent\n", - "nonacademic\n", - "nonaccredited\n", - "nonacid\n", - "nonacids\n", - "nonaddictive\n", - "nonadherence\n", - "nonadherences\n", - "nonadhesive\n", - "nonadjacent\n", - "nonadjustable\n", - "nonadult\n", - "nonadults\n", - "nonaffiliated\n", - "nonage\n", - "nonages\n", - "nonaggression\n", - "nonaggressions\n", - "nonagon\n", - "nonagons\n", - "nonalcoholic\n", - "nonaligned\n", - "nonappearance\n", - "nonappearances\n", - "nonas\n", - "nonautomatic\n", - "nonbank\n", - "nonbasic\n", - "nonbeing\n", - "nonbeings\n", - "nonbeliever\n", - "nonbelievers\n", - "nonbook\n", - "nonbooks\n", - "nonbreakable\n", - "noncancerous\n", - "noncandidate\n", - "noncandidates\n", - "noncarbonated\n", - "noncash\n", - "nonce\n", - "nonces\n", - "nonchalance\n", - "nonchalances\n", - "nonchalant\n", - "nonchalantly\n", - "nonchargeable\n", - "nonchurchgoer\n", - "nonchurchgoers\n", - "noncitizen\n", - "noncitizens\n", - "nonclassical\n", - "nonclassified\n", - "noncom\n", - "noncombat\n", - "noncombatant\n", - "noncombatants\n", - "noncombustible\n", - "noncommercial\n", - "noncommittal\n", - "noncommunicable\n", - "noncompliance\n", - "noncompliances\n", - "noncoms\n", - "nonconclusive\n", - "nonconductor\n", - "nonconductors\n", - "nonconflicting\n", - "nonconforming\n", - "nonconformist\n", - "nonconformists\n", - "nonconsecutive\n", - "nonconstructive\n", - "nonconsumable\n", - "noncontagious\n", - "noncontributing\n", - "noncontrollable\n", - "noncontroversial\n", - "noncorrosive\n", - "noncriminal\n", - "noncritical\n", - "noncumulative\n", - "noncurrent\n", - "nondairy\n", - "nondeductible\n", - "nondefense\n", - "nondeferrable\n", - "nondegradable\n", - "nondeliveries\n", - "nondelivery\n", - "nondemocratic\n", - "nondenominational\n", - "nondescript\n", - "nondestructive\n", - "nondiscrimination\n", - "nondiscriminations\n", - "nondiscriminatory\n", - "none\n", - "noneducational\n", - "nonego\n", - "nonegos\n", - "nonelastic\n", - "nonelect\n", - "nonelected\n", - "nonelective\n", - "nonelectric\n", - "nonelectronic\n", - "nonemotional\n", - "nonempty\n", - "nonenforceable\n", - "nonenforcement\n", - "nonenforcements\n", - "nonentities\n", - "nonentity\n", - "nonentries\n", - "nonentry\n", - "nonequal\n", - "nonequals\n", - "nones\n", - "nonessential\n", - "nonesuch\n", - "nonesuches\n", - "nonetheless\n", - "nonevent\n", - "nonevents\n", - "nonexchangeable\n", - "nonexistence\n", - "nonexistences\n", - "nonexistent\n", - "nonexplosive\n", - "nonfarm\n", - "nonfat\n", - "nonfatal\n", - "nonfattening\n", - "nonfictional\n", - "nonflammable\n", - "nonflowering\n", - "nonfluid\n", - "nonfluids\n", - "nonfocal\n", - "nonfood\n", - "nonfunctional\n", - "nongame\n", - "nongovernmental\n", - "nongraded\n", - "nongreen\n", - "nonguilt\n", - "nonguilts\n", - "nonhardy\n", - "nonhazardous\n", - "nonhereditary\n", - "nonhero\n", - "nonheroes\n", - "nonhuman\n", - "nonideal\n", - "nonindustrial\n", - "nonindustrialized\n", - "noninfectious\n", - "noninflationary\n", - "nonintegrated\n", - "nonintellectual\n", - "noninterference\n", - "nonintoxicating\n", - "noninvolvement\n", - "noninvolvements\n", - "nonionic\n", - "nonjuror\n", - "nonjurors\n", - "nonlegal\n", - "nonlethal\n", - "nonlife\n", - "nonliterary\n", - "nonlives\n", - "nonliving\n", - "nonlocal\n", - "nonlocals\n", - "nonmagnetic\n", - "nonmalignant\n", - "nonman\n", - "nonmedical\n", - "nonmember\n", - "nonmembers\n", - "nonmen\n", - "nonmetal\n", - "nonmetallic\n", - "nonmetals\n", - "nonmilitary\n", - "nonmodal\n", - "nonmoney\n", - "nonmoral\n", - "nonmusical\n", - "nonnarcotic\n", - "nonnative\n", - "nonnaval\n", - "nonnegotiable\n", - "nonobese\n", - "nonobjective\n", - "nonobservance\n", - "nonobservances\n", - "nonorthodox\n", - "nonowner\n", - "nonowners\n", - "nonpagan\n", - "nonpagans\n", - "nonpapal\n", - "nonpar\n", - "nonparallel\n", - "nonparametric\n", - "nonpareil\n", - "nonpareils\n", - "nonparticipant\n", - "nonparticipants\n", - "nonparticipating\n", - "nonpartisan\n", - "nonpartisans\n", - "nonparty\n", - "nonpaying\n", - "nonpayment\n", - "nonpayments\n", - "nonperformance\n", - "nonperformances\n", - "nonperishable\n", - "nonpermanent\n", - "nonperson\n", - "nonpersons\n", - "nonphysical\n", - "nonplus\n", - "nonplused\n", - "nonpluses\n", - "nonplusing\n", - "nonplussed\n", - "nonplusses\n", - "nonplussing\n", - "nonpoisonous\n", - "nonpolar\n", - "nonpolitical\n", - "nonpolluting\n", - "nonporous\n", - "nonpregnant\n", - "nonproductive\n", - "nonprofessional\n", - "nonprofit\n", - "nonproliferation\n", - "nonproliferations\n", - "nonpros\n", - "nonprossed\n", - "nonprosses\n", - "nonprossing\n", - "nonquota\n", - "nonracial\n", - "nonradioactive\n", - "nonrated\n", - "nonrealistic\n", - "nonrecoverable\n", - "nonrecurring\n", - "nonrefillable\n", - "nonrefundable\n", - "nonregistered\n", - "nonreligious\n", - "nonrenewable\n", - "nonrepresentative\n", - "nonresident\n", - "nonresidents\n", - "nonresponsive\n", - "nonrestricted\n", - "nonreusable\n", - "nonreversible\n", - "nonrigid\n", - "nonrival\n", - "nonrivals\n", - "nonroyal\n", - "nonrural\n", - "nonscheduled\n", - "nonscientific\n", - "nonscientist\n", - "nonscientists\n", - "nonsegregated\n", - "nonsense\n", - "nonsenses\n", - "nonsensical\n", - "nonsensically\n", - "nonsexist\n", - "nonsexual\n", - "nonsignificant\n", - "nonsked\n", - "nonskeds\n", - "nonskid\n", - "nonskier\n", - "nonskiers\n", - "nonslip\n", - "nonsmoker\n", - "nonsmokers\n", - "nonsmoking\n", - "nonsolar\n", - "nonsolid\n", - "nonsolids\n", - "nonspeaking\n", - "nonspecialist\n", - "nonspecialists\n", - "nonspecific\n", - "nonstaining\n", - "nonstandard\n", - "nonstick\n", - "nonstop\n", - "nonstrategic\n", - "nonstriker\n", - "nonstrikers\n", - "nonstriking\n", - "nonstudent\n", - "nonstudents\n", - "nonsubscriber\n", - "nonsuch\n", - "nonsuches\n", - "nonsugar\n", - "nonsugars\n", - "nonsuit\n", - "nonsuited\n", - "nonsuiting\n", - "nonsuits\n", - "nonsupport\n", - "nonsupports\n", - "nonsurgical\n", - "nonswimmer\n", - "nontax\n", - "nontaxable\n", - "nontaxes\n", - "nonteaching\n", - "nontechnical\n", - "nontidal\n", - "nontitle\n", - "nontoxic\n", - "nontraditional\n", - "nontransferable\n", - "nontropical\n", - "nontrump\n", - "nontruth\n", - "nontruths\n", - "nontypical\n", - "nonunion\n", - "nonunions\n", - "nonuple\n", - "nonuples\n", - "nonurban\n", - "nonuse\n", - "nonuser\n", - "nonusers\n", - "nonuses\n", - "nonusing\n", - "nonvenomous\n", - "nonverbal\n", - "nonviolence\n", - "nonviolences\n", - "nonviolent\n", - "nonviral\n", - "nonvocal\n", - "nonvoter\n", - "nonvoters\n", - "nonwhite\n", - "nonwhites\n", - "nonwoody\n", - "nonworker\n", - "nonworkers\n", - "nonwoven\n", - "nonzero\n", - "noo\n", - "noodle\n", - "noodled\n", - "noodles\n", - "noodling\n", - "nook\n", - "nookies\n", - "nooklike\n", - "nooks\n", - "nooky\n", - "noon\n", - "noonday\n", - "noondays\n", - "nooning\n", - "noonings\n", - "noons\n", - "noontide\n", - "noontides\n", - "noontime\n", - "noontimes\n", - "noose\n", - "noosed\n", - "nooser\n", - "noosers\n", - "nooses\n", - "noosing\n", - "nopal\n", - "nopals\n", - "nope\n", - "nor\n", - "noria\n", - "norias\n", - "norite\n", - "norites\n", - "noritic\n", - "norland\n", - "norlands\n", - "norm\n", - "normal\n", - "normalcies\n", - "normalcy\n", - "normalities\n", - "normality\n", - "normalization\n", - "normalizations\n", - "normalize\n", - "normalized\n", - "normalizes\n", - "normalizing\n", - "normally\n", - "normals\n", - "normed\n", - "normless\n", - "norms\n", - "north\n", - "northeast\n", - "northeasterly\n", - "northeastern\n", - "northeasts\n", - "norther\n", - "northerly\n", - "northern\n", - "northernmost\n", - "northerns\n", - "northers\n", - "northing\n", - "northings\n", - "norths\n", - "northward\n", - "northwards\n", - "northwest\n", - "northwesterly\n", - "northwestern\n", - "northwests\n", - "nos\n", - "nose\n", - "nosebag\n", - "nosebags\n", - "noseband\n", - "nosebands\n", - "nosebleed\n", - "nosebleeds\n", - "nosed\n", - "nosegay\n", - "nosegays\n", - "noseless\n", - "noselike\n", - "noses\n", - "nosey\n", - "nosh\n", - "noshed\n", - "nosher\n", - "noshers\n", - "noshes\n", - "noshing\n", - "nosier\n", - "nosiest\n", - "nosily\n", - "nosiness\n", - "nosinesses\n", - "nosing\n", - "nosings\n", - "nosologies\n", - "nosology\n", - "nostalgia\n", - "nostalgias\n", - "nostalgic\n", - "nostoc\n", - "nostocs\n", - "nostril\n", - "nostrils\n", - "nostrum\n", - "nostrums\n", - "nosy\n", - "not\n", - "nota\n", - "notabilities\n", - "notability\n", - "notable\n", - "notables\n", - "notably\n", - "notal\n", - "notarial\n", - "notaries\n", - "notarize\n", - "notarized\n", - "notarizes\n", - "notarizing\n", - "notary\n", - "notate\n", - "notated\n", - "notates\n", - "notating\n", - "notation\n", - "notations\n", - "notch\n", - "notched\n", - "notcher\n", - "notchers\n", - "notches\n", - "notching\n", - "note\n", - "notebook\n", - "notebooks\n", - "notecase\n", - "notecases\n", - "noted\n", - "notedly\n", - "noteless\n", - "noter\n", - "noters\n", - "notes\n", - "noteworthy\n", - "nothing\n", - "nothingness\n", - "nothingnesses\n", - "nothings\n", - "notice\n", - "noticeable\n", - "noticeably\n", - "noticed\n", - "notices\n", - "noticing\n", - "notification\n", - "notifications\n", - "notified\n", - "notifier\n", - "notifiers\n", - "notifies\n", - "notify\n", - "notifying\n", - "noting\n", - "notion\n", - "notional\n", - "notions\n", - "notorieties\n", - "notoriety\n", - "notorious\n", - "notoriously\n", - "notornis\n", - "notturni\n", - "notturno\n", - "notum\n", - "notwithstanding\n", - "nougat\n", - "nougats\n", - "nought\n", - "noughts\n", - "noumena\n", - "noumenal\n", - "noumenon\n", - "noun\n", - "nounal\n", - "nounally\n", - "nounless\n", - "nouns\n", - "nourish\n", - "nourished\n", - "nourishes\n", - "nourishing\n", - "nourishment\n", - "nourishments\n", - "nous\n", - "nouses\n", - "nova\n", - "novae\n", - "novalike\n", - "novas\n", - "novation\n", - "novations\n", - "novel\n", - "novelise\n", - "novelised\n", - "novelises\n", - "novelising\n", - "novelist\n", - "novelists\n", - "novelize\n", - "novelized\n", - "novelizes\n", - "novelizing\n", - "novella\n", - "novellas\n", - "novelle\n", - "novelly\n", - "novels\n", - "novelties\n", - "novelty\n", - "novena\n", - "novenae\n", - "novenas\n", - "novercal\n", - "novice\n", - "novices\n", - "now\n", - "nowadays\n", - "noway\n", - "noways\n", - "nowhere\n", - "nowheres\n", - "nowise\n", - "nows\n", - "nowt\n", - "nowts\n", - "noxious\n", - "noyade\n", - "noyades\n", - "nozzle\n", - "nozzles\n", - "nth\n", - "nu\n", - "nuance\n", - "nuanced\n", - "nuances\n", - "nub\n", - "nubbier\n", - "nubbiest\n", - "nubbin\n", - "nubbins\n", - "nubble\n", - "nubbles\n", - "nubblier\n", - "nubbliest\n", - "nubbly\n", - "nubby\n", - "nubia\n", - "nubias\n", - "nubile\n", - "nubilities\n", - "nubility\n", - "nubilose\n", - "nubilous\n", - "nubs\n", - "nucellar\n", - "nucelli\n", - "nucellus\n", - "nucha\n", - "nuchae\n", - "nuchal\n", - "nuchals\n", - "nucleal\n", - "nuclear\n", - "nuclease\n", - "nucleases\n", - "nucleate\n", - "nucleated\n", - "nucleates\n", - "nucleating\n", - "nuclei\n", - "nuclein\n", - "nucleins\n", - "nucleole\n", - "nucleoles\n", - "nucleoli\n", - "nucleon\n", - "nucleons\n", - "nucleus\n", - "nucleuses\n", - "nuclide\n", - "nuclides\n", - "nuclidic\n", - "nude\n", - "nudely\n", - "nudeness\n", - "nudenesses\n", - "nuder\n", - "nudes\n", - "nudest\n", - "nudge\n", - "nudged\n", - "nudger\n", - "nudgers\n", - "nudges\n", - "nudging\n", - "nudicaul\n", - "nudie\n", - "nudies\n", - "nudism\n", - "nudisms\n", - "nudist\n", - "nudists\n", - "nudities\n", - "nudity\n", - "nudnick\n", - "nudnicks\n", - "nudnik\n", - "nudniks\n", - "nugatory\n", - "nugget\n", - "nuggets\n", - "nuggety\n", - "nuisance\n", - "nuisances\n", - "nuke\n", - "nukes\n", - "null\n", - "nullah\n", - "nullahs\n", - "nulled\n", - "nullification\n", - "nullifications\n", - "nullified\n", - "nullifies\n", - "nullify\n", - "nullifying\n", - "nulling\n", - "nullities\n", - "nullity\n", - "nulls\n", - "numb\n", - "numbed\n", - "number\n", - "numbered\n", - "numberer\n", - "numberers\n", - "numbering\n", - "numberless\n", - "numbers\n", - "numbest\n", - "numbfish\n", - "numbfishes\n", - "numbing\n", - "numbles\n", - "numbly\n", - "numbness\n", - "numbnesses\n", - "numbs\n", - "numen\n", - "numeral\n", - "numerals\n", - "numerary\n", - "numerate\n", - "numerated\n", - "numerates\n", - "numerating\n", - "numerator\n", - "numerators\n", - "numeric\n", - "numerical\n", - "numerically\n", - "numerics\n", - "numerologies\n", - "numerologist\n", - "numerologists\n", - "numerology\n", - "numerous\n", - "numina\n", - "numinous\n", - "numinouses\n", - "numismatic\n", - "numismatics\n", - "numismatist\n", - "numismatists\n", - "nummary\n", - "nummular\n", - "numskull\n", - "numskulls\n", - "nun\n", - "nuncio\n", - "nuncios\n", - "nuncle\n", - "nuncles\n", - "nunlike\n", - "nunneries\n", - "nunnery\n", - "nunnish\n", - "nuns\n", - "nuptial\n", - "nuptials\n", - "nurl\n", - "nurled\n", - "nurling\n", - "nurls\n", - "nurse\n", - "nursed\n", - "nurseries\n", - "nursery\n", - "nurses\n", - "nursing\n", - "nursings\n", - "nursling\n", - "nurslings\n", - "nurture\n", - "nurtured\n", - "nurturer\n", - "nurturers\n", - "nurtures\n", - "nurturing\n", - "nus\n", - "nut\n", - "nutant\n", - "nutate\n", - "nutated\n", - "nutates\n", - "nutating\n", - "nutation\n", - "nutations\n", - "nutbrown\n", - "nutcracker\n", - "nutcrackers\n", - "nutgall\n", - "nutgalls\n", - "nutgrass\n", - "nutgrasses\n", - "nuthatch\n", - "nuthatches\n", - "nuthouse\n", - "nuthouses\n", - "nutlet\n", - "nutlets\n", - "nutlike\n", - "nutmeat\n", - "nutmeats\n", - "nutmeg\n", - "nutmegs\n", - "nutpick\n", - "nutpicks\n", - "nutria\n", - "nutrias\n", - "nutrient\n", - "nutrients\n", - "nutriment\n", - "nutriments\n", - "nutrition\n", - "nutritional\n", - "nutritions\n", - "nutritious\n", - "nutritive\n", - "nuts\n", - "nutsedge\n", - "nutsedges\n", - "nutshell\n", - "nutshells\n", - "nutted\n", - "nutter\n", - "nutters\n", - "nuttier\n", - "nuttiest\n", - "nuttily\n", - "nutting\n", - "nutty\n", - "nutwood\n", - "nutwoods\n", - "nuzzle\n", - "nuzzled\n", - "nuzzles\n", - "nuzzling\n", - "nyala\n", - "nyalas\n", - "nylghai\n", - "nylghais\n", - "nylghau\n", - "nylghaus\n", - "nylon\n", - "nylons\n", - "nymph\n", - "nympha\n", - "nymphae\n", - "nymphal\n", - "nymphean\n", - "nymphet\n", - "nymphets\n", - "nympho\n", - "nymphomania\n", - "nymphomaniac\n", - "nymphomanias\n", - "nymphos\n", - "nymphs\n", - "oaf\n", - "oafish\n", - "oafishly\n", - "oafs\n", - "oak\n", - "oaken\n", - "oaklike\n", - "oakmoss\n", - "oakmosses\n", - "oaks\n", - "oakum\n", - "oakums\n", - "oar\n", - "oared\n", - "oarfish\n", - "oarfishes\n", - "oaring\n", - "oarless\n", - "oarlike\n", - "oarlock\n", - "oarlocks\n", - "oars\n", - "oarsman\n", - "oarsmen\n", - "oases\n", - "oasis\n", - "oast\n", - "oasts\n", - "oat\n", - "oatcake\n", - "oatcakes\n", - "oaten\n", - "oater\n", - "oaters\n", - "oath\n", - "oaths\n", - "oatlike\n", - "oatmeal\n", - "oatmeals\n", - "oats\n", - "oaves\n", - "obduracies\n", - "obduracy\n", - "obdurate\n", - "obe\n", - "obeah\n", - "obeahism\n", - "obeahisms\n", - "obeahs\n", - "obedience\n", - "obediences\n", - "obedient\n", - "obediently\n", - "obeisance\n", - "obeisant\n", - "obeli\n", - "obelia\n", - "obelias\n", - "obelise\n", - "obelised\n", - "obelises\n", - "obelising\n", - "obelisk\n", - "obelisks\n", - "obelism\n", - "obelisms\n", - "obelize\n", - "obelized\n", - "obelizes\n", - "obelizing\n", - "obelus\n", - "obes\n", - "obese\n", - "obesely\n", - "obesities\n", - "obesity\n", - "obey\n", - "obeyable\n", - "obeyed\n", - "obeyer\n", - "obeyers\n", - "obeying\n", - "obeys\n", - "obfuscate\n", - "obfuscated\n", - "obfuscates\n", - "obfuscating\n", - "obfuscation\n", - "obfuscations\n", - "obi\n", - "obia\n", - "obias\n", - "obiism\n", - "obiisms\n", - "obis\n", - "obit\n", - "obits\n", - "obituaries\n", - "obituary\n", - "object\n", - "objected\n", - "objecting\n", - "objection\n", - "objectionable\n", - "objections\n", - "objective\n", - "objectively\n", - "objectiveness\n", - "objectivenesses\n", - "objectives\n", - "objectivities\n", - "objectivity\n", - "objector\n", - "objectors\n", - "objects\n", - "oblast\n", - "oblasti\n", - "oblasts\n", - "oblate\n", - "oblately\n", - "oblates\n", - "oblation\n", - "oblations\n", - "oblatory\n", - "obligate\n", - "obligated\n", - "obligates\n", - "obligati\n", - "obligating\n", - "obligation\n", - "obligations\n", - "obligato\n", - "obligatory\n", - "obligatos\n", - "oblige\n", - "obliged\n", - "obligee\n", - "obligees\n", - "obliger\n", - "obligers\n", - "obliges\n", - "obliging\n", - "obligingly\n", - "obligor\n", - "obligors\n", - "oblique\n", - "obliqued\n", - "obliquely\n", - "obliqueness\n", - "obliquenesses\n", - "obliques\n", - "obliquing\n", - "obliquities\n", - "obliquity\n", - "obliterate\n", - "obliterated\n", - "obliterates\n", - "obliterating\n", - "obliteration\n", - "obliterations\n", - "oblivion\n", - "oblivions\n", - "oblivious\n", - "obliviously\n", - "obliviousness\n", - "obliviousnesses\n", - "oblong\n", - "oblongly\n", - "oblongs\n", - "obloquies\n", - "obloquy\n", - "obnoxious\n", - "obnoxiously\n", - "obnoxiousness\n", - "obnoxiousnesses\n", - "oboe\n", - "oboes\n", - "oboist\n", - "oboists\n", - "obol\n", - "obole\n", - "oboles\n", - "oboli\n", - "obols\n", - "obolus\n", - "obovate\n", - "obovoid\n", - "obscene\n", - "obscenely\n", - "obscener\n", - "obscenest\n", - "obscenities\n", - "obscenity\n", - "obscure\n", - "obscured\n", - "obscurely\n", - "obscurer\n", - "obscures\n", - "obscurest\n", - "obscuring\n", - "obscurities\n", - "obscurity\n", - "obsequies\n", - "obsequious\n", - "obsequiously\n", - "obsequiousness\n", - "obsequiousnesses\n", - "obsequy\n", - "observance\n", - "observances\n", - "observant\n", - "observation\n", - "observations\n", - "observatories\n", - "observatory\n", - "observe\n", - "observed\n", - "observer\n", - "observers\n", - "observes\n", - "observing\n", - "obsess\n", - "obsessed\n", - "obsesses\n", - "obsessing\n", - "obsession\n", - "obsessions\n", - "obsessive\n", - "obsessively\n", - "obsessor\n", - "obsessors\n", - "obsidian\n", - "obsidians\n", - "obsolescence\n", - "obsolescences\n", - "obsolescent\n", - "obsolete\n", - "obsoleted\n", - "obsoletes\n", - "obsoleting\n", - "obstacle\n", - "obstacles\n", - "obstetrical\n", - "obstetrician\n", - "obstetricians\n", - "obstetrics\n", - "obstinacies\n", - "obstinacy\n", - "obstinate\n", - "obstinately\n", - "obstreperous\n", - "obstreperousness\n", - "obstreperousnesses\n", - "obstruct\n", - "obstructed\n", - "obstructing\n", - "obstruction\n", - "obstructions\n", - "obstructive\n", - "obstructor\n", - "obstructors\n", - "obstructs\n", - "obtain\n", - "obtainable\n", - "obtained\n", - "obtainer\n", - "obtainers\n", - "obtaining\n", - "obtains\n", - "obtect\n", - "obtected\n", - "obtest\n", - "obtested\n", - "obtesting\n", - "obtests\n", - "obtrude\n", - "obtruded\n", - "obtruder\n", - "obtruders\n", - "obtrudes\n", - "obtruding\n", - "obtrusion\n", - "obtrusions\n", - "obtrusive\n", - "obtrusively\n", - "obtrusiveness\n", - "obtrusivenesses\n", - "obtund\n", - "obtunded\n", - "obtunding\n", - "obtunds\n", - "obturate\n", - "obturated\n", - "obturates\n", - "obturating\n", - "obtuse\n", - "obtusely\n", - "obtuser\n", - "obtusest\n", - "obverse\n", - "obverses\n", - "obvert\n", - "obverted\n", - "obverting\n", - "obverts\n", - "obviable\n", - "obviate\n", - "obviated\n", - "obviates\n", - "obviating\n", - "obviation\n", - "obviations\n", - "obviator\n", - "obviators\n", - "obvious\n", - "obviously\n", - "obviousness\n", - "obviousnesses\n", - "obvolute\n", - "oca\n", - "ocarina\n", - "ocarinas\n", - "ocas\n", - "occasion\n", - "occasional\n", - "occasionally\n", - "occasioned\n", - "occasioning\n", - "occasions\n", - "occident\n", - "occidental\n", - "occidents\n", - "occipita\n", - "occiput\n", - "occiputs\n", - "occlude\n", - "occluded\n", - "occludes\n", - "occluding\n", - "occlusal\n", - "occult\n", - "occulted\n", - "occulter\n", - "occulters\n", - "occulting\n", - "occultly\n", - "occults\n", - "occupancies\n", - "occupancy\n", - "occupant\n", - "occupants\n", - "occupation\n", - "occupational\n", - "occupationally\n", - "occupations\n", - "occupied\n", - "occupier\n", - "occupiers\n", - "occupies\n", - "occupy\n", - "occupying\n", - "occur\n", - "occurence\n", - "occurences\n", - "occurred\n", - "occurrence\n", - "occurrences\n", - "occurring\n", - "occurs\n", - "ocean\n", - "oceanfront\n", - "oceanfronts\n", - "oceangoing\n", - "oceanic\n", - "oceanographer\n", - "oceanographers\n", - "oceanographic\n", - "oceanographies\n", - "oceanography\n", - "oceans\n", - "ocellar\n", - "ocellate\n", - "ocelli\n", - "ocellus\n", - "oceloid\n", - "ocelot\n", - "ocelots\n", - "ocher\n", - "ochered\n", - "ochering\n", - "ocherous\n", - "ochers\n", - "ochery\n", - "ochone\n", - "ochre\n", - "ochrea\n", - "ochreae\n", - "ochred\n", - "ochreous\n", - "ochres\n", - "ochring\n", - "ochroid\n", - "ochrous\n", - "ochry\n", - "ocotillo\n", - "ocotillos\n", - "ocrea\n", - "ocreae\n", - "ocreate\n", - "octad\n", - "octadic\n", - "octads\n", - "octagon\n", - "octagonal\n", - "octagons\n", - "octal\n", - "octane\n", - "octanes\n", - "octangle\n", - "octangles\n", - "octant\n", - "octantal\n", - "octants\n", - "octarchies\n", - "octarchy\n", - "octaval\n", - "octave\n", - "octaves\n", - "octavo\n", - "octavos\n", - "octet\n", - "octets\n", - "octette\n", - "octettes\n", - "octonaries\n", - "octonary\n", - "octopi\n", - "octopod\n", - "octopodes\n", - "octopods\n", - "octopus\n", - "octopuses\n", - "octoroon\n", - "octoroons\n", - "octroi\n", - "octrois\n", - "octuple\n", - "octupled\n", - "octuples\n", - "octuplet\n", - "octuplets\n", - "octuplex\n", - "octupling\n", - "octuply\n", - "octyl\n", - "octyls\n", - "ocular\n", - "ocularly\n", - "oculars\n", - "oculist\n", - "oculists\n", - "od\n", - "odalisk\n", - "odalisks\n", - "odd\n", - "oddball\n", - "oddballs\n", - "odder\n", - "oddest\n", - "oddish\n", - "oddities\n", - "oddity\n", - "oddly\n", - "oddment\n", - "oddments\n", - "oddness\n", - "oddnesses\n", - "odds\n", - "ode\n", - "odea\n", - "odeon\n", - "odeons\n", - "odes\n", - "odeum\n", - "odic\n", - "odious\n", - "odiously\n", - "odiousness\n", - "odiousnesses\n", - "odium\n", - "odiums\n", - "odograph\n", - "odographs\n", - "odometer\n", - "odometers\n", - "odometries\n", - "odometry\n", - "odonate\n", - "odonates\n", - "odontoid\n", - "odontoids\n", - "odor\n", - "odorant\n", - "odorants\n", - "odored\n", - "odorful\n", - "odorize\n", - "odorized\n", - "odorizes\n", - "odorizing\n", - "odorless\n", - "odorous\n", - "odors\n", - "odour\n", - "odourful\n", - "odours\n", - "ods\n", - "odyl\n", - "odyle\n", - "odyles\n", - "odyls\n", - "odyssey\n", - "odysseys\n", - "oe\n", - "oecologies\n", - "oecology\n", - "oedema\n", - "oedemas\n", - "oedemata\n", - "oedipal\n", - "oedipean\n", - "oeillade\n", - "oeillades\n", - "oenologies\n", - "oenology\n", - "oenomel\n", - "oenomels\n", - "oersted\n", - "oersteds\n", - "oes\n", - "oestrin\n", - "oestrins\n", - "oestriol\n", - "oestriols\n", - "oestrone\n", - "oestrones\n", - "oestrous\n", - "oestrum\n", - "oestrums\n", - "oestrus\n", - "oestruses\n", - "oeuvre\n", - "oeuvres\n", - "of\n", - "ofay\n", - "ofays\n", - "off\n", - "offal\n", - "offals\n", - "offbeat\n", - "offbeats\n", - "offcast\n", - "offcasts\n", - "offed\n", - "offence\n", - "offences\n", - "offend\n", - "offended\n", - "offender\n", - "offenders\n", - "offending\n", - "offends\n", - "offense\n", - "offenses\n", - "offensive\n", - "offensively\n", - "offensiveness\n", - "offensivenesses\n", - "offensives\n", - "offer\n", - "offered\n", - "offerer\n", - "offerers\n", - "offering\n", - "offerings\n", - "offeror\n", - "offerors\n", - "offers\n", - "offertories\n", - "offertory\n", - "offhand\n", - "office\n", - "officeholder\n", - "officeholders\n", - "officer\n", - "officered\n", - "officering\n", - "officers\n", - "offices\n", - "official\n", - "officialdom\n", - "officialdoms\n", - "officially\n", - "officials\n", - "officiate\n", - "officiated\n", - "officiates\n", - "officiating\n", - "officious\n", - "officiously\n", - "officiousness\n", - "officiousnesses\n", - "offing\n", - "offings\n", - "offish\n", - "offishly\n", - "offload\n", - "offloaded\n", - "offloading\n", - "offloads\n", - "offprint\n", - "offprinted\n", - "offprinting\n", - "offprints\n", - "offs\n", - "offset\n", - "offsets\n", - "offsetting\n", - "offshoot\n", - "offshoots\n", - "offshore\n", - "offside\n", - "offspring\n", - "offstage\n", - "oft\n", - "often\n", - "oftener\n", - "oftenest\n", - "oftentimes\n", - "ofter\n", - "oftest\n", - "ofttimes\n", - "ogam\n", - "ogams\n", - "ogdoad\n", - "ogdoads\n", - "ogee\n", - "ogees\n", - "ogham\n", - "oghamic\n", - "oghamist\n", - "oghamists\n", - "oghams\n", - "ogival\n", - "ogive\n", - "ogives\n", - "ogle\n", - "ogled\n", - "ogler\n", - "oglers\n", - "ogles\n", - "ogling\n", - "ogre\n", - "ogreish\n", - "ogreism\n", - "ogreisms\n", - "ogres\n", - "ogress\n", - "ogresses\n", - "ogrish\n", - "ogrishly\n", - "ogrism\n", - "ogrisms\n", - "oh\n", - "ohed\n", - "ohia\n", - "ohias\n", - "ohing\n", - "ohm\n", - "ohmage\n", - "ohmages\n", - "ohmic\n", - "ohmmeter\n", - "ohmmeters\n", - "ohms\n", - "oho\n", - "ohs\n", - "oidia\n", - "oidium\n", - "oil\n", - "oilbird\n", - "oilbirds\n", - "oilcamp\n", - "oilcamps\n", - "oilcan\n", - "oilcans\n", - "oilcloth\n", - "oilcloths\n", - "oilcup\n", - "oilcups\n", - "oiled\n", - "oiler\n", - "oilers\n", - "oilhole\n", - "oilholes\n", - "oilier\n", - "oiliest\n", - "oilily\n", - "oiliness\n", - "oilinesses\n", - "oiling\n", - "oilman\n", - "oilmen\n", - "oilpaper\n", - "oilpapers\n", - "oilproof\n", - "oils\n", - "oilseed\n", - "oilseeds\n", - "oilskin\n", - "oilskins\n", - "oilstone\n", - "oilstones\n", - "oiltight\n", - "oilway\n", - "oilways\n", - "oily\n", - "oink\n", - "oinked\n", - "oinking\n", - "oinks\n", - "oinologies\n", - "oinology\n", - "oinomel\n", - "oinomels\n", - "ointment\n", - "ointments\n", - "oiticica\n", - "oiticicas\n", - "oka\n", - "okapi\n", - "okapis\n", - "okas\n", - "okay\n", - "okayed\n", - "okaying\n", - "okays\n", - "oke\n", - "okeh\n", - "okehs\n", - "okes\n", - "okeydoke\n", - "okra\n", - "okras\n", - "old\n", - "olden\n", - "older\n", - "oldest\n", - "oldie\n", - "oldies\n", - "oldish\n", - "oldness\n", - "oldnesses\n", - "olds\n", - "oldster\n", - "oldsters\n", - "oldstyle\n", - "oldstyles\n", - "oldwife\n", - "oldwives\n", - "ole\n", - "olea\n", - "oleander\n", - "oleanders\n", - "oleaster\n", - "oleasters\n", - "oleate\n", - "oleates\n", - "olefin\n", - "olefine\n", - "olefines\n", - "olefinic\n", - "olefins\n", - "oleic\n", - "olein\n", - "oleine\n", - "oleines\n", - "oleins\n", - "oleo\n", - "oleomargarine\n", - "oleomargarines\n", - "oleos\n", - "oles\n", - "oleum\n", - "oleums\n", - "olfactory\n", - "olibanum\n", - "olibanums\n", - "oligarch\n", - "oligarchic\n", - "oligarchical\n", - "oligarchies\n", - "oligarchs\n", - "oligarchy\n", - "oligomer\n", - "oligomers\n", - "olio\n", - "olios\n", - "olivary\n", - "olive\n", - "olives\n", - "olivine\n", - "olivines\n", - "olivinic\n", - "olla\n", - "ollas\n", - "ologies\n", - "ologist\n", - "ologists\n", - "ology\n", - "olympiad\n", - "olympiads\n", - "om\n", - "omasa\n", - "omasum\n", - "omber\n", - "ombers\n", - "ombre\n", - "ombres\n", - "ombudsman\n", - "ombudsmen\n", - "omega\n", - "omegas\n", - "omelet\n", - "omelets\n", - "omelette\n", - "omelettes\n", - "omen\n", - "omened\n", - "omening\n", - "omens\n", - "omenta\n", - "omental\n", - "omentum\n", - "omentums\n", - "omer\n", - "omers\n", - "omicron\n", - "omicrons\n", - "omikron\n", - "omikrons\n", - "ominous\n", - "ominously\n", - "ominousness\n", - "ominousnesses\n", - "omission\n", - "omissions\n", - "omissive\n", - "omit\n", - "omits\n", - "omitted\n", - "omitting\n", - "omniarch\n", - "omniarchs\n", - "omnibus\n", - "omnibuses\n", - "omnific\n", - "omniform\n", - "omnimode\n", - "omnipotence\n", - "omnipotences\n", - "omnipotent\n", - "omnipotently\n", - "omnipresence\n", - "omnipresences\n", - "omnipresent\n", - "omniscience\n", - "omnisciences\n", - "omniscient\n", - "omnisciently\n", - "omnivora\n", - "omnivore\n", - "omnivores\n", - "omnivorous\n", - "omnivorously\n", - "omnivorousness\n", - "omnivorousnesses\n", - "omophagies\n", - "omophagy\n", - "omphali\n", - "omphalos\n", - "oms\n", - "on\n", - "onager\n", - "onagers\n", - "onagri\n", - "onanism\n", - "onanisms\n", - "onanist\n", - "onanists\n", - "once\n", - "onces\n", - "oncidium\n", - "oncidiums\n", - "oncologic\n", - "oncologies\n", - "oncologist\n", - "oncologists\n", - "oncology\n", - "oncoming\n", - "oncomings\n", - "ondogram\n", - "ondograms\n", - "one\n", - "onefold\n", - "oneiric\n", - "oneness\n", - "onenesses\n", - "onerier\n", - "oneriest\n", - "onerous\n", - "onery\n", - "ones\n", - "oneself\n", - "onetime\n", - "ongoing\n", - "onion\n", - "onions\n", - "onium\n", - "onlooker\n", - "onlookers\n", - "only\n", - "onomatopoeia\n", - "onrush\n", - "onrushes\n", - "ons\n", - "onset\n", - "onsets\n", - "onshore\n", - "onside\n", - "onslaught\n", - "onslaughts\n", - "onstage\n", - "ontic\n", - "onto\n", - "ontogenies\n", - "ontogeny\n", - "ontologies\n", - "ontology\n", - "onus\n", - "onuses\n", - "onward\n", - "onwards\n", - "onyx\n", - "onyxes\n", - "oocyst\n", - "oocysts\n", - "oocyte\n", - "oocytes\n", - "oodles\n", - "oodlins\n", - "oogamete\n", - "oogametes\n", - "oogamies\n", - "oogamous\n", - "oogamy\n", - "oogenies\n", - "oogeny\n", - "oogonia\n", - "oogonial\n", - "oogonium\n", - "oogoniums\n", - "ooh\n", - "oohed\n", - "oohing\n", - "oohs\n", - "oolachan\n", - "oolachans\n", - "oolite\n", - "oolites\n", - "oolith\n", - "ooliths\n", - "oolitic\n", - "oologic\n", - "oologies\n", - "oologist\n", - "oologists\n", - "oology\n", - "oolong\n", - "oolongs\n", - "oomiac\n", - "oomiack\n", - "oomiacks\n", - "oomiacs\n", - "oomiak\n", - "oomiaks\n", - "oomph\n", - "oomphs\n", - "oophorectomy\n", - "oophyte\n", - "oophytes\n", - "oophytic\n", - "oops\n", - "oorali\n", - "ooralis\n", - "oorie\n", - "oosperm\n", - "oosperms\n", - "oosphere\n", - "oospheres\n", - "oospore\n", - "oospores\n", - "oosporic\n", - "oot\n", - "ootheca\n", - "oothecae\n", - "oothecal\n", - "ootid\n", - "ootids\n", - "oots\n", - "ooze\n", - "oozed\n", - "oozes\n", - "oozier\n", - "ooziest\n", - "oozily\n", - "ooziness\n", - "oozinesses\n", - "oozing\n", - "oozy\n", - "op\n", - "opacified\n", - "opacifies\n", - "opacify\n", - "opacifying\n", - "opacities\n", - "opacity\n", - "opah\n", - "opahs\n", - "opal\n", - "opalesce\n", - "opalesced\n", - "opalesces\n", - "opalescing\n", - "opaline\n", - "opalines\n", - "opals\n", - "opaque\n", - "opaqued\n", - "opaquely\n", - "opaqueness\n", - "opaquenesses\n", - "opaquer\n", - "opaques\n", - "opaquest\n", - "opaquing\n", - "ope\n", - "oped\n", - "open\n", - "openable\n", - "opened\n", - "opener\n", - "openers\n", - "openest\n", - "openhanded\n", - "opening\n", - "openings\n", - "openly\n", - "openness\n", - "opennesses\n", - "opens\n", - "openwork\n", - "openworks\n", - "opera\n", - "operable\n", - "operably\n", - "operand\n", - "operands\n", - "operant\n", - "operants\n", - "operas\n", - "operate\n", - "operated\n", - "operates\n", - "operatic\n", - "operatics\n", - "operating\n", - "operation\n", - "operational\n", - "operationally\n", - "operations\n", - "operative\n", - "operator\n", - "operators\n", - "opercele\n", - "operceles\n", - "opercula\n", - "opercule\n", - "opercules\n", - "operetta\n", - "operettas\n", - "operon\n", - "operons\n", - "operose\n", - "opes\n", - "ophidian\n", - "ophidians\n", - "ophite\n", - "ophites\n", - "ophitic\n", - "ophthalmologies\n", - "ophthalmologist\n", - "ophthalmologists\n", - "ophthalmology\n", - "opiate\n", - "opiated\n", - "opiates\n", - "opiating\n", - "opine\n", - "opined\n", - "opines\n", - "oping\n", - "opining\n", - "opinion\n", - "opinionated\n", - "opinions\n", - "opium\n", - "opiumism\n", - "opiumisms\n", - "opiums\n", - "opossum\n", - "opossums\n", - "oppidan\n", - "oppidans\n", - "oppilant\n", - "oppilate\n", - "oppilated\n", - "oppilates\n", - "oppilating\n", - "opponent\n", - "opponents\n", - "opportune\n", - "opportunely\n", - "opportunism\n", - "opportunisms\n", - "opportunist\n", - "opportunistic\n", - "opportunists\n", - "opportunities\n", - "opportunity\n", - "oppose\n", - "opposed\n", - "opposer\n", - "opposers\n", - "opposes\n", - "opposing\n", - "opposite\n", - "oppositely\n", - "oppositeness\n", - "oppositenesses\n", - "opposites\n", - "opposition\n", - "oppositions\n", - "oppress\n", - "oppressed\n", - "oppresses\n", - "oppressing\n", - "oppression\n", - "oppressions\n", - "oppressive\n", - "oppressively\n", - "oppressor\n", - "oppressors\n", - "opprobrious\n", - "opprobriously\n", - "opprobrium\n", - "opprobriums\n", - "oppugn\n", - "oppugned\n", - "oppugner\n", - "oppugners\n", - "oppugning\n", - "oppugns\n", - "ops\n", - "opsin\n", - "opsins\n", - "opsonic\n", - "opsonified\n", - "opsonifies\n", - "opsonify\n", - "opsonifying\n", - "opsonin\n", - "opsonins\n", - "opsonize\n", - "opsonized\n", - "opsonizes\n", - "opsonizing\n", - "opt\n", - "optative\n", - "optatives\n", - "opted\n", - "optic\n", - "optical\n", - "optician\n", - "opticians\n", - "opticist\n", - "opticists\n", - "optics\n", - "optima\n", - "optimal\n", - "optimally\n", - "optime\n", - "optimes\n", - "optimise\n", - "optimised\n", - "optimises\n", - "optimising\n", - "optimism\n", - "optimisms\n", - "optimist\n", - "optimistic\n", - "optimistically\n", - "optimists\n", - "optimize\n", - "optimized\n", - "optimizes\n", - "optimizing\n", - "optimum\n", - "optimums\n", - "opting\n", - "option\n", - "optional\n", - "optionally\n", - "optionals\n", - "optioned\n", - "optionee\n", - "optionees\n", - "optioning\n", - "options\n", - "optometries\n", - "optometrist\n", - "optometry\n", - "opts\n", - "opulence\n", - "opulences\n", - "opulencies\n", - "opulency\n", - "opulent\n", - "opuntia\n", - "opuntias\n", - "opus\n", - "opuscula\n", - "opuscule\n", - "opuscules\n", - "opuses\n", - "oquassa\n", - "oquassas\n", - "or\n", - "ora\n", - "orach\n", - "orache\n", - "oraches\n", - "oracle\n", - "oracles\n", - "oracular\n", - "oral\n", - "oralities\n", - "orality\n", - "orally\n", - "orals\n", - "orang\n", - "orange\n", - "orangeade\n", - "orangeades\n", - "orangeries\n", - "orangery\n", - "oranges\n", - "orangey\n", - "orangier\n", - "orangiest\n", - "orangish\n", - "orangoutan\n", - "orangoutans\n", - "orangs\n", - "orangutan\n", - "orangutang\n", - "orangutangs\n", - "orangutans\n", - "orangy\n", - "orate\n", - "orated\n", - "orates\n", - "orating\n", - "oration\n", - "orations\n", - "orator\n", - "oratorical\n", - "oratories\n", - "oratorio\n", - "oratorios\n", - "orators\n", - "oratory\n", - "oratress\n", - "oratresses\n", - "oratrices\n", - "oratrix\n", - "orb\n", - "orbed\n", - "orbicular\n", - "orbing\n", - "orbit\n", - "orbital\n", - "orbitals\n", - "orbited\n", - "orbiter\n", - "orbiters\n", - "orbiting\n", - "orbits\n", - "orbs\n", - "orc\n", - "orca\n", - "orcas\n", - "orcein\n", - "orceins\n", - "orchard\n", - "orchardist\n", - "orchardists\n", - "orchards\n", - "orchestra\n", - "orchestral\n", - "orchestras\n", - "orchestrate\n", - "orchestrated\n", - "orchestrates\n", - "orchestrating\n", - "orchestration\n", - "orchestrations\n", - "orchid\n", - "orchids\n", - "orchiectomy\n", - "orchil\n", - "orchils\n", - "orchis\n", - "orchises\n", - "orchitic\n", - "orchitis\n", - "orchitises\n", - "orcin\n", - "orcinol\n", - "orcinols\n", - "orcins\n", - "orcs\n", - "ordain\n", - "ordained\n", - "ordainer\n", - "ordainers\n", - "ordaining\n", - "ordains\n", - "ordeal\n", - "ordeals\n", - "order\n", - "ordered\n", - "orderer\n", - "orderers\n", - "ordering\n", - "orderlies\n", - "orderliness\n", - "orderlinesses\n", - "orderly\n", - "orders\n", - "ordinal\n", - "ordinals\n", - "ordinance\n", - "ordinances\n", - "ordinand\n", - "ordinands\n", - "ordinarier\n", - "ordinaries\n", - "ordinariest\n", - "ordinarily\n", - "ordinary\n", - "ordinate\n", - "ordinates\n", - "ordination\n", - "ordinations\n", - "ordines\n", - "ordnance\n", - "ordnances\n", - "ordo\n", - "ordos\n", - "ordure\n", - "ordures\n", - "ore\n", - "oread\n", - "oreads\n", - "orectic\n", - "orective\n", - "oregano\n", - "oreganos\n", - "oreide\n", - "oreides\n", - "ores\n", - "orfray\n", - "orfrays\n", - "organ\n", - "organa\n", - "organdie\n", - "organdies\n", - "organdy\n", - "organic\n", - "organically\n", - "organics\n", - "organise\n", - "organised\n", - "organises\n", - "organising\n", - "organism\n", - "organisms\n", - "organist\n", - "organists\n", - "organization\n", - "organizational\n", - "organizationally\n", - "organizations\n", - "organize\n", - "organized\n", - "organizer\n", - "organizers\n", - "organizes\n", - "organizing\n", - "organon\n", - "organons\n", - "organs\n", - "organum\n", - "organums\n", - "organza\n", - "organzas\n", - "orgasm\n", - "orgasmic\n", - "orgasms\n", - "orgastic\n", - "orgeat\n", - "orgeats\n", - "orgiac\n", - "orgic\n", - "orgies\n", - "orgulous\n", - "orgy\n", - "oribatid\n", - "oribatids\n", - "oribi\n", - "oribis\n", - "oriel\n", - "oriels\n", - "orient\n", - "oriental\n", - "orientals\n", - "orientation\n", - "orientations\n", - "oriented\n", - "orienting\n", - "orients\n", - "orifice\n", - "orifices\n", - "origami\n", - "origamis\n", - "origan\n", - "origans\n", - "origanum\n", - "origanums\n", - "origin\n", - "original\n", - "originalities\n", - "originality\n", - "originally\n", - "originals\n", - "originate\n", - "originated\n", - "originates\n", - "originating\n", - "originator\n", - "originators\n", - "origins\n", - "orinasal\n", - "orinasals\n", - "oriole\n", - "orioles\n", - "orison\n", - "orisons\n", - "orle\n", - "orles\n", - "orlop\n", - "orlops\n", - "ormer\n", - "ormers\n", - "ormolu\n", - "ormolus\n", - "ornament\n", - "ornamental\n", - "ornamentation\n", - "ornamentations\n", - "ornamented\n", - "ornamenting\n", - "ornaments\n", - "ornate\n", - "ornately\n", - "ornateness\n", - "ornatenesses\n", - "ornerier\n", - "orneriest\n", - "ornery\n", - "ornis\n", - "ornithes\n", - "ornithic\n", - "ornithological\n", - "ornithologist\n", - "ornithologists\n", - "ornithology\n", - "orogenic\n", - "orogenies\n", - "orogeny\n", - "oroide\n", - "oroides\n", - "orologies\n", - "orology\n", - "orometer\n", - "orometers\n", - "orotund\n", - "orphan\n", - "orphanage\n", - "orphanages\n", - "orphaned\n", - "orphaning\n", - "orphans\n", - "orphic\n", - "orphical\n", - "orphrey\n", - "orphreys\n", - "orpiment\n", - "orpiments\n", - "orpin\n", - "orpine\n", - "orpines\n", - "orpins\n", - "orra\n", - "orreries\n", - "orrery\n", - "orrice\n", - "orrices\n", - "orris\n", - "orrises\n", - "ors\n", - "ort\n", - "orthicon\n", - "orthicons\n", - "ortho\n", - "orthodontia\n", - "orthodontics\n", - "orthodontist\n", - "orthodontists\n", - "orthodox\n", - "orthodoxes\n", - "orthodoxies\n", - "orthodoxy\n", - "orthoepies\n", - "orthoepy\n", - "orthogonal\n", - "orthographic\n", - "orthographies\n", - "orthography\n", - "orthopedic\n", - "orthopedics\n", - "orthopedist\n", - "orthopedists\n", - "orthotic\n", - "ortolan\n", - "ortolans\n", - "orts\n", - "oryx\n", - "oryxes\n", - "os\n", - "osar\n", - "oscillate\n", - "oscillated\n", - "oscillates\n", - "oscillating\n", - "oscillation\n", - "oscillations\n", - "oscine\n", - "oscines\n", - "oscinine\n", - "oscitant\n", - "oscula\n", - "osculant\n", - "oscular\n", - "osculate\n", - "osculated\n", - "osculates\n", - "osculating\n", - "oscule\n", - "oscules\n", - "osculum\n", - "ose\n", - "oses\n", - "osier\n", - "osiers\n", - "osmatic\n", - "osmic\n", - "osmious\n", - "osmium\n", - "osmiums\n", - "osmol\n", - "osmolal\n", - "osmolar\n", - "osmols\n", - "osmose\n", - "osmosed\n", - "osmoses\n", - "osmosing\n", - "osmosis\n", - "osmotic\n", - "osmous\n", - "osmund\n", - "osmunda\n", - "osmundas\n", - "osmunds\n", - "osnaburg\n", - "osnaburgs\n", - "osprey\n", - "ospreys\n", - "ossa\n", - "ossein\n", - "osseins\n", - "osseous\n", - "ossia\n", - "ossicle\n", - "ossicles\n", - "ossific\n", - "ossified\n", - "ossifier\n", - "ossifiers\n", - "ossifies\n", - "ossify\n", - "ossifying\n", - "ossuaries\n", - "ossuary\n", - "osteal\n", - "osteitic\n", - "osteitides\n", - "osteitis\n", - "ostensible\n", - "ostensibly\n", - "ostentation\n", - "ostentations\n", - "ostentatious\n", - "ostentatiously\n", - "osteoblast\n", - "osteoblasts\n", - "osteoid\n", - "osteoids\n", - "osteoma\n", - "osteomas\n", - "osteomata\n", - "osteopath\n", - "osteopathic\n", - "osteopathies\n", - "osteopaths\n", - "osteopathy\n", - "osteopenia\n", - "ostia\n", - "ostiaries\n", - "ostiary\n", - "ostinato\n", - "ostinatos\n", - "ostiolar\n", - "ostiole\n", - "ostioles\n", - "ostium\n", - "ostler\n", - "ostlers\n", - "ostmark\n", - "ostmarks\n", - "ostomies\n", - "ostomy\n", - "ostoses\n", - "ostosis\n", - "ostosises\n", - "ostracism\n", - "ostracisms\n", - "ostracize\n", - "ostracized\n", - "ostracizes\n", - "ostracizing\n", - "ostracod\n", - "ostracods\n", - "ostrich\n", - "ostriches\n", - "ostsis\n", - "ostsises\n", - "otalgia\n", - "otalgias\n", - "otalgic\n", - "otalgies\n", - "otalgy\n", - "other\n", - "others\n", - "otherwise\n", - "otic\n", - "otiose\n", - "otiosely\n", - "otiosities\n", - "otiosity\n", - "otitic\n", - "otitides\n", - "otitis\n", - "otocyst\n", - "otocysts\n", - "otolith\n", - "otoliths\n", - "otologies\n", - "otology\n", - "otoscope\n", - "otoscopes\n", - "otoscopies\n", - "otoscopy\n", - "ototoxicities\n", - "ototoxicity\n", - "ottar\n", - "ottars\n", - "ottava\n", - "ottavas\n", - "otter\n", - "otters\n", - "otto\n", - "ottoman\n", - "ottomans\n", - "ottos\n", - "ouabain\n", - "ouabains\n", - "ouch\n", - "ouches\n", - "oud\n", - "ouds\n", - "ought\n", - "oughted\n", - "oughting\n", - "oughts\n", - "ouistiti\n", - "ouistitis\n", - "ounce\n", - "ounces\n", - "ouph\n", - "ouphe\n", - "ouphes\n", - "ouphs\n", - "our\n", - "ourang\n", - "ourangs\n", - "ourari\n", - "ouraris\n", - "ourebi\n", - "ourebis\n", - "ourie\n", - "ours\n", - "ourself\n", - "ourselves\n", - "ousel\n", - "ousels\n", - "oust\n", - "ousted\n", - "ouster\n", - "ousters\n", - "ousting\n", - "ousts\n", - "out\n", - "outact\n", - "outacted\n", - "outacting\n", - "outacts\n", - "outadd\n", - "outadded\n", - "outadding\n", - "outadds\n", - "outage\n", - "outages\n", - "outargue\n", - "outargued\n", - "outargues\n", - "outarguing\n", - "outask\n", - "outasked\n", - "outasking\n", - "outasks\n", - "outate\n", - "outback\n", - "outbacks\n", - "outbake\n", - "outbaked\n", - "outbakes\n", - "outbaking\n", - "outbark\n", - "outbarked\n", - "outbarking\n", - "outbarks\n", - "outbawl\n", - "outbawled\n", - "outbawling\n", - "outbawls\n", - "outbeam\n", - "outbeamed\n", - "outbeaming\n", - "outbeams\n", - "outbeg\n", - "outbegged\n", - "outbegging\n", - "outbegs\n", - "outbid\n", - "outbidden\n", - "outbidding\n", - "outbids\n", - "outblaze\n", - "outblazed\n", - "outblazes\n", - "outblazing\n", - "outbleat\n", - "outbleated\n", - "outbleating\n", - "outbleats\n", - "outbless\n", - "outblessed\n", - "outblesses\n", - "outblessing\n", - "outbloom\n", - "outbloomed\n", - "outblooming\n", - "outblooms\n", - "outbluff\n", - "outbluffed\n", - "outbluffing\n", - "outbluffs\n", - "outblush\n", - "outblushed\n", - "outblushes\n", - "outblushing\n", - "outboard\n", - "outboards\n", - "outboast\n", - "outboasted\n", - "outboasting\n", - "outboasts\n", - "outbound\n", - "outbox\n", - "outboxed\n", - "outboxes\n", - "outboxing\n", - "outbrag\n", - "outbragged\n", - "outbragging\n", - "outbrags\n", - "outbrave\n", - "outbraved\n", - "outbraves\n", - "outbraving\n", - "outbreak\n", - "outbreaks\n", - "outbred\n", - "outbreed\n", - "outbreeding\n", - "outbreeds\n", - "outbribe\n", - "outbribed\n", - "outbribes\n", - "outbribing\n", - "outbuild\n", - "outbuilding\n", - "outbuildings\n", - "outbuilds\n", - "outbuilt\n", - "outbullied\n", - "outbullies\n", - "outbully\n", - "outbullying\n", - "outburn\n", - "outburned\n", - "outburning\n", - "outburns\n", - "outburnt\n", - "outburst\n", - "outbursts\n", - "outby\n", - "outbye\n", - "outcaper\n", - "outcapered\n", - "outcapering\n", - "outcapers\n", - "outcast\n", - "outcaste\n", - "outcastes\n", - "outcasts\n", - "outcatch\n", - "outcatches\n", - "outcatching\n", - "outcaught\n", - "outcavil\n", - "outcaviled\n", - "outcaviling\n", - "outcavilled\n", - "outcavilling\n", - "outcavils\n", - "outcharm\n", - "outcharmed\n", - "outcharming\n", - "outcharms\n", - "outcheat\n", - "outcheated\n", - "outcheating\n", - "outcheats\n", - "outchid\n", - "outchidden\n", - "outchide\n", - "outchided\n", - "outchides\n", - "outchiding\n", - "outclass\n", - "outclassed\n", - "outclasses\n", - "outclassing\n", - "outclimb\n", - "outclimbed\n", - "outclimbing\n", - "outclimbs\n", - "outclomb\n", - "outcome\n", - "outcomes\n", - "outcook\n", - "outcooked\n", - "outcooking\n", - "outcooks\n", - "outcrawl\n", - "outcrawled\n", - "outcrawling\n", - "outcrawls\n", - "outcried\n", - "outcries\n", - "outcrop\n", - "outcropped\n", - "outcropping\n", - "outcrops\n", - "outcross\n", - "outcrossed\n", - "outcrosses\n", - "outcrossing\n", - "outcrow\n", - "outcrowed\n", - "outcrowing\n", - "outcrows\n", - "outcry\n", - "outcrying\n", - "outcurse\n", - "outcursed\n", - "outcurses\n", - "outcursing\n", - "outcurve\n", - "outcurves\n", - "outdance\n", - "outdanced\n", - "outdances\n", - "outdancing\n", - "outdare\n", - "outdared\n", - "outdares\n", - "outdaring\n", - "outdate\n", - "outdated\n", - "outdates\n", - "outdating\n", - "outdid\n", - "outdistance\n", - "outdistanced\n", - "outdistances\n", - "outdistancing\n", - "outdo\n", - "outdodge\n", - "outdodged\n", - "outdodges\n", - "outdodging\n", - "outdoer\n", - "outdoers\n", - "outdoes\n", - "outdoing\n", - "outdone\n", - "outdoor\n", - "outdoors\n", - "outdrank\n", - "outdraw\n", - "outdrawing\n", - "outdrawn\n", - "outdraws\n", - "outdream\n", - "outdreamed\n", - "outdreaming\n", - "outdreams\n", - "outdreamt\n", - "outdress\n", - "outdressed\n", - "outdresses\n", - "outdressing\n", - "outdrew\n", - "outdrink\n", - "outdrinking\n", - "outdrinks\n", - "outdrive\n", - "outdriven\n", - "outdrives\n", - "outdriving\n", - "outdrop\n", - "outdropped\n", - "outdropping\n", - "outdrops\n", - "outdrove\n", - "outdrunk\n", - "outeat\n", - "outeaten\n", - "outeating\n", - "outeats\n", - "outecho\n", - "outechoed\n", - "outechoes\n", - "outechoing\n", - "outed\n", - "outer\n", - "outermost\n", - "outers\n", - "outfable\n", - "outfabled\n", - "outfables\n", - "outfabling\n", - "outface\n", - "outfaced\n", - "outfaces\n", - "outfacing\n", - "outfall\n", - "outfalls\n", - "outfast\n", - "outfasted\n", - "outfasting\n", - "outfasts\n", - "outfawn\n", - "outfawned\n", - "outfawning\n", - "outfawns\n", - "outfeast\n", - "outfeasted\n", - "outfeasting\n", - "outfeasts\n", - "outfeel\n", - "outfeeling\n", - "outfeels\n", - "outfelt\n", - "outfield\n", - "outfielder\n", - "outfielders\n", - "outfields\n", - "outfight\n", - "outfighting\n", - "outfights\n", - "outfind\n", - "outfinding\n", - "outfinds\n", - "outfire\n", - "outfired\n", - "outfires\n", - "outfiring\n", - "outfit\n", - "outfits\n", - "outfitted\n", - "outfitter\n", - "outfitters\n", - "outfitting\n", - "outflank\n", - "outflanked\n", - "outflanking\n", - "outflanks\n", - "outflew\n", - "outflies\n", - "outflow\n", - "outflowed\n", - "outflowing\n", - "outflown\n", - "outflows\n", - "outfly\n", - "outflying\n", - "outfool\n", - "outfooled\n", - "outfooling\n", - "outfools\n", - "outfoot\n", - "outfooted\n", - "outfooting\n", - "outfoots\n", - "outfought\n", - "outfound\n", - "outfox\n", - "outfoxed\n", - "outfoxes\n", - "outfoxing\n", - "outfrown\n", - "outfrowned\n", - "outfrowning\n", - "outfrowns\n", - "outgain\n", - "outgained\n", - "outgaining\n", - "outgains\n", - "outgas\n", - "outgassed\n", - "outgasses\n", - "outgassing\n", - "outgave\n", - "outgive\n", - "outgiven\n", - "outgives\n", - "outgiving\n", - "outglare\n", - "outglared\n", - "outglares\n", - "outglaring\n", - "outglow\n", - "outglowed\n", - "outglowing\n", - "outglows\n", - "outgnaw\n", - "outgnawed\n", - "outgnawing\n", - "outgnawn\n", - "outgnaws\n", - "outgo\n", - "outgoes\n", - "outgoing\n", - "outgoings\n", - "outgone\n", - "outgrew\n", - "outgrin\n", - "outgrinned\n", - "outgrinning\n", - "outgrins\n", - "outgroup\n", - "outgroups\n", - "outgrow\n", - "outgrowing\n", - "outgrown\n", - "outgrows\n", - "outgrowth\n", - "outgrowths\n", - "outguess\n", - "outguessed\n", - "outguesses\n", - "outguessing\n", - "outguide\n", - "outguided\n", - "outguides\n", - "outguiding\n", - "outgun\n", - "outgunned\n", - "outgunning\n", - "outguns\n", - "outgush\n", - "outgushes\n", - "outhaul\n", - "outhauls\n", - "outhear\n", - "outheard\n", - "outhearing\n", - "outhears\n", - "outhit\n", - "outhits\n", - "outhitting\n", - "outhouse\n", - "outhouses\n", - "outhowl\n", - "outhowled\n", - "outhowling\n", - "outhowls\n", - "outhumor\n", - "outhumored\n", - "outhumoring\n", - "outhumors\n", - "outing\n", - "outings\n", - "outjinx\n", - "outjinxed\n", - "outjinxes\n", - "outjinxing\n", - "outjump\n", - "outjumped\n", - "outjumping\n", - "outjumps\n", - "outjut\n", - "outjuts\n", - "outjutted\n", - "outjutting\n", - "outkeep\n", - "outkeeping\n", - "outkeeps\n", - "outkept\n", - "outkick\n", - "outkicked\n", - "outkicking\n", - "outkicks\n", - "outkiss\n", - "outkissed\n", - "outkisses\n", - "outkissing\n", - "outlaid\n", - "outlain\n", - "outland\n", - "outlandish\n", - "outlandishly\n", - "outlands\n", - "outlast\n", - "outlasted\n", - "outlasting\n", - "outlasts\n", - "outlaugh\n", - "outlaughed\n", - "outlaughing\n", - "outlaughs\n", - "outlaw\n", - "outlawed\n", - "outlawing\n", - "outlawries\n", - "outlawry\n", - "outlaws\n", - "outlay\n", - "outlaying\n", - "outlays\n", - "outleap\n", - "outleaped\n", - "outleaping\n", - "outleaps\n", - "outleapt\n", - "outlearn\n", - "outlearned\n", - "outlearning\n", - "outlearns\n", - "outlearnt\n", - "outlet\n", - "outlets\n", - "outlie\n", - "outlier\n", - "outliers\n", - "outlies\n", - "outline\n", - "outlined\n", - "outlines\n", - "outlining\n", - "outlive\n", - "outlived\n", - "outliver\n", - "outlivers\n", - "outlives\n", - "outliving\n", - "outlook\n", - "outlooks\n", - "outlove\n", - "outloved\n", - "outloves\n", - "outloving\n", - "outlying\n", - "outman\n", - "outmanned\n", - "outmanning\n", - "outmans\n", - "outmarch\n", - "outmarched\n", - "outmarches\n", - "outmarching\n", - "outmatch\n", - "outmatched\n", - "outmatches\n", - "outmatching\n", - "outmode\n", - "outmoded\n", - "outmodes\n", - "outmoding\n", - "outmost\n", - "outmove\n", - "outmoved\n", - "outmoves\n", - "outmoving\n", - "outnumber\n", - "outnumbered\n", - "outnumbering\n", - "outnumbers\n", - "outpace\n", - "outpaced\n", - "outpaces\n", - "outpacing\n", - "outpaint\n", - "outpainted\n", - "outpainting\n", - "outpaints\n", - "outpass\n", - "outpassed\n", - "outpasses\n", - "outpassing\n", - "outpatient\n", - "outpatients\n", - "outpitied\n", - "outpities\n", - "outpity\n", - "outpitying\n", - "outplan\n", - "outplanned\n", - "outplanning\n", - "outplans\n", - "outplay\n", - "outplayed\n", - "outplaying\n", - "outplays\n", - "outplod\n", - "outplodded\n", - "outplodding\n", - "outplods\n", - "outpoint\n", - "outpointed\n", - "outpointing\n", - "outpoints\n", - "outpoll\n", - "outpolled\n", - "outpolling\n", - "outpolls\n", - "outport\n", - "outports\n", - "outpost\n", - "outposts\n", - "outpour\n", - "outpoured\n", - "outpouring\n", - "outpours\n", - "outpray\n", - "outprayed\n", - "outpraying\n", - "outprays\n", - "outpreen\n", - "outpreened\n", - "outpreening\n", - "outpreens\n", - "outpress\n", - "outpressed\n", - "outpresses\n", - "outpressing\n", - "outprice\n", - "outpriced\n", - "outprices\n", - "outpricing\n", - "outpull\n", - "outpulled\n", - "outpulling\n", - "outpulls\n", - "outpush\n", - "outpushed\n", - "outpushes\n", - "outpushing\n", - "output\n", - "outputs\n", - "outputted\n", - "outputting\n", - "outquote\n", - "outquoted\n", - "outquotes\n", - "outquoting\n", - "outrace\n", - "outraced\n", - "outraces\n", - "outracing\n", - "outrage\n", - "outraged\n", - "outrages\n", - "outraging\n", - "outraise\n", - "outraised\n", - "outraises\n", - "outraising\n", - "outran\n", - "outrance\n", - "outrances\n", - "outrang\n", - "outrange\n", - "outranged\n", - "outranges\n", - "outranging\n", - "outrank\n", - "outranked\n", - "outranking\n", - "outranks\n", - "outrave\n", - "outraved\n", - "outraves\n", - "outraving\n", - "outre\n", - "outreach\n", - "outreached\n", - "outreaches\n", - "outreaching\n", - "outread\n", - "outreading\n", - "outreads\n", - "outregeous\n", - "outregeously\n", - "outridden\n", - "outride\n", - "outrider\n", - "outriders\n", - "outrides\n", - "outriding\n", - "outright\n", - "outring\n", - "outringing\n", - "outrings\n", - "outrival\n", - "outrivaled\n", - "outrivaling\n", - "outrivalled\n", - "outrivalling\n", - "outrivals\n", - "outroar\n", - "outroared\n", - "outroaring\n", - "outroars\n", - "outrock\n", - "outrocked\n", - "outrocking\n", - "outrocks\n", - "outrode\n", - "outroll\n", - "outrolled\n", - "outrolling\n", - "outrolls\n", - "outroot\n", - "outrooted\n", - "outrooting\n", - "outroots\n", - "outrun\n", - "outrung\n", - "outrunning\n", - "outruns\n", - "outrush\n", - "outrushes\n", - "outs\n", - "outsail\n", - "outsailed\n", - "outsailing\n", - "outsails\n", - "outsang\n", - "outsat\n", - "outsavor\n", - "outsavored\n", - "outsavoring\n", - "outsavors\n", - "outsaw\n", - "outscold\n", - "outscolded\n", - "outscolding\n", - "outscolds\n", - "outscore\n", - "outscored\n", - "outscores\n", - "outscoring\n", - "outscorn\n", - "outscorned\n", - "outscorning\n", - "outscorns\n", - "outsee\n", - "outseeing\n", - "outseen\n", - "outsees\n", - "outsell\n", - "outselling\n", - "outsells\n", - "outsert\n", - "outserts\n", - "outserve\n", - "outserved\n", - "outserves\n", - "outserving\n", - "outset\n", - "outsets\n", - "outshame\n", - "outshamed\n", - "outshames\n", - "outshaming\n", - "outshine\n", - "outshined\n", - "outshines\n", - "outshining\n", - "outshone\n", - "outshoot\n", - "outshooting\n", - "outshoots\n", - "outshot\n", - "outshout\n", - "outshouted\n", - "outshouting\n", - "outshouts\n", - "outside\n", - "outsider\n", - "outsiders\n", - "outsides\n", - "outsight\n", - "outsights\n", - "outsin\n", - "outsing\n", - "outsinging\n", - "outsings\n", - "outsinned\n", - "outsinning\n", - "outsins\n", - "outsit\n", - "outsits\n", - "outsitting\n", - "outsize\n", - "outsized\n", - "outsizes\n", - "outskirt\n", - "outskirts\n", - "outsleep\n", - "outsleeping\n", - "outsleeps\n", - "outslept\n", - "outsmart\n", - "outsmarted\n", - "outsmarting\n", - "outsmarts\n", - "outsmile\n", - "outsmiled\n", - "outsmiles\n", - "outsmiling\n", - "outsmoke\n", - "outsmoked\n", - "outsmokes\n", - "outsmoking\n", - "outsnore\n", - "outsnored\n", - "outsnores\n", - "outsnoring\n", - "outsoar\n", - "outsoared\n", - "outsoaring\n", - "outsoars\n", - "outsold\n", - "outsole\n", - "outsoles\n", - "outspan\n", - "outspanned\n", - "outspanning\n", - "outspans\n", - "outspeak\n", - "outspeaking\n", - "outspeaks\n", - "outspell\n", - "outspelled\n", - "outspelling\n", - "outspells\n", - "outspelt\n", - "outspend\n", - "outspending\n", - "outspends\n", - "outspent\n", - "outspoke\n", - "outspoken\n", - "outspokenness\n", - "outspokennesses\n", - "outstand\n", - "outstanding\n", - "outstandingly\n", - "outstands\n", - "outstare\n", - "outstared\n", - "outstares\n", - "outstaring\n", - "outstart\n", - "outstarted\n", - "outstarting\n", - "outstarts\n", - "outstate\n", - "outstated\n", - "outstates\n", - "outstating\n", - "outstay\n", - "outstayed\n", - "outstaying\n", - "outstays\n", - "outsteer\n", - "outsteered\n", - "outsteering\n", - "outsteers\n", - "outstood\n", - "outstrip\n", - "outstripped\n", - "outstripping\n", - "outstrips\n", - "outstudied\n", - "outstudies\n", - "outstudy\n", - "outstudying\n", - "outstunt\n", - "outstunted\n", - "outstunting\n", - "outstunts\n", - "outsulk\n", - "outsulked\n", - "outsulking\n", - "outsulks\n", - "outsung\n", - "outswam\n", - "outsware\n", - "outswear\n", - "outswearing\n", - "outswears\n", - "outswim\n", - "outswimming\n", - "outswims\n", - "outswore\n", - "outsworn\n", - "outswum\n", - "outtake\n", - "outtakes\n", - "outtalk\n", - "outtalked\n", - "outtalking\n", - "outtalks\n", - "outtask\n", - "outtasked\n", - "outtasking\n", - "outtasks\n", - "outtell\n", - "outtelling\n", - "outtells\n", - "outthank\n", - "outthanked\n", - "outthanking\n", - "outthanks\n", - "outthink\n", - "outthinking\n", - "outthinks\n", - "outthought\n", - "outthrew\n", - "outthrob\n", - "outthrobbed\n", - "outthrobbing\n", - "outthrobs\n", - "outthrow\n", - "outthrowing\n", - "outthrown\n", - "outthrows\n", - "outtold\n", - "outtower\n", - "outtowered\n", - "outtowering\n", - "outtowers\n", - "outtrade\n", - "outtraded\n", - "outtrades\n", - "outtrading\n", - "outtrick\n", - "outtricked\n", - "outtricking\n", - "outtricks\n", - "outtrot\n", - "outtrots\n", - "outtrotted\n", - "outtrotting\n", - "outtrump\n", - "outtrumped\n", - "outtrumping\n", - "outtrumps\n", - "outturn\n", - "outturns\n", - "outvalue\n", - "outvalued\n", - "outvalues\n", - "outvaluing\n", - "outvaunt\n", - "outvaunted\n", - "outvaunting\n", - "outvaunts\n", - "outvoice\n", - "outvoiced\n", - "outvoices\n", - "outvoicing\n", - "outvote\n", - "outvoted\n", - "outvotes\n", - "outvoting\n", - "outwait\n", - "outwaited\n", - "outwaiting\n", - "outwaits\n", - "outwalk\n", - "outwalked\n", - "outwalking\n", - "outwalks\n", - "outwar\n", - "outward\n", - "outwards\n", - "outwarred\n", - "outwarring\n", - "outwars\n", - "outwash\n", - "outwashes\n", - "outwaste\n", - "outwasted\n", - "outwastes\n", - "outwasting\n", - "outwatch\n", - "outwatched\n", - "outwatches\n", - "outwatching\n", - "outwear\n", - "outwearied\n", - "outwearies\n", - "outwearing\n", - "outwears\n", - "outweary\n", - "outwearying\n", - "outweep\n", - "outweeping\n", - "outweeps\n", - "outweigh\n", - "outweighed\n", - "outweighing\n", - "outweighs\n", - "outwent\n", - "outwept\n", - "outwhirl\n", - "outwhirled\n", - "outwhirling\n", - "outwhirls\n", - "outwile\n", - "outwiled\n", - "outwiles\n", - "outwiling\n", - "outwill\n", - "outwilled\n", - "outwilling\n", - "outwills\n", - "outwind\n", - "outwinded\n", - "outwinding\n", - "outwinds\n", - "outwish\n", - "outwished\n", - "outwishes\n", - "outwishing\n", - "outwit\n", - "outwits\n", - "outwitted\n", - "outwitting\n", - "outwore\n", - "outwork\n", - "outworked\n", - "outworking\n", - "outworks\n", - "outworn\n", - "outwrit\n", - "outwrite\n", - "outwrites\n", - "outwriting\n", - "outwritten\n", - "outwrote\n", - "outwrought\n", - "outyell\n", - "outyelled\n", - "outyelling\n", - "outyells\n", - "outyelp\n", - "outyelped\n", - "outyelping\n", - "outyelps\n", - "outyield\n", - "outyielded\n", - "outyielding\n", - "outyields\n", - "ouzel\n", - "ouzels\n", - "ouzo\n", - "ouzos\n", - "ova\n", - "oval\n", - "ovalities\n", - "ovality\n", - "ovally\n", - "ovalness\n", - "ovalnesses\n", - "ovals\n", - "ovarial\n", - "ovarian\n", - "ovaries\n", - "ovariole\n", - "ovarioles\n", - "ovaritides\n", - "ovaritis\n", - "ovary\n", - "ovate\n", - "ovately\n", - "ovation\n", - "ovations\n", - "oven\n", - "ovenbird\n", - "ovenbirds\n", - "ovenlike\n", - "ovens\n", - "ovenware\n", - "ovenwares\n", - "over\n", - "overable\n", - "overabundance\n", - "overabundances\n", - "overabundant\n", - "overacceptance\n", - "overacceptances\n", - "overachiever\n", - "overachievers\n", - "overact\n", - "overacted\n", - "overacting\n", - "overactive\n", - "overacts\n", - "overage\n", - "overages\n", - "overaggresive\n", - "overall\n", - "overalls\n", - "overambitious\n", - "overamplified\n", - "overamplifies\n", - "overamplify\n", - "overamplifying\n", - "overanalyze\n", - "overanalyzed\n", - "overanalyzes\n", - "overanalyzing\n", - "overanxieties\n", - "overanxiety\n", - "overanxious\n", - "overapologetic\n", - "overapt\n", - "overarch\n", - "overarched\n", - "overarches\n", - "overarching\n", - "overarm\n", - "overarousal\n", - "overarouse\n", - "overaroused\n", - "overarouses\n", - "overarousing\n", - "overassertive\n", - "overate\n", - "overawe\n", - "overawed\n", - "overawes\n", - "overawing\n", - "overbake\n", - "overbaked\n", - "overbakes\n", - "overbaking\n", - "overbear\n", - "overbearing\n", - "overbears\n", - "overbet\n", - "overbets\n", - "overbetted\n", - "overbetting\n", - "overbid\n", - "overbidden\n", - "overbidding\n", - "overbids\n", - "overbig\n", - "overbite\n", - "overbites\n", - "overblew\n", - "overblow\n", - "overblowing\n", - "overblown\n", - "overblows\n", - "overboard\n", - "overbold\n", - "overbook\n", - "overbooked\n", - "overbooking\n", - "overbooks\n", - "overbore\n", - "overborn\n", - "overborne\n", - "overborrow\n", - "overborrowed\n", - "overborrowing\n", - "overborrows\n", - "overbought\n", - "overbred\n", - "overbright\n", - "overbroad\n", - "overbuild\n", - "overbuilded\n", - "overbuilding\n", - "overbuilds\n", - "overburden\n", - "overburdened\n", - "overburdening\n", - "overburdens\n", - "overbusy\n", - "overbuy\n", - "overbuying\n", - "overbuys\n", - "overcall\n", - "overcalled\n", - "overcalling\n", - "overcalls\n", - "overcame\n", - "overcapacities\n", - "overcapacity\n", - "overcapitalize\n", - "overcapitalized\n", - "overcapitalizes\n", - "overcapitalizing\n", - "overcareful\n", - "overcast\n", - "overcasting\n", - "overcasts\n", - "overcautious\n", - "overcharge\n", - "overcharged\n", - "overcharges\n", - "overcharging\n", - "overcivilized\n", - "overclean\n", - "overcoat\n", - "overcoats\n", - "overcold\n", - "overcome\n", - "overcomes\n", - "overcoming\n", - "overcommit\n", - "overcommited\n", - "overcommiting\n", - "overcommits\n", - "overcompensate\n", - "overcompensated\n", - "overcompensates\n", - "overcompensating\n", - "overcomplicate\n", - "overcomplicated\n", - "overcomplicates\n", - "overcomplicating\n", - "overconcern\n", - "overconcerned\n", - "overconcerning\n", - "overconcerns\n", - "overconfidence\n", - "overconfidences\n", - "overconfident\n", - "overconscientious\n", - "overconsume\n", - "overconsumed\n", - "overconsumes\n", - "overconsuming\n", - "overconsumption\n", - "overconsumptions\n", - "overcontrol\n", - "overcontroled\n", - "overcontroling\n", - "overcontrols\n", - "overcook\n", - "overcooked\n", - "overcooking\n", - "overcooks\n", - "overcool\n", - "overcooled\n", - "overcooling\n", - "overcools\n", - "overcorrect\n", - "overcorrected\n", - "overcorrecting\n", - "overcorrects\n", - "overcoy\n", - "overcram\n", - "overcrammed\n", - "overcramming\n", - "overcrams\n", - "overcritical\n", - "overcrop\n", - "overcropped\n", - "overcropping\n", - "overcrops\n", - "overcrowd\n", - "overcrowded\n", - "overcrowding\n", - "overcrowds\n", - "overdare\n", - "overdared\n", - "overdares\n", - "overdaring\n", - "overdear\n", - "overdeck\n", - "overdecked\n", - "overdecking\n", - "overdecks\n", - "overdecorate\n", - "overdecorated\n", - "overdecorates\n", - "overdecorating\n", - "overdepend\n", - "overdepended\n", - "overdependent\n", - "overdepending\n", - "overdepends\n", - "overdevelop\n", - "overdeveloped\n", - "overdeveloping\n", - "overdevelops\n", - "overdid\n", - "overdo\n", - "overdoer\n", - "overdoers\n", - "overdoes\n", - "overdoing\n", - "overdone\n", - "overdose\n", - "overdosed\n", - "overdoses\n", - "overdosing\n", - "overdraft\n", - "overdrafts\n", - "overdramatic\n", - "overdramatize\n", - "overdramatized\n", - "overdramatizes\n", - "overdramatizing\n", - "overdraw\n", - "overdrawing\n", - "overdrawn\n", - "overdraws\n", - "overdress\n", - "overdressed\n", - "overdresses\n", - "overdressing\n", - "overdrew\n", - "overdrink\n", - "overdrinks\n", - "overdry\n", - "overdue\n", - "overdye\n", - "overdyed\n", - "overdyeing\n", - "overdyes\n", - "overeager\n", - "overeasy\n", - "overeat\n", - "overeaten\n", - "overeater\n", - "overeaters\n", - "overeating\n", - "overeats\n", - "overed\n", - "overeducate\n", - "overeducated\n", - "overeducates\n", - "overeducating\n", - "overelaborate\n", - "overemotional\n", - "overemphases\n", - "overemphasis\n", - "overemphasize\n", - "overemphasized\n", - "overemphasizes\n", - "overemphasizing\n", - "overenergetic\n", - "overenthusiastic\n", - "overestimate\n", - "overestimated\n", - "overestimates\n", - "overestimating\n", - "overexaggerate\n", - "overexaggerated\n", - "overexaggerates\n", - "overexaggerating\n", - "overexaggeration\n", - "overexaggerations\n", - "overexcite\n", - "overexcited\n", - "overexcitement\n", - "overexcitements\n", - "overexcites\n", - "overexciting\n", - "overexercise\n", - "overexert\n", - "overexertion\n", - "overexertions\n", - "overexhaust\n", - "overexhausted\n", - "overexhausting\n", - "overexhausts\n", - "overexpand\n", - "overexpanded\n", - "overexpanding\n", - "overexpands\n", - "overexpansion\n", - "overexpansions\n", - "overexplain\n", - "overexplained\n", - "overexplaining\n", - "overexplains\n", - "overexploit\n", - "overexploited\n", - "overexploiting\n", - "overexploits\n", - "overexpose\n", - "overexposed\n", - "overexposes\n", - "overexposing\n", - "overextend\n", - "overextended\n", - "overextending\n", - "overextends\n", - "overextension\n", - "overextensions\n", - "overexuberant\n", - "overfamiliar\n", - "overfar\n", - "overfast\n", - "overfat\n", - "overfatigue\n", - "overfatigued\n", - "overfatigues\n", - "overfatiguing\n", - "overfear\n", - "overfeared\n", - "overfearing\n", - "overfears\n", - "overfed\n", - "overfeed\n", - "overfeeding\n", - "overfeeds\n", - "overfertilize\n", - "overfertilized\n", - "overfertilizes\n", - "overfertilizing\n", - "overfill\n", - "overfilled\n", - "overfilling\n", - "overfills\n", - "overfish\n", - "overfished\n", - "overfishes\n", - "overfishing\n", - "overflew\n", - "overflies\n", - "overflow\n", - "overflowed\n", - "overflowing\n", - "overflown\n", - "overflows\n", - "overfly\n", - "overflying\n", - "overfond\n", - "overfoul\n", - "overfree\n", - "overfull\n", - "overgenerous\n", - "overgild\n", - "overgilded\n", - "overgilding\n", - "overgilds\n", - "overgilt\n", - "overgird\n", - "overgirded\n", - "overgirding\n", - "overgirds\n", - "overgirt\n", - "overglad\n", - "overglamorize\n", - "overglamorized\n", - "overglamorizes\n", - "overglamorizing\n", - "overgoad\n", - "overgoaded\n", - "overgoading\n", - "overgoads\n", - "overgraze\n", - "overgrazed\n", - "overgrazes\n", - "overgrazing\n", - "overgrew\n", - "overgrow\n", - "overgrowing\n", - "overgrown\n", - "overgrows\n", - "overhand\n", - "overhanded\n", - "overhanding\n", - "overhands\n", - "overhang\n", - "overhanging\n", - "overhangs\n", - "overhard\n", - "overharvest\n", - "overharvested\n", - "overharvesting\n", - "overharvests\n", - "overhasty\n", - "overhate\n", - "overhated\n", - "overhates\n", - "overhating\n", - "overhaul\n", - "overhauled\n", - "overhauling\n", - "overhauls\n", - "overhead\n", - "overheads\n", - "overheap\n", - "overheaped\n", - "overheaping\n", - "overheaps\n", - "overhear\n", - "overheard\n", - "overhearing\n", - "overhears\n", - "overheat\n", - "overheated\n", - "overheating\n", - "overheats\n", - "overheld\n", - "overhigh\n", - "overhold\n", - "overholding\n", - "overholds\n", - "overholy\n", - "overhope\n", - "overhoped\n", - "overhopes\n", - "overhoping\n", - "overhot\n", - "overhung\n", - "overhunt\n", - "overhunted\n", - "overhunting\n", - "overhunts\n", - "overidealize\n", - "overidealized\n", - "overidealizes\n", - "overidealizing\n", - "overidle\n", - "overimaginative\n", - "overimbibe\n", - "overimbibed\n", - "overimbibes\n", - "overimbibing\n", - "overimpressed\n", - "overindebted\n", - "overindulge\n", - "overindulged\n", - "overindulgent\n", - "overindulges\n", - "overindulging\n", - "overinflate\n", - "overinflated\n", - "overinflates\n", - "overinflating\n", - "overinfluence\n", - "overinfluenced\n", - "overinfluences\n", - "overinfluencing\n", - "overing\n", - "overinsistent\n", - "overintense\n", - "overintensities\n", - "overintensity\n", - "overinvest\n", - "overinvested\n", - "overinvesting\n", - "overinvests\n", - "overinvolve\n", - "overinvolved\n", - "overinvolves\n", - "overinvolving\n", - "overjoy\n", - "overjoyed\n", - "overjoying\n", - "overjoys\n", - "overjust\n", - "overkeen\n", - "overkill\n", - "overkilled\n", - "overkilling\n", - "overkills\n", - "overkind\n", - "overlade\n", - "overladed\n", - "overladen\n", - "overlades\n", - "overlading\n", - "overlaid\n", - "overlain\n", - "overland\n", - "overlands\n", - "overlap\n", - "overlapped\n", - "overlapping\n", - "overlaps\n", - "overlarge\n", - "overlate\n", - "overlax\n", - "overlay\n", - "overlaying\n", - "overlays\n", - "overleaf\n", - "overleap\n", - "overleaped\n", - "overleaping\n", - "overleaps\n", - "overleapt\n", - "overlet\n", - "overlets\n", - "overletting\n", - "overlewd\n", - "overliberal\n", - "overlie\n", - "overlies\n", - "overlive\n", - "overlived\n", - "overlives\n", - "overliving\n", - "overload\n", - "overloaded\n", - "overloading\n", - "overloads\n", - "overlong\n", - "overlook\n", - "overlooked\n", - "overlooking\n", - "overlooks\n", - "overlord\n", - "overlorded\n", - "overlording\n", - "overlords\n", - "overloud\n", - "overlove\n", - "overloved\n", - "overloves\n", - "overloving\n", - "overly\n", - "overlying\n", - "overman\n", - "overmanned\n", - "overmanning\n", - "overmans\n", - "overmany\n", - "overmedicate\n", - "overmedicated\n", - "overmedicates\n", - "overmedicating\n", - "overmeek\n", - "overmelt\n", - "overmelted\n", - "overmelting\n", - "overmelts\n", - "overmen\n", - "overmild\n", - "overmix\n", - "overmixed\n", - "overmixes\n", - "overmixing\n", - "overmodest\n", - "overmuch\n", - "overmuches\n", - "overnear\n", - "overneat\n", - "overnew\n", - "overnice\n", - "overnight\n", - "overobvious\n", - "overoptimistic\n", - "overorganize\n", - "overorganized\n", - "overorganizes\n", - "overorganizing\n", - "overpaid\n", - "overparticular\n", - "overpass\n", - "overpassed\n", - "overpasses\n", - "overpassing\n", - "overpast\n", - "overpatriotic\n", - "overpay\n", - "overpaying\n", - "overpayment\n", - "overpayments\n", - "overpays\n", - "overpermissive\n", - "overpert\n", - "overplay\n", - "overplayed\n", - "overplaying\n", - "overplays\n", - "overplied\n", - "overplies\n", - "overplus\n", - "overpluses\n", - "overply\n", - "overplying\n", - "overpopulated\n", - "overpossessive\n", - "overpower\n", - "overpowered\n", - "overpowering\n", - "overpowers\n", - "overprase\n", - "overprased\n", - "overprases\n", - "overprasing\n", - "overprescribe\n", - "overprescribed\n", - "overprescribes\n", - "overprescribing\n", - "overpressure\n", - "overpressures\n", - "overprice\n", - "overpriced\n", - "overprices\n", - "overpricing\n", - "overprint\n", - "overprinted\n", - "overprinting\n", - "overprints\n", - "overprivileged\n", - "overproduce\n", - "overproduced\n", - "overproduces\n", - "overproducing\n", - "overproduction\n", - "overproductions\n", - "overpromise\n", - "overprotect\n", - "overprotected\n", - "overprotecting\n", - "overprotective\n", - "overprotects\n", - "overpublicize\n", - "overpublicized\n", - "overpublicizes\n", - "overpublicizing\n", - "overqualified\n", - "overran\n", - "overrank\n", - "overrash\n", - "overrate\n", - "overrated\n", - "overrates\n", - "overrating\n", - "overreach\n", - "overreached\n", - "overreaches\n", - "overreaching\n", - "overreact\n", - "overreacted\n", - "overreacting\n", - "overreaction\n", - "overreactions\n", - "overreacts\n", - "overrefine\n", - "overregulate\n", - "overregulated\n", - "overregulates\n", - "overregulating\n", - "overregulation\n", - "overregulations\n", - "overreliance\n", - "overreliances\n", - "overrepresent\n", - "overrepresented\n", - "overrepresenting\n", - "overrepresents\n", - "overrespond\n", - "overresponded\n", - "overresponding\n", - "overresponds\n", - "overrich\n", - "overridden\n", - "override\n", - "overrides\n", - "overriding\n", - "overrife\n", - "overripe\n", - "overrode\n", - "overrude\n", - "overruff\n", - "overruffed\n", - "overruffing\n", - "overruffs\n", - "overrule\n", - "overruled\n", - "overrules\n", - "overruling\n", - "overrun\n", - "overrunning\n", - "overruns\n", - "overs\n", - "oversad\n", - "oversale\n", - "oversales\n", - "oversalt\n", - "oversalted\n", - "oversalting\n", - "oversalts\n", - "oversaturate\n", - "oversaturated\n", - "oversaturates\n", - "oversaturating\n", - "oversave\n", - "oversaved\n", - "oversaves\n", - "oversaving\n", - "oversaw\n", - "oversea\n", - "overseas\n", - "oversee\n", - "overseed\n", - "overseeded\n", - "overseeding\n", - "overseeds\n", - "overseeing\n", - "overseen\n", - "overseer\n", - "overseers\n", - "oversees\n", - "oversell\n", - "overselling\n", - "oversells\n", - "oversensitive\n", - "overserious\n", - "overset\n", - "oversets\n", - "oversetting\n", - "oversew\n", - "oversewed\n", - "oversewing\n", - "oversewn\n", - "oversews\n", - "oversexed\n", - "overshadow\n", - "overshadowed\n", - "overshadowing\n", - "overshadows\n", - "overshoe\n", - "overshoes\n", - "overshoot\n", - "overshooting\n", - "overshoots\n", - "overshot\n", - "overshots\n", - "oversick\n", - "overside\n", - "oversides\n", - "oversight\n", - "oversights\n", - "oversimple\n", - "oversimplified\n", - "oversimplifies\n", - "oversimplify\n", - "oversimplifying\n", - "oversize\n", - "oversizes\n", - "oversleep\n", - "oversleeping\n", - "oversleeps\n", - "overslept\n", - "overslip\n", - "overslipped\n", - "overslipping\n", - "overslips\n", - "overslipt\n", - "overslow\n", - "oversoak\n", - "oversoaked\n", - "oversoaking\n", - "oversoaks\n", - "oversoft\n", - "oversold\n", - "oversolicitous\n", - "oversoon\n", - "oversoul\n", - "oversouls\n", - "overspecialize\n", - "overspecialized\n", - "overspecializes\n", - "overspecializing\n", - "overspend\n", - "overspended\n", - "overspending\n", - "overspends\n", - "overspin\n", - "overspins\n", - "overspread\n", - "overspreading\n", - "overspreads\n", - "overstaff\n", - "overstaffed\n", - "overstaffing\n", - "overstaffs\n", - "overstate\n", - "overstated\n", - "overstatement\n", - "overstatements\n", - "overstates\n", - "overstating\n", - "overstay\n", - "overstayed\n", - "overstaying\n", - "overstays\n", - "overstep\n", - "overstepped\n", - "overstepping\n", - "oversteps\n", - "overstimulate\n", - "overstimulated\n", - "overstimulates\n", - "overstimulating\n", - "overstir\n", - "overstirred\n", - "overstirring\n", - "overstirs\n", - "overstock\n", - "overstocked\n", - "overstocking\n", - "overstocks\n", - "overstrain\n", - "overstrained\n", - "overstraining\n", - "overstrains\n", - "overstress\n", - "overstressed\n", - "overstresses\n", - "overstressing\n", - "overstretch\n", - "overstretched\n", - "overstretches\n", - "overstretching\n", - "overstrict\n", - "oversubtle\n", - "oversup\n", - "oversupped\n", - "oversupping\n", - "oversupplied\n", - "oversupplies\n", - "oversupply\n", - "oversupplying\n", - "oversups\n", - "oversure\n", - "oversuspicious\n", - "oversweeten\n", - "oversweetened\n", - "oversweetening\n", - "oversweetens\n", - "overt\n", - "overtake\n", - "overtaken\n", - "overtakes\n", - "overtaking\n", - "overtame\n", - "overtart\n", - "overtask\n", - "overtasked\n", - "overtasking\n", - "overtasks\n", - "overtax\n", - "overtaxed\n", - "overtaxes\n", - "overtaxing\n", - "overthin\n", - "overthrew\n", - "overthrow\n", - "overthrown\n", - "overthrows\n", - "overtighten\n", - "overtightened\n", - "overtightening\n", - "overtightens\n", - "overtime\n", - "overtimed\n", - "overtimes\n", - "overtiming\n", - "overtire\n", - "overtired\n", - "overtires\n", - "overtiring\n", - "overtly\n", - "overtoil\n", - "overtoiled\n", - "overtoiling\n", - "overtoils\n", - "overtone\n", - "overtones\n", - "overtook\n", - "overtop\n", - "overtopped\n", - "overtopping\n", - "overtops\n", - "overtrain\n", - "overtrained\n", - "overtraining\n", - "overtrains\n", - "overtreat\n", - "overtreated\n", - "overtreating\n", - "overtreats\n", - "overtrim\n", - "overtrimmed\n", - "overtrimming\n", - "overtrims\n", - "overture\n", - "overtured\n", - "overtures\n", - "overturing\n", - "overturn\n", - "overturned\n", - "overturning\n", - "overturns\n", - "overurge\n", - "overurged\n", - "overurges\n", - "overurging\n", - "overuse\n", - "overused\n", - "overuses\n", - "overusing\n", - "overutilize\n", - "overutilized\n", - "overutilizes\n", - "overutilizing\n", - "overvalue\n", - "overvalued\n", - "overvalues\n", - "overvaluing\n", - "overview\n", - "overviews\n", - "overvote\n", - "overvoted\n", - "overvotes\n", - "overvoting\n", - "overwarm\n", - "overwarmed\n", - "overwarming\n", - "overwarms\n", - "overwary\n", - "overweak\n", - "overwear\n", - "overwearing\n", - "overwears\n", - "overween\n", - "overweened\n", - "overweening\n", - "overweens\n", - "overweight\n", - "overwet\n", - "overwets\n", - "overwetted\n", - "overwetting\n", - "overwhelm\n", - "overwhelmed\n", - "overwhelming\n", - "overwhelmingly\n", - "overwhelms\n", - "overwide\n", - "overwily\n", - "overwind\n", - "overwinding\n", - "overwinds\n", - "overwise\n", - "overword\n", - "overwords\n", - "overwore\n", - "overwork\n", - "overworked\n", - "overworking\n", - "overworks\n", - "overworn\n", - "overwound\n", - "overwrite\n", - "overwrited\n", - "overwrites\n", - "overwriting\n", - "overwrought\n", - "overzeal\n", - "overzealous\n", - "overzeals\n", - "ovibos\n", - "ovicidal\n", - "ovicide\n", - "ovicides\n", - "oviducal\n", - "oviduct\n", - "oviducts\n", - "oviform\n", - "ovine\n", - "ovines\n", - "ovipara\n", - "oviposit\n", - "oviposited\n", - "ovipositing\n", - "oviposits\n", - "ovisac\n", - "ovisacs\n", - "ovoid\n", - "ovoidal\n", - "ovoids\n", - "ovoli\n", - "ovolo\n", - "ovolos\n", - "ovonic\n", - "ovular\n", - "ovulary\n", - "ovulate\n", - "ovulated\n", - "ovulates\n", - "ovulating\n", - "ovulation\n", - "ovulations\n", - "ovule\n", - "ovules\n", - "ovum\n", - "ow\n", - "owe\n", - "owed\n", - "owes\n", - "owing\n", - "owl\n", - "owlet\n", - "owlets\n", - "owlish\n", - "owlishly\n", - "owllike\n", - "owls\n", - "own\n", - "ownable\n", - "owned\n", - "owner\n", - "owners\n", - "ownership\n", - "ownerships\n", - "owning\n", - "owns\n", - "owse\n", - "owsen\n", - "ox\n", - "oxalate\n", - "oxalated\n", - "oxalates\n", - "oxalating\n", - "oxalic\n", - "oxalis\n", - "oxalises\n", - "oxazine\n", - "oxazines\n", - "oxblood\n", - "oxbloods\n", - "oxbow\n", - "oxbows\n", - "oxcart\n", - "oxcarts\n", - "oxen\n", - "oxes\n", - "oxeye\n", - "oxeyes\n", - "oxford\n", - "oxfords\n", - "oxheart\n", - "oxhearts\n", - "oxid\n", - "oxidable\n", - "oxidant\n", - "oxidants\n", - "oxidase\n", - "oxidases\n", - "oxidasic\n", - "oxidate\n", - "oxidated\n", - "oxidates\n", - "oxidating\n", - "oxidation\n", - "oxidations\n", - "oxide\n", - "oxides\n", - "oxidic\n", - "oxidise\n", - "oxidised\n", - "oxidiser\n", - "oxidisers\n", - "oxidises\n", - "oxidising\n", - "oxidizable\n", - "oxidize\n", - "oxidized\n", - "oxidizer\n", - "oxidizers\n", - "oxidizes\n", - "oxidizing\n", - "oxids\n", - "oxim\n", - "oxime\n", - "oximes\n", - "oxims\n", - "oxlip\n", - "oxlips\n", - "oxpecker\n", - "oxpeckers\n", - "oxtail\n", - "oxtails\n", - "oxter\n", - "oxters\n", - "oxtongue\n", - "oxtongues\n", - "oxy\n", - "oxyacid\n", - "oxyacids\n", - "oxygen\n", - "oxygenic\n", - "oxygens\n", - "oxymora\n", - "oxymoron\n", - "oxyphil\n", - "oxyphile\n", - "oxyphiles\n", - "oxyphils\n", - "oxysalt\n", - "oxysalts\n", - "oxysome\n", - "oxysomes\n", - "oxytocic\n", - "oxytocics\n", - "oxytocin\n", - "oxytocins\n", - "oxytone\n", - "oxytones\n", - "oy\n", - "oyer\n", - "oyers\n", - "oyes\n", - "oyesses\n", - "oyez\n", - "oyster\n", - "oystered\n", - "oysterer\n", - "oysterers\n", - "oystering\n", - "oysterings\n", - "oysterman\n", - "oystermen\n", - "oysters\n", - "ozone\n", - "ozones\n", - "ozonic\n", - "ozonide\n", - "ozonides\n", - "ozonise\n", - "ozonised\n", - "ozonises\n", - "ozonising\n", - "ozonize\n", - "ozonized\n", - "ozonizer\n", - "ozonizers\n", - "ozonizes\n", - "ozonizing\n", - "ozonous\n", - "pa\n", - "pabular\n", - "pabulum\n", - "pabulums\n", - "pac\n", - "paca\n", - "pacas\n", - "pace\n", - "paced\n", - "pacemaker\n", - "pacemakers\n", - "pacer\n", - "pacers\n", - "paces\n", - "pacha\n", - "pachadom\n", - "pachadoms\n", - "pachalic\n", - "pachalics\n", - "pachas\n", - "pachisi\n", - "pachisis\n", - "pachouli\n", - "pachoulis\n", - "pachuco\n", - "pachucos\n", - "pachyderm\n", - "pachyderms\n", - "pacific\n", - "pacification\n", - "pacifications\n", - "pacified\n", - "pacifier\n", - "pacifiers\n", - "pacifies\n", - "pacifism\n", - "pacifisms\n", - "pacifist\n", - "pacifistic\n", - "pacifists\n", - "pacify\n", - "pacifying\n", - "pacing\n", - "pack\n", - "packable\n", - "package\n", - "packaged\n", - "packager\n", - "packagers\n", - "packages\n", - "packaging\n", - "packed\n", - "packer\n", - "packers\n", - "packet\n", - "packeted\n", - "packeting\n", - "packets\n", - "packing\n", - "packings\n", - "packly\n", - "packman\n", - "packmen\n", - "packness\n", - "packnesses\n", - "packs\n", - "packsack\n", - "packsacks\n", - "packwax\n", - "packwaxes\n", - "pacs\n", - "pact\n", - "paction\n", - "pactions\n", - "pacts\n", - "pad\n", - "padauk\n", - "padauks\n", - "padded\n", - "paddies\n", - "padding\n", - "paddings\n", - "paddle\n", - "paddled\n", - "paddler\n", - "paddlers\n", - "paddles\n", - "paddling\n", - "paddlings\n", - "paddock\n", - "paddocked\n", - "paddocking\n", - "paddocks\n", - "paddy\n", - "padishah\n", - "padishahs\n", - "padle\n", - "padles\n", - "padlock\n", - "padlocked\n", - "padlocking\n", - "padlocks\n", - "padnag\n", - "padnags\n", - "padouk\n", - "padouks\n", - "padre\n", - "padres\n", - "padri\n", - "padrone\n", - "padrones\n", - "padroni\n", - "pads\n", - "padshah\n", - "padshahs\n", - "paduasoy\n", - "paduasoys\n", - "paean\n", - "paeanism\n", - "paeanisms\n", - "paeans\n", - "paella\n", - "paellas\n", - "paeon\n", - "paeons\n", - "pagan\n", - "pagandom\n", - "pagandoms\n", - "paganise\n", - "paganised\n", - "paganises\n", - "paganish\n", - "paganising\n", - "paganism\n", - "paganisms\n", - "paganist\n", - "paganists\n", - "paganize\n", - "paganized\n", - "paganizes\n", - "paganizing\n", - "pagans\n", - "page\n", - "pageant\n", - "pageantries\n", - "pageantry\n", - "pageants\n", - "pageboy\n", - "pageboys\n", - "paged\n", - "pages\n", - "paginal\n", - "paginate\n", - "paginated\n", - "paginates\n", - "paginating\n", - "paging\n", - "pagod\n", - "pagoda\n", - "pagodas\n", - "pagods\n", - "pagurian\n", - "pagurians\n", - "pagurid\n", - "pagurids\n", - "pah\n", - "pahlavi\n", - "pahlavis\n", - "paid\n", - "paik\n", - "paiked\n", - "paiking\n", - "paiks\n", - "pail\n", - "pailful\n", - "pailfuls\n", - "pails\n", - "pailsful\n", - "pain\n", - "painch\n", - "painches\n", - "pained\n", - "painful\n", - "painfuller\n", - "painfullest\n", - "painfully\n", - "paining\n", - "painkiller\n", - "painkillers\n", - "painkilling\n", - "painless\n", - "painlessly\n", - "pains\n", - "painstaking\n", - "painstakingly\n", - "paint\n", - "paintbrush\n", - "paintbrushes\n", - "painted\n", - "painter\n", - "painters\n", - "paintier\n", - "paintiest\n", - "painting\n", - "paintings\n", - "paints\n", - "painty\n", - "pair\n", - "paired\n", - "pairing\n", - "pairs\n", - "paisa\n", - "paisan\n", - "paisano\n", - "paisanos\n", - "paisans\n", - "paisas\n", - "paise\n", - "paisley\n", - "paisleys\n", - "pajama\n", - "pajamas\n", - "pal\n", - "palabra\n", - "palabras\n", - "palace\n", - "palaced\n", - "palaces\n", - "paladin\n", - "paladins\n", - "palais\n", - "palatable\n", - "palatal\n", - "palatals\n", - "palate\n", - "palates\n", - "palatial\n", - "palatine\n", - "palatines\n", - "palaver\n", - "palavered\n", - "palavering\n", - "palavers\n", - "palazzi\n", - "palazzo\n", - "pale\n", - "palea\n", - "paleae\n", - "paleal\n", - "paled\n", - "paleface\n", - "palefaces\n", - "palely\n", - "paleness\n", - "palenesses\n", - "paleoclimatologic\n", - "paler\n", - "pales\n", - "palest\n", - "palestra\n", - "palestrae\n", - "palestras\n", - "palet\n", - "paletot\n", - "paletots\n", - "palets\n", - "palette\n", - "palettes\n", - "paleways\n", - "palewise\n", - "palfrey\n", - "palfreys\n", - "palier\n", - "paliest\n", - "palikar\n", - "palikars\n", - "paling\n", - "palings\n", - "palinode\n", - "palinodes\n", - "palisade\n", - "palisaded\n", - "palisades\n", - "palisading\n", - "palish\n", - "pall\n", - "palladia\n", - "palladic\n", - "pallbearer\n", - "pallbearers\n", - "palled\n", - "pallet\n", - "pallets\n", - "pallette\n", - "pallettes\n", - "pallia\n", - "pallial\n", - "palliate\n", - "palliated\n", - "palliates\n", - "palliating\n", - "palliation\n", - "palliations\n", - "palliative\n", - "pallid\n", - "pallidly\n", - "pallier\n", - "palliest\n", - "palling\n", - "pallium\n", - "palliums\n", - "pallor\n", - "pallors\n", - "palls\n", - "pally\n", - "palm\n", - "palmar\n", - "palmary\n", - "palmate\n", - "palmated\n", - "palmed\n", - "palmer\n", - "palmers\n", - "palmette\n", - "palmettes\n", - "palmetto\n", - "palmettoes\n", - "palmettos\n", - "palmier\n", - "palmiest\n", - "palming\n", - "palmist\n", - "palmistries\n", - "palmistry\n", - "palmists\n", - "palmitin\n", - "palmitins\n", - "palmlike\n", - "palms\n", - "palmy\n", - "palmyra\n", - "palmyras\n", - "palomino\n", - "palominos\n", - "palooka\n", - "palookas\n", - "palp\n", - "palpable\n", - "palpably\n", - "palpal\n", - "palpate\n", - "palpated\n", - "palpates\n", - "palpating\n", - "palpation\n", - "palpations\n", - "palpator\n", - "palpators\n", - "palpebra\n", - "palpebrae\n", - "palpi\n", - "palpitate\n", - "palpitation\n", - "palpitations\n", - "palps\n", - "palpus\n", - "pals\n", - "palsied\n", - "palsies\n", - "palsy\n", - "palsying\n", - "palter\n", - "paltered\n", - "palterer\n", - "palterers\n", - "paltering\n", - "palters\n", - "paltrier\n", - "paltriest\n", - "paltrily\n", - "paltry\n", - "paludal\n", - "paludism\n", - "paludisms\n", - "paly\n", - "pam\n", - "pampa\n", - "pampas\n", - "pampean\n", - "pampeans\n", - "pamper\n", - "pampered\n", - "pamperer\n", - "pamperers\n", - "pampering\n", - "pampero\n", - "pamperos\n", - "pampers\n", - "pamphlet\n", - "pamphleteer\n", - "pamphleteers\n", - "pamphlets\n", - "pams\n", - "pan\n", - "panacea\n", - "panacean\n", - "panaceas\n", - "panache\n", - "panaches\n", - "panada\n", - "panadas\n", - "panama\n", - "panamas\n", - "panatela\n", - "panatelas\n", - "pancake\n", - "pancaked\n", - "pancakes\n", - "pancaking\n", - "panchax\n", - "panchaxes\n", - "pancreas\n", - "pancreases\n", - "pancreatic\n", - "pancreatitis\n", - "panda\n", - "pandani\n", - "pandanus\n", - "pandanuses\n", - "pandas\n", - "pandect\n", - "pandects\n", - "pandemic\n", - "pandemics\n", - "pandemonium\n", - "pandemoniums\n", - "pander\n", - "pandered\n", - "panderer\n", - "panderers\n", - "pandering\n", - "panders\n", - "pandied\n", - "pandies\n", - "pandit\n", - "pandits\n", - "pandoor\n", - "pandoors\n", - "pandora\n", - "pandoras\n", - "pandore\n", - "pandores\n", - "pandour\n", - "pandours\n", - "pandowdies\n", - "pandowdy\n", - "pandura\n", - "panduras\n", - "pandy\n", - "pandying\n", - "pane\n", - "paned\n", - "panegyric\n", - "panegyrics\n", - "panegyrist\n", - "panegyrists\n", - "panel\n", - "paneled\n", - "paneling\n", - "panelings\n", - "panelist\n", - "panelists\n", - "panelled\n", - "panelling\n", - "panels\n", - "panes\n", - "panetela\n", - "panetelas\n", - "panfish\n", - "panfishes\n", - "panful\n", - "panfuls\n", - "pang\n", - "panga\n", - "pangas\n", - "panged\n", - "pangen\n", - "pangens\n", - "panging\n", - "pangolin\n", - "pangolins\n", - "pangs\n", - "panhandle\n", - "panhandled\n", - "panhandler\n", - "panhandlers\n", - "panhandles\n", - "panhandling\n", - "panhuman\n", - "panic\n", - "panicked\n", - "panickier\n", - "panickiest\n", - "panicking\n", - "panicky\n", - "panicle\n", - "panicled\n", - "panicles\n", - "panics\n", - "panicum\n", - "panicums\n", - "panier\n", - "paniers\n", - "panmixia\n", - "panmixias\n", - "panne\n", - "panned\n", - "pannes\n", - "pannier\n", - "panniers\n", - "pannikin\n", - "pannikins\n", - "panning\n", - "panocha\n", - "panochas\n", - "panoche\n", - "panoches\n", - "panoplies\n", - "panoply\n", - "panoptic\n", - "panorama\n", - "panoramas\n", - "panoramic\n", - "panpipe\n", - "panpipes\n", - "pans\n", - "pansies\n", - "pansophies\n", - "pansophy\n", - "pansy\n", - "pant\n", - "pantaloons\n", - "panted\n", - "pantheon\n", - "pantheons\n", - "panther\n", - "panthers\n", - "pantie\n", - "panties\n", - "pantile\n", - "pantiled\n", - "pantiles\n", - "panting\n", - "pantofle\n", - "pantofles\n", - "pantomime\n", - "pantomimed\n", - "pantomimes\n", - "pantomiming\n", - "pantoum\n", - "pantoums\n", - "pantries\n", - "pantry\n", - "pants\n", - "pantsuit\n", - "pantsuits\n", - "panty\n", - "panzer\n", - "panzers\n", - "pap\n", - "papa\n", - "papacies\n", - "papacy\n", - "papain\n", - "papains\n", - "papal\n", - "papally\n", - "papas\n", - "papaw\n", - "papaws\n", - "papaya\n", - "papayan\n", - "papayas\n", - "paper\n", - "paperboard\n", - "paperboards\n", - "paperboy\n", - "paperboys\n", - "papered\n", - "paperer\n", - "paperers\n", - "paperhanger\n", - "paperhangers\n", - "paperhanging\n", - "paperhangings\n", - "papering\n", - "papers\n", - "paperweight\n", - "paperweights\n", - "paperwork\n", - "papery\n", - "paphian\n", - "paphians\n", - "papilla\n", - "papillae\n", - "papillar\n", - "papillon\n", - "papillons\n", - "papist\n", - "papistic\n", - "papistries\n", - "papistry\n", - "papists\n", - "papoose\n", - "papooses\n", - "pappi\n", - "pappier\n", - "pappies\n", - "pappiest\n", - "pappoose\n", - "pappooses\n", - "pappose\n", - "pappous\n", - "pappus\n", - "pappy\n", - "paprica\n", - "papricas\n", - "paprika\n", - "paprikas\n", - "paps\n", - "papula\n", - "papulae\n", - "papulan\n", - "papular\n", - "papule\n", - "papules\n", - "papulose\n", - "papyral\n", - "papyri\n", - "papyrian\n", - "papyrine\n", - "papyrus\n", - "papyruses\n", - "par\n", - "para\n", - "parable\n", - "parables\n", - "parabola\n", - "parabolas\n", - "parachor\n", - "parachors\n", - "parachute\n", - "parachuted\n", - "parachutes\n", - "parachuting\n", - "parachutist\n", - "parachutists\n", - "parade\n", - "paraded\n", - "parader\n", - "paraders\n", - "parades\n", - "paradigm\n", - "paradigms\n", - "parading\n", - "paradise\n", - "paradises\n", - "parados\n", - "paradoses\n", - "paradox\n", - "paradoxes\n", - "paradoxical\n", - "paradoxically\n", - "paradrop\n", - "paradropped\n", - "paradropping\n", - "paradrops\n", - "paraffin\n", - "paraffined\n", - "paraffinic\n", - "paraffining\n", - "paraffins\n", - "paraform\n", - "paraforms\n", - "paragoge\n", - "paragoges\n", - "paragon\n", - "paragoned\n", - "paragoning\n", - "paragons\n", - "paragraph\n", - "paragraphs\n", - "parakeet\n", - "parakeets\n", - "parallax\n", - "parallaxes\n", - "parallel\n", - "paralleled\n", - "paralleling\n", - "parallelism\n", - "parallelisms\n", - "parallelled\n", - "parallelling\n", - "parallelogram\n", - "parallelograms\n", - "parallels\n", - "paralyse\n", - "paralysed\n", - "paralyses\n", - "paralysing\n", - "paralysis\n", - "paralytic\n", - "paralyze\n", - "paralyzed\n", - "paralyzes\n", - "paralyzing\n", - "paralyzingly\n", - "parament\n", - "paramenta\n", - "paraments\n", - "parameter\n", - "parameters\n", - "parametric\n", - "paramo\n", - "paramos\n", - "paramount\n", - "paramour\n", - "paramours\n", - "parang\n", - "parangs\n", - "paranoea\n", - "paranoeas\n", - "paranoia\n", - "paranoias\n", - "paranoid\n", - "paranoids\n", - "parapet\n", - "parapets\n", - "paraph\n", - "paraphernalia\n", - "paraphrase\n", - "paraphrased\n", - "paraphrases\n", - "paraphrasing\n", - "paraphs\n", - "paraplegia\n", - "paraplegias\n", - "paraplegic\n", - "paraplegics\n", - "paraquat\n", - "paraquats\n", - "paraquet\n", - "paraquets\n", - "paras\n", - "parasang\n", - "parasangs\n", - "parashah\n", - "parashioth\n", - "parashoth\n", - "parasite\n", - "parasites\n", - "parasitic\n", - "parasitism\n", - "parasitisms\n", - "parasol\n", - "parasols\n", - "parasternal\n", - "paratrooper\n", - "paratroopers\n", - "paratroops\n", - "paravane\n", - "paravanes\n", - "parboil\n", - "parboiled\n", - "parboiling\n", - "parboils\n", - "parcel\n", - "parceled\n", - "parceling\n", - "parcelled\n", - "parcelling\n", - "parcels\n", - "parcener\n", - "parceners\n", - "parch\n", - "parched\n", - "parches\n", - "parching\n", - "parchment\n", - "parchments\n", - "pard\n", - "pardah\n", - "pardahs\n", - "pardee\n", - "pardi\n", - "pardie\n", - "pardine\n", - "pardner\n", - "pardners\n", - "pardon\n", - "pardonable\n", - "pardoned\n", - "pardoner\n", - "pardoners\n", - "pardoning\n", - "pardons\n", - "pards\n", - "pardy\n", - "pare\n", - "parecism\n", - "parecisms\n", - "pared\n", - "paregoric\n", - "paregorics\n", - "pareira\n", - "pareiras\n", - "parent\n", - "parentage\n", - "parentages\n", - "parental\n", - "parented\n", - "parentheses\n", - "parenthesis\n", - "parenthetic\n", - "parenthetical\n", - "parenthetically\n", - "parenthood\n", - "parenthoods\n", - "parenting\n", - "parents\n", - "parer\n", - "parers\n", - "pares\n", - "pareses\n", - "paresis\n", - "paresthesia\n", - "paretic\n", - "paretics\n", - "pareu\n", - "pareus\n", - "pareve\n", - "parfait\n", - "parfaits\n", - "parflesh\n", - "parfleshes\n", - "parfocal\n", - "parge\n", - "parged\n", - "parges\n", - "parget\n", - "pargeted\n", - "pargeting\n", - "pargets\n", - "pargetted\n", - "pargetting\n", - "parging\n", - "pargo\n", - "pargos\n", - "parhelia\n", - "parhelic\n", - "pariah\n", - "pariahs\n", - "parian\n", - "parians\n", - "paries\n", - "parietal\n", - "parietals\n", - "parietes\n", - "paring\n", - "parings\n", - "paris\n", - "parises\n", - "parish\n", - "parishes\n", - "parishioner\n", - "parishioners\n", - "parities\n", - "parity\n", - "park\n", - "parka\n", - "parkas\n", - "parked\n", - "parker\n", - "parkers\n", - "parking\n", - "parkings\n", - "parkland\n", - "parklands\n", - "parklike\n", - "parks\n", - "parkway\n", - "parkways\n", - "parlance\n", - "parlances\n", - "parlando\n", - "parlante\n", - "parlay\n", - "parlayed\n", - "parlaying\n", - "parlays\n", - "parle\n", - "parled\n", - "parles\n", - "parley\n", - "parleyed\n", - "parleyer\n", - "parleyers\n", - "parleying\n", - "parleys\n", - "parliament\n", - "parliamentarian\n", - "parliamentarians\n", - "parliamentary\n", - "parliaments\n", - "parling\n", - "parlor\n", - "parlors\n", - "parlour\n", - "parlours\n", - "parlous\n", - "parochial\n", - "parochialism\n", - "parochialisms\n", - "parodic\n", - "parodied\n", - "parodies\n", - "parodist\n", - "parodists\n", - "parodoi\n", - "parodos\n", - "parody\n", - "parodying\n", - "parol\n", - "parole\n", - "paroled\n", - "parolee\n", - "parolees\n", - "paroles\n", - "paroling\n", - "parols\n", - "paronym\n", - "paronyms\n", - "paroquet\n", - "paroquets\n", - "parotic\n", - "parotid\n", - "parotids\n", - "parotoid\n", - "parotoids\n", - "parous\n", - "paroxysm\n", - "paroxysmal\n", - "paroxysms\n", - "parquet\n", - "parqueted\n", - "parqueting\n", - "parquetries\n", - "parquetry\n", - "parquets\n", - "parr\n", - "parrakeet\n", - "parrakeets\n", - "parral\n", - "parrals\n", - "parred\n", - "parrel\n", - "parrels\n", - "parridge\n", - "parridges\n", - "parried\n", - "parries\n", - "parring\n", - "parritch\n", - "parritches\n", - "parroket\n", - "parrokets\n", - "parrot\n", - "parroted\n", - "parroter\n", - "parroters\n", - "parroting\n", - "parrots\n", - "parroty\n", - "parrs\n", - "parry\n", - "parrying\n", - "pars\n", - "parsable\n", - "parse\n", - "parsec\n", - "parsecs\n", - "parsed\n", - "parser\n", - "parsers\n", - "parses\n", - "parsimonies\n", - "parsimonious\n", - "parsimoniously\n", - "parsimony\n", - "parsing\n", - "parsley\n", - "parsleys\n", - "parsnip\n", - "parsnips\n", - "parson\n", - "parsonage\n", - "parsonages\n", - "parsonic\n", - "parsons\n", - "part\n", - "partake\n", - "partaken\n", - "partaker\n", - "partakers\n", - "partakes\n", - "partaking\n", - "partan\n", - "partans\n", - "parted\n", - "parterre\n", - "parterres\n", - "partial\n", - "partialities\n", - "partiality\n", - "partially\n", - "partials\n", - "partible\n", - "participant\n", - "participants\n", - "participate\n", - "participated\n", - "participates\n", - "participating\n", - "participation\n", - "participations\n", - "participatory\n", - "participial\n", - "participle\n", - "participles\n", - "particle\n", - "particles\n", - "particular\n", - "particularly\n", - "particulars\n", - "partied\n", - "parties\n", - "parting\n", - "partings\n", - "partisan\n", - "partisans\n", - "partisanship\n", - "partisanships\n", - "partita\n", - "partitas\n", - "partite\n", - "partition\n", - "partitions\n", - "partizan\n", - "partizans\n", - "partlet\n", - "partlets\n", - "partly\n", - "partner\n", - "partnered\n", - "partnering\n", - "partners\n", - "partnership\n", - "partnerships\n", - "parton\n", - "partons\n", - "partook\n", - "partridge\n", - "partridges\n", - "parts\n", - "parturition\n", - "parturitions\n", - "partway\n", - "party\n", - "partying\n", - "parura\n", - "paruras\n", - "parure\n", - "parures\n", - "parve\n", - "parvenu\n", - "parvenue\n", - "parvenus\n", - "parvis\n", - "parvise\n", - "parvises\n", - "parvolin\n", - "parvolins\n", - "pas\n", - "paschal\n", - "paschals\n", - "pase\n", - "paseo\n", - "paseos\n", - "pases\n", - "pash\n", - "pasha\n", - "pashadom\n", - "pashadoms\n", - "pashalic\n", - "pashalics\n", - "pashalik\n", - "pashaliks\n", - "pashas\n", - "pashed\n", - "pashes\n", - "pashing\n", - "pasquil\n", - "pasquils\n", - "pass\n", - "passable\n", - "passably\n", - "passade\n", - "passades\n", - "passado\n", - "passadoes\n", - "passados\n", - "passage\n", - "passaged\n", - "passages\n", - "passageway\n", - "passageways\n", - "passaging\n", - "passant\n", - "passband\n", - "passbands\n", - "passbook\n", - "passbooks\n", - "passe\n", - "passed\n", - "passee\n", - "passel\n", - "passels\n", - "passenger\n", - "passengers\n", - "passer\n", - "passerby\n", - "passers\n", - "passersby\n", - "passes\n", - "passible\n", - "passim\n", - "passing\n", - "passings\n", - "passion\n", - "passionate\n", - "passionateless\n", - "passionately\n", - "passions\n", - "passive\n", - "passively\n", - "passives\n", - "passivities\n", - "passivity\n", - "passkey\n", - "passkeys\n", - "passless\n", - "passover\n", - "passovers\n", - "passport\n", - "passports\n", - "passus\n", - "passuses\n", - "password\n", - "passwords\n", - "past\n", - "pasta\n", - "pastas\n", - "paste\n", - "pasteboard\n", - "pasteboards\n", - "pasted\n", - "pastel\n", - "pastels\n", - "paster\n", - "pastern\n", - "pasterns\n", - "pasters\n", - "pastes\n", - "pasteurization\n", - "pasteurizations\n", - "pasteurize\n", - "pasteurized\n", - "pasteurizer\n", - "pasteurizers\n", - "pasteurizes\n", - "pasteurizing\n", - "pasticci\n", - "pastiche\n", - "pastiches\n", - "pastier\n", - "pasties\n", - "pastiest\n", - "pastil\n", - "pastille\n", - "pastilles\n", - "pastils\n", - "pastime\n", - "pastimes\n", - "pastina\n", - "pastinas\n", - "pasting\n", - "pastness\n", - "pastnesses\n", - "pastor\n", - "pastoral\n", - "pastorals\n", - "pastorate\n", - "pastorates\n", - "pastored\n", - "pastoring\n", - "pastors\n", - "pastrami\n", - "pastramis\n", - "pastries\n", - "pastromi\n", - "pastromis\n", - "pastry\n", - "pasts\n", - "pastural\n", - "pasture\n", - "pastured\n", - "pasturer\n", - "pasturers\n", - "pastures\n", - "pasturing\n", - "pasty\n", - "pat\n", - "pataca\n", - "patacas\n", - "patagia\n", - "patagium\n", - "patamar\n", - "patamars\n", - "patch\n", - "patched\n", - "patcher\n", - "patchers\n", - "patches\n", - "patchier\n", - "patchiest\n", - "patchily\n", - "patching\n", - "patchwork\n", - "patchworks\n", - "patchy\n", - "pate\n", - "pated\n", - "patella\n", - "patellae\n", - "patellar\n", - "patellas\n", - "paten\n", - "patencies\n", - "patency\n", - "patens\n", - "patent\n", - "patented\n", - "patentee\n", - "patentees\n", - "patenting\n", - "patently\n", - "patentor\n", - "patentors\n", - "patents\n", - "pater\n", - "paternal\n", - "paternally\n", - "paternities\n", - "paternity\n", - "paters\n", - "pates\n", - "path\n", - "pathetic\n", - "pathetically\n", - "pathfinder\n", - "pathfinders\n", - "pathless\n", - "pathogen\n", - "pathogens\n", - "pathologic\n", - "pathological\n", - "pathologies\n", - "pathologist\n", - "pathologists\n", - "pathology\n", - "pathos\n", - "pathoses\n", - "paths\n", - "pathway\n", - "pathways\n", - "patience\n", - "patiences\n", - "patient\n", - "patienter\n", - "patientest\n", - "patiently\n", - "patients\n", - "patin\n", - "patina\n", - "patinae\n", - "patinas\n", - "patine\n", - "patined\n", - "patines\n", - "patining\n", - "patins\n", - "patio\n", - "patios\n", - "patly\n", - "patness\n", - "patnesses\n", - "patois\n", - "patriarch\n", - "patriarchal\n", - "patriarchies\n", - "patriarchs\n", - "patriarchy\n", - "patrician\n", - "patricians\n", - "patricide\n", - "patricides\n", - "patrimonial\n", - "patrimonies\n", - "patrimony\n", - "patriot\n", - "patriotic\n", - "patriotically\n", - "patriotism\n", - "patriotisms\n", - "patriots\n", - "patrol\n", - "patrolled\n", - "patrolling\n", - "patrolman\n", - "patrolmen\n", - "patrols\n", - "patron\n", - "patronage\n", - "patronages\n", - "patronal\n", - "patronize\n", - "patronized\n", - "patronizes\n", - "patronizing\n", - "patronly\n", - "patrons\n", - "patroon\n", - "patroons\n", - "pats\n", - "patsies\n", - "patsy\n", - "pattamar\n", - "pattamars\n", - "patted\n", - "pattee\n", - "patten\n", - "pattens\n", - "patter\n", - "pattered\n", - "patterer\n", - "patterers\n", - "pattering\n", - "pattern\n", - "patterned\n", - "patterning\n", - "patterns\n", - "patters\n", - "pattie\n", - "patties\n", - "patting\n", - "patty\n", - "pattypan\n", - "pattypans\n", - "patulent\n", - "patulous\n", - "paty\n", - "paucities\n", - "paucity\n", - "paughty\n", - "pauldron\n", - "pauldrons\n", - "paulin\n", - "paulins\n", - "paunch\n", - "paunched\n", - "paunches\n", - "paunchier\n", - "paunchiest\n", - "paunchy\n", - "pauper\n", - "paupered\n", - "paupering\n", - "pauperism\n", - "pauperisms\n", - "pauperize\n", - "pauperized\n", - "pauperizes\n", - "pauperizing\n", - "paupers\n", - "pausal\n", - "pause\n", - "paused\n", - "pauser\n", - "pausers\n", - "pauses\n", - "pausing\n", - "pavan\n", - "pavane\n", - "pavanes\n", - "pavans\n", - "pave\n", - "paved\n", - "pavement\n", - "pavements\n", - "paver\n", - "pavers\n", - "paves\n", - "pavid\n", - "pavilion\n", - "pavilioned\n", - "pavilioning\n", - "pavilions\n", - "pavin\n", - "paving\n", - "pavings\n", - "pavins\n", - "pavior\n", - "paviors\n", - "paviour\n", - "paviours\n", - "pavis\n", - "pavise\n", - "paviser\n", - "pavisers\n", - "pavises\n", - "pavonine\n", - "paw\n", - "pawed\n", - "pawer\n", - "pawers\n", - "pawing\n", - "pawkier\n", - "pawkiest\n", - "pawkily\n", - "pawky\n", - "pawl\n", - "pawls\n", - "pawn\n", - "pawnable\n", - "pawnage\n", - "pawnages\n", - "pawnbroker\n", - "pawnbrokers\n", - "pawned\n", - "pawnee\n", - "pawnees\n", - "pawner\n", - "pawners\n", - "pawning\n", - "pawnor\n", - "pawnors\n", - "pawns\n", - "pawnshop\n", - "pawnshops\n", - "pawpaw\n", - "pawpaws\n", - "paws\n", - "pax\n", - "paxes\n", - "paxwax\n", - "paxwaxes\n", - "pay\n", - "payable\n", - "payably\n", - "paycheck\n", - "paychecks\n", - "payday\n", - "paydays\n", - "payed\n", - "payee\n", - "payees\n", - "payer\n", - "payers\n", - "paying\n", - "payload\n", - "payloads\n", - "payment\n", - "payments\n", - "paynim\n", - "paynims\n", - "payoff\n", - "payoffs\n", - "payola\n", - "payolas\n", - "payor\n", - "payors\n", - "payroll\n", - "payrolls\n", - "pays\n", - "pe\n", - "pea\n", - "peace\n", - "peaceable\n", - "peaceably\n", - "peaced\n", - "peaceful\n", - "peacefuller\n", - "peacefullest\n", - "peacefully\n", - "peacekeeper\n", - "peacekeepers\n", - "peacekeeping\n", - "peacekeepings\n", - "peacemaker\n", - "peacemakers\n", - "peaces\n", - "peacetime\n", - "peacetimes\n", - "peach\n", - "peached\n", - "peacher\n", - "peachers\n", - "peaches\n", - "peachier\n", - "peachiest\n", - "peaching\n", - "peachy\n", - "peacing\n", - "peacoat\n", - "peacoats\n", - "peacock\n", - "peacocked\n", - "peacockier\n", - "peacockiest\n", - "peacocking\n", - "peacocks\n", - "peacocky\n", - "peafowl\n", - "peafowls\n", - "peag\n", - "peage\n", - "peages\n", - "peags\n", - "peahen\n", - "peahens\n", - "peak\n", - "peaked\n", - "peakier\n", - "peakiest\n", - "peaking\n", - "peakish\n", - "peakless\n", - "peaklike\n", - "peaks\n", - "peaky\n", - "peal\n", - "pealed\n", - "pealike\n", - "pealing\n", - "peals\n", - "pean\n", - "peans\n", - "peanut\n", - "peanuts\n", - "pear\n", - "pearl\n", - "pearlash\n", - "pearlashes\n", - "pearled\n", - "pearler\n", - "pearlers\n", - "pearlier\n", - "pearliest\n", - "pearling\n", - "pearlite\n", - "pearlites\n", - "pearls\n", - "pearly\n", - "pearmain\n", - "pearmains\n", - "pears\n", - "peart\n", - "pearter\n", - "peartest\n", - "peartly\n", - "peas\n", - "peasant\n", - "peasantries\n", - "peasantry\n", - "peasants\n", - "peascod\n", - "peascods\n", - "pease\n", - "peasecod\n", - "peasecods\n", - "peasen\n", - "peases\n", - "peat\n", - "peatier\n", - "peatiest\n", - "peats\n", - "peaty\n", - "peavey\n", - "peaveys\n", - "peavies\n", - "peavy\n", - "pebble\n", - "pebbled\n", - "pebbles\n", - "pebblier\n", - "pebbliest\n", - "pebbling\n", - "pebbly\n", - "pecan\n", - "pecans\n", - "peccable\n", - "peccadillo\n", - "peccadilloes\n", - "peccadillos\n", - "peccancies\n", - "peccancy\n", - "peccant\n", - "peccaries\n", - "peccary\n", - "peccavi\n", - "peccavis\n", - "pech\n", - "pechan\n", - "pechans\n", - "peched\n", - "peching\n", - "pechs\n", - "peck\n", - "pecked\n", - "pecker\n", - "peckers\n", - "peckier\n", - "peckiest\n", - "pecking\n", - "pecks\n", - "pecky\n", - "pectase\n", - "pectases\n", - "pectate\n", - "pectates\n", - "pecten\n", - "pectens\n", - "pectic\n", - "pectin\n", - "pectines\n", - "pectins\n", - "pectize\n", - "pectized\n", - "pectizes\n", - "pectizing\n", - "pectoral\n", - "pectorals\n", - "peculatation\n", - "peculatations\n", - "peculate\n", - "peculated\n", - "peculates\n", - "peculating\n", - "peculia\n", - "peculiar\n", - "peculiarities\n", - "peculiarity\n", - "peculiarly\n", - "peculiars\n", - "peculium\n", - "pecuniary\n", - "ped\n", - "pedagog\n", - "pedagogic\n", - "pedagogical\n", - "pedagogies\n", - "pedagogs\n", - "pedagogue\n", - "pedagogues\n", - "pedagogy\n", - "pedal\n", - "pedaled\n", - "pedalfer\n", - "pedalfers\n", - "pedalier\n", - "pedaliers\n", - "pedaling\n", - "pedalled\n", - "pedalling\n", - "pedals\n", - "pedant\n", - "pedantic\n", - "pedantries\n", - "pedantry\n", - "pedants\n", - "pedate\n", - "pedately\n", - "peddle\n", - "peddled\n", - "peddler\n", - "peddleries\n", - "peddlers\n", - "peddlery\n", - "peddles\n", - "peddling\n", - "pederast\n", - "pederasts\n", - "pederasty\n", - "pedes\n", - "pedestal\n", - "pedestaled\n", - "pedestaling\n", - "pedestalled\n", - "pedestalling\n", - "pedestals\n", - "pedestrian\n", - "pedestrians\n", - "pediatric\n", - "pediatrician\n", - "pediatricians\n", - "pediatrics\n", - "pedicab\n", - "pedicabs\n", - "pedicel\n", - "pedicels\n", - "pedicle\n", - "pedicled\n", - "pedicles\n", - "pedicure\n", - "pedicured\n", - "pedicures\n", - "pedicuring\n", - "pediform\n", - "pedigree\n", - "pedigrees\n", - "pediment\n", - "pediments\n", - "pedipalp\n", - "pedipalps\n", - "pedlar\n", - "pedlaries\n", - "pedlars\n", - "pedlary\n", - "pedler\n", - "pedlers\n", - "pedocal\n", - "pedocals\n", - "pedologies\n", - "pedology\n", - "pedro\n", - "pedros\n", - "peds\n", - "peduncle\n", - "peduncles\n", - "pee\n", - "peebeen\n", - "peebeens\n", - "peed\n", - "peeing\n", - "peek\n", - "peekaboo\n", - "peekaboos\n", - "peeked\n", - "peeking\n", - "peeks\n", - "peel\n", - "peelable\n", - "peeled\n", - "peeler\n", - "peelers\n", - "peeling\n", - "peelings\n", - "peels\n", - "peen\n", - "peened\n", - "peening\n", - "peens\n", - "peep\n", - "peeped\n", - "peeper\n", - "peepers\n", - "peephole\n", - "peepholes\n", - "peeping\n", - "peeps\n", - "peepshow\n", - "peepshows\n", - "peepul\n", - "peepuls\n", - "peer\n", - "peerage\n", - "peerages\n", - "peered\n", - "peeress\n", - "peeresses\n", - "peerie\n", - "peeries\n", - "peering\n", - "peerless\n", - "peers\n", - "peery\n", - "pees\n", - "peesweep\n", - "peesweeps\n", - "peetweet\n", - "peetweets\n", - "peeve\n", - "peeved\n", - "peeves\n", - "peeving\n", - "peevish\n", - "peevishly\n", - "peevishness\n", - "peevishnesses\n", - "peewee\n", - "peewees\n", - "peewit\n", - "peewits\n", - "peg\n", - "pegboard\n", - "pegboards\n", - "pegbox\n", - "pegboxes\n", - "pegged\n", - "pegging\n", - "pegless\n", - "peglike\n", - "pegs\n", - "peignoir\n", - "peignoirs\n", - "pein\n", - "peined\n", - "peining\n", - "peins\n", - "peise\n", - "peised\n", - "peises\n", - "peising\n", - "pekan\n", - "pekans\n", - "peke\n", - "pekes\n", - "pekin\n", - "pekins\n", - "pekoe\n", - "pekoes\n", - "pelage\n", - "pelages\n", - "pelagial\n", - "pelagic\n", - "pele\n", - "pelerine\n", - "pelerines\n", - "peles\n", - "pelf\n", - "pelfs\n", - "pelican\n", - "pelicans\n", - "pelisse\n", - "pelisses\n", - "pelite\n", - "pelites\n", - "pelitic\n", - "pellagra\n", - "pellagras\n", - "pellet\n", - "pelletal\n", - "pelleted\n", - "pelleting\n", - "pelletize\n", - "pelletized\n", - "pelletizes\n", - "pelletizing\n", - "pellets\n", - "pellicle\n", - "pellicles\n", - "pellmell\n", - "pellmells\n", - "pellucid\n", - "pelon\n", - "peloria\n", - "pelorian\n", - "pelorias\n", - "peloric\n", - "pelorus\n", - "peloruses\n", - "pelota\n", - "pelotas\n", - "pelt\n", - "peltast\n", - "peltasts\n", - "peltate\n", - "pelted\n", - "pelter\n", - "pelters\n", - "pelting\n", - "peltries\n", - "peltry\n", - "pelts\n", - "pelves\n", - "pelvic\n", - "pelvics\n", - "pelvis\n", - "pelvises\n", - "pembina\n", - "pembinas\n", - "pemican\n", - "pemicans\n", - "pemmican\n", - "pemmicans\n", - "pemoline\n", - "pemolines\n", - "pemphix\n", - "pemphixes\n", - "pen\n", - "penal\n", - "penalise\n", - "penalised\n", - "penalises\n", - "penalising\n", - "penalities\n", - "penality\n", - "penalize\n", - "penalized\n", - "penalizes\n", - "penalizing\n", - "penally\n", - "penalties\n", - "penalty\n", - "penance\n", - "penanced\n", - "penances\n", - "penancing\n", - "penang\n", - "penangs\n", - "penates\n", - "pence\n", - "pencel\n", - "pencels\n", - "penchant\n", - "penchants\n", - "pencil\n", - "penciled\n", - "penciler\n", - "pencilers\n", - "penciling\n", - "pencilled\n", - "pencilling\n", - "pencils\n", - "pend\n", - "pendaflex\n", - "pendant\n", - "pendants\n", - "pended\n", - "pendencies\n", - "pendency\n", - "pendent\n", - "pendents\n", - "pending\n", - "pends\n", - "pendular\n", - "pendulous\n", - "pendulum\n", - "pendulums\n", - "penes\n", - "penetrable\n", - "penetration\n", - "penetrations\n", - "penetrative\n", - "pengo\n", - "pengos\n", - "penguin\n", - "penguins\n", - "penial\n", - "penicil\n", - "penicillin\n", - "penicillins\n", - "penicils\n", - "penile\n", - "peninsula\n", - "peninsular\n", - "peninsulas\n", - "penis\n", - "penises\n", - "penitence\n", - "penitences\n", - "penitent\n", - "penitential\n", - "penitentiaries\n", - "penitentiary\n", - "penitents\n", - "penknife\n", - "penknives\n", - "penlight\n", - "penlights\n", - "penlite\n", - "penlites\n", - "penman\n", - "penmanship\n", - "penmanships\n", - "penmen\n", - "penna\n", - "pennae\n", - "penname\n", - "pennames\n", - "pennant\n", - "pennants\n", - "pennate\n", - "pennated\n", - "penned\n", - "penner\n", - "penners\n", - "penni\n", - "pennia\n", - "pennies\n", - "penniless\n", - "pennine\n", - "pennines\n", - "penning\n", - "pennis\n", - "pennon\n", - "pennoned\n", - "pennons\n", - "pennsylvania\n", - "penny\n", - "penoche\n", - "penoches\n", - "penologies\n", - "penology\n", - "penoncel\n", - "penoncels\n", - "penpoint\n", - "penpoints\n", - "pens\n", - "pensee\n", - "pensees\n", - "pensil\n", - "pensile\n", - "pensils\n", - "pension\n", - "pensione\n", - "pensioned\n", - "pensioner\n", - "pensioners\n", - "pensiones\n", - "pensioning\n", - "pensions\n", - "pensive\n", - "pensively\n", - "penster\n", - "pensters\n", - "penstock\n", - "penstocks\n", - "pent\n", - "pentacle\n", - "pentacles\n", - "pentad\n", - "pentads\n", - "pentagon\n", - "pentagonal\n", - "pentagons\n", - "pentagram\n", - "pentagrams\n", - "pentameter\n", - "pentameters\n", - "pentane\n", - "pentanes\n", - "pentarch\n", - "pentarchs\n", - "penthouse\n", - "penthouses\n", - "pentomic\n", - "pentosan\n", - "pentosans\n", - "pentose\n", - "pentoses\n", - "pentyl\n", - "pentyls\n", - "penuche\n", - "penuches\n", - "penuchi\n", - "penuchis\n", - "penuchle\n", - "penuchles\n", - "penuckle\n", - "penuckles\n", - "penult\n", - "penults\n", - "penumbra\n", - "penumbrae\n", - "penumbras\n", - "penuries\n", - "penurious\n", - "penury\n", - "peon\n", - "peonage\n", - "peonages\n", - "peones\n", - "peonies\n", - "peonism\n", - "peonisms\n", - "peons\n", - "peony\n", - "people\n", - "peopled\n", - "peopler\n", - "peoplers\n", - "peoples\n", - "peopling\n", - "pep\n", - "peperoni\n", - "peperonis\n", - "pepla\n", - "peplos\n", - "peploses\n", - "peplum\n", - "peplumed\n", - "peplums\n", - "peplus\n", - "pepluses\n", - "pepo\n", - "peponida\n", - "peponidas\n", - "peponium\n", - "peponiums\n", - "pepos\n", - "pepped\n", - "pepper\n", - "peppercorn\n", - "peppercorns\n", - "peppered\n", - "pepperer\n", - "pepperers\n", - "peppering\n", - "peppermint\n", - "peppermints\n", - "peppers\n", - "peppery\n", - "peppier\n", - "peppiest\n", - "peppily\n", - "pepping\n", - "peppy\n", - "peps\n", - "pepsin\n", - "pepsine\n", - "pepsines\n", - "pepsins\n", - "peptic\n", - "peptics\n", - "peptid\n", - "peptide\n", - "peptides\n", - "peptidic\n", - "peptids\n", - "peptize\n", - "peptized\n", - "peptizer\n", - "peptizers\n", - "peptizes\n", - "peptizing\n", - "peptone\n", - "peptones\n", - "peptonic\n", - "per\n", - "peracid\n", - "peracids\n", - "perambulate\n", - "perambulated\n", - "perambulates\n", - "perambulating\n", - "perambulation\n", - "perambulations\n", - "percale\n", - "percales\n", - "perceivable\n", - "perceive\n", - "perceived\n", - "perceives\n", - "perceiving\n", - "percent\n", - "percentage\n", - "percentages\n", - "percentile\n", - "percentiles\n", - "percents\n", - "percept\n", - "perceptible\n", - "perceptibly\n", - "perception\n", - "perceptions\n", - "perceptive\n", - "perceptively\n", - "percepts\n", - "perch\n", - "perched\n", - "percher\n", - "perchers\n", - "perches\n", - "perching\n", - "percoid\n", - "percoids\n", - "percolate\n", - "percolated\n", - "percolates\n", - "percolating\n", - "percolator\n", - "percolators\n", - "percuss\n", - "percussed\n", - "percusses\n", - "percussing\n", - "percussion\n", - "percussions\n", - "perdu\n", - "perdue\n", - "perdues\n", - "perdus\n", - "perdy\n", - "pere\n", - "peregrin\n", - "peregrins\n", - "peremptorily\n", - "peremptory\n", - "perennial\n", - "perennially\n", - "perennials\n", - "peres\n", - "perfect\n", - "perfecta\n", - "perfectas\n", - "perfected\n", - "perfecter\n", - "perfectest\n", - "perfectibilities\n", - "perfectibility\n", - "perfectible\n", - "perfecting\n", - "perfection\n", - "perfectionist\n", - "perfectionists\n", - "perfections\n", - "perfectly\n", - "perfectness\n", - "perfectnesses\n", - "perfecto\n", - "perfectos\n", - "perfects\n", - "perfidies\n", - "perfidious\n", - "perfidiously\n", - "perfidy\n", - "perforate\n", - "perforated\n", - "perforates\n", - "perforating\n", - "perforation\n", - "perforations\n", - "perforce\n", - "perform\n", - "performance\n", - "performances\n", - "performed\n", - "performer\n", - "performers\n", - "performing\n", - "performs\n", - "perfume\n", - "perfumed\n", - "perfumer\n", - "perfumers\n", - "perfumes\n", - "perfuming\n", - "perfunctory\n", - "perfuse\n", - "perfused\n", - "perfuses\n", - "perfusing\n", - "pergola\n", - "pergolas\n", - "perhaps\n", - "perhapses\n", - "peri\n", - "perianth\n", - "perianths\n", - "periapt\n", - "periapts\n", - "periblem\n", - "periblems\n", - "pericarp\n", - "pericarps\n", - "pericopae\n", - "pericope\n", - "pericopes\n", - "periderm\n", - "periderms\n", - "peridia\n", - "peridial\n", - "peridium\n", - "peridot\n", - "peridots\n", - "perigeal\n", - "perigean\n", - "perigee\n", - "perigees\n", - "perigon\n", - "perigons\n", - "perigynies\n", - "perigyny\n", - "peril\n", - "periled\n", - "periling\n", - "perilla\n", - "perillas\n", - "perilled\n", - "perilling\n", - "perilous\n", - "perilously\n", - "perils\n", - "perilune\n", - "perilunes\n", - "perimeter\n", - "perimeters\n", - "perinea\n", - "perineal\n", - "perineum\n", - "period\n", - "periodic\n", - "periodical\n", - "periodically\n", - "periodicals\n", - "periodid\n", - "periodids\n", - "periods\n", - "periotic\n", - "peripatetic\n", - "peripeties\n", - "peripety\n", - "peripheral\n", - "peripheries\n", - "periphery\n", - "peripter\n", - "peripters\n", - "perique\n", - "periques\n", - "peris\n", - "perisarc\n", - "perisarcs\n", - "periscope\n", - "periscopes\n", - "perish\n", - "perishable\n", - "perishables\n", - "perished\n", - "perishes\n", - "perishing\n", - "periwig\n", - "periwigs\n", - "perjure\n", - "perjured\n", - "perjurer\n", - "perjurers\n", - "perjures\n", - "perjuries\n", - "perjuring\n", - "perjury\n", - "perk\n", - "perked\n", - "perkier\n", - "perkiest\n", - "perkily\n", - "perking\n", - "perkish\n", - "perks\n", - "perky\n", - "perlite\n", - "perlites\n", - "perlitic\n", - "perm\n", - "permanence\n", - "permanences\n", - "permanencies\n", - "permanency\n", - "permanent\n", - "permanently\n", - "permanents\n", - "permeability\n", - "permeable\n", - "permease\n", - "permeases\n", - "permeate\n", - "permeated\n", - "permeates\n", - "permeating\n", - "permeation\n", - "permeations\n", - "permissible\n", - "permission\n", - "permissions\n", - "permissive\n", - "permissiveness\n", - "permissivenesses\n", - "permit\n", - "permits\n", - "permitted\n", - "permitting\n", - "perms\n", - "permute\n", - "permuted\n", - "permutes\n", - "permuting\n", - "pernicious\n", - "perniciously\n", - "peroneal\n", - "peroral\n", - "perorate\n", - "perorated\n", - "perorates\n", - "perorating\n", - "peroxid\n", - "peroxide\n", - "peroxided\n", - "peroxides\n", - "peroxiding\n", - "peroxids\n", - "perpend\n", - "perpended\n", - "perpendicular\n", - "perpendicularities\n", - "perpendicularity\n", - "perpendicularly\n", - "perpendiculars\n", - "perpending\n", - "perpends\n", - "perpent\n", - "perpents\n", - "perpetrate\n", - "perpetrated\n", - "perpetrates\n", - "perpetrating\n", - "perpetration\n", - "perpetrations\n", - "perpetrator\n", - "perpetrators\n", - "perpetual\n", - "perpetually\n", - "perpetuate\n", - "perpetuated\n", - "perpetuates\n", - "perpetuating\n", - "perpetuation\n", - "perpetuations\n", - "perpetuities\n", - "perpetuity\n", - "perplex\n", - "perplexed\n", - "perplexes\n", - "perplexing\n", - "perplexities\n", - "perplexity\n", - "perquisite\n", - "perquisites\n", - "perries\n", - "perron\n", - "perrons\n", - "perry\n", - "persalt\n", - "persalts\n", - "perse\n", - "persecute\n", - "persecuted\n", - "persecutes\n", - "persecuting\n", - "persecution\n", - "persecutions\n", - "persecutor\n", - "persecutors\n", - "perses\n", - "perseverance\n", - "perseverances\n", - "persevere\n", - "persevered\n", - "perseveres\n", - "persevering\n", - "persist\n", - "persisted\n", - "persistence\n", - "persistences\n", - "persistencies\n", - "persistency\n", - "persistent\n", - "persistently\n", - "persisting\n", - "persists\n", - "person\n", - "persona\n", - "personable\n", - "personae\n", - "personage\n", - "personages\n", - "personal\n", - "personalities\n", - "personality\n", - "personalize\n", - "personalized\n", - "personalizes\n", - "personalizing\n", - "personally\n", - "personals\n", - "personas\n", - "personification\n", - "personifications\n", - "personifies\n", - "personify\n", - "personnel\n", - "persons\n", - "perspective\n", - "perspectives\n", - "perspicacious\n", - "perspicacities\n", - "perspicacity\n", - "perspiration\n", - "perspirations\n", - "perspire\n", - "perspired\n", - "perspires\n", - "perspiring\n", - "perspiry\n", - "persuade\n", - "persuaded\n", - "persuades\n", - "persuading\n", - "persuasion\n", - "persuasions\n", - "persuasive\n", - "persuasively\n", - "persuasiveness\n", - "persuasivenesses\n", - "pert\n", - "pertain\n", - "pertained\n", - "pertaining\n", - "pertains\n", - "perter\n", - "pertest\n", - "pertinacious\n", - "pertinacities\n", - "pertinacity\n", - "pertinence\n", - "pertinences\n", - "pertinent\n", - "pertly\n", - "pertness\n", - "pertnesses\n", - "perturb\n", - "perturbation\n", - "perturbations\n", - "perturbed\n", - "perturbing\n", - "perturbs\n", - "peruke\n", - "perukes\n", - "perusal\n", - "perusals\n", - "peruse\n", - "perused\n", - "peruser\n", - "perusers\n", - "peruses\n", - "perusing\n", - "pervade\n", - "pervaded\n", - "pervader\n", - "pervaders\n", - "pervades\n", - "pervading\n", - "pervasive\n", - "perverse\n", - "perversely\n", - "perverseness\n", - "perversenesses\n", - "perversion\n", - "perversions\n", - "perversities\n", - "perversity\n", - "pervert\n", - "perverted\n", - "perverting\n", - "perverts\n", - "pervious\n", - "pes\n", - "pesade\n", - "pesades\n", - "peseta\n", - "pesetas\n", - "pesewa\n", - "pesewas\n", - "peskier\n", - "peskiest\n", - "peskily\n", - "pesky\n", - "peso\n", - "pesos\n", - "pessaries\n", - "pessary\n", - "pessimism\n", - "pessimisms\n", - "pessimist\n", - "pessimistic\n", - "pessimists\n", - "pest\n", - "pester\n", - "pestered\n", - "pesterer\n", - "pesterers\n", - "pestering\n", - "pesters\n", - "pesthole\n", - "pestholes\n", - "pestilence\n", - "pestilences\n", - "pestilent\n", - "pestle\n", - "pestled\n", - "pestles\n", - "pestling\n", - "pests\n", - "pet\n", - "petal\n", - "petaled\n", - "petaline\n", - "petalled\n", - "petalodies\n", - "petalody\n", - "petaloid\n", - "petalous\n", - "petals\n", - "petard\n", - "petards\n", - "petasos\n", - "petasoses\n", - "petasus\n", - "petasuses\n", - "petcock\n", - "petcocks\n", - "petechia\n", - "petechiae\n", - "peter\n", - "petered\n", - "petering\n", - "peters\n", - "petiolar\n", - "petiole\n", - "petioled\n", - "petioles\n", - "petit\n", - "petite\n", - "petites\n", - "petition\n", - "petitioned\n", - "petitioner\n", - "petitioners\n", - "petitioning\n", - "petitions\n", - "petrel\n", - "petrels\n", - "petri\n", - "petrifaction\n", - "petrifactions\n", - "petrified\n", - "petrifies\n", - "petrify\n", - "petrifying\n", - "petrol\n", - "petroleum\n", - "petroleums\n", - "petrolic\n", - "petrols\n", - "petronel\n", - "petronels\n", - "petrosal\n", - "petrous\n", - "pets\n", - "petted\n", - "pettedly\n", - "petter\n", - "petters\n", - "petti\n", - "petticoat\n", - "petticoats\n", - "pettier\n", - "pettiest\n", - "pettifog\n", - "pettifogged\n", - "pettifogging\n", - "pettifogs\n", - "pettily\n", - "pettiness\n", - "pettinesses\n", - "petting\n", - "pettish\n", - "pettle\n", - "pettled\n", - "pettles\n", - "pettling\n", - "petto\n", - "petty\n", - "petulance\n", - "petulances\n", - "petulant\n", - "petulantly\n", - "petunia\n", - "petunias\n", - "petuntse\n", - "petuntses\n", - "petuntze\n", - "petuntzes\n", - "pew\n", - "pewee\n", - "pewees\n", - "pewit\n", - "pewits\n", - "pews\n", - "pewter\n", - "pewterer\n", - "pewterers\n", - "pewters\n", - "peyote\n", - "peyotes\n", - "peyotl\n", - "peyotls\n", - "peytral\n", - "peytrals\n", - "peytrel\n", - "peytrels\n", - "pfennig\n", - "pfennige\n", - "pfennigs\n", - "phaeton\n", - "phaetons\n", - "phage\n", - "phages\n", - "phalange\n", - "phalanges\n", - "phalanx\n", - "phalanxes\n", - "phalli\n", - "phallic\n", - "phallics\n", - "phallism\n", - "phallisms\n", - "phallist\n", - "phallists\n", - "phallus\n", - "phalluses\n", - "phantasied\n", - "phantasies\n", - "phantasm\n", - "phantasms\n", - "phantast\n", - "phantasts\n", - "phantasy\n", - "phantasying\n", - "phantom\n", - "phantoms\n", - "pharaoh\n", - "pharaohs\n", - "pharisaic\n", - "pharisee\n", - "pharisees\n", - "pharmaceutical\n", - "pharmaceuticals\n", - "pharmacies\n", - "pharmacist\n", - "pharmacologic\n", - "pharmacological\n", - "pharmacologist\n", - "pharmacologists\n", - "pharmacology\n", - "pharmacy\n", - "pharos\n", - "pharoses\n", - "pharyngeal\n", - "pharynges\n", - "pharynx\n", - "pharynxes\n", - "phase\n", - "phaseal\n", - "phased\n", - "phaseout\n", - "phaseouts\n", - "phases\n", - "phasic\n", - "phasing\n", - "phasis\n", - "phasmid\n", - "phasmids\n", - "phat\n", - "phatic\n", - "pheasant\n", - "pheasants\n", - "phellem\n", - "phellems\n", - "phelonia\n", - "phenazin\n", - "phenazins\n", - "phenetic\n", - "phenetol\n", - "phenetols\n", - "phenix\n", - "phenixes\n", - "phenol\n", - "phenolic\n", - "phenolics\n", - "phenols\n", - "phenom\n", - "phenomena\n", - "phenomenal\n", - "phenomenon\n", - "phenomenons\n", - "phenoms\n", - "phenyl\n", - "phenylic\n", - "phenyls\n", - "phew\n", - "phi\n", - "phial\n", - "phials\n", - "philabeg\n", - "philabegs\n", - "philadelphia\n", - "philander\n", - "philandered\n", - "philanderer\n", - "philanderers\n", - "philandering\n", - "philanders\n", - "philanthropic\n", - "philanthropies\n", - "philanthropist\n", - "philanthropists\n", - "philanthropy\n", - "philatelies\n", - "philatelist\n", - "philatelists\n", - "philately\n", - "philharmonic\n", - "philibeg\n", - "philibegs\n", - "philistine\n", - "philistines\n", - "philodendron\n", - "philodendrons\n", - "philomel\n", - "philomels\n", - "philosopher\n", - "philosophers\n", - "philosophic\n", - "philosophical\n", - "philosophically\n", - "philosophies\n", - "philosophize\n", - "philosophized\n", - "philosophizes\n", - "philosophizing\n", - "philosophy\n", - "philter\n", - "philtered\n", - "philtering\n", - "philters\n", - "philtre\n", - "philtred\n", - "philtres\n", - "philtring\n", - "phimoses\n", - "phimosis\n", - "phimotic\n", - "phis\n", - "phiz\n", - "phizes\n", - "phlebitis\n", - "phlegm\n", - "phlegmatic\n", - "phlegmier\n", - "phlegmiest\n", - "phlegms\n", - "phlegmy\n", - "phloem\n", - "phloems\n", - "phlox\n", - "phloxes\n", - "phobia\n", - "phobias\n", - "phobic\n", - "phocine\n", - "phoebe\n", - "phoebes\n", - "phoenix\n", - "phoenixes\n", - "phon\n", - "phonal\n", - "phonate\n", - "phonated\n", - "phonates\n", - "phonating\n", - "phone\n", - "phoned\n", - "phoneme\n", - "phonemes\n", - "phonemic\n", - "phones\n", - "phonetic\n", - "phonetician\n", - "phoneticians\n", - "phonetics\n", - "phoney\n", - "phoneys\n", - "phonic\n", - "phonics\n", - "phonier\n", - "phonies\n", - "phoniest\n", - "phonily\n", - "phoning\n", - "phono\n", - "phonograph\n", - "phonographally\n", - "phonographic\n", - "phonographs\n", - "phonon\n", - "phonons\n", - "phonos\n", - "phons\n", - "phony\n", - "phooey\n", - "phorate\n", - "phorates\n", - "phosgene\n", - "phosgenes\n", - "phosphatase\n", - "phosphate\n", - "phosphates\n", - "phosphatic\n", - "phosphid\n", - "phosphids\n", - "phosphin\n", - "phosphins\n", - "phosphor\n", - "phosphorescence\n", - "phosphorescences\n", - "phosphorescent\n", - "phosphorescently\n", - "phosphoric\n", - "phosphorous\n", - "phosphors\n", - "phosphorus\n", - "phot\n", - "photic\n", - "photics\n", - "photo\n", - "photoed\n", - "photoelectric\n", - "photoelectrically\n", - "photog\n", - "photogenic\n", - "photograph\n", - "photographally\n", - "photographed\n", - "photographer\n", - "photographers\n", - "photographic\n", - "photographies\n", - "photographing\n", - "photographs\n", - "photography\n", - "photogs\n", - "photoing\n", - "photomap\n", - "photomapped\n", - "photomapping\n", - "photomaps\n", - "photon\n", - "photonic\n", - "photons\n", - "photopia\n", - "photopias\n", - "photopic\n", - "photos\n", - "photoset\n", - "photosets\n", - "photosetting\n", - "photosynthesis\n", - "photosynthesises\n", - "photosynthesize\n", - "photosynthesized\n", - "photosynthesizes\n", - "photosynthesizing\n", - "photosynthetic\n", - "phots\n", - "phpht\n", - "phrasal\n", - "phrase\n", - "phrased\n", - "phraseologies\n", - "phraseology\n", - "phrases\n", - "phrasing\n", - "phrasings\n", - "phratral\n", - "phratric\n", - "phratries\n", - "phratry\n", - "phreatic\n", - "phrenic\n", - "phrensied\n", - "phrensies\n", - "phrensy\n", - "phrensying\n", - "pht\n", - "phthalic\n", - "phthalin\n", - "phthalins\n", - "phthises\n", - "phthisic\n", - "phthisics\n", - "phthisis\n", - "phyla\n", - "phylae\n", - "phylar\n", - "phylaxis\n", - "phylaxises\n", - "phyle\n", - "phyleses\n", - "phylesis\n", - "phylesises\n", - "phyletic\n", - "phylic\n", - "phyllaries\n", - "phyllary\n", - "phyllite\n", - "phyllites\n", - "phyllode\n", - "phyllodes\n", - "phylloid\n", - "phylloids\n", - "phyllome\n", - "phyllomes\n", - "phylon\n", - "phylum\n", - "physes\n", - "physic\n", - "physical\n", - "physically\n", - "physicals\n", - "physician\n", - "physicians\n", - "physicist\n", - "physicists\n", - "physicked\n", - "physicking\n", - "physics\n", - "physiognomies\n", - "physiognomy\n", - "physiologic\n", - "physiological\n", - "physiologies\n", - "physiologist\n", - "physiologists\n", - "physiology\n", - "physiotherapies\n", - "physiotherapy\n", - "physique\n", - "physiques\n", - "physis\n", - "phytane\n", - "phytanes\n", - "phytin\n", - "phytins\n", - "phytoid\n", - "phyton\n", - "phytonic\n", - "phytons\n", - "pi\n", - "pia\n", - "piacular\n", - "piaffe\n", - "piaffed\n", - "piaffer\n", - "piaffers\n", - "piaffes\n", - "piaffing\n", - "pial\n", - "pian\n", - "pianic\n", - "pianism\n", - "pianisms\n", - "pianist\n", - "pianists\n", - "piano\n", - "pianos\n", - "pians\n", - "pias\n", - "piasaba\n", - "piasabas\n", - "piasava\n", - "piasavas\n", - "piassaba\n", - "piassabas\n", - "piassava\n", - "piassavas\n", - "piaster\n", - "piasters\n", - "piastre\n", - "piastres\n", - "piazza\n", - "piazzas\n", - "piazze\n", - "pibroch\n", - "pibrochs\n", - "pic\n", - "pica\n", - "picacho\n", - "picachos\n", - "picador\n", - "picadores\n", - "picadors\n", - "pical\n", - "picara\n", - "picaras\n", - "picaro\n", - "picaroon\n", - "picarooned\n", - "picarooning\n", - "picaroons\n", - "picaros\n", - "picas\n", - "picayune\n", - "picayunes\n", - "piccolo\n", - "piccolos\n", - "pice\n", - "piceous\n", - "pick\n", - "pickadil\n", - "pickadils\n", - "pickax\n", - "pickaxe\n", - "pickaxed\n", - "pickaxes\n", - "pickaxing\n", - "picked\n", - "pickeer\n", - "pickeered\n", - "pickeering\n", - "pickeers\n", - "picker\n", - "pickerel\n", - "pickerels\n", - "pickers\n", - "picket\n", - "picketed\n", - "picketer\n", - "picketers\n", - "picketing\n", - "pickets\n", - "pickier\n", - "pickiest\n", - "picking\n", - "pickings\n", - "pickle\n", - "pickled\n", - "pickles\n", - "pickling\n", - "picklock\n", - "picklocks\n", - "pickoff\n", - "pickoffs\n", - "pickpocket\n", - "pickpockets\n", - "picks\n", - "pickup\n", - "pickups\n", - "pickwick\n", - "pickwicks\n", - "picky\n", - "picloram\n", - "piclorams\n", - "picnic\n", - "picnicked\n", - "picnicking\n", - "picnicky\n", - "picnics\n", - "picogram\n", - "picograms\n", - "picolin\n", - "picoline\n", - "picolines\n", - "picolins\n", - "picot\n", - "picoted\n", - "picotee\n", - "picotees\n", - "picoting\n", - "picots\n", - "picquet\n", - "picquets\n", - "picrate\n", - "picrated\n", - "picrates\n", - "picric\n", - "picrite\n", - "picrites\n", - "pics\n", - "pictorial\n", - "picture\n", - "pictured\n", - "pictures\n", - "picturesque\n", - "picturesqueness\n", - "picturesquenesses\n", - "picturing\n", - "picul\n", - "piculs\n", - "piddle\n", - "piddled\n", - "piddler\n", - "piddlers\n", - "piddles\n", - "piddling\n", - "piddock\n", - "piddocks\n", - "pidgin\n", - "pidgins\n", - "pie\n", - "piebald\n", - "piebalds\n", - "piece\n", - "pieced\n", - "piecemeal\n", - "piecer\n", - "piecers\n", - "pieces\n", - "piecing\n", - "piecings\n", - "piecrust\n", - "piecrusts\n", - "pied\n", - "piedfort\n", - "piedforts\n", - "piedmont\n", - "piedmonts\n", - "piefort\n", - "pieforts\n", - "pieing\n", - "pieplant\n", - "pieplants\n", - "pier\n", - "pierce\n", - "pierced\n", - "piercer\n", - "piercers\n", - "pierces\n", - "piercing\n", - "pierrot\n", - "pierrots\n", - "piers\n", - "pies\n", - "pieta\n", - "pietas\n", - "pieties\n", - "pietism\n", - "pietisms\n", - "pietist\n", - "pietists\n", - "piety\n", - "piffle\n", - "piffled\n", - "piffles\n", - "piffling\n", - "pig\n", - "pigboat\n", - "pigboats\n", - "pigeon\n", - "pigeonhole\n", - "pigeonholed\n", - "pigeonholes\n", - "pigeonholing\n", - "pigeons\n", - "pigfish\n", - "pigfishes\n", - "pigged\n", - "piggeries\n", - "piggery\n", - "piggie\n", - "piggies\n", - "piggin\n", - "pigging\n", - "piggins\n", - "piggish\n", - "piggy\n", - "piggyback\n", - "pigheaded\n", - "piglet\n", - "piglets\n", - "pigment\n", - "pigmentation\n", - "pigmentations\n", - "pigmented\n", - "pigmenting\n", - "pigments\n", - "pigmies\n", - "pigmy\n", - "pignora\n", - "pignus\n", - "pignut\n", - "pignuts\n", - "pigpen\n", - "pigpens\n", - "pigs\n", - "pigskin\n", - "pigskins\n", - "pigsney\n", - "pigsneys\n", - "pigstick\n", - "pigsticked\n", - "pigsticking\n", - "pigsticks\n", - "pigsties\n", - "pigsty\n", - "pigtail\n", - "pigtails\n", - "pigweed\n", - "pigweeds\n", - "piing\n", - "pika\n", - "pikake\n", - "pikakes\n", - "pikas\n", - "pike\n", - "piked\n", - "pikeman\n", - "pikemen\n", - "piker\n", - "pikers\n", - "pikes\n", - "pikestaff\n", - "pikestaves\n", - "piking\n", - "pilaf\n", - "pilaff\n", - "pilaffs\n", - "pilafs\n", - "pilar\n", - "pilaster\n", - "pilasters\n", - "pilau\n", - "pilaus\n", - "pilaw\n", - "pilaws\n", - "pilchard\n", - "pilchards\n", - "pile\n", - "pilea\n", - "pileate\n", - "pileated\n", - "piled\n", - "pilei\n", - "pileous\n", - "piles\n", - "pileum\n", - "pileup\n", - "pileups\n", - "pileus\n", - "pilewort\n", - "pileworts\n", - "pilfer\n", - "pilfered\n", - "pilferer\n", - "pilferers\n", - "pilfering\n", - "pilfers\n", - "pilgrim\n", - "pilgrimage\n", - "pilgrimages\n", - "pilgrims\n", - "pili\n", - "piliform\n", - "piling\n", - "pilings\n", - "pilis\n", - "pill\n", - "pillage\n", - "pillaged\n", - "pillager\n", - "pillagers\n", - "pillages\n", - "pillaging\n", - "pillar\n", - "pillared\n", - "pillaring\n", - "pillars\n", - "pillbox\n", - "pillboxes\n", - "pilled\n", - "pilling\n", - "pillion\n", - "pillions\n", - "pilloried\n", - "pillories\n", - "pillory\n", - "pillorying\n", - "pillow\n", - "pillowcase\n", - "pillowcases\n", - "pillowed\n", - "pillowing\n", - "pillows\n", - "pillowy\n", - "pills\n", - "pilose\n", - "pilosities\n", - "pilosity\n", - "pilot\n", - "pilotage\n", - "pilotages\n", - "piloted\n", - "piloting\n", - "pilotings\n", - "pilotless\n", - "pilots\n", - "pilous\n", - "pilsener\n", - "pilseners\n", - "pilsner\n", - "pilsners\n", - "pilular\n", - "pilule\n", - "pilules\n", - "pilus\n", - "pily\n", - "pima\n", - "pimas\n", - "pimento\n", - "pimentos\n", - "pimiento\n", - "pimientos\n", - "pimp\n", - "pimped\n", - "pimping\n", - "pimple\n", - "pimpled\n", - "pimples\n", - "pimplier\n", - "pimpliest\n", - "pimply\n", - "pimps\n", - "pin\n", - "pina\n", - "pinafore\n", - "pinafores\n", - "pinang\n", - "pinangs\n", - "pinas\n", - "pinaster\n", - "pinasters\n", - "pinata\n", - "pinatas\n", - "pinball\n", - "pinballs\n", - "pinbone\n", - "pinbones\n", - "pincer\n", - "pincers\n", - "pinch\n", - "pinchbug\n", - "pinchbugs\n", - "pincheck\n", - "pinchecks\n", - "pinched\n", - "pincher\n", - "pinchers\n", - "pinches\n", - "pinchhitter\n", - "pinchhitters\n", - "pinching\n", - "pincushion\n", - "pincushions\n", - "pinder\n", - "pinders\n", - "pindling\n", - "pine\n", - "pineal\n", - "pineapple\n", - "pineapples\n", - "pinecone\n", - "pinecones\n", - "pined\n", - "pinelike\n", - "pinene\n", - "pinenes\n", - "pineries\n", - "pinery\n", - "pines\n", - "pinesap\n", - "pinesaps\n", - "pineta\n", - "pinetum\n", - "pinewood\n", - "pinewoods\n", - "piney\n", - "pinfeather\n", - "pinfeathers\n", - "pinfish\n", - "pinfishes\n", - "pinfold\n", - "pinfolded\n", - "pinfolding\n", - "pinfolds\n", - "ping\n", - "pinged\n", - "pinger\n", - "pingers\n", - "pinging\n", - "pingo\n", - "pingos\n", - "pingrass\n", - "pingrasses\n", - "pings\n", - "pinguid\n", - "pinhead\n", - "pinheads\n", - "pinhole\n", - "pinholes\n", - "pinier\n", - "piniest\n", - "pining\n", - "pinion\n", - "pinioned\n", - "pinioning\n", - "pinions\n", - "pinite\n", - "pinites\n", - "pink\n", - "pinked\n", - "pinker\n", - "pinkest\n", - "pinkeye\n", - "pinkeyes\n", - "pinkie\n", - "pinkies\n", - "pinking\n", - "pinkings\n", - "pinkish\n", - "pinkly\n", - "pinkness\n", - "pinknesses\n", - "pinko\n", - "pinkoes\n", - "pinkos\n", - "pinkroot\n", - "pinkroots\n", - "pinks\n", - "pinky\n", - "pinna\n", - "pinnace\n", - "pinnaces\n", - "pinnacle\n", - "pinnacled\n", - "pinnacles\n", - "pinnacling\n", - "pinnae\n", - "pinnal\n", - "pinnas\n", - "pinnate\n", - "pinnated\n", - "pinned\n", - "pinner\n", - "pinners\n", - "pinning\n", - "pinniped\n", - "pinnipeds\n", - "pinnula\n", - "pinnulae\n", - "pinnular\n", - "pinnule\n", - "pinnules\n", - "pinochle\n", - "pinochles\n", - "pinocle\n", - "pinocles\n", - "pinole\n", - "pinoles\n", - "pinon\n", - "pinones\n", - "pinons\n", - "pinpoint\n", - "pinpointed\n", - "pinpointing\n", - "pinpoints\n", - "pinprick\n", - "pinpricked\n", - "pinpricking\n", - "pinpricks\n", - "pins\n", - "pinscher\n", - "pinschers\n", - "pint\n", - "pinta\n", - "pintada\n", - "pintadas\n", - "pintado\n", - "pintadoes\n", - "pintados\n", - "pintail\n", - "pintails\n", - "pintano\n", - "pintanos\n", - "pintas\n", - "pintle\n", - "pintles\n", - "pinto\n", - "pintoes\n", - "pintos\n", - "pints\n", - "pintsize\n", - "pinup\n", - "pinups\n", - "pinwale\n", - "pinwales\n", - "pinweed\n", - "pinweeds\n", - "pinwheel\n", - "pinwheels\n", - "pinwork\n", - "pinworks\n", - "pinworm\n", - "pinworms\n", - "piny\n", - "pinyon\n", - "pinyons\n", - "piolet\n", - "piolets\n", - "pion\n", - "pioneer\n", - "pioneered\n", - "pioneering\n", - "pioneers\n", - "pionic\n", - "pions\n", - "piosities\n", - "piosity\n", - "pious\n", - "piously\n", - "pip\n", - "pipage\n", - "pipages\n", - "pipal\n", - "pipals\n", - "pipe\n", - "pipeage\n", - "pipeages\n", - "piped\n", - "pipefish\n", - "pipefishes\n", - "pipeful\n", - "pipefuls\n", - "pipeless\n", - "pipelike\n", - "pipeline\n", - "pipelined\n", - "pipelines\n", - "pipelining\n", - "piper\n", - "piperine\n", - "piperines\n", - "pipers\n", - "pipes\n", - "pipestem\n", - "pipestems\n", - "pipet\n", - "pipets\n", - "pipette\n", - "pipetted\n", - "pipettes\n", - "pipetting\n", - "pipier\n", - "pipiest\n", - "piping\n", - "pipingly\n", - "pipings\n", - "pipit\n", - "pipits\n", - "pipkin\n", - "pipkins\n", - "pipped\n", - "pippin\n", - "pipping\n", - "pippins\n", - "pips\n", - "pipy\n", - "piquancies\n", - "piquancy\n", - "piquant\n", - "pique\n", - "piqued\n", - "piques\n", - "piquet\n", - "piquets\n", - "piquing\n", - "piracies\n", - "piracy\n", - "piragua\n", - "piraguas\n", - "pirana\n", - "piranas\n", - "piranha\n", - "piranhas\n", - "pirarucu\n", - "pirarucus\n", - "pirate\n", - "pirated\n", - "pirates\n", - "piratic\n", - "piratical\n", - "pirating\n", - "piraya\n", - "pirayas\n", - "pirn\n", - "pirns\n", - "pirog\n", - "pirogen\n", - "piroghi\n", - "pirogi\n", - "pirogue\n", - "pirogues\n", - "pirojki\n", - "piroque\n", - "piroques\n", - "piroshki\n", - "pirouette\n", - "pirouetted\n", - "pirouettes\n", - "pirouetting\n", - "pirozhki\n", - "pirozhok\n", - "pis\n", - "piscaries\n", - "piscary\n", - "piscator\n", - "piscators\n", - "piscina\n", - "piscinae\n", - "piscinal\n", - "piscinas\n", - "piscine\n", - "pish\n", - "pished\n", - "pishes\n", - "pishing\n", - "pisiform\n", - "pisiforms\n", - "pismire\n", - "pismires\n", - "pismo\n", - "pisolite\n", - "pisolites\n", - "piss\n", - "pissant\n", - "pissants\n", - "pissed\n", - "pisses\n", - "pissing\n", - "pissoir\n", - "pissoirs\n", - "pistache\n", - "pistaches\n", - "pistachio\n", - "pistil\n", - "pistillate\n", - "pistils\n", - "pistol\n", - "pistole\n", - "pistoled\n", - "pistoles\n", - "pistoling\n", - "pistolled\n", - "pistolling\n", - "pistols\n", - "piston\n", - "pistons\n", - "pit\n", - "pita\n", - "pitapat\n", - "pitapats\n", - "pitapatted\n", - "pitapatting\n", - "pitas\n", - "pitch\n", - "pitchblende\n", - "pitchblendes\n", - "pitched\n", - "pitcher\n", - "pitchers\n", - "pitches\n", - "pitchfork\n", - "pitchforks\n", - "pitchier\n", - "pitchiest\n", - "pitchily\n", - "pitching\n", - "pitchman\n", - "pitchmen\n", - "pitchout\n", - "pitchouts\n", - "pitchy\n", - "piteous\n", - "piteously\n", - "pitfall\n", - "pitfalls\n", - "pith\n", - "pithead\n", - "pitheads\n", - "pithed\n", - "pithier\n", - "pithiest\n", - "pithily\n", - "pithing\n", - "pithless\n", - "piths\n", - "pithy\n", - "pitiable\n", - "pitiably\n", - "pitied\n", - "pitier\n", - "pitiers\n", - "pities\n", - "pitiful\n", - "pitifuller\n", - "pitifullest\n", - "pitifully\n", - "pitiless\n", - "pitilessly\n", - "pitman\n", - "pitmans\n", - "pitmen\n", - "piton\n", - "pitons\n", - "pits\n", - "pitsaw\n", - "pitsaws\n", - "pittance\n", - "pittances\n", - "pitted\n", - "pitting\n", - "pittings\n", - "pittsburgh\n", - "pituitary\n", - "pity\n", - "pitying\n", - "piu\n", - "pivot\n", - "pivotal\n", - "pivoted\n", - "pivoting\n", - "pivots\n", - "pix\n", - "pixes\n", - "pixie\n", - "pixieish\n", - "pixies\n", - "pixiness\n", - "pixinesses\n", - "pixy\n", - "pixyish\n", - "pixys\n", - "pizazz\n", - "pizazzes\n", - "pizza\n", - "pizzas\n", - "pizzeria\n", - "pizzerias\n", - "pizzle\n", - "pizzles\n", - "placable\n", - "placably\n", - "placard\n", - "placarded\n", - "placarding\n", - "placards\n", - "placate\n", - "placated\n", - "placater\n", - "placaters\n", - "placates\n", - "placating\n", - "place\n", - "placebo\n", - "placeboes\n", - "placebos\n", - "placed\n", - "placeman\n", - "placemen\n", - "placement\n", - "placements\n", - "placenta\n", - "placentae\n", - "placental\n", - "placentas\n", - "placer\n", - "placers\n", - "places\n", - "placet\n", - "placets\n", - "placid\n", - "placidly\n", - "placing\n", - "plack\n", - "placket\n", - "plackets\n", - "placks\n", - "placoid\n", - "placoids\n", - "plafond\n", - "plafonds\n", - "plagal\n", - "plage\n", - "plages\n", - "plagiaries\n", - "plagiarism\n", - "plagiarisms\n", - "plagiarist\n", - "plagiarists\n", - "plagiarize\n", - "plagiarized\n", - "plagiarizes\n", - "plagiarizing\n", - "plagiary\n", - "plague\n", - "plagued\n", - "plaguer\n", - "plaguers\n", - "plagues\n", - "plaguey\n", - "plaguily\n", - "plaguing\n", - "plaguy\n", - "plaice\n", - "plaices\n", - "plaid\n", - "plaided\n", - "plaids\n", - "plain\n", - "plained\n", - "plainer\n", - "plainest\n", - "plaining\n", - "plainly\n", - "plainness\n", - "plainnesses\n", - "plains\n", - "plaint\n", - "plaintiff\n", - "plaintiffs\n", - "plaintive\n", - "plaintively\n", - "plaints\n", - "plaister\n", - "plaistered\n", - "plaistering\n", - "plaisters\n", - "plait\n", - "plaited\n", - "plaiter\n", - "plaiters\n", - "plaiting\n", - "plaitings\n", - "plaits\n", - "plan\n", - "planar\n", - "planaria\n", - "planarias\n", - "planate\n", - "planch\n", - "planche\n", - "planches\n", - "planchet\n", - "planchets\n", - "plane\n", - "planed\n", - "planer\n", - "planers\n", - "planes\n", - "planet\n", - "planetaria\n", - "planetarium\n", - "planetariums\n", - "planetary\n", - "planets\n", - "planform\n", - "planforms\n", - "plangent\n", - "planing\n", - "planish\n", - "planished\n", - "planishes\n", - "planishing\n", - "plank\n", - "planked\n", - "planking\n", - "plankings\n", - "planks\n", - "plankter\n", - "plankters\n", - "plankton\n", - "planktonic\n", - "planktons\n", - "planless\n", - "planned\n", - "planner\n", - "planners\n", - "planning\n", - "plannings\n", - "planosol\n", - "planosols\n", - "plans\n", - "plant\n", - "plantain\n", - "plantains\n", - "plantar\n", - "plantation\n", - "plantations\n", - "planted\n", - "planter\n", - "planters\n", - "planting\n", - "plantings\n", - "plants\n", - "planula\n", - "planulae\n", - "planular\n", - "plaque\n", - "plaques\n", - "plash\n", - "plashed\n", - "plasher\n", - "plashers\n", - "plashes\n", - "plashier\n", - "plashiest\n", - "plashing\n", - "plashy\n", - "plasm\n", - "plasma\n", - "plasmas\n", - "plasmatic\n", - "plasmic\n", - "plasmid\n", - "plasmids\n", - "plasmin\n", - "plasmins\n", - "plasmoid\n", - "plasmoids\n", - "plasmon\n", - "plasmons\n", - "plasms\n", - "plaster\n", - "plastered\n", - "plasterer\n", - "plasterers\n", - "plastering\n", - "plasters\n", - "plastery\n", - "plastic\n", - "plasticities\n", - "plasticity\n", - "plastics\n", - "plastid\n", - "plastids\n", - "plastral\n", - "plastron\n", - "plastrons\n", - "plastrum\n", - "plastrums\n", - "plat\n", - "platan\n", - "platane\n", - "platanes\n", - "platans\n", - "plate\n", - "plateau\n", - "plateaued\n", - "plateauing\n", - "plateaus\n", - "plateaux\n", - "plated\n", - "plateful\n", - "platefuls\n", - "platelet\n", - "platelets\n", - "platen\n", - "platens\n", - "plater\n", - "platers\n", - "plates\n", - "platesful\n", - "platform\n", - "platforms\n", - "platier\n", - "platies\n", - "platiest\n", - "platina\n", - "platinas\n", - "plating\n", - "platings\n", - "platinic\n", - "platinum\n", - "platinums\n", - "platitude\n", - "platitudes\n", - "platitudinous\n", - "platonic\n", - "platoon\n", - "platooned\n", - "platooning\n", - "platoons\n", - "plats\n", - "platted\n", - "platter\n", - "platters\n", - "platting\n", - "platy\n", - "platypi\n", - "platypus\n", - "platypuses\n", - "platys\n", - "plaudit\n", - "plaudits\n", - "plausibilities\n", - "plausibility\n", - "plausible\n", - "plausibly\n", - "plausive\n", - "play\n", - "playa\n", - "playable\n", - "playact\n", - "playacted\n", - "playacting\n", - "playactings\n", - "playacts\n", - "playas\n", - "playback\n", - "playbacks\n", - "playbill\n", - "playbills\n", - "playbook\n", - "playbooks\n", - "playboy\n", - "playboys\n", - "playday\n", - "playdays\n", - "playdown\n", - "playdowns\n", - "played\n", - "player\n", - "players\n", - "playful\n", - "playfully\n", - "playfulness\n", - "playfulnesses\n", - "playgirl\n", - "playgirls\n", - "playgoer\n", - "playgoers\n", - "playground\n", - "playgrounds\n", - "playhouse\n", - "playhouses\n", - "playing\n", - "playland\n", - "playlands\n", - "playless\n", - "playlet\n", - "playlets\n", - "playlike\n", - "playmate\n", - "playmates\n", - "playoff\n", - "playoffs\n", - "playpen\n", - "playpens\n", - "playroom\n", - "playrooms\n", - "plays\n", - "playsuit\n", - "playsuits\n", - "plaything\n", - "playthings\n", - "playtime\n", - "playtimes\n", - "playwear\n", - "playwears\n", - "playwright\n", - "playwrights\n", - "plaza\n", - "plazas\n", - "plea\n", - "pleach\n", - "pleached\n", - "pleaches\n", - "pleaching\n", - "plead\n", - "pleaded\n", - "pleader\n", - "pleaders\n", - "pleading\n", - "pleadings\n", - "pleads\n", - "pleas\n", - "pleasant\n", - "pleasanter\n", - "pleasantest\n", - "pleasantly\n", - "pleasantness\n", - "pleasantnesses\n", - "pleasantries\n", - "please\n", - "pleased\n", - "pleaser\n", - "pleasers\n", - "pleases\n", - "pleasing\n", - "pleasingly\n", - "pleasurable\n", - "pleasurably\n", - "pleasure\n", - "pleasured\n", - "pleasures\n", - "pleasuring\n", - "pleat\n", - "pleated\n", - "pleater\n", - "pleaters\n", - "pleating\n", - "pleats\n", - "pleb\n", - "plebe\n", - "plebeian\n", - "plebeians\n", - "plebes\n", - "plebiscite\n", - "plebiscites\n", - "plebs\n", - "plectra\n", - "plectron\n", - "plectrons\n", - "plectrum\n", - "plectrums\n", - "pled\n", - "pledge\n", - "pledged\n", - "pledgee\n", - "pledgees\n", - "pledgeor\n", - "pledgeors\n", - "pledger\n", - "pledgers\n", - "pledges\n", - "pledget\n", - "pledgets\n", - "pledging\n", - "pledgor\n", - "pledgors\n", - "pleiad\n", - "pleiades\n", - "pleiads\n", - "plena\n", - "plenary\n", - "plenipotentiaries\n", - "plenipotentiary\n", - "plenish\n", - "plenished\n", - "plenishes\n", - "plenishing\n", - "plenism\n", - "plenisms\n", - "plenist\n", - "plenists\n", - "plenitude\n", - "plenitudes\n", - "plenteous\n", - "plenties\n", - "plentiful\n", - "plentifully\n", - "plenty\n", - "plenum\n", - "plenums\n", - "pleonasm\n", - "pleonasms\n", - "pleopod\n", - "pleopods\n", - "plessor\n", - "plessors\n", - "plethora\n", - "plethoras\n", - "pleura\n", - "pleurae\n", - "pleural\n", - "pleuras\n", - "pleurisies\n", - "pleurisy\n", - "pleuron\n", - "pleuston\n", - "pleustons\n", - "plexor\n", - "plexors\n", - "plexus\n", - "plexuses\n", - "pliable\n", - "pliably\n", - "pliancies\n", - "pliancy\n", - "pliant\n", - "pliantly\n", - "plica\n", - "plicae\n", - "plical\n", - "plicate\n", - "plicated\n", - "plie\n", - "plied\n", - "plier\n", - "pliers\n", - "plies\n", - "plight\n", - "plighted\n", - "plighter\n", - "plighters\n", - "plighting\n", - "plights\n", - "plimsol\n", - "plimsole\n", - "plimsoles\n", - "plimsoll\n", - "plimsolls\n", - "plimsols\n", - "plink\n", - "plinked\n", - "plinker\n", - "plinkers\n", - "plinking\n", - "plinks\n", - "plinth\n", - "plinths\n", - "pliskie\n", - "pliskies\n", - "plisky\n", - "plisse\n", - "plisses\n", - "plod\n", - "plodded\n", - "plodder\n", - "plodders\n", - "plodding\n", - "ploddingly\n", - "plods\n", - "ploidies\n", - "ploidy\n", - "plonk\n", - "plonked\n", - "plonking\n", - "plonks\n", - "plop\n", - "plopped\n", - "plopping\n", - "plops\n", - "plosion\n", - "plosions\n", - "plosive\n", - "plosives\n", - "plot\n", - "plotless\n", - "plots\n", - "plottage\n", - "plottages\n", - "plotted\n", - "plotter\n", - "plotters\n", - "plottier\n", - "plotties\n", - "plottiest\n", - "plotting\n", - "plotty\n", - "plough\n", - "ploughed\n", - "plougher\n", - "ploughers\n", - "ploughing\n", - "ploughs\n", - "plover\n", - "plovers\n", - "plow\n", - "plowable\n", - "plowback\n", - "plowbacks\n", - "plowboy\n", - "plowboys\n", - "plowed\n", - "plower\n", - "plowers\n", - "plowhead\n", - "plowheads\n", - "plowing\n", - "plowland\n", - "plowlands\n", - "plowman\n", - "plowmen\n", - "plows\n", - "plowshare\n", - "plowshares\n", - "ploy\n", - "ployed\n", - "ploying\n", - "ploys\n", - "pluck\n", - "plucked\n", - "plucker\n", - "pluckers\n", - "pluckier\n", - "pluckiest\n", - "pluckily\n", - "plucking\n", - "plucks\n", - "plucky\n", - "plug\n", - "plugged\n", - "plugger\n", - "pluggers\n", - "plugging\n", - "plugless\n", - "plugs\n", - "pluguglies\n", - "plugugly\n", - "plum\n", - "plumage\n", - "plumaged\n", - "plumages\n", - "plumate\n", - "plumb\n", - "plumbago\n", - "plumbagos\n", - "plumbed\n", - "plumber\n", - "plumberies\n", - "plumbers\n", - "plumbery\n", - "plumbic\n", - "plumbing\n", - "plumbings\n", - "plumbism\n", - "plumbisms\n", - "plumbous\n", - "plumbs\n", - "plumbum\n", - "plumbums\n", - "plume\n", - "plumed\n", - "plumelet\n", - "plumelets\n", - "plumes\n", - "plumier\n", - "plumiest\n", - "pluming\n", - "plumiped\n", - "plumipeds\n", - "plumlike\n", - "plummet\n", - "plummeted\n", - "plummeting\n", - "plummets\n", - "plummier\n", - "plummiest\n", - "plummy\n", - "plumose\n", - "plump\n", - "plumped\n", - "plumpen\n", - "plumpened\n", - "plumpening\n", - "plumpens\n", - "plumper\n", - "plumpers\n", - "plumpest\n", - "plumping\n", - "plumpish\n", - "plumply\n", - "plumpness\n", - "plumpnesses\n", - "plumps\n", - "plums\n", - "plumular\n", - "plumule\n", - "plumules\n", - "plumy\n", - "plunder\n", - "plundered\n", - "plundering\n", - "plunders\n", - "plunge\n", - "plunged\n", - "plunger\n", - "plungers\n", - "plunges\n", - "plunging\n", - "plunk\n", - "plunked\n", - "plunker\n", - "plunkers\n", - "plunking\n", - "plunks\n", - "plural\n", - "pluralism\n", - "pluralities\n", - "plurality\n", - "pluralization\n", - "pluralizations\n", - "pluralize\n", - "pluralized\n", - "pluralizes\n", - "pluralizing\n", - "plurally\n", - "plurals\n", - "plus\n", - "pluses\n", - "plush\n", - "plusher\n", - "plushes\n", - "plushest\n", - "plushier\n", - "plushiest\n", - "plushily\n", - "plushly\n", - "plushy\n", - "plussage\n", - "plussages\n", - "plusses\n", - "plutocracies\n", - "plutocracy\n", - "plutocrat\n", - "plutocratic\n", - "plutocrats\n", - "pluton\n", - "plutonic\n", - "plutonium\n", - "plutoniums\n", - "plutons\n", - "pluvial\n", - "pluvials\n", - "pluviose\n", - "pluvious\n", - "ply\n", - "plyer\n", - "plyers\n", - "plying\n", - "plyingly\n", - "plywood\n", - "plywoods\n", - "pneuma\n", - "pneumas\n", - "pneumatic\n", - "pneumatically\n", - "pneumonia\n", - "poaceous\n", - "poach\n", - "poached\n", - "poacher\n", - "poachers\n", - "poaches\n", - "poachier\n", - "poachiest\n", - "poaching\n", - "poachy\n", - "pochard\n", - "pochards\n", - "pock\n", - "pocked\n", - "pocket\n", - "pocketbook\n", - "pocketbooks\n", - "pocketed\n", - "pocketer\n", - "pocketers\n", - "pocketful\n", - "pocketfuls\n", - "pocketing\n", - "pocketknife\n", - "pocketknives\n", - "pockets\n", - "pockier\n", - "pockiest\n", - "pockily\n", - "pocking\n", - "pockmark\n", - "pockmarked\n", - "pockmarking\n", - "pockmarks\n", - "pocks\n", - "pocky\n", - "poco\n", - "pocosin\n", - "pocosins\n", - "pod\n", - "podagra\n", - "podagral\n", - "podagras\n", - "podagric\n", - "podded\n", - "podding\n", - "podesta\n", - "podestas\n", - "podgier\n", - "podgiest\n", - "podgily\n", - "podgy\n", - "podia\n", - "podiatries\n", - "podiatrist\n", - "podiatry\n", - "podite\n", - "podites\n", - "poditic\n", - "podium\n", - "podiums\n", - "podomere\n", - "podomeres\n", - "pods\n", - "podsol\n", - "podsolic\n", - "podsols\n", - "podzol\n", - "podzolic\n", - "podzols\n", - "poechore\n", - "poechores\n", - "poem\n", - "poems\n", - "poesies\n", - "poesy\n", - "poet\n", - "poetess\n", - "poetesses\n", - "poetic\n", - "poetical\n", - "poetics\n", - "poetise\n", - "poetised\n", - "poetiser\n", - "poetisers\n", - "poetises\n", - "poetising\n", - "poetize\n", - "poetized\n", - "poetizer\n", - "poetizers\n", - "poetizes\n", - "poetizing\n", - "poetless\n", - "poetlike\n", - "poetries\n", - "poetry\n", - "poets\n", - "pogey\n", - "pogeys\n", - "pogies\n", - "pogonia\n", - "pogonias\n", - "pogonip\n", - "pogonips\n", - "pogrom\n", - "pogromed\n", - "pogroming\n", - "pogroms\n", - "pogy\n", - "poh\n", - "poi\n", - "poignancies\n", - "poignancy\n", - "poignant\n", - "poilu\n", - "poilus\n", - "poind\n", - "poinded\n", - "poinding\n", - "poinds\n", - "poinsettia\n", - "point\n", - "pointe\n", - "pointed\n", - "pointer\n", - "pointers\n", - "pointes\n", - "pointier\n", - "pointiest\n", - "pointing\n", - "pointless\n", - "pointman\n", - "pointmen\n", - "points\n", - "pointy\n", - "pois\n", - "poise\n", - "poised\n", - "poiser\n", - "poisers\n", - "poises\n", - "poising\n", - "poison\n", - "poisoned\n", - "poisoner\n", - "poisoners\n", - "poisoning\n", - "poisonous\n", - "poisons\n", - "poitrel\n", - "poitrels\n", - "poke\n", - "poked\n", - "poker\n", - "pokeroot\n", - "pokeroots\n", - "pokers\n", - "pokes\n", - "pokeweed\n", - "pokeweeds\n", - "pokey\n", - "pokeys\n", - "pokier\n", - "pokies\n", - "pokiest\n", - "pokily\n", - "pokiness\n", - "pokinesses\n", - "poking\n", - "poky\n", - "pol\n", - "polar\n", - "polarise\n", - "polarised\n", - "polarises\n", - "polarising\n", - "polarities\n", - "polarity\n", - "polarization\n", - "polarizations\n", - "polarize\n", - "polarized\n", - "polarizes\n", - "polarizing\n", - "polaron\n", - "polarons\n", - "polars\n", - "polder\n", - "polders\n", - "pole\n", - "poleax\n", - "poleaxe\n", - "poleaxed\n", - "poleaxes\n", - "poleaxing\n", - "polecat\n", - "polecats\n", - "poled\n", - "poleis\n", - "poleless\n", - "polemic\n", - "polemical\n", - "polemicist\n", - "polemicists\n", - "polemics\n", - "polemist\n", - "polemists\n", - "polemize\n", - "polemized\n", - "polemizes\n", - "polemizing\n", - "polenta\n", - "polentas\n", - "poler\n", - "polers\n", - "poles\n", - "polestar\n", - "polestars\n", - "poleward\n", - "poleyn\n", - "poleyns\n", - "police\n", - "policed\n", - "policeman\n", - "policemen\n", - "polices\n", - "policewoman\n", - "policewomen\n", - "policies\n", - "policing\n", - "policy\n", - "policyholder\n", - "poling\n", - "polio\n", - "poliomyelitis\n", - "poliomyelitises\n", - "polios\n", - "polis\n", - "polish\n", - "polished\n", - "polisher\n", - "polishers\n", - "polishes\n", - "polishing\n", - "polite\n", - "politely\n", - "politeness\n", - "politenesses\n", - "politer\n", - "politest\n", - "politic\n", - "political\n", - "politician\n", - "politicians\n", - "politick\n", - "politicked\n", - "politicking\n", - "politicks\n", - "politico\n", - "politicoes\n", - "politicos\n", - "politics\n", - "polities\n", - "polity\n", - "polka\n", - "polkaed\n", - "polkaing\n", - "polkas\n", - "poll\n", - "pollack\n", - "pollacks\n", - "pollard\n", - "pollarded\n", - "pollarding\n", - "pollards\n", - "polled\n", - "pollee\n", - "pollees\n", - "pollen\n", - "pollened\n", - "pollening\n", - "pollens\n", - "poller\n", - "pollers\n", - "pollex\n", - "pollical\n", - "pollices\n", - "pollinate\n", - "pollinated\n", - "pollinates\n", - "pollinating\n", - "pollination\n", - "pollinations\n", - "pollinator\n", - "pollinators\n", - "polling\n", - "pollinia\n", - "pollinic\n", - "pollist\n", - "pollists\n", - "polliwog\n", - "polliwogs\n", - "pollock\n", - "pollocks\n", - "polls\n", - "pollster\n", - "pollsters\n", - "pollutant\n", - "pollute\n", - "polluted\n", - "polluter\n", - "polluters\n", - "pollutes\n", - "polluting\n", - "pollution\n", - "pollutions\n", - "polly\n", - "pollywog\n", - "pollywogs\n", - "polo\n", - "poloist\n", - "poloists\n", - "polonium\n", - "poloniums\n", - "polos\n", - "pols\n", - "poltroon\n", - "poltroons\n", - "poly\n", - "polybrid\n", - "polybrids\n", - "polycot\n", - "polycots\n", - "polyene\n", - "polyenes\n", - "polyenic\n", - "polyester\n", - "polyesters\n", - "polygala\n", - "polygalas\n", - "polygamies\n", - "polygamist\n", - "polygamists\n", - "polygamous\n", - "polygamy\n", - "polygene\n", - "polygenes\n", - "polyglot\n", - "polyglots\n", - "polygon\n", - "polygonies\n", - "polygons\n", - "polygony\n", - "polygynies\n", - "polygyny\n", - "polymath\n", - "polymaths\n", - "polymer\n", - "polymers\n", - "polynya\n", - "polynyas\n", - "polyp\n", - "polyparies\n", - "polypary\n", - "polypi\n", - "polypide\n", - "polypides\n", - "polypnea\n", - "polypneas\n", - "polypod\n", - "polypodies\n", - "polypods\n", - "polypody\n", - "polypoid\n", - "polypore\n", - "polypores\n", - "polypous\n", - "polyps\n", - "polypus\n", - "polypuses\n", - "polys\n", - "polysemies\n", - "polysemy\n", - "polysome\n", - "polysomes\n", - "polysyllabic\n", - "polysyllable\n", - "polysyllables\n", - "polytechnic\n", - "polytene\n", - "polytenies\n", - "polyteny\n", - "polytheism\n", - "polytheisms\n", - "polytheist\n", - "polytheists\n", - "polytype\n", - "polytypes\n", - "polyuria\n", - "polyurias\n", - "polyuric\n", - "polyzoan\n", - "polyzoans\n", - "polyzoic\n", - "pomace\n", - "pomaces\n", - "pomade\n", - "pomaded\n", - "pomades\n", - "pomading\n", - "pomander\n", - "pomanders\n", - "pomatum\n", - "pomatums\n", - "pome\n", - "pomegranate\n", - "pomegranates\n", - "pomelo\n", - "pomelos\n", - "pomes\n", - "pommee\n", - "pommel\n", - "pommeled\n", - "pommeling\n", - "pommelled\n", - "pommelling\n", - "pommels\n", - "pomologies\n", - "pomology\n", - "pomp\n", - "pompano\n", - "pompanos\n", - "pompom\n", - "pompoms\n", - "pompon\n", - "pompons\n", - "pomposities\n", - "pomposity\n", - "pompous\n", - "pompously\n", - "pomps\n", - "ponce\n", - "ponces\n", - "poncho\n", - "ponchos\n", - "pond\n", - "ponder\n", - "pondered\n", - "ponderer\n", - "ponderers\n", - "pondering\n", - "ponderous\n", - "ponders\n", - "ponds\n", - "pondville\n", - "pondweed\n", - "pondweeds\n", - "pone\n", - "ponent\n", - "pones\n", - "pongee\n", - "pongees\n", - "pongid\n", - "pongids\n", - "poniard\n", - "poniarded\n", - "poniarding\n", - "poniards\n", - "ponied\n", - "ponies\n", - "pons\n", - "pontes\n", - "pontifex\n", - "pontiff\n", - "pontiffs\n", - "pontific\n", - "pontifical\n", - "pontificate\n", - "pontificated\n", - "pontificates\n", - "pontificating\n", - "pontifices\n", - "pontil\n", - "pontils\n", - "pontine\n", - "ponton\n", - "pontons\n", - "pontoon\n", - "pontoons\n", - "pony\n", - "ponying\n", - "ponytail\n", - "ponytails\n", - "pooch\n", - "pooches\n", - "pood\n", - "poodle\n", - "poodles\n", - "poods\n", - "pooh\n", - "poohed\n", - "poohing\n", - "poohs\n", - "pool\n", - "pooled\n", - "poolhall\n", - "poolhalls\n", - "pooling\n", - "poolroom\n", - "poolrooms\n", - "pools\n", - "poon\n", - "poons\n", - "poop\n", - "pooped\n", - "pooping\n", - "poops\n", - "poor\n", - "poorer\n", - "poorest\n", - "poori\n", - "pooris\n", - "poorish\n", - "poorly\n", - "poorness\n", - "poornesses\n", - "poortith\n", - "poortiths\n", - "pop\n", - "popcorn\n", - "popcorns\n", - "pope\n", - "popedom\n", - "popedoms\n", - "popeless\n", - "popelike\n", - "poperies\n", - "popery\n", - "popes\n", - "popeyed\n", - "popgun\n", - "popguns\n", - "popinjay\n", - "popinjays\n", - "popish\n", - "popishly\n", - "poplar\n", - "poplars\n", - "poplin\n", - "poplins\n", - "poplitic\n", - "popover\n", - "popovers\n", - "poppa\n", - "poppas\n", - "popped\n", - "popper\n", - "poppers\n", - "poppet\n", - "poppets\n", - "poppied\n", - "poppies\n", - "popping\n", - "popple\n", - "poppled\n", - "popples\n", - "poppling\n", - "poppy\n", - "pops\n", - "populace\n", - "populaces\n", - "popular\n", - "popularities\n", - "popularity\n", - "popularize\n", - "popularized\n", - "popularizes\n", - "popularizing\n", - "popularly\n", - "populate\n", - "populated\n", - "populates\n", - "populating\n", - "population\n", - "populations\n", - "populism\n", - "populisms\n", - "populist\n", - "populists\n", - "populous\n", - "populousness\n", - "populousnesses\n", - "porcelain\n", - "porcelains\n", - "porch\n", - "porches\n", - "porcine\n", - "porcupine\n", - "porcupines\n", - "pore\n", - "pored\n", - "pores\n", - "porgies\n", - "porgy\n", - "poring\n", - "porism\n", - "porisms\n", - "pork\n", - "porker\n", - "porkers\n", - "porkier\n", - "porkies\n", - "porkiest\n", - "porkpie\n", - "porkpies\n", - "porks\n", - "porkwood\n", - "porkwoods\n", - "porky\n", - "porn\n", - "porno\n", - "pornographic\n", - "pornography\n", - "pornos\n", - "porns\n", - "porose\n", - "porosities\n", - "porosity\n", - "porous\n", - "porously\n", - "porphyries\n", - "porphyry\n", - "porpoise\n", - "porpoises\n", - "porrect\n", - "porridge\n", - "porridges\n", - "porringer\n", - "porringers\n", - "port\n", - "portability\n", - "portable\n", - "portables\n", - "portably\n", - "portage\n", - "portaged\n", - "portages\n", - "portaging\n", - "portal\n", - "portaled\n", - "portals\n", - "portance\n", - "portances\n", - "porte\n", - "ported\n", - "portend\n", - "portended\n", - "portending\n", - "portends\n", - "portent\n", - "portentious\n", - "portents\n", - "porter\n", - "porterhouse\n", - "porterhouses\n", - "porters\n", - "portfolio\n", - "portfolios\n", - "porthole\n", - "portholes\n", - "portico\n", - "porticoes\n", - "porticos\n", - "portiere\n", - "portieres\n", - "porting\n", - "portion\n", - "portioned\n", - "portioning\n", - "portions\n", - "portless\n", - "portlier\n", - "portliest\n", - "portly\n", - "portrait\n", - "portraitist\n", - "portraitists\n", - "portraits\n", - "portraiture\n", - "portraitures\n", - "portray\n", - "portrayal\n", - "portrayals\n", - "portrayed\n", - "portraying\n", - "portrays\n", - "portress\n", - "portresses\n", - "ports\n", - "posada\n", - "posadas\n", - "pose\n", - "posed\n", - "poser\n", - "posers\n", - "poses\n", - "poseur\n", - "poseurs\n", - "posh\n", - "posher\n", - "poshest\n", - "posies\n", - "posing\n", - "posingly\n", - "posit\n", - "posited\n", - "positing\n", - "position\n", - "positioned\n", - "positioning\n", - "positions\n", - "positive\n", - "positively\n", - "positiveness\n", - "positivenesses\n", - "positiver\n", - "positives\n", - "positivest\n", - "positivity\n", - "positron\n", - "positrons\n", - "posits\n", - "posologies\n", - "posology\n", - "posse\n", - "posses\n", - "possess\n", - "possessed\n", - "possesses\n", - "possessing\n", - "possession\n", - "possessions\n", - "possessive\n", - "possessiveness\n", - "possessivenesses\n", - "possessives\n", - "possessor\n", - "possessors\n", - "posset\n", - "possets\n", - "possibilities\n", - "possibility\n", - "possible\n", - "possibler\n", - "possiblest\n", - "possibly\n", - "possum\n", - "possums\n", - "post\n", - "postadolescence\n", - "postadolescences\n", - "postadolescent\n", - "postage\n", - "postages\n", - "postal\n", - "postally\n", - "postals\n", - "postanal\n", - "postattack\n", - "postbaccalaureate\n", - "postbag\n", - "postbags\n", - "postbiblical\n", - "postbox\n", - "postboxes\n", - "postboy\n", - "postboys\n", - "postcard\n", - "postcards\n", - "postcava\n", - "postcavae\n", - "postcollege\n", - "postcolonial\n", - "postdate\n", - "postdated\n", - "postdates\n", - "postdating\n", - "posted\n", - "posteen\n", - "posteens\n", - "postelection\n", - "poster\n", - "posterior\n", - "posteriors\n", - "posterities\n", - "posterity\n", - "postern\n", - "posterns\n", - "posters\n", - "postexercise\n", - "postface\n", - "postfaces\n", - "postfertilization\n", - "postfertilizations\n", - "postfix\n", - "postfixed\n", - "postfixes\n", - "postfixing\n", - "postflight\n", - "postform\n", - "postformed\n", - "postforming\n", - "postforms\n", - "postgraduate\n", - "postgraduates\n", - "postgraduation\n", - "postharvest\n", - "posthaste\n", - "posthole\n", - "postholes\n", - "posthospital\n", - "posthumous\n", - "postiche\n", - "postiches\n", - "postimperial\n", - "postin\n", - "postinaugural\n", - "postindustrial\n", - "posting\n", - "postings\n", - "postinjection\n", - "postinoculation\n", - "postins\n", - "postique\n", - "postiques\n", - "postlude\n", - "postludes\n", - "postman\n", - "postmarital\n", - "postmark\n", - "postmarked\n", - "postmarking\n", - "postmarks\n", - "postmaster\n", - "postmasters\n", - "postmen\n", - "postmenopausal\n", - "postmortem\n", - "postmortems\n", - "postnatal\n", - "postnuptial\n", - "postoperative\n", - "postoral\n", - "postpaid\n", - "postpartum\n", - "postpone\n", - "postponed\n", - "postponement\n", - "postponements\n", - "postpones\n", - "postponing\n", - "postproduction\n", - "postpubertal\n", - "postpuberty\n", - "postradiation\n", - "postrecession\n", - "postretirement\n", - "postrevolutionary\n", - "posts\n", - "postscript\n", - "postscripts\n", - "postseason\n", - "postsecondary\n", - "postsurgical\n", - "posttreatment\n", - "posttrial\n", - "postulant\n", - "postulants\n", - "postulate\n", - "postulated\n", - "postulates\n", - "postulating\n", - "postural\n", - "posture\n", - "postured\n", - "posturer\n", - "posturers\n", - "postures\n", - "posturing\n", - "postvaccination\n", - "postwar\n", - "posy\n", - "pot\n", - "potable\n", - "potables\n", - "potage\n", - "potages\n", - "potamic\n", - "potash\n", - "potashes\n", - "potassic\n", - "potassium\n", - "potassiums\n", - "potation\n", - "potations\n", - "potato\n", - "potatoes\n", - "potatory\n", - "potbellied\n", - "potbellies\n", - "potbelly\n", - "potboil\n", - "potboiled\n", - "potboiling\n", - "potboils\n", - "potboy\n", - "potboys\n", - "poteen\n", - "poteens\n", - "potence\n", - "potences\n", - "potencies\n", - "potency\n", - "potent\n", - "potentate\n", - "potentates\n", - "potential\n", - "potentialities\n", - "potentiality\n", - "potentially\n", - "potentials\n", - "potently\n", - "potful\n", - "potfuls\n", - "pothead\n", - "potheads\n", - "potheen\n", - "potheens\n", - "pother\n", - "potherb\n", - "potherbs\n", - "pothered\n", - "pothering\n", - "pothers\n", - "pothole\n", - "potholed\n", - "potholes\n", - "pothook\n", - "pothooks\n", - "pothouse\n", - "pothouses\n", - "potiche\n", - "potiches\n", - "potion\n", - "potions\n", - "potlach\n", - "potlache\n", - "potlaches\n", - "potlatch\n", - "potlatched\n", - "potlatches\n", - "potlatching\n", - "potlike\n", - "potluck\n", - "potlucks\n", - "potman\n", - "potmen\n", - "potpie\n", - "potpies\n", - "potpourri\n", - "potpourris\n", - "pots\n", - "potshard\n", - "potshards\n", - "potsherd\n", - "potsherds\n", - "potshot\n", - "potshots\n", - "potshotting\n", - "potsie\n", - "potsies\n", - "potstone\n", - "potstones\n", - "potsy\n", - "pottage\n", - "pottages\n", - "potted\n", - "potteen\n", - "potteens\n", - "potter\n", - "pottered\n", - "potterer\n", - "potterers\n", - "potteries\n", - "pottering\n", - "potters\n", - "pottery\n", - "pottier\n", - "potties\n", - "pottiest\n", - "potting\n", - "pottle\n", - "pottles\n", - "potto\n", - "pottos\n", - "potty\n", - "pouch\n", - "pouched\n", - "pouches\n", - "pouchier\n", - "pouchiest\n", - "pouching\n", - "pouchy\n", - "pouf\n", - "poufed\n", - "pouff\n", - "pouffe\n", - "pouffed\n", - "pouffes\n", - "pouffs\n", - "poufs\n", - "poulard\n", - "poularde\n", - "poulardes\n", - "poulards\n", - "poult\n", - "poultice\n", - "poulticed\n", - "poultices\n", - "poulticing\n", - "poultries\n", - "poultry\n", - "poults\n", - "pounce\n", - "pounced\n", - "pouncer\n", - "pouncers\n", - "pounces\n", - "pouncing\n", - "pound\n", - "poundage\n", - "poundages\n", - "poundal\n", - "poundals\n", - "pounded\n", - "pounder\n", - "pounders\n", - "pounding\n", - "pounds\n", - "pour\n", - "pourable\n", - "poured\n", - "pourer\n", - "pourers\n", - "pouring\n", - "pours\n", - "poussie\n", - "poussies\n", - "pout\n", - "pouted\n", - "pouter\n", - "pouters\n", - "poutful\n", - "poutier\n", - "poutiest\n", - "pouting\n", - "pouts\n", - "pouty\n", - "poverties\n", - "poverty\n", - "pow\n", - "powder\n", - "powdered\n", - "powderer\n", - "powderers\n", - "powdering\n", - "powders\n", - "powdery\n", - "power\n", - "powered\n", - "powerful\n", - "powerfully\n", - "powering\n", - "powerless\n", - "powerlessness\n", - "powers\n", - "pows\n", - "powter\n", - "powters\n", - "powwow\n", - "powwowed\n", - "powwowing\n", - "powwows\n", - "pox\n", - "poxed\n", - "poxes\n", - "poxing\n", - "poxvirus\n", - "poxviruses\n", - "poyou\n", - "poyous\n", - "pozzolan\n", - "pozzolans\n", - "praam\n", - "praams\n", - "practic\n", - "practicabilities\n", - "practicability\n", - "practicable\n", - "practical\n", - "practicalities\n", - "practicality\n", - "practically\n", - "practice\n", - "practiced\n", - "practices\n", - "practicing\n", - "practise\n", - "practised\n", - "practises\n", - "practising\n", - "practitioner\n", - "practitioners\n", - "praecipe\n", - "praecipes\n", - "praedial\n", - "praefect\n", - "praefects\n", - "praelect\n", - "praelected\n", - "praelecting\n", - "praelects\n", - "praetor\n", - "praetors\n", - "pragmatic\n", - "pragmatism\n", - "pragmatisms\n", - "prahu\n", - "prahus\n", - "prairie\n", - "prairies\n", - "praise\n", - "praised\n", - "praiser\n", - "praisers\n", - "praises\n", - "praiseworthy\n", - "praising\n", - "praline\n", - "pralines\n", - "pram\n", - "prams\n", - "prance\n", - "pranced\n", - "prancer\n", - "prancers\n", - "prances\n", - "prancing\n", - "prandial\n", - "prang\n", - "pranged\n", - "pranging\n", - "prangs\n", - "prank\n", - "pranked\n", - "pranking\n", - "prankish\n", - "pranks\n", - "prankster\n", - "pranksters\n", - "prao\n", - "praos\n", - "prase\n", - "prases\n", - "prat\n", - "prate\n", - "prated\n", - "prater\n", - "praters\n", - "prates\n", - "pratfall\n", - "pratfalls\n", - "prating\n", - "pratique\n", - "pratiques\n", - "prats\n", - "prattle\n", - "prattled\n", - "prattler\n", - "prattlers\n", - "prattles\n", - "prattling\n", - "prau\n", - "praus\n", - "prawn\n", - "prawned\n", - "prawner\n", - "prawners\n", - "prawning\n", - "prawns\n", - "praxes\n", - "praxis\n", - "praxises\n", - "pray\n", - "prayed\n", - "prayer\n", - "prayers\n", - "praying\n", - "prays\n", - "preach\n", - "preached\n", - "preacher\n", - "preachers\n", - "preaches\n", - "preachier\n", - "preachiest\n", - "preaching\n", - "preachment\n", - "preachments\n", - "preachy\n", - "preact\n", - "preacted\n", - "preacting\n", - "preacts\n", - "preadapt\n", - "preadapted\n", - "preadapting\n", - "preadapts\n", - "preaddress\n", - "preadmission\n", - "preadmit\n", - "preadmits\n", - "preadmitted\n", - "preadmitting\n", - "preadolescence\n", - "preadolescences\n", - "preadolescent\n", - "preadopt\n", - "preadopted\n", - "preadopting\n", - "preadopts\n", - "preadult\n", - "preaged\n", - "preallocate\n", - "preallocated\n", - "preallocates\n", - "preallocating\n", - "preallot\n", - "preallots\n", - "preallotted\n", - "preallotting\n", - "preamble\n", - "preambles\n", - "preamp\n", - "preamps\n", - "preanal\n", - "preanesthetic\n", - "preanesthetics\n", - "prearm\n", - "prearmed\n", - "prearming\n", - "prearms\n", - "prearraignment\n", - "prearrange\n", - "prearranged\n", - "prearrangement\n", - "prearrangements\n", - "prearranges\n", - "prearranging\n", - "preassemble\n", - "preassembled\n", - "preassembles\n", - "preassembling\n", - "preassign\n", - "preassigned\n", - "preassigning\n", - "preassigns\n", - "preauthorize\n", - "preauthorized\n", - "preauthorizes\n", - "preauthorizing\n", - "preaver\n", - "preaverred\n", - "preaverring\n", - "preavers\n", - "preaxial\n", - "prebasal\n", - "prebattle\n", - "prebend\n", - "prebends\n", - "prebiblical\n", - "prebill\n", - "prebilled\n", - "prebilling\n", - "prebills\n", - "prebind\n", - "prebinding\n", - "prebinds\n", - "prebless\n", - "preblessed\n", - "preblesses\n", - "preblessing\n", - "preboil\n", - "preboiled\n", - "preboiling\n", - "preboils\n", - "prebound\n", - "prebreakfast\n", - "precalculate\n", - "precalculated\n", - "precalculates\n", - "precalculating\n", - "precalculus\n", - "precalculuses\n", - "precampaign\n", - "precancel\n", - "precanceled\n", - "precanceling\n", - "precancellation\n", - "precancellations\n", - "precancels\n", - "precarious\n", - "precariously\n", - "precariousness\n", - "precariousnesses\n", - "precast\n", - "precasting\n", - "precasts\n", - "precaution\n", - "precautionary\n", - "precautions\n", - "precava\n", - "precavae\n", - "precaval\n", - "precede\n", - "preceded\n", - "precedence\n", - "precedences\n", - "precedent\n", - "precedents\n", - "precedes\n", - "preceding\n", - "precent\n", - "precented\n", - "precenting\n", - "precents\n", - "precept\n", - "preceptor\n", - "preceptors\n", - "precepts\n", - "precess\n", - "precessed\n", - "precesses\n", - "precessing\n", - "precheck\n", - "prechecked\n", - "prechecking\n", - "prechecks\n", - "prechill\n", - "prechilled\n", - "prechilling\n", - "prechills\n", - "precieux\n", - "precinct\n", - "precincts\n", - "precious\n", - "preciouses\n", - "precipe\n", - "precipes\n", - "precipice\n", - "precipices\n", - "precipitate\n", - "precipitated\n", - "precipitately\n", - "precipitateness\n", - "precipitatenesses\n", - "precipitates\n", - "precipitating\n", - "precipitation\n", - "precipitations\n", - "precipitous\n", - "precipitously\n", - "precis\n", - "precise\n", - "precised\n", - "precisely\n", - "preciseness\n", - "precisenesses\n", - "preciser\n", - "precises\n", - "precisest\n", - "precising\n", - "precision\n", - "precisions\n", - "precited\n", - "precivilization\n", - "preclean\n", - "precleaned\n", - "precleaning\n", - "precleans\n", - "preclearance\n", - "preclearances\n", - "preclude\n", - "precluded\n", - "precludes\n", - "precluding\n", - "precocious\n", - "precocities\n", - "precocity\n", - "precollege\n", - "precolonial\n", - "precombustion\n", - "precompute\n", - "precomputed\n", - "precomputes\n", - "precomputing\n", - "preconceive\n", - "preconceived\n", - "preconceives\n", - "preconceiving\n", - "preconception\n", - "preconceptions\n", - "preconcerted\n", - "precondition\n", - "preconditions\n", - "preconference\n", - "preconstruct\n", - "preconvention\n", - "precook\n", - "precooked\n", - "precooking\n", - "precooks\n", - "precool\n", - "precooled\n", - "precooling\n", - "precools\n", - "precure\n", - "precured\n", - "precures\n", - "precuring\n", - "precursor\n", - "precursors\n", - "predate\n", - "predated\n", - "predates\n", - "predating\n", - "predator\n", - "predators\n", - "predatory\n", - "predawn\n", - "predawns\n", - "predecessor\n", - "predecessors\n", - "predefine\n", - "predefined\n", - "predefines\n", - "predefining\n", - "predelinquent\n", - "predeparture\n", - "predesignate\n", - "predesignated\n", - "predesignates\n", - "predesignating\n", - "predesignation\n", - "predesignations\n", - "predestine\n", - "predestined\n", - "predestines\n", - "predestining\n", - "predetermine\n", - "predetermined\n", - "predetermines\n", - "predetermining\n", - "predial\n", - "predicament\n", - "predicaments\n", - "predicate\n", - "predicated\n", - "predicates\n", - "predicating\n", - "predication\n", - "predications\n", - "predict\n", - "predictable\n", - "predictably\n", - "predicted\n", - "predicting\n", - "prediction\n", - "predictions\n", - "predictive\n", - "predicts\n", - "predilection\n", - "predilections\n", - "predischarge\n", - "predispose\n", - "predisposed\n", - "predisposes\n", - "predisposing\n", - "predisposition\n", - "predispositions\n", - "prednisone\n", - "prednisones\n", - "predominance\n", - "predominances\n", - "predominant\n", - "predominantly\n", - "predominate\n", - "predominated\n", - "predominates\n", - "predominating\n", - "predusk\n", - "predusks\n", - "pree\n", - "preed\n", - "preeing\n", - "preelect\n", - "preelected\n", - "preelecting\n", - "preelection\n", - "preelectric\n", - "preelectronic\n", - "preelects\n", - "preemie\n", - "preemies\n", - "preeminence\n", - "preeminences\n", - "preeminent\n", - "preeminently\n", - "preemployment\n", - "preempt\n", - "preempted\n", - "preempting\n", - "preemption\n", - "preemptions\n", - "preempts\n", - "preen\n", - "preenact\n", - "preenacted\n", - "preenacting\n", - "preenacts\n", - "preened\n", - "preener\n", - "preeners\n", - "preening\n", - "preens\n", - "prees\n", - "preestablish\n", - "preestablished\n", - "preestablishes\n", - "preestablishing\n", - "preexist\n", - "preexisted\n", - "preexistence\n", - "preexistences\n", - "preexistent\n", - "preexisting\n", - "preexists\n", - "prefab\n", - "prefabbed\n", - "prefabbing\n", - "prefabricated\n", - "prefabrication\n", - "prefabrications\n", - "prefabs\n", - "preface\n", - "prefaced\n", - "prefacer\n", - "prefacers\n", - "prefaces\n", - "prefacing\n", - "prefect\n", - "prefects\n", - "prefecture\n", - "prefectures\n", - "prefer\n", - "preferable\n", - "preferably\n", - "preference\n", - "preferences\n", - "preferential\n", - "preferment\n", - "preferments\n", - "preferred\n", - "preferring\n", - "prefers\n", - "prefigure\n", - "prefigured\n", - "prefigures\n", - "prefiguring\n", - "prefilter\n", - "prefilters\n", - "prefix\n", - "prefixal\n", - "prefixed\n", - "prefixes\n", - "prefixing\n", - "prefocus\n", - "prefocused\n", - "prefocuses\n", - "prefocusing\n", - "prefocussed\n", - "prefocusses\n", - "prefocussing\n", - "preform\n", - "preformed\n", - "preforming\n", - "preforms\n", - "prefrank\n", - "prefranked\n", - "prefranking\n", - "prefranks\n", - "pregame\n", - "pregnancies\n", - "pregnancy\n", - "pregnant\n", - "preheat\n", - "preheated\n", - "preheating\n", - "preheats\n", - "prehensile\n", - "prehistoric\n", - "prehistorical\n", - "prehuman\n", - "prehumans\n", - "preimmunization\n", - "preimmunizations\n", - "preimmunize\n", - "preimmunized\n", - "preimmunizes\n", - "preimmunizing\n", - "preinaugural\n", - "preindustrial\n", - "preinoculate\n", - "preinoculated\n", - "preinoculates\n", - "preinoculating\n", - "preinoculation\n", - "preinterview\n", - "prejudge\n", - "prejudged\n", - "prejudges\n", - "prejudging\n", - "prejudice\n", - "prejudiced\n", - "prejudices\n", - "prejudicial\n", - "prejudicing\n", - "prekindergarten\n", - "prekindergartens\n", - "prelacies\n", - "prelacy\n", - "prelate\n", - "prelates\n", - "prelatic\n", - "prelaunch\n", - "prelect\n", - "prelected\n", - "prelecting\n", - "prelects\n", - "prelegal\n", - "prelim\n", - "preliminaries\n", - "preliminary\n", - "prelimit\n", - "prelimited\n", - "prelimiting\n", - "prelimits\n", - "prelims\n", - "prelude\n", - "preluded\n", - "preluder\n", - "preluders\n", - "preludes\n", - "preluding\n", - "preman\n", - "premarital\n", - "premature\n", - "prematurely\n", - "premed\n", - "premedic\n", - "premedics\n", - "premeditate\n", - "premeditated\n", - "premeditates\n", - "premeditating\n", - "premeditation\n", - "premeditations\n", - "premeds\n", - "premen\n", - "premenopausal\n", - "premenstrual\n", - "premie\n", - "premier\n", - "premiere\n", - "premiered\n", - "premieres\n", - "premiering\n", - "premiers\n", - "premiership\n", - "premierships\n", - "premies\n", - "premise\n", - "premised\n", - "premises\n", - "premising\n", - "premiss\n", - "premisses\n", - "premium\n", - "premiums\n", - "premix\n", - "premixed\n", - "premixes\n", - "premixing\n", - "premodern\n", - "premodified\n", - "premodifies\n", - "premodify\n", - "premodifying\n", - "premoisten\n", - "premoistened\n", - "premoistening\n", - "premoistens\n", - "premolar\n", - "premolars\n", - "premonition\n", - "premonitions\n", - "premonitory\n", - "premorse\n", - "premune\n", - "prename\n", - "prenames\n", - "prenatal\n", - "prenomen\n", - "prenomens\n", - "prenomina\n", - "prenotification\n", - "prenotifications\n", - "prenotified\n", - "prenotifies\n", - "prenotify\n", - "prenotifying\n", - "prentice\n", - "prenticed\n", - "prentices\n", - "prenticing\n", - "prenuptial\n", - "preoccupation\n", - "preoccupations\n", - "preoccupied\n", - "preoccupies\n", - "preoccupy\n", - "preoccupying\n", - "preopening\n", - "preoperational\n", - "preordain\n", - "preordained\n", - "preordaining\n", - "preordains\n", - "prep\n", - "prepack\n", - "prepackage\n", - "prepackaged\n", - "prepackages\n", - "prepackaging\n", - "prepacked\n", - "prepacking\n", - "prepacks\n", - "prepaid\n", - "preparation\n", - "preparations\n", - "preparatory\n", - "prepare\n", - "prepared\n", - "preparedness\n", - "preparednesses\n", - "preparer\n", - "preparers\n", - "prepares\n", - "preparing\n", - "prepay\n", - "prepaying\n", - "prepays\n", - "prepense\n", - "preplace\n", - "preplaced\n", - "preplaces\n", - "preplacing\n", - "preplan\n", - "preplanned\n", - "preplanning\n", - "preplans\n", - "preplant\n", - "preponderance\n", - "preponderances\n", - "preponderant\n", - "preponderantly\n", - "preponderate\n", - "preponderated\n", - "preponderates\n", - "preponderating\n", - "preposition\n", - "prepositional\n", - "prepositions\n", - "prepossessing\n", - "preposterous\n", - "prepped\n", - "preppie\n", - "preppies\n", - "prepping\n", - "preprint\n", - "preprinted\n", - "preprinting\n", - "preprints\n", - "preprocess\n", - "preprocessed\n", - "preprocesses\n", - "preprocessing\n", - "preproduction\n", - "preprofessional\n", - "preprogram\n", - "preps\n", - "prepubertal\n", - "prepublication\n", - "prepuce\n", - "prepuces\n", - "prepunch\n", - "prepunched\n", - "prepunches\n", - "prepunching\n", - "prepurchase\n", - "prepurchased\n", - "prepurchases\n", - "prepurchasing\n", - "prerecord\n", - "prerecorded\n", - "prerecording\n", - "prerecords\n", - "preregister\n", - "preregistered\n", - "preregistering\n", - "preregisters\n", - "preregistration\n", - "preregistrations\n", - "prerehearsal\n", - "prerelease\n", - "prerenal\n", - "prerequisite\n", - "prerequisites\n", - "preretirement\n", - "prerevolutionary\n", - "prerogative\n", - "prerogatives\n", - "presa\n", - "presage\n", - "presaged\n", - "presager\n", - "presagers\n", - "presages\n", - "presaging\n", - "presbyter\n", - "presbyters\n", - "prescience\n", - "presciences\n", - "prescient\n", - "prescind\n", - "prescinded\n", - "prescinding\n", - "prescinds\n", - "prescore\n", - "prescored\n", - "prescores\n", - "prescoring\n", - "prescribe\n", - "prescribed\n", - "prescribes\n", - "prescribing\n", - "prescription\n", - "prescriptions\n", - "prese\n", - "preseason\n", - "preselect\n", - "preselected\n", - "preselecting\n", - "preselects\n", - "presell\n", - "preselling\n", - "presells\n", - "presence\n", - "presences\n", - "present\n", - "presentable\n", - "presentation\n", - "presentations\n", - "presented\n", - "presentiment\n", - "presentiments\n", - "presenting\n", - "presently\n", - "presentment\n", - "presentments\n", - "presents\n", - "preservation\n", - "preservations\n", - "preservative\n", - "preservatives\n", - "preserve\n", - "preserved\n", - "preserver\n", - "preservers\n", - "preserves\n", - "preserving\n", - "preset\n", - "presets\n", - "presetting\n", - "preshape\n", - "preshaped\n", - "preshapes\n", - "preshaping\n", - "preshow\n", - "preshowed\n", - "preshowing\n", - "preshown\n", - "preshows\n", - "preshrink\n", - "preshrinked\n", - "preshrinking\n", - "preshrinks\n", - "preside\n", - "presided\n", - "presidencies\n", - "presidency\n", - "president\n", - "presidential\n", - "presidents\n", - "presider\n", - "presiders\n", - "presides\n", - "presidia\n", - "presiding\n", - "presidio\n", - "presidios\n", - "presift\n", - "presifted\n", - "presifting\n", - "presifts\n", - "presoak\n", - "presoaked\n", - "presoaking\n", - "presoaks\n", - "presold\n", - "press\n", - "pressed\n", - "presser\n", - "pressers\n", - "presses\n", - "pressing\n", - "pressman\n", - "pressmen\n", - "pressor\n", - "pressrun\n", - "pressruns\n", - "pressure\n", - "pressured\n", - "pressures\n", - "pressuring\n", - "pressurization\n", - "pressurizations\n", - "pressurize\n", - "pressurized\n", - "pressurizes\n", - "pressurizing\n", - "prest\n", - "prestamp\n", - "prestamped\n", - "prestamping\n", - "prestamps\n", - "prester\n", - "presterilize\n", - "presterilized\n", - "presterilizes\n", - "presterilizing\n", - "presters\n", - "prestidigitation\n", - "prestidigitations\n", - "prestige\n", - "prestiges\n", - "prestigious\n", - "presto\n", - "prestos\n", - "prestrike\n", - "prests\n", - "presumable\n", - "presumably\n", - "presume\n", - "presumed\n", - "presumer\n", - "presumers\n", - "presumes\n", - "presuming\n", - "presumption\n", - "presumptions\n", - "presumptive\n", - "presumptuous\n", - "presuppose\n", - "presupposed\n", - "presupposes\n", - "presupposing\n", - "presupposition\n", - "presuppositions\n", - "presurgical\n", - "presweeten\n", - "presweetened\n", - "presweetening\n", - "presweetens\n", - "pretaste\n", - "pretasted\n", - "pretastes\n", - "pretasting\n", - "pretax\n", - "preteen\n", - "preteens\n", - "pretelevision\n", - "pretence\n", - "pretences\n", - "pretend\n", - "pretended\n", - "pretender\n", - "pretenders\n", - "pretending\n", - "pretends\n", - "pretense\n", - "pretenses\n", - "pretension\n", - "pretensions\n", - "pretentious\n", - "pretentiously\n", - "pretentiousness\n", - "pretentiousnesses\n", - "preterit\n", - "preterits\n", - "preternatural\n", - "preternaturally\n", - "pretest\n", - "pretested\n", - "pretesting\n", - "pretests\n", - "pretext\n", - "pretexted\n", - "pretexting\n", - "pretexts\n", - "pretor\n", - "pretors\n", - "pretournament\n", - "pretreat\n", - "pretreated\n", - "pretreating\n", - "pretreatment\n", - "pretreats\n", - "prettied\n", - "prettier\n", - "pretties\n", - "prettiest\n", - "prettified\n", - "prettifies\n", - "prettify\n", - "prettifying\n", - "prettily\n", - "prettiness\n", - "prettinesses\n", - "pretty\n", - "prettying\n", - "pretzel\n", - "pretzels\n", - "preunion\n", - "preunions\n", - "preunite\n", - "preunited\n", - "preunites\n", - "preuniting\n", - "prevail\n", - "prevailed\n", - "prevailing\n", - "prevailingly\n", - "prevails\n", - "prevalence\n", - "prevalences\n", - "prevalent\n", - "prevaricate\n", - "prevaricated\n", - "prevaricates\n", - "prevaricating\n", - "prevarication\n", - "prevarications\n", - "prevaricator\n", - "prevaricators\n", - "prevent\n", - "preventable\n", - "preventative\n", - "prevented\n", - "preventing\n", - "prevention\n", - "preventions\n", - "preventive\n", - "prevents\n", - "preview\n", - "previewed\n", - "previewing\n", - "previews\n", - "previous\n", - "previously\n", - "previse\n", - "prevised\n", - "previses\n", - "prevising\n", - "previsor\n", - "previsors\n", - "prevue\n", - "prevued\n", - "prevues\n", - "prevuing\n", - "prewar\n", - "prewarm\n", - "prewarmed\n", - "prewarming\n", - "prewarms\n", - "prewarn\n", - "prewarned\n", - "prewarning\n", - "prewarns\n", - "prewash\n", - "prewashed\n", - "prewashes\n", - "prewashing\n", - "prewrap\n", - "prewrapped\n", - "prewrapping\n", - "prewraps\n", - "prex\n", - "prexes\n", - "prexies\n", - "prexy\n", - "prey\n", - "preyed\n", - "preyer\n", - "preyers\n", - "preying\n", - "preys\n", - "priapean\n", - "priapi\n", - "priapic\n", - "priapism\n", - "priapisms\n", - "priapus\n", - "priapuses\n", - "price\n", - "priced\n", - "priceless\n", - "pricer\n", - "pricers\n", - "prices\n", - "pricey\n", - "pricier\n", - "priciest\n", - "pricing\n", - "prick\n", - "pricked\n", - "pricker\n", - "prickers\n", - "pricket\n", - "prickets\n", - "prickier\n", - "prickiest\n", - "pricking\n", - "prickle\n", - "prickled\n", - "prickles\n", - "pricklier\n", - "prickliest\n", - "prickling\n", - "prickly\n", - "pricks\n", - "pricky\n", - "pricy\n", - "pride\n", - "prided\n", - "prideful\n", - "prides\n", - "priding\n", - "pried\n", - "priedieu\n", - "priedieus\n", - "priedieux\n", - "prier\n", - "priers\n", - "pries\n", - "priest\n", - "priested\n", - "priestess\n", - "priestesses\n", - "priesthood\n", - "priesthoods\n", - "priesting\n", - "priestlier\n", - "priestliest\n", - "priestliness\n", - "priestlinesses\n", - "priestly\n", - "priests\n", - "prig\n", - "prigged\n", - "priggeries\n", - "priggery\n", - "prigging\n", - "priggish\n", - "priggishly\n", - "priggism\n", - "priggisms\n", - "prigs\n", - "prill\n", - "prilled\n", - "prilling\n", - "prills\n", - "prim\n", - "prima\n", - "primacies\n", - "primacy\n", - "primage\n", - "primages\n", - "primal\n", - "primaries\n", - "primarily\n", - "primary\n", - "primas\n", - "primatal\n", - "primate\n", - "primates\n", - "prime\n", - "primed\n", - "primely\n", - "primer\n", - "primero\n", - "primeros\n", - "primers\n", - "primes\n", - "primeval\n", - "primi\n", - "primine\n", - "primines\n", - "priming\n", - "primings\n", - "primitive\n", - "primitively\n", - "primitiveness\n", - "primitivenesses\n", - "primitives\n", - "primitivities\n", - "primitivity\n", - "primly\n", - "primmed\n", - "primmer\n", - "primmest\n", - "primming\n", - "primness\n", - "primnesses\n", - "primo\n", - "primordial\n", - "primos\n", - "primp\n", - "primped\n", - "primping\n", - "primps\n", - "primrose\n", - "primroses\n", - "prims\n", - "primsie\n", - "primula\n", - "primulas\n", - "primus\n", - "primuses\n", - "prince\n", - "princelier\n", - "princeliest\n", - "princely\n", - "princes\n", - "princess\n", - "princesses\n", - "principal\n", - "principalities\n", - "principality\n", - "principally\n", - "principals\n", - "principe\n", - "principi\n", - "principle\n", - "principles\n", - "princock\n", - "princocks\n", - "princox\n", - "princoxes\n", - "prink\n", - "prinked\n", - "prinker\n", - "prinkers\n", - "prinking\n", - "prinks\n", - "print\n", - "printable\n", - "printed\n", - "printer\n", - "printeries\n", - "printers\n", - "printery\n", - "printing\n", - "printings\n", - "printout\n", - "printouts\n", - "prints\n", - "prior\n", - "priorate\n", - "priorates\n", - "prioress\n", - "prioresses\n", - "priories\n", - "priorities\n", - "prioritize\n", - "prioritized\n", - "prioritizes\n", - "prioritizing\n", - "priority\n", - "priorly\n", - "priors\n", - "priory\n", - "prise\n", - "prised\n", - "prisere\n", - "priseres\n", - "prises\n", - "prising\n", - "prism\n", - "prismatic\n", - "prismoid\n", - "prismoids\n", - "prisms\n", - "prison\n", - "prisoned\n", - "prisoner\n", - "prisoners\n", - "prisoning\n", - "prisons\n", - "priss\n", - "prisses\n", - "prissier\n", - "prissies\n", - "prissiest\n", - "prissily\n", - "prissiness\n", - "prissinesses\n", - "prissy\n", - "pristane\n", - "pristanes\n", - "pristine\n", - "prithee\n", - "privacies\n", - "privacy\n", - "private\n", - "privateer\n", - "privateers\n", - "privater\n", - "privates\n", - "privatest\n", - "privation\n", - "privations\n", - "privet\n", - "privets\n", - "privier\n", - "privies\n", - "priviest\n", - "privilege\n", - "privileged\n", - "privileges\n", - "privily\n", - "privities\n", - "privity\n", - "privy\n", - "prize\n", - "prized\n", - "prizefight\n", - "prizefighter\n", - "prizefighters\n", - "prizefighting\n", - "prizefightings\n", - "prizefights\n", - "prizer\n", - "prizers\n", - "prizes\n", - "prizewinner\n", - "prizewinners\n", - "prizing\n", - "pro\n", - "proa\n", - "proas\n", - "probabilities\n", - "probability\n", - "probable\n", - "probably\n", - "proband\n", - "probands\n", - "probang\n", - "probangs\n", - "probate\n", - "probated\n", - "probates\n", - "probating\n", - "probation\n", - "probationary\n", - "probationer\n", - "probationers\n", - "probations\n", - "probe\n", - "probed\n", - "prober\n", - "probers\n", - "probes\n", - "probing\n", - "probit\n", - "probities\n", - "probits\n", - "probity\n", - "problem\n", - "problematic\n", - "problematical\n", - "problems\n", - "proboscides\n", - "proboscis\n", - "procaine\n", - "procaines\n", - "procarp\n", - "procarps\n", - "procedure\n", - "procedures\n", - "proceed\n", - "proceeded\n", - "proceeding\n", - "proceedings\n", - "proceeds\n", - "process\n", - "processed\n", - "processes\n", - "processing\n", - "procession\n", - "processional\n", - "processionals\n", - "processions\n", - "processor\n", - "processors\n", - "prochain\n", - "prochein\n", - "proclaim\n", - "proclaimed\n", - "proclaiming\n", - "proclaims\n", - "proclamation\n", - "proclamations\n", - "proclivities\n", - "proclivity\n", - "procrastinate\n", - "procrastinated\n", - "procrastinates\n", - "procrastinating\n", - "procrastination\n", - "procrastinations\n", - "procrastinator\n", - "procrastinators\n", - "procreate\n", - "procreated\n", - "procreates\n", - "procreating\n", - "procreation\n", - "procreations\n", - "procreative\n", - "procreator\n", - "procreators\n", - "proctor\n", - "proctored\n", - "proctorial\n", - "proctoring\n", - "proctors\n", - "procurable\n", - "procural\n", - "procurals\n", - "procure\n", - "procured\n", - "procurement\n", - "procurements\n", - "procurer\n", - "procurers\n", - "procures\n", - "procuring\n", - "prod\n", - "prodded\n", - "prodder\n", - "prodders\n", - "prodding\n", - "prodigal\n", - "prodigalities\n", - "prodigality\n", - "prodigals\n", - "prodigies\n", - "prodigious\n", - "prodigiously\n", - "prodigy\n", - "prodromal\n", - "prodromata\n", - "prodrome\n", - "prodromes\n", - "prods\n", - "produce\n", - "produced\n", - "producer\n", - "producers\n", - "produces\n", - "producing\n", - "product\n", - "production\n", - "productions\n", - "productive\n", - "productiveness\n", - "productivenesses\n", - "productivities\n", - "productivity\n", - "products\n", - "proem\n", - "proemial\n", - "proems\n", - "proette\n", - "proettes\n", - "prof\n", - "profane\n", - "profaned\n", - "profanely\n", - "profaneness\n", - "profanenesses\n", - "profaner\n", - "profaners\n", - "profanes\n", - "profaning\n", - "profess\n", - "professed\n", - "professedly\n", - "professes\n", - "professing\n", - "profession\n", - "professional\n", - "professionalism\n", - "professionalize\n", - "professionalized\n", - "professionalizes\n", - "professionalizing\n", - "professionally\n", - "professions\n", - "professor\n", - "professorial\n", - "professors\n", - "professorship\n", - "professorships\n", - "proffer\n", - "proffered\n", - "proffering\n", - "proffers\n", - "proficiencies\n", - "proficiency\n", - "proficient\n", - "proficiently\n", - "profile\n", - "profiled\n", - "profiler\n", - "profilers\n", - "profiles\n", - "profiling\n", - "profit\n", - "profitability\n", - "profitable\n", - "profitably\n", - "profited\n", - "profiteer\n", - "profiteered\n", - "profiteering\n", - "profiteers\n", - "profiter\n", - "profiters\n", - "profiting\n", - "profitless\n", - "profits\n", - "profligacies\n", - "profligacy\n", - "profligate\n", - "profligately\n", - "profligates\n", - "profound\n", - "profounder\n", - "profoundest\n", - "profoundly\n", - "profounds\n", - "profs\n", - "profundities\n", - "profundity\n", - "profuse\n", - "profusely\n", - "profusion\n", - "profusions\n", - "prog\n", - "progenies\n", - "progenitor\n", - "progenitors\n", - "progeny\n", - "progged\n", - "progger\n", - "proggers\n", - "progging\n", - "prognose\n", - "prognosed\n", - "prognoses\n", - "prognosing\n", - "prognosis\n", - "prognosticate\n", - "prognosticated\n", - "prognosticates\n", - "prognosticating\n", - "prognostication\n", - "prognostications\n", - "prognosticator\n", - "prognosticators\n", - "prograde\n", - "program\n", - "programed\n", - "programing\n", - "programmabilities\n", - "programmability\n", - "programmable\n", - "programme\n", - "programmed\n", - "programmer\n", - "programmers\n", - "programmes\n", - "programming\n", - "programs\n", - "progress\n", - "progressed\n", - "progresses\n", - "progressing\n", - "progression\n", - "progressions\n", - "progressive\n", - "progressively\n", - "progs\n", - "prohibit\n", - "prohibited\n", - "prohibiting\n", - "prohibition\n", - "prohibitionist\n", - "prohibitionists\n", - "prohibitions\n", - "prohibitive\n", - "prohibitively\n", - "prohibitory\n", - "prohibits\n", - "project\n", - "projected\n", - "projectile\n", - "projectiles\n", - "projecting\n", - "projection\n", - "projections\n", - "projector\n", - "projectors\n", - "projects\n", - "projet\n", - "projets\n", - "prolabor\n", - "prolamin\n", - "prolamins\n", - "prolan\n", - "prolans\n", - "prolapse\n", - "prolapsed\n", - "prolapses\n", - "prolapsing\n", - "prolate\n", - "prole\n", - "proleg\n", - "prolegs\n", - "proles\n", - "proletarian\n", - "proletariat\n", - "proliferate\n", - "proliferated\n", - "proliferates\n", - "proliferating\n", - "proliferation\n", - "prolific\n", - "prolifically\n", - "proline\n", - "prolines\n", - "prolix\n", - "prolixly\n", - "prolog\n", - "prologed\n", - "prologing\n", - "prologs\n", - "prologue\n", - "prologued\n", - "prologues\n", - "prologuing\n", - "prolong\n", - "prolongation\n", - "prolongations\n", - "prolonge\n", - "prolonged\n", - "prolonges\n", - "prolonging\n", - "prolongs\n", - "prom\n", - "promenade\n", - "promenaded\n", - "promenades\n", - "promenading\n", - "prominence\n", - "prominences\n", - "prominent\n", - "prominently\n", - "promiscuities\n", - "promiscuity\n", - "promiscuous\n", - "promiscuously\n", - "promiscuousness\n", - "promiscuousnesses\n", - "promise\n", - "promised\n", - "promisee\n", - "promisees\n", - "promiser\n", - "promisers\n", - "promises\n", - "promising\n", - "promisingly\n", - "promisor\n", - "promisors\n", - "promissory\n", - "promontories\n", - "promontory\n", - "promote\n", - "promoted\n", - "promoter\n", - "promoters\n", - "promotes\n", - "promoting\n", - "promotion\n", - "promotional\n", - "promotions\n", - "prompt\n", - "prompted\n", - "prompter\n", - "prompters\n", - "promptest\n", - "prompting\n", - "promptly\n", - "promptness\n", - "prompts\n", - "proms\n", - "promulge\n", - "promulged\n", - "promulges\n", - "promulging\n", - "pronate\n", - "pronated\n", - "pronates\n", - "pronating\n", - "pronator\n", - "pronatores\n", - "pronators\n", - "prone\n", - "pronely\n", - "proneness\n", - "pronenesses\n", - "prong\n", - "pronged\n", - "pronging\n", - "prongs\n", - "pronota\n", - "pronotum\n", - "pronoun\n", - "pronounce\n", - "pronounceable\n", - "pronounced\n", - "pronouncement\n", - "pronouncements\n", - "pronounces\n", - "pronouncing\n", - "pronouns\n", - "pronto\n", - "pronunciation\n", - "pronunciations\n", - "proof\n", - "proofed\n", - "proofer\n", - "proofers\n", - "proofing\n", - "proofread\n", - "proofreaded\n", - "proofreader\n", - "proofreaders\n", - "proofreading\n", - "proofreads\n", - "proofs\n", - "prop\n", - "propaganda\n", - "propagandas\n", - "propagandist\n", - "propagandists\n", - "propagandize\n", - "propagandized\n", - "propagandizes\n", - "propagandizing\n", - "propagate\n", - "propagated\n", - "propagates\n", - "propagating\n", - "propagation\n", - "propagations\n", - "propane\n", - "propanes\n", - "propel\n", - "propellant\n", - "propellants\n", - "propelled\n", - "propellent\n", - "propellents\n", - "propeller\n", - "propellers\n", - "propelling\n", - "propels\n", - "propend\n", - "propended\n", - "propending\n", - "propends\n", - "propene\n", - "propenes\n", - "propenol\n", - "propenols\n", - "propense\n", - "propensities\n", - "propensity\n", - "propenyl\n", - "proper\n", - "properer\n", - "properest\n", - "properly\n", - "propers\n", - "properties\n", - "property\n", - "prophage\n", - "prophages\n", - "prophase\n", - "prophases\n", - "prophecies\n", - "prophecy\n", - "prophesied\n", - "prophesier\n", - "prophesiers\n", - "prophesies\n", - "prophesy\n", - "prophesying\n", - "prophet\n", - "prophetess\n", - "prophetesses\n", - "prophetic\n", - "prophetical\n", - "prophetically\n", - "prophets\n", - "prophylactic\n", - "prophylactics\n", - "prophylaxis\n", - "propine\n", - "propined\n", - "propines\n", - "propining\n", - "propinquities\n", - "propinquity\n", - "propitiate\n", - "propitiated\n", - "propitiates\n", - "propitiating\n", - "propitiation\n", - "propitiations\n", - "propitiatory\n", - "propitious\n", - "propjet\n", - "propjets\n", - "propman\n", - "propmen\n", - "propolis\n", - "propolises\n", - "propone\n", - "proponed\n", - "proponent\n", - "proponents\n", - "propones\n", - "proponing\n", - "proportion\n", - "proportional\n", - "proportionally\n", - "proportionate\n", - "proportionately\n", - "proportions\n", - "proposal\n", - "proposals\n", - "propose\n", - "proposed\n", - "proposer\n", - "proposers\n", - "proposes\n", - "proposing\n", - "proposition\n", - "propositions\n", - "propound\n", - "propounded\n", - "propounding\n", - "propounds\n", - "propped\n", - "propping\n", - "proprietary\n", - "proprieties\n", - "proprietor\n", - "proprietors\n", - "proprietorship\n", - "proprietorships\n", - "proprietress\n", - "proprietresses\n", - "propriety\n", - "props\n", - "propulsion\n", - "propulsions\n", - "propulsive\n", - "propyl\n", - "propyla\n", - "propylic\n", - "propylon\n", - "propyls\n", - "prorate\n", - "prorated\n", - "prorates\n", - "prorating\n", - "prorogue\n", - "prorogued\n", - "prorogues\n", - "proroguing\n", - "pros\n", - "prosaic\n", - "prosaism\n", - "prosaisms\n", - "prosaist\n", - "prosaists\n", - "proscribe\n", - "proscribed\n", - "proscribes\n", - "proscribing\n", - "proscription\n", - "proscriptions\n", - "prose\n", - "prosect\n", - "prosected\n", - "prosecting\n", - "prosects\n", - "prosecute\n", - "prosecuted\n", - "prosecutes\n", - "prosecuting\n", - "prosecution\n", - "prosecutions\n", - "prosecutor\n", - "prosecutors\n", - "prosed\n", - "proselyte\n", - "proselytes\n", - "proselytize\n", - "proselytized\n", - "proselytizes\n", - "proselytizing\n", - "proser\n", - "prosers\n", - "proses\n", - "prosier\n", - "prosiest\n", - "prosily\n", - "prosing\n", - "prosit\n", - "proso\n", - "prosodic\n", - "prosodies\n", - "prosody\n", - "prosoma\n", - "prosomal\n", - "prosomas\n", - "prosos\n", - "prospect\n", - "prospected\n", - "prospecting\n", - "prospective\n", - "prospectively\n", - "prospector\n", - "prospectors\n", - "prospects\n", - "prospectus\n", - "prospectuses\n", - "prosper\n", - "prospered\n", - "prospering\n", - "prosperities\n", - "prosperity\n", - "prosperous\n", - "prospers\n", - "prost\n", - "prostate\n", - "prostates\n", - "prostatic\n", - "prostheses\n", - "prosthesis\n", - "prosthetic\n", - "prostitute\n", - "prostituted\n", - "prostitutes\n", - "prostituting\n", - "prostitution\n", - "prostitutions\n", - "prostrate\n", - "prostrated\n", - "prostrates\n", - "prostrating\n", - "prostration\n", - "prostrations\n", - "prostyle\n", - "prostyles\n", - "prosy\n", - "protamin\n", - "protamins\n", - "protases\n", - "protasis\n", - "protatic\n", - "protea\n", - "protean\n", - "proteas\n", - "protease\n", - "proteases\n", - "protect\n", - "protected\n", - "protecting\n", - "protection\n", - "protections\n", - "protective\n", - "protector\n", - "protectorate\n", - "protectorates\n", - "protectors\n", - "protects\n", - "protege\n", - "protegee\n", - "protegees\n", - "proteges\n", - "protei\n", - "proteid\n", - "proteide\n", - "proteides\n", - "proteids\n", - "protein\n", - "proteins\n", - "proteinuria\n", - "protend\n", - "protended\n", - "protending\n", - "protends\n", - "proteose\n", - "proteoses\n", - "protest\n", - "protestation\n", - "protestations\n", - "protested\n", - "protesting\n", - "protests\n", - "proteus\n", - "prothrombin\n", - "protist\n", - "protists\n", - "protium\n", - "protiums\n", - "protocol\n", - "protocoled\n", - "protocoling\n", - "protocolled\n", - "protocolling\n", - "protocols\n", - "proton\n", - "protonic\n", - "protons\n", - "protoplasm\n", - "protoplasmic\n", - "protoplasms\n", - "protopod\n", - "protopods\n", - "prototype\n", - "prototypes\n", - "protoxid\n", - "protoxids\n", - "protozoa\n", - "protozoan\n", - "protozoans\n", - "protract\n", - "protracted\n", - "protracting\n", - "protractor\n", - "protractors\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "protracts\n", - "protrude\n", - "protruded\n", - "protrudes\n", - "protruding\n", - "protrusion\n", - "protrusions\n", - "protrusive\n", - "protuberance\n", - "protuberances\n", - "protuberant\n", - "protyl\n", - "protyle\n", - "protyles\n", - "protyls\n", - "proud\n", - "prouder\n", - "proudest\n", - "proudful\n", - "proudly\n", - "prounion\n", - "provable\n", - "provably\n", - "prove\n", - "proved\n", - "proven\n", - "provender\n", - "provenders\n", - "provenly\n", - "prover\n", - "proverb\n", - "proverbed\n", - "proverbial\n", - "proverbing\n", - "proverbs\n", - "provers\n", - "proves\n", - "provide\n", - "provided\n", - "providence\n", - "providences\n", - "provident\n", - "providential\n", - "providently\n", - "provider\n", - "providers\n", - "provides\n", - "providing\n", - "province\n", - "provinces\n", - "provincial\n", - "provincialism\n", - "provincialisms\n", - "proving\n", - "proviral\n", - "provirus\n", - "proviruses\n", - "provision\n", - "provisional\n", - "provisions\n", - "proviso\n", - "provisoes\n", - "provisos\n", - "provocation\n", - "provocations\n", - "provocative\n", - "provoke\n", - "provoked\n", - "provoker\n", - "provokers\n", - "provokes\n", - "provoking\n", - "provost\n", - "provosts\n", - "prow\n", - "prowar\n", - "prower\n", - "prowess\n", - "prowesses\n", - "prowest\n", - "prowl\n", - "prowled\n", - "prowler\n", - "prowlers\n", - "prowling\n", - "prowls\n", - "prows\n", - "proxemic\n", - "proxies\n", - "proximal\n", - "proximo\n", - "proxy\n", - "prude\n", - "prudence\n", - "prudences\n", - "prudent\n", - "prudential\n", - "prudently\n", - "pruderies\n", - "prudery\n", - "prudes\n", - "prudish\n", - "pruinose\n", - "prunable\n", - "prune\n", - "pruned\n", - "prunella\n", - "prunellas\n", - "prunelle\n", - "prunelles\n", - "prunello\n", - "prunellos\n", - "pruner\n", - "pruners\n", - "prunes\n", - "pruning\n", - "prurient\n", - "prurigo\n", - "prurigos\n", - "pruritic\n", - "pruritus\n", - "prurituses\n", - "prussic\n", - "pruta\n", - "prutah\n", - "prutot\n", - "prutoth\n", - "pry\n", - "pryer\n", - "pryers\n", - "prying\n", - "pryingly\n", - "prythee\n", - "psalm\n", - "psalmed\n", - "psalmic\n", - "psalming\n", - "psalmist\n", - "psalmists\n", - "psalmodies\n", - "psalmody\n", - "psalms\n", - "psalter\n", - "psalteries\n", - "psalters\n", - "psaltery\n", - "psaltries\n", - "psaltry\n", - "psammite\n", - "psammites\n", - "pschent\n", - "pschents\n", - "psephite\n", - "psephites\n", - "pseudo\n", - "pseudonym\n", - "pseudonymous\n", - "pshaw\n", - "pshawed\n", - "pshawing\n", - "pshaws\n", - "psi\n", - "psiloses\n", - "psilosis\n", - "psilotic\n", - "psis\n", - "psoae\n", - "psoai\n", - "psoas\n", - "psocid\n", - "psocids\n", - "psoralea\n", - "psoraleas\n", - "psoriasis\n", - "psoriasises\n", - "psst\n", - "psych\n", - "psyche\n", - "psyched\n", - "psyches\n", - "psychiatric\n", - "psychiatries\n", - "psychiatrist\n", - "psychiatrists\n", - "psychiatry\n", - "psychic\n", - "psychically\n", - "psychics\n", - "psyching\n", - "psycho\n", - "psychoanalyses\n", - "psychoanalysis\n", - "psychoanalyst\n", - "psychoanalysts\n", - "psychoanalytic\n", - "psychoanalyze\n", - "psychoanalyzed\n", - "psychoanalyzes\n", - "psychoanalyzing\n", - "psychological\n", - "psychologically\n", - "psychologies\n", - "psychologist\n", - "psychologists\n", - "psychology\n", - "psychopath\n", - "psychopathic\n", - "psychopaths\n", - "psychos\n", - "psychoses\n", - "psychosis\n", - "psychosocial\n", - "psychosomatic\n", - "psychotherapies\n", - "psychotherapist\n", - "psychotherapists\n", - "psychotherapy\n", - "psychotic\n", - "psychs\n", - "psylla\n", - "psyllas\n", - "psyllid\n", - "psyllids\n", - "pterin\n", - "pterins\n", - "pteropod\n", - "pteropods\n", - "pteryla\n", - "pterylae\n", - "ptisan\n", - "ptisans\n", - "ptomain\n", - "ptomaine\n", - "ptomaines\n", - "ptomains\n", - "ptoses\n", - "ptosis\n", - "ptotic\n", - "ptyalin\n", - "ptyalins\n", - "ptyalism\n", - "ptyalisms\n", - "pub\n", - "puberal\n", - "pubertal\n", - "puberties\n", - "puberty\n", - "pubes\n", - "pubic\n", - "pubis\n", - "public\n", - "publican\n", - "publicans\n", - "publication\n", - "publications\n", - "publicist\n", - "publicists\n", - "publicities\n", - "publicity\n", - "publicize\n", - "publicized\n", - "publicizes\n", - "publicizing\n", - "publicly\n", - "publics\n", - "publish\n", - "published\n", - "publisher\n", - "publishers\n", - "publishes\n", - "publishing\n", - "pubs\n", - "puccoon\n", - "puccoons\n", - "puce\n", - "puces\n", - "puck\n", - "pucka\n", - "pucker\n", - "puckered\n", - "puckerer\n", - "puckerers\n", - "puckerier\n", - "puckeriest\n", - "puckering\n", - "puckers\n", - "puckery\n", - "puckish\n", - "pucks\n", - "pud\n", - "pudding\n", - "puddings\n", - "puddle\n", - "puddled\n", - "puddler\n", - "puddlers\n", - "puddles\n", - "puddlier\n", - "puddliest\n", - "puddling\n", - "puddlings\n", - "puddly\n", - "pudencies\n", - "pudency\n", - "pudenda\n", - "pudendal\n", - "pudendum\n", - "pudgier\n", - "pudgiest\n", - "pudgily\n", - "pudgy\n", - "pudic\n", - "puds\n", - "pueblo\n", - "pueblos\n", - "puerile\n", - "puerilities\n", - "puerility\n", - "puff\n", - "puffball\n", - "puffballs\n", - "puffed\n", - "puffer\n", - "pufferies\n", - "puffers\n", - "puffery\n", - "puffier\n", - "puffiest\n", - "puffily\n", - "puffin\n", - "puffing\n", - "puffins\n", - "puffs\n", - "puffy\n", - "pug\n", - "pugaree\n", - "pugarees\n", - "puggaree\n", - "puggarees\n", - "pugged\n", - "puggier\n", - "puggiest\n", - "pugging\n", - "puggish\n", - "puggree\n", - "puggrees\n", - "puggries\n", - "puggry\n", - "puggy\n", - "pugh\n", - "pugilism\n", - "pugilisms\n", - "pugilist\n", - "pugilistic\n", - "pugilists\n", - "pugmark\n", - "pugmarks\n", - "pugnacious\n", - "pugree\n", - "pugrees\n", - "pugs\n", - "puisne\n", - "puisnes\n", - "puissant\n", - "puke\n", - "puked\n", - "pukes\n", - "puking\n", - "pukka\n", - "pul\n", - "pulchritude\n", - "pulchritudes\n", - "pulchritudinous\n", - "pule\n", - "puled\n", - "puler\n", - "pulers\n", - "pules\n", - "puli\n", - "pulicene\n", - "pulicide\n", - "pulicides\n", - "pulik\n", - "puling\n", - "pulingly\n", - "pulings\n", - "pulis\n", - "pull\n", - "pullback\n", - "pullbacks\n", - "pulled\n", - "puller\n", - "pullers\n", - "pullet\n", - "pullets\n", - "pulley\n", - "pulleys\n", - "pulling\n", - "pullman\n", - "pullmans\n", - "pullout\n", - "pullouts\n", - "pullover\n", - "pullovers\n", - "pulls\n", - "pulmonary\n", - "pulmonic\n", - "pulmotor\n", - "pulmotors\n", - "pulp\n", - "pulpal\n", - "pulpally\n", - "pulped\n", - "pulper\n", - "pulpier\n", - "pulpiest\n", - "pulpily\n", - "pulping\n", - "pulpit\n", - "pulpital\n", - "pulpits\n", - "pulpless\n", - "pulpous\n", - "pulps\n", - "pulpwood\n", - "pulpwoods\n", - "pulpy\n", - "pulque\n", - "pulques\n", - "puls\n", - "pulsant\n", - "pulsar\n", - "pulsars\n", - "pulsate\n", - "pulsated\n", - "pulsates\n", - "pulsating\n", - "pulsation\n", - "pulsations\n", - "pulsator\n", - "pulsators\n", - "pulse\n", - "pulsed\n", - "pulsejet\n", - "pulsejets\n", - "pulser\n", - "pulsers\n", - "pulses\n", - "pulsing\n", - "pulsion\n", - "pulsions\n", - "pulsojet\n", - "pulsojets\n", - "pulverize\n", - "pulverized\n", - "pulverizes\n", - "pulverizing\n", - "pulvilli\n", - "pulvinar\n", - "pulvini\n", - "pulvinus\n", - "puma\n", - "pumas\n", - "pumelo\n", - "pumelos\n", - "pumice\n", - "pumiced\n", - "pumicer\n", - "pumicers\n", - "pumices\n", - "pumicing\n", - "pumicite\n", - "pumicites\n", - "pummel\n", - "pummeled\n", - "pummeling\n", - "pummelled\n", - "pummelling\n", - "pummels\n", - "pump\n", - "pumped\n", - "pumper\n", - "pumpernickel\n", - "pumpernickels\n", - "pumpers\n", - "pumping\n", - "pumpkin\n", - "pumpkins\n", - "pumpless\n", - "pumplike\n", - "pumps\n", - "pun\n", - "puna\n", - "punas\n", - "punch\n", - "punched\n", - "puncheon\n", - "puncheons\n", - "puncher\n", - "punchers\n", - "punches\n", - "punchier\n", - "punchiest\n", - "punching\n", - "punchy\n", - "punctate\n", - "punctilious\n", - "punctual\n", - "punctualities\n", - "punctuality\n", - "punctually\n", - "punctuate\n", - "punctuated\n", - "punctuates\n", - "punctuating\n", - "punctuation\n", - "puncture\n", - "punctured\n", - "punctures\n", - "puncturing\n", - "pundit\n", - "punditic\n", - "punditries\n", - "punditry\n", - "pundits\n", - "pung\n", - "pungencies\n", - "pungency\n", - "pungent\n", - "pungently\n", - "pungs\n", - "punier\n", - "puniest\n", - "punily\n", - "puniness\n", - "puninesses\n", - "punish\n", - "punishable\n", - "punished\n", - "punisher\n", - "punishers\n", - "punishes\n", - "punishing\n", - "punishment\n", - "punishments\n", - "punition\n", - "punitions\n", - "punitive\n", - "punitory\n", - "punk\n", - "punka\n", - "punkah\n", - "punkahs\n", - "punkas\n", - "punker\n", - "punkest\n", - "punkey\n", - "punkeys\n", - "punkie\n", - "punkier\n", - "punkies\n", - "punkiest\n", - "punkin\n", - "punkins\n", - "punks\n", - "punky\n", - "punned\n", - "punner\n", - "punners\n", - "punnier\n", - "punniest\n", - "punning\n", - "punny\n", - "puns\n", - "punster\n", - "punsters\n", - "punt\n", - "punted\n", - "punter\n", - "punters\n", - "punties\n", - "punting\n", - "punto\n", - "puntos\n", - "punts\n", - "punty\n", - "puny\n", - "pup\n", - "pupa\n", - "pupae\n", - "pupal\n", - "puparia\n", - "puparial\n", - "puparium\n", - "pupas\n", - "pupate\n", - "pupated\n", - "pupates\n", - "pupating\n", - "pupation\n", - "pupations\n", - "pupfish\n", - "pupfishes\n", - "pupil\n", - "pupilage\n", - "pupilages\n", - "pupilar\n", - "pupilary\n", - "pupils\n", - "pupped\n", - "puppet\n", - "puppeteer\n", - "puppeteers\n", - "puppetries\n", - "puppetry\n", - "puppets\n", - "puppies\n", - "pupping\n", - "puppy\n", - "puppydom\n", - "puppydoms\n", - "puppyish\n", - "pups\n", - "pur\n", - "purana\n", - "puranas\n", - "puranic\n", - "purblind\n", - "purchase\n", - "purchased\n", - "purchaser\n", - "purchasers\n", - "purchases\n", - "purchasing\n", - "purda\n", - "purdah\n", - "purdahs\n", - "purdas\n", - "pure\n", - "purebred\n", - "purebreds\n", - "puree\n", - "pureed\n", - "pureeing\n", - "purees\n", - "purely\n", - "pureness\n", - "purenesses\n", - "purer\n", - "purest\n", - "purfle\n", - "purfled\n", - "purfles\n", - "purfling\n", - "purflings\n", - "purgative\n", - "purgatorial\n", - "purgatories\n", - "purgatory\n", - "purge\n", - "purged\n", - "purger\n", - "purgers\n", - "purges\n", - "purging\n", - "purgings\n", - "puri\n", - "purification\n", - "purifications\n", - "purified\n", - "purifier\n", - "purifiers\n", - "purifies\n", - "purify\n", - "purifying\n", - "purin\n", - "purine\n", - "purines\n", - "purins\n", - "puris\n", - "purism\n", - "purisms\n", - "purist\n", - "puristic\n", - "purists\n", - "puritan\n", - "puritanical\n", - "puritans\n", - "purities\n", - "purity\n", - "purl\n", - "purled\n", - "purlieu\n", - "purlieus\n", - "purlin\n", - "purline\n", - "purlines\n", - "purling\n", - "purlins\n", - "purloin\n", - "purloined\n", - "purloining\n", - "purloins\n", - "purls\n", - "purple\n", - "purpled\n", - "purpler\n", - "purples\n", - "purplest\n", - "purpling\n", - "purplish\n", - "purply\n", - "purport\n", - "purported\n", - "purportedly\n", - "purporting\n", - "purports\n", - "purpose\n", - "purposed\n", - "purposeful\n", - "purposefully\n", - "purposeless\n", - "purposely\n", - "purposes\n", - "purposing\n", - "purpura\n", - "purpuras\n", - "purpure\n", - "purpures\n", - "purpuric\n", - "purpurin\n", - "purpurins\n", - "purr\n", - "purred\n", - "purring\n", - "purrs\n", - "purs\n", - "purse\n", - "pursed\n", - "purser\n", - "pursers\n", - "purses\n", - "pursier\n", - "pursiest\n", - "pursily\n", - "pursing\n", - "purslane\n", - "purslanes\n", - "pursuance\n", - "pursuances\n", - "pursuant\n", - "pursue\n", - "pursued\n", - "pursuer\n", - "pursuers\n", - "pursues\n", - "pursuing\n", - "pursuit\n", - "pursuits\n", - "pursy\n", - "purulent\n", - "purvey\n", - "purveyance\n", - "purveyances\n", - "purveyed\n", - "purveying\n", - "purveyor\n", - "purveyors\n", - "purveys\n", - "purview\n", - "purviews\n", - "pus\n", - "puses\n", - "push\n", - "pushball\n", - "pushballs\n", - "pushcart\n", - "pushcarts\n", - "pushdown\n", - "pushdowns\n", - "pushed\n", - "pusher\n", - "pushers\n", - "pushes\n", - "pushful\n", - "pushier\n", - "pushiest\n", - "pushily\n", - "pushing\n", - "pushover\n", - "pushovers\n", - "pushpin\n", - "pushpins\n", - "pushup\n", - "pushups\n", - "pushy\n", - "pusillanimous\n", - "pusley\n", - "pusleys\n", - "puslike\n", - "puss\n", - "pusses\n", - "pussier\n", - "pussies\n", - "pussiest\n", - "pussley\n", - "pussleys\n", - "pusslies\n", - "pusslike\n", - "pussly\n", - "pussy\n", - "pussycat\n", - "pussycats\n", - "pustular\n", - "pustule\n", - "pustuled\n", - "pustules\n", - "put\n", - "putamen\n", - "putamina\n", - "putative\n", - "putlog\n", - "putlogs\n", - "putoff\n", - "putoffs\n", - "puton\n", - "putons\n", - "putout\n", - "putouts\n", - "putrefaction\n", - "putrefactions\n", - "putrefactive\n", - "putrefied\n", - "putrefies\n", - "putrefy\n", - "putrefying\n", - "putrid\n", - "putridly\n", - "puts\n", - "putsch\n", - "putsches\n", - "putt\n", - "putted\n", - "puttee\n", - "puttees\n", - "putter\n", - "puttered\n", - "putterer\n", - "putterers\n", - "puttering\n", - "putters\n", - "puttied\n", - "puttier\n", - "puttiers\n", - "putties\n", - "putting\n", - "putts\n", - "putty\n", - "puttying\n", - "puzzle\n", - "puzzled\n", - "puzzlement\n", - "puzzlements\n", - "puzzler\n", - "puzzlers\n", - "puzzles\n", - "puzzling\n", - "pya\n", - "pyaemia\n", - "pyaemias\n", - "pyaemic\n", - "pyas\n", - "pycnidia\n", - "pye\n", - "pyelitic\n", - "pyelitis\n", - "pyelitises\n", - "pyemia\n", - "pyemias\n", - "pyemic\n", - "pyes\n", - "pygidia\n", - "pygidial\n", - "pygidium\n", - "pygmaean\n", - "pygmean\n", - "pygmies\n", - "pygmoid\n", - "pygmy\n", - "pygmyish\n", - "pygmyism\n", - "pygmyisms\n", - "pyic\n", - "pyin\n", - "pyins\n", - "pyjamas\n", - "pyknic\n", - "pyknics\n", - "pylon\n", - "pylons\n", - "pylori\n", - "pyloric\n", - "pylorus\n", - "pyloruses\n", - "pyoderma\n", - "pyodermas\n", - "pyogenic\n", - "pyoid\n", - "pyorrhea\n", - "pyorrheas\n", - "pyoses\n", - "pyosis\n", - "pyralid\n", - "pyralids\n", - "pyramid\n", - "pyramidal\n", - "pyramided\n", - "pyramiding\n", - "pyramids\n", - "pyran\n", - "pyranoid\n", - "pyranose\n", - "pyranoses\n", - "pyrans\n", - "pyre\n", - "pyrene\n", - "pyrenes\n", - "pyrenoid\n", - "pyrenoids\n", - "pyres\n", - "pyretic\n", - "pyrexia\n", - "pyrexial\n", - "pyrexias\n", - "pyrexic\n", - "pyric\n", - "pyridic\n", - "pyridine\n", - "pyridines\n", - "pyriform\n", - "pyrite\n", - "pyrites\n", - "pyritic\n", - "pyritous\n", - "pyrogen\n", - "pyrogens\n", - "pyrola\n", - "pyrolas\n", - "pyrologies\n", - "pyrology\n", - "pyrolyze\n", - "pyrolyzed\n", - "pyrolyzes\n", - "pyrolyzing\n", - "pyromania\n", - "pyromaniac\n", - "pyromaniacs\n", - "pyromanias\n", - "pyrone\n", - "pyrones\n", - "pyronine\n", - "pyronines\n", - "pyrope\n", - "pyropes\n", - "pyrosis\n", - "pyrosises\n", - "pyrostat\n", - "pyrostats\n", - "pyrotechnic\n", - "pyrotechnics\n", - "pyroxene\n", - "pyroxenes\n", - "pyrrhic\n", - "pyrrhics\n", - "pyrrol\n", - "pyrrole\n", - "pyrroles\n", - "pyrrolic\n", - "pyrrols\n", - "pyruvate\n", - "pyruvates\n", - "python\n", - "pythonic\n", - "pythons\n", - "pyuria\n", - "pyurias\n", - "pyx\n", - "pyxes\n", - "pyxides\n", - "pyxidia\n", - "pyxidium\n", - "pyxie\n", - "pyxies\n", - "pyxis\n", - "qaid\n", - "qaids\n", - "qindar\n", - "qindars\n", - "qintar\n", - "qintars\n", - "qiviut\n", - "qiviuts\n", - "qoph\n", - "qophs\n", - "qua\n", - "quack\n", - "quacked\n", - "quackeries\n", - "quackery\n", - "quacking\n", - "quackish\n", - "quackism\n", - "quackisms\n", - "quacks\n", - "quad\n", - "quadded\n", - "quadding\n", - "quadrangle\n", - "quadrangles\n", - "quadrangular\n", - "quadrans\n", - "quadrant\n", - "quadrantes\n", - "quadrants\n", - "quadrat\n", - "quadrate\n", - "quadrated\n", - "quadrates\n", - "quadrating\n", - "quadrats\n", - "quadric\n", - "quadrics\n", - "quadriga\n", - "quadrigae\n", - "quadrilateral\n", - "quadrilaterals\n", - "quadrille\n", - "quadrilles\n", - "quadroon\n", - "quadroons\n", - "quadruped\n", - "quadrupedal\n", - "quadrupeds\n", - "quadruple\n", - "quadrupled\n", - "quadruples\n", - "quadruplet\n", - "quadruplets\n", - "quadrupling\n", - "quads\n", - "quaere\n", - "quaeres\n", - "quaestor\n", - "quaestors\n", - "quaff\n", - "quaffed\n", - "quaffer\n", - "quaffers\n", - "quaffing\n", - "quaffs\n", - "quag\n", - "quagga\n", - "quaggas\n", - "quaggier\n", - "quaggiest\n", - "quaggy\n", - "quagmire\n", - "quagmires\n", - "quagmirier\n", - "quagmiriest\n", - "quagmiry\n", - "quags\n", - "quahaug\n", - "quahaugs\n", - "quahog\n", - "quahogs\n", - "quai\n", - "quaich\n", - "quaiches\n", - "quaichs\n", - "quaigh\n", - "quaighs\n", - "quail\n", - "quailed\n", - "quailing\n", - "quails\n", - "quaint\n", - "quainter\n", - "quaintest\n", - "quaintly\n", - "quaintness\n", - "quaintnesses\n", - "quais\n", - "quake\n", - "quaked\n", - "quaker\n", - "quakers\n", - "quakes\n", - "quakier\n", - "quakiest\n", - "quakily\n", - "quaking\n", - "quaky\n", - "quale\n", - "qualia\n", - "qualification\n", - "qualifications\n", - "qualified\n", - "qualifier\n", - "qualifiers\n", - "qualifies\n", - "qualify\n", - "qualifying\n", - "qualitative\n", - "qualities\n", - "quality\n", - "qualm\n", - "qualmier\n", - "qualmiest\n", - "qualmish\n", - "qualms\n", - "qualmy\n", - "quamash\n", - "quamashes\n", - "quandang\n", - "quandangs\n", - "quandaries\n", - "quandary\n", - "quandong\n", - "quandongs\n", - "quant\n", - "quanta\n", - "quantal\n", - "quanted\n", - "quantic\n", - "quantics\n", - "quantified\n", - "quantifies\n", - "quantify\n", - "quantifying\n", - "quanting\n", - "quantitative\n", - "quantities\n", - "quantity\n", - "quantize\n", - "quantized\n", - "quantizes\n", - "quantizing\n", - "quantong\n", - "quantongs\n", - "quants\n", - "quantum\n", - "quarantine\n", - "quarantined\n", - "quarantines\n", - "quarantining\n", - "quare\n", - "quark\n", - "quarks\n", - "quarrel\n", - "quarreled\n", - "quarreling\n", - "quarrelled\n", - "quarrelling\n", - "quarrels\n", - "quarrelsome\n", - "quarried\n", - "quarrier\n", - "quarriers\n", - "quarries\n", - "quarry\n", - "quarrying\n", - "quart\n", - "quartan\n", - "quartans\n", - "quarte\n", - "quarter\n", - "quarterback\n", - "quarterbacked\n", - "quarterbacking\n", - "quarterbacks\n", - "quartered\n", - "quartering\n", - "quarterlies\n", - "quarterly\n", - "quartermaster\n", - "quartermasters\n", - "quartern\n", - "quarterns\n", - "quarters\n", - "quartes\n", - "quartet\n", - "quartets\n", - "quartic\n", - "quartics\n", - "quartile\n", - "quartiles\n", - "quarto\n", - "quartos\n", - "quarts\n", - "quartz\n", - "quartzes\n", - "quasar\n", - "quasars\n", - "quash\n", - "quashed\n", - "quashes\n", - "quashing\n", - "quasi\n", - "quass\n", - "quasses\n", - "quassia\n", - "quassias\n", - "quassin\n", - "quassins\n", - "quate\n", - "quatorze\n", - "quatorzes\n", - "quatrain\n", - "quatrains\n", - "quatre\n", - "quatres\n", - "quaver\n", - "quavered\n", - "quaverer\n", - "quaverers\n", - "quavering\n", - "quavers\n", - "quavery\n", - "quay\n", - "quayage\n", - "quayages\n", - "quaylike\n", - "quays\n", - "quayside\n", - "quaysides\n", - "quean\n", - "queans\n", - "queasier\n", - "queasiest\n", - "queasily\n", - "queasiness\n", - "queasinesses\n", - "queasy\n", - "queazier\n", - "queaziest\n", - "queazy\n", - "queen\n", - "queened\n", - "queening\n", - "queenlier\n", - "queenliest\n", - "queenly\n", - "queens\n", - "queer\n", - "queered\n", - "queerer\n", - "queerest\n", - "queering\n", - "queerish\n", - "queerly\n", - "queerness\n", - "queernesses\n", - "queers\n", - "quell\n", - "quelled\n", - "queller\n", - "quellers\n", - "quelling\n", - "quells\n", - "quench\n", - "quenchable\n", - "quenched\n", - "quencher\n", - "quenchers\n", - "quenches\n", - "quenching\n", - "quenchless\n", - "quenelle\n", - "quenelles\n", - "quercine\n", - "querida\n", - "queridas\n", - "queried\n", - "querier\n", - "queriers\n", - "queries\n", - "querist\n", - "querists\n", - "quern\n", - "querns\n", - "querulous\n", - "querulously\n", - "querulousness\n", - "querulousnesses\n", - "query\n", - "querying\n", - "quest\n", - "quested\n", - "quester\n", - "questers\n", - "questing\n", - "question\n", - "questionable\n", - "questioned\n", - "questioner\n", - "questioners\n", - "questioning\n", - "questionnaire\n", - "questionnaires\n", - "questionniare\n", - "questionniares\n", - "questions\n", - "questor\n", - "questors\n", - "quests\n", - "quetzal\n", - "quetzales\n", - "quetzals\n", - "queue\n", - "queued\n", - "queueing\n", - "queuer\n", - "queuers\n", - "queues\n", - "queuing\n", - "quey\n", - "queys\n", - "quezal\n", - "quezales\n", - "quezals\n", - "quibble\n", - "quibbled\n", - "quibbler\n", - "quibblers\n", - "quibbles\n", - "quibbling\n", - "quiche\n", - "quiches\n", - "quick\n", - "quicken\n", - "quickened\n", - "quickening\n", - "quickens\n", - "quicker\n", - "quickest\n", - "quickie\n", - "quickies\n", - "quickly\n", - "quickness\n", - "quicknesses\n", - "quicks\n", - "quicksand\n", - "quicksands\n", - "quickset\n", - "quicksets\n", - "quicksilver\n", - "quicksilvers\n", - "quid\n", - "quiddities\n", - "quiddity\n", - "quidnunc\n", - "quidnuncs\n", - "quids\n", - "quiescence\n", - "quiescences\n", - "quiescent\n", - "quiet\n", - "quieted\n", - "quieten\n", - "quietened\n", - "quietening\n", - "quietens\n", - "quieter\n", - "quieters\n", - "quietest\n", - "quieting\n", - "quietism\n", - "quietisms\n", - "quietist\n", - "quietists\n", - "quietly\n", - "quietness\n", - "quietnesses\n", - "quiets\n", - "quietude\n", - "quietudes\n", - "quietus\n", - "quietuses\n", - "quiff\n", - "quiffs\n", - "quill\n", - "quillai\n", - "quillais\n", - "quilled\n", - "quillet\n", - "quillets\n", - "quilling\n", - "quills\n", - "quilt\n", - "quilted\n", - "quilter\n", - "quilters\n", - "quilting\n", - "quiltings\n", - "quilts\n", - "quinaries\n", - "quinary\n", - "quinate\n", - "quince\n", - "quinces\n", - "quincunx\n", - "quincunxes\n", - "quinella\n", - "quinellas\n", - "quinic\n", - "quiniela\n", - "quinielas\n", - "quinin\n", - "quinina\n", - "quininas\n", - "quinine\n", - "quinines\n", - "quinins\n", - "quinnat\n", - "quinnats\n", - "quinoa\n", - "quinoas\n", - "quinoid\n", - "quinoids\n", - "quinol\n", - "quinolin\n", - "quinolins\n", - "quinols\n", - "quinone\n", - "quinones\n", - "quinsies\n", - "quinsy\n", - "quint\n", - "quintain\n", - "quintains\n", - "quintal\n", - "quintals\n", - "quintan\n", - "quintans\n", - "quintar\n", - "quintars\n", - "quintessence\n", - "quintessences\n", - "quintessential\n", - "quintet\n", - "quintets\n", - "quintic\n", - "quintics\n", - "quintile\n", - "quintiles\n", - "quintin\n", - "quintins\n", - "quints\n", - "quintuple\n", - "quintupled\n", - "quintuples\n", - "quintuplet\n", - "quintuplets\n", - "quintupling\n", - "quip\n", - "quipped\n", - "quipping\n", - "quippish\n", - "quippu\n", - "quippus\n", - "quips\n", - "quipster\n", - "quipsters\n", - "quipu\n", - "quipus\n", - "quire\n", - "quired\n", - "quires\n", - "quiring\n", - "quirk\n", - "quirked\n", - "quirkier\n", - "quirkiest\n", - "quirkily\n", - "quirking\n", - "quirks\n", - "quirky\n", - "quirt\n", - "quirted\n", - "quirting\n", - "quirts\n", - "quisling\n", - "quislings\n", - "quit\n", - "quitch\n", - "quitches\n", - "quite\n", - "quitrent\n", - "quitrents\n", - "quits\n", - "quitted\n", - "quitter\n", - "quitters\n", - "quitting\n", - "quittor\n", - "quittors\n", - "quiver\n", - "quivered\n", - "quiverer\n", - "quiverers\n", - "quivering\n", - "quivers\n", - "quivery\n", - "quixote\n", - "quixotes\n", - "quixotic\n", - "quixotries\n", - "quixotry\n", - "quiz\n", - "quizmaster\n", - "quizmasters\n", - "quizzed\n", - "quizzer\n", - "quizzers\n", - "quizzes\n", - "quizzing\n", - "quod\n", - "quods\n", - "quoin\n", - "quoined\n", - "quoining\n", - "quoins\n", - "quoit\n", - "quoited\n", - "quoiting\n", - "quoits\n", - "quomodo\n", - "quomodos\n", - "quondam\n", - "quorum\n", - "quorums\n", - "quota\n", - "quotable\n", - "quotably\n", - "quotas\n", - "quotation\n", - "quotations\n", - "quote\n", - "quoted\n", - "quoter\n", - "quoters\n", - "quotes\n", - "quoth\n", - "quotha\n", - "quotient\n", - "quotients\n", - "quoting\n", - "qursh\n", - "qurshes\n", - "qurush\n", - "qurushes\n", - "rabato\n", - "rabatos\n", - "rabbet\n", - "rabbeted\n", - "rabbeting\n", - "rabbets\n", - "rabbi\n", - "rabbies\n", - "rabbin\n", - "rabbinate\n", - "rabbinates\n", - "rabbinic\n", - "rabbinical\n", - "rabbins\n", - "rabbis\n", - "rabbit\n", - "rabbited\n", - "rabbiter\n", - "rabbiters\n", - "rabbiting\n", - "rabbitries\n", - "rabbitry\n", - "rabbits\n", - "rabble\n", - "rabbled\n", - "rabbler\n", - "rabblers\n", - "rabbles\n", - "rabbling\n", - "rabboni\n", - "rabbonis\n", - "rabic\n", - "rabid\n", - "rabidities\n", - "rabidity\n", - "rabidly\n", - "rabies\n", - "rabietic\n", - "raccoon\n", - "raccoons\n", - "race\n", - "racecourse\n", - "racecourses\n", - "raced\n", - "racehorse\n", - "racehorses\n", - "racemate\n", - "racemates\n", - "raceme\n", - "racemed\n", - "racemes\n", - "racemic\n", - "racemism\n", - "racemisms\n", - "racemize\n", - "racemized\n", - "racemizes\n", - "racemizing\n", - "racemoid\n", - "racemose\n", - "racemous\n", - "racer\n", - "racers\n", - "races\n", - "racetrack\n", - "racetracks\n", - "raceway\n", - "raceways\n", - "rachet\n", - "rachets\n", - "rachial\n", - "rachides\n", - "rachis\n", - "rachises\n", - "rachitic\n", - "rachitides\n", - "rachitis\n", - "racial\n", - "racially\n", - "racier\n", - "raciest\n", - "racily\n", - "raciness\n", - "racinesses\n", - "racing\n", - "racings\n", - "racism\n", - "racisms\n", - "racist\n", - "racists\n", - "rack\n", - "racked\n", - "racker\n", - "rackers\n", - "racket\n", - "racketed\n", - "racketeer\n", - "racketeering\n", - "racketeerings\n", - "racketeers\n", - "racketier\n", - "racketiest\n", - "racketing\n", - "rackets\n", - "rackety\n", - "racking\n", - "rackle\n", - "racks\n", - "rackwork\n", - "rackworks\n", - "raclette\n", - "raclettes\n", - "racon\n", - "racons\n", - "raconteur\n", - "raconteurs\n", - "racoon\n", - "racoons\n", - "racquet\n", - "racquets\n", - "racy\n", - "rad\n", - "radar\n", - "radars\n", - "radded\n", - "radding\n", - "raddle\n", - "raddled\n", - "raddles\n", - "raddling\n", - "radiable\n", - "radial\n", - "radiale\n", - "radialia\n", - "radially\n", - "radials\n", - "radian\n", - "radiance\n", - "radiances\n", - "radiancies\n", - "radiancy\n", - "radians\n", - "radiant\n", - "radiantly\n", - "radiants\n", - "radiate\n", - "radiated\n", - "radiates\n", - "radiating\n", - "radiation\n", - "radiations\n", - "radiator\n", - "radiators\n", - "radical\n", - "radicalism\n", - "radicalisms\n", - "radically\n", - "radicals\n", - "radicand\n", - "radicands\n", - "radicate\n", - "radicated\n", - "radicates\n", - "radicating\n", - "radicel\n", - "radicels\n", - "radices\n", - "radicle\n", - "radicles\n", - "radii\n", - "radio\n", - "radioactive\n", - "radioactivities\n", - "radioactivity\n", - "radioed\n", - "radioing\n", - "radiologies\n", - "radiologist\n", - "radiologists\n", - "radiology\n", - "radioman\n", - "radiomen\n", - "radionuclide\n", - "radionuclides\n", - "radios\n", - "radiotherapies\n", - "radiotherapy\n", - "radish\n", - "radishes\n", - "radium\n", - "radiums\n", - "radius\n", - "radiuses\n", - "radix\n", - "radixes\n", - "radome\n", - "radomes\n", - "radon\n", - "radons\n", - "rads\n", - "radula\n", - "radulae\n", - "radular\n", - "radulas\n", - "raff\n", - "raffia\n", - "raffias\n", - "raffish\n", - "raffishly\n", - "raffishness\n", - "raffishnesses\n", - "raffle\n", - "raffled\n", - "raffler\n", - "rafflers\n", - "raffles\n", - "raffling\n", - "raffs\n", - "raft\n", - "rafted\n", - "rafter\n", - "rafters\n", - "rafting\n", - "rafts\n", - "raftsman\n", - "raftsmen\n", - "rag\n", - "raga\n", - "ragamuffin\n", - "ragamuffins\n", - "ragas\n", - "ragbag\n", - "ragbags\n", - "rage\n", - "raged\n", - "ragee\n", - "ragees\n", - "rages\n", - "ragged\n", - "raggeder\n", - "raggedest\n", - "raggedly\n", - "raggedness\n", - "raggednesses\n", - "raggedy\n", - "raggies\n", - "ragging\n", - "raggle\n", - "raggles\n", - "raggy\n", - "ragi\n", - "raging\n", - "ragingly\n", - "ragis\n", - "raglan\n", - "raglans\n", - "ragman\n", - "ragmen\n", - "ragout\n", - "ragouted\n", - "ragouting\n", - "ragouts\n", - "rags\n", - "ragtag\n", - "ragtags\n", - "ragtime\n", - "ragtimes\n", - "ragweed\n", - "ragweeds\n", - "ragwort\n", - "ragworts\n", - "rah\n", - "raia\n", - "raias\n", - "raid\n", - "raided\n", - "raider\n", - "raiders\n", - "raiding\n", - "raids\n", - "rail\n", - "railbird\n", - "railbirds\n", - "railed\n", - "railer\n", - "railers\n", - "railhead\n", - "railheads\n", - "railing\n", - "railings\n", - "railleries\n", - "raillery\n", - "railroad\n", - "railroaded\n", - "railroader\n", - "railroaders\n", - "railroading\n", - "railroadings\n", - "railroads\n", - "rails\n", - "railway\n", - "railways\n", - "raiment\n", - "raiments\n", - "rain\n", - "rainband\n", - "rainbands\n", - "rainbird\n", - "rainbirds\n", - "rainbow\n", - "rainbows\n", - "raincoat\n", - "raincoats\n", - "raindrop\n", - "raindrops\n", - "rained\n", - "rainfall\n", - "rainfalls\n", - "rainier\n", - "rainiest\n", - "rainily\n", - "raining\n", - "rainless\n", - "rainmaker\n", - "rainmakers\n", - "rainmaking\n", - "rainmakings\n", - "rainout\n", - "rainouts\n", - "rains\n", - "rainstorm\n", - "rainstorms\n", - "rainwash\n", - "rainwashes\n", - "rainwater\n", - "rainwaters\n", - "rainwear\n", - "rainwears\n", - "rainy\n", - "raisable\n", - "raise\n", - "raised\n", - "raiser\n", - "raisers\n", - "raises\n", - "raisin\n", - "raising\n", - "raisings\n", - "raisins\n", - "raisiny\n", - "raisonne\n", - "raj\n", - "raja\n", - "rajah\n", - "rajahs\n", - "rajas\n", - "rajes\n", - "rake\n", - "raked\n", - "rakee\n", - "rakees\n", - "rakehell\n", - "rakehells\n", - "rakeoff\n", - "rakeoffs\n", - "raker\n", - "rakers\n", - "rakes\n", - "raki\n", - "raking\n", - "rakis\n", - "rakish\n", - "rakishly\n", - "rakishness\n", - "rakishnesses\n", - "rale\n", - "rales\n", - "rallied\n", - "rallier\n", - "ralliers\n", - "rallies\n", - "ralline\n", - "rally\n", - "rallye\n", - "rallyes\n", - "rallying\n", - "rallyings\n", - "rallyist\n", - "rallyists\n", - "ram\n", - "ramate\n", - "ramble\n", - "rambled\n", - "rambler\n", - "ramblers\n", - "rambles\n", - "rambling\n", - "rambunctious\n", - "rambutan\n", - "rambutans\n", - "ramee\n", - "ramees\n", - "ramekin\n", - "ramekins\n", - "ramenta\n", - "ramentum\n", - "ramequin\n", - "ramequins\n", - "ramet\n", - "ramets\n", - "rami\n", - "ramie\n", - "ramies\n", - "ramification\n", - "ramifications\n", - "ramified\n", - "ramifies\n", - "ramiform\n", - "ramify\n", - "ramifying\n", - "ramilie\n", - "ramilies\n", - "ramillie\n", - "ramillies\n", - "ramjet\n", - "ramjets\n", - "rammed\n", - "rammer\n", - "rammers\n", - "rammier\n", - "rammiest\n", - "ramming\n", - "rammish\n", - "rammy\n", - "ramose\n", - "ramosely\n", - "ramosities\n", - "ramosity\n", - "ramous\n", - "ramp\n", - "rampage\n", - "rampaged\n", - "rampager\n", - "rampagers\n", - "rampages\n", - "rampaging\n", - "rampancies\n", - "rampancy\n", - "rampant\n", - "rampantly\n", - "rampart\n", - "ramparted\n", - "ramparting\n", - "ramparts\n", - "ramped\n", - "rampike\n", - "rampikes\n", - "ramping\n", - "rampion\n", - "rampions\n", - "rampole\n", - "rampoles\n", - "ramps\n", - "ramrod\n", - "ramrods\n", - "rams\n", - "ramshackle\n", - "ramshorn\n", - "ramshorns\n", - "ramson\n", - "ramsons\n", - "ramtil\n", - "ramtils\n", - "ramulose\n", - "ramulous\n", - "ramus\n", - "ran\n", - "rance\n", - "rances\n", - "ranch\n", - "ranched\n", - "rancher\n", - "ranchero\n", - "rancheros\n", - "ranchers\n", - "ranches\n", - "ranching\n", - "ranchland\n", - "ranchlands\n", - "ranchman\n", - "ranchmen\n", - "rancho\n", - "ranchos\n", - "rancid\n", - "rancidities\n", - "rancidity\n", - "rancidness\n", - "rancidnesses\n", - "rancor\n", - "rancored\n", - "rancorous\n", - "rancors\n", - "rancour\n", - "rancours\n", - "rand\n", - "randan\n", - "randans\n", - "randies\n", - "random\n", - "randomization\n", - "randomizations\n", - "randomize\n", - "randomized\n", - "randomizes\n", - "randomizing\n", - "randomly\n", - "randomness\n", - "randomnesses\n", - "randoms\n", - "rands\n", - "randy\n", - "ranee\n", - "ranees\n", - "rang\n", - "range\n", - "ranged\n", - "rangeland\n", - "rangelands\n", - "ranger\n", - "rangers\n", - "ranges\n", - "rangier\n", - "rangiest\n", - "ranginess\n", - "ranginesses\n", - "ranging\n", - "rangy\n", - "rani\n", - "ranid\n", - "ranids\n", - "ranis\n", - "rank\n", - "ranked\n", - "ranker\n", - "rankers\n", - "rankest\n", - "ranking\n", - "rankish\n", - "rankle\n", - "rankled\n", - "rankles\n", - "rankling\n", - "rankly\n", - "rankness\n", - "ranknesses\n", - "ranks\n", - "ranpike\n", - "ranpikes\n", - "ransack\n", - "ransacked\n", - "ransacking\n", - "ransacks\n", - "ransom\n", - "ransomed\n", - "ransomer\n", - "ransomers\n", - "ransoming\n", - "ransoms\n", - "rant\n", - "ranted\n", - "ranter\n", - "ranters\n", - "ranting\n", - "rantingly\n", - "rants\n", - "ranula\n", - "ranulas\n", - "rap\n", - "rapacious\n", - "rapaciously\n", - "rapaciousness\n", - "rapaciousnesses\n", - "rapacities\n", - "rapacity\n", - "rape\n", - "raped\n", - "raper\n", - "rapers\n", - "rapes\n", - "rapeseed\n", - "rapeseeds\n", - "raphae\n", - "raphe\n", - "raphes\n", - "raphia\n", - "raphias\n", - "raphide\n", - "raphides\n", - "raphis\n", - "rapid\n", - "rapider\n", - "rapidest\n", - "rapidities\n", - "rapidity\n", - "rapidly\n", - "rapids\n", - "rapier\n", - "rapiered\n", - "rapiers\n", - "rapine\n", - "rapines\n", - "raping\n", - "rapist\n", - "rapists\n", - "rapparee\n", - "rapparees\n", - "rapped\n", - "rappee\n", - "rappees\n", - "rappel\n", - "rappelled\n", - "rappelling\n", - "rappels\n", - "rappen\n", - "rapper\n", - "rappers\n", - "rapping\n", - "rappini\n", - "rapport\n", - "rapports\n", - "raps\n", - "rapt\n", - "raptly\n", - "raptness\n", - "raptnesses\n", - "raptor\n", - "raptors\n", - "rapture\n", - "raptured\n", - "raptures\n", - "rapturing\n", - "rapturous\n", - "rare\n", - "rarebit\n", - "rarebits\n", - "rarefaction\n", - "rarefactions\n", - "rarefied\n", - "rarefier\n", - "rarefiers\n", - "rarefies\n", - "rarefy\n", - "rarefying\n", - "rarely\n", - "rareness\n", - "rarenesses\n", - "rarer\n", - "rareripe\n", - "rareripes\n", - "rarest\n", - "rarified\n", - "rarifies\n", - "rarify\n", - "rarifying\n", - "raring\n", - "rarities\n", - "rarity\n", - "ras\n", - "rasbora\n", - "rasboras\n", - "rascal\n", - "rascalities\n", - "rascality\n", - "rascally\n", - "rascals\n", - "rase\n", - "rased\n", - "raser\n", - "rasers\n", - "rases\n", - "rash\n", - "rasher\n", - "rashers\n", - "rashes\n", - "rashest\n", - "rashlike\n", - "rashly\n", - "rashness\n", - "rashnesses\n", - "rasing\n", - "rasorial\n", - "rasp\n", - "raspberries\n", - "raspberry\n", - "rasped\n", - "rasper\n", - "raspers\n", - "raspier\n", - "raspiest\n", - "rasping\n", - "raspish\n", - "rasps\n", - "raspy\n", - "rassle\n", - "rassled\n", - "rassles\n", - "rassling\n", - "raster\n", - "rasters\n", - "rasure\n", - "rasures\n", - "rat\n", - "ratable\n", - "ratably\n", - "ratafee\n", - "ratafees\n", - "ratafia\n", - "ratafias\n", - "ratal\n", - "ratals\n", - "ratan\n", - "ratanies\n", - "ratans\n", - "ratany\n", - "rataplan\n", - "rataplanned\n", - "rataplanning\n", - "rataplans\n", - "ratatat\n", - "ratatats\n", - "ratch\n", - "ratches\n", - "ratchet\n", - "ratchets\n", - "rate\n", - "rateable\n", - "rateably\n", - "rated\n", - "ratel\n", - "ratels\n", - "rater\n", - "raters\n", - "rates\n", - "ratfink\n", - "ratfinks\n", - "ratfish\n", - "ratfishes\n", - "rath\n", - "rathe\n", - "rather\n", - "rathole\n", - "ratholes\n", - "raticide\n", - "raticides\n", - "ratification\n", - "ratifications\n", - "ratified\n", - "ratifier\n", - "ratifiers\n", - "ratifies\n", - "ratify\n", - "ratifying\n", - "ratine\n", - "ratines\n", - "rating\n", - "ratings\n", - "ratio\n", - "ration\n", - "rational\n", - "rationale\n", - "rationales\n", - "rationalization\n", - "rationalizations\n", - "rationalize\n", - "rationalized\n", - "rationalizes\n", - "rationalizing\n", - "rationally\n", - "rationals\n", - "rationed\n", - "rationing\n", - "rations\n", - "ratios\n", - "ratite\n", - "ratites\n", - "ratlike\n", - "ratlin\n", - "ratline\n", - "ratlines\n", - "ratlins\n", - "rato\n", - "ratoon\n", - "ratooned\n", - "ratooner\n", - "ratooners\n", - "ratooning\n", - "ratoons\n", - "ratos\n", - "rats\n", - "ratsbane\n", - "ratsbanes\n", - "rattail\n", - "rattails\n", - "rattan\n", - "rattans\n", - "ratted\n", - "ratteen\n", - "ratteens\n", - "ratten\n", - "rattened\n", - "rattener\n", - "ratteners\n", - "rattening\n", - "rattens\n", - "ratter\n", - "ratters\n", - "rattier\n", - "rattiest\n", - "ratting\n", - "rattish\n", - "rattle\n", - "rattled\n", - "rattler\n", - "rattlers\n", - "rattles\n", - "rattlesnake\n", - "rattlesnakes\n", - "rattling\n", - "rattlings\n", - "rattly\n", - "ratton\n", - "rattons\n", - "rattoon\n", - "rattooned\n", - "rattooning\n", - "rattoons\n", - "rattrap\n", - "rattraps\n", - "ratty\n", - "raucities\n", - "raucity\n", - "raucous\n", - "raucously\n", - "raucousness\n", - "raucousnesses\n", - "raunchier\n", - "raunchiest\n", - "raunchy\n", - "ravage\n", - "ravaged\n", - "ravager\n", - "ravagers\n", - "ravages\n", - "ravaging\n", - "rave\n", - "raved\n", - "ravel\n", - "raveled\n", - "raveler\n", - "ravelers\n", - "ravelin\n", - "raveling\n", - "ravelings\n", - "ravelins\n", - "ravelled\n", - "raveller\n", - "ravellers\n", - "ravelling\n", - "ravellings\n", - "ravelly\n", - "ravels\n", - "raven\n", - "ravened\n", - "ravener\n", - "raveners\n", - "ravening\n", - "ravenings\n", - "ravenous\n", - "ravenously\n", - "ravenousness\n", - "ravenousnesses\n", - "ravens\n", - "raver\n", - "ravers\n", - "raves\n", - "ravigote\n", - "ravigotes\n", - "ravin\n", - "ravine\n", - "ravined\n", - "ravines\n", - "raving\n", - "ravingly\n", - "ravings\n", - "ravining\n", - "ravins\n", - "ravioli\n", - "raviolis\n", - "ravish\n", - "ravished\n", - "ravisher\n", - "ravishers\n", - "ravishes\n", - "ravishing\n", - "ravishment\n", - "ravishments\n", - "raw\n", - "rawboned\n", - "rawer\n", - "rawest\n", - "rawhide\n", - "rawhided\n", - "rawhides\n", - "rawhiding\n", - "rawish\n", - "rawly\n", - "rawness\n", - "rawnesses\n", - "raws\n", - "rax\n", - "raxed\n", - "raxes\n", - "raxing\n", - "ray\n", - "raya\n", - "rayah\n", - "rayahs\n", - "rayas\n", - "rayed\n", - "raygrass\n", - "raygrasses\n", - "raying\n", - "rayless\n", - "rayon\n", - "rayons\n", - "rays\n", - "raze\n", - "razed\n", - "razee\n", - "razeed\n", - "razeeing\n", - "razees\n", - "razer\n", - "razers\n", - "razes\n", - "razing\n", - "razor\n", - "razored\n", - "razoring\n", - "razors\n", - "razz\n", - "razzed\n", - "razzes\n", - "razzing\n", - "re\n", - "reabsorb\n", - "reabsorbed\n", - "reabsorbing\n", - "reabsorbs\n", - "reabstract\n", - "reabstracted\n", - "reabstracting\n", - "reabstracts\n", - "reaccede\n", - "reacceded\n", - "reaccedes\n", - "reacceding\n", - "reaccelerate\n", - "reaccelerated\n", - "reaccelerates\n", - "reaccelerating\n", - "reaccent\n", - "reaccented\n", - "reaccenting\n", - "reaccents\n", - "reaccept\n", - "reaccepted\n", - "reaccepting\n", - "reaccepts\n", - "reacclimatize\n", - "reacclimatized\n", - "reacclimatizes\n", - "reacclimatizing\n", - "reaccredit\n", - "reaccredited\n", - "reaccrediting\n", - "reaccredits\n", - "reaccumulate\n", - "reaccumulated\n", - "reaccumulates\n", - "reaccumulating\n", - "reaccuse\n", - "reaccused\n", - "reaccuses\n", - "reaccusing\n", - "reach\n", - "reachable\n", - "reached\n", - "reacher\n", - "reachers\n", - "reaches\n", - "reachieve\n", - "reachieved\n", - "reachieves\n", - "reachieving\n", - "reaching\n", - "reacquaint\n", - "reacquainted\n", - "reacquainting\n", - "reacquaints\n", - "reacquire\n", - "reacquired\n", - "reacquires\n", - "reacquiring\n", - "react\n", - "reactant\n", - "reactants\n", - "reacted\n", - "reacting\n", - "reaction\n", - "reactionaries\n", - "reactionary\n", - "reactions\n", - "reactivate\n", - "reactivated\n", - "reactivates\n", - "reactivating\n", - "reactivation\n", - "reactivations\n", - "reactive\n", - "reactor\n", - "reactors\n", - "reacts\n", - "read\n", - "readabilities\n", - "readability\n", - "readable\n", - "readably\n", - "readapt\n", - "readapted\n", - "readapting\n", - "readapts\n", - "readd\n", - "readded\n", - "readdict\n", - "readdicted\n", - "readdicting\n", - "readdicts\n", - "readding\n", - "readdress\n", - "readdressed\n", - "readdresses\n", - "readdressing\n", - "readds\n", - "reader\n", - "readers\n", - "readership\n", - "readerships\n", - "readied\n", - "readier\n", - "readies\n", - "readiest\n", - "readily\n", - "readiness\n", - "readinesses\n", - "reading\n", - "readings\n", - "readjust\n", - "readjustable\n", - "readjusted\n", - "readjusting\n", - "readjustment\n", - "readjustments\n", - "readjusts\n", - "readmit\n", - "readmits\n", - "readmitted\n", - "readmitting\n", - "readopt\n", - "readopted\n", - "readopting\n", - "readopts\n", - "readorn\n", - "readorned\n", - "readorning\n", - "readorns\n", - "readout\n", - "readouts\n", - "reads\n", - "ready\n", - "readying\n", - "reaffirm\n", - "reaffirmed\n", - "reaffirming\n", - "reaffirms\n", - "reaffix\n", - "reaffixed\n", - "reaffixes\n", - "reaffixing\n", - "reagent\n", - "reagents\n", - "reagin\n", - "reaginic\n", - "reagins\n", - "real\n", - "realer\n", - "reales\n", - "realest\n", - "realgar\n", - "realgars\n", - "realia\n", - "realign\n", - "realigned\n", - "realigning\n", - "realignment\n", - "realignments\n", - "realigns\n", - "realise\n", - "realised\n", - "realiser\n", - "realisers\n", - "realises\n", - "realising\n", - "realism\n", - "realisms\n", - "realist\n", - "realistic\n", - "realistically\n", - "realists\n", - "realities\n", - "reality\n", - "realizable\n", - "realization\n", - "realizations\n", - "realize\n", - "realized\n", - "realizer\n", - "realizers\n", - "realizes\n", - "realizing\n", - "reallocate\n", - "reallocated\n", - "reallocates\n", - "reallocating\n", - "reallot\n", - "reallots\n", - "reallotted\n", - "reallotting\n", - "really\n", - "realm\n", - "realms\n", - "realness\n", - "realnesses\n", - "reals\n", - "realter\n", - "realtered\n", - "realtering\n", - "realters\n", - "realties\n", - "realty\n", - "ream\n", - "reamed\n", - "reamer\n", - "reamers\n", - "reaming\n", - "reams\n", - "reanalyses\n", - "reanalysis\n", - "reanalyze\n", - "reanalyzed\n", - "reanalyzes\n", - "reanalyzing\n", - "reanesthetize\n", - "reanesthetized\n", - "reanesthetizes\n", - "reanesthetizing\n", - "reannex\n", - "reannexed\n", - "reannexes\n", - "reannexing\n", - "reanoint\n", - "reanointed\n", - "reanointing\n", - "reanoints\n", - "reap\n", - "reapable\n", - "reaped\n", - "reaper\n", - "reapers\n", - "reaphook\n", - "reaphooks\n", - "reaping\n", - "reappear\n", - "reappearance\n", - "reappearances\n", - "reappeared\n", - "reappearing\n", - "reappears\n", - "reapplied\n", - "reapplies\n", - "reapply\n", - "reapplying\n", - "reappoint\n", - "reappointed\n", - "reappointing\n", - "reappoints\n", - "reapportion\n", - "reapportioned\n", - "reapportioning\n", - "reapportions\n", - "reappraisal\n", - "reappraisals\n", - "reappraise\n", - "reappraised\n", - "reappraises\n", - "reappraising\n", - "reapprove\n", - "reapproved\n", - "reapproves\n", - "reapproving\n", - "reaps\n", - "rear\n", - "reared\n", - "rearer\n", - "rearers\n", - "reargue\n", - "reargued\n", - "reargues\n", - "rearguing\n", - "rearing\n", - "rearm\n", - "rearmed\n", - "rearmice\n", - "rearming\n", - "rearmost\n", - "rearms\n", - "rearouse\n", - "rearoused\n", - "rearouses\n", - "rearousing\n", - "rearrange\n", - "rearranged\n", - "rearranges\n", - "rearranging\n", - "rearrest\n", - "rearrested\n", - "rearresting\n", - "rearrests\n", - "rears\n", - "rearward\n", - "rearwards\n", - "reascend\n", - "reascended\n", - "reascending\n", - "reascends\n", - "reascent\n", - "reascents\n", - "reason\n", - "reasonable\n", - "reasonableness\n", - "reasonablenesses\n", - "reasonably\n", - "reasoned\n", - "reasoner\n", - "reasoners\n", - "reasoning\n", - "reasonings\n", - "reasons\n", - "reassail\n", - "reassailed\n", - "reassailing\n", - "reassails\n", - "reassemble\n", - "reassembled\n", - "reassembles\n", - "reassembling\n", - "reassert\n", - "reasserted\n", - "reasserting\n", - "reasserts\n", - "reassess\n", - "reassessed\n", - "reassesses\n", - "reassessing\n", - "reassessment\n", - "reassessments\n", - "reassign\n", - "reassigned\n", - "reassigning\n", - "reassignment\n", - "reassignments\n", - "reassigns\n", - "reassociate\n", - "reassociated\n", - "reassociates\n", - "reassociating\n", - "reassort\n", - "reassorted\n", - "reassorting\n", - "reassorts\n", - "reassume\n", - "reassumed\n", - "reassumes\n", - "reassuming\n", - "reassurance\n", - "reassurances\n", - "reassure\n", - "reassured\n", - "reassures\n", - "reassuring\n", - "reassuringly\n", - "reata\n", - "reatas\n", - "reattach\n", - "reattached\n", - "reattaches\n", - "reattaching\n", - "reattack\n", - "reattacked\n", - "reattacking\n", - "reattacks\n", - "reattain\n", - "reattained\n", - "reattaining\n", - "reattains\n", - "reave\n", - "reaved\n", - "reaver\n", - "reavers\n", - "reaves\n", - "reaving\n", - "reavow\n", - "reavowed\n", - "reavowing\n", - "reavows\n", - "reawake\n", - "reawaked\n", - "reawaken\n", - "reawakened\n", - "reawakening\n", - "reawakens\n", - "reawakes\n", - "reawaking\n", - "reawoke\n", - "reawoken\n", - "reb\n", - "rebait\n", - "rebaited\n", - "rebaiting\n", - "rebaits\n", - "rebalance\n", - "rebalanced\n", - "rebalances\n", - "rebalancing\n", - "rebaptize\n", - "rebaptized\n", - "rebaptizes\n", - "rebaptizing\n", - "rebate\n", - "rebated\n", - "rebater\n", - "rebaters\n", - "rebates\n", - "rebating\n", - "rebato\n", - "rebatos\n", - "rebbe\n", - "rebbes\n", - "rebec\n", - "rebeck\n", - "rebecks\n", - "rebecs\n", - "rebel\n", - "rebeldom\n", - "rebeldoms\n", - "rebelled\n", - "rebelling\n", - "rebellion\n", - "rebellions\n", - "rebellious\n", - "rebelliously\n", - "rebelliousness\n", - "rebelliousnesses\n", - "rebels\n", - "rebid\n", - "rebidden\n", - "rebidding\n", - "rebids\n", - "rebill\n", - "rebilled\n", - "rebilling\n", - "rebills\n", - "rebind\n", - "rebinding\n", - "rebinds\n", - "rebirth\n", - "rebirths\n", - "rebloom\n", - "rebloomed\n", - "reblooming\n", - "reblooms\n", - "reboant\n", - "reboard\n", - "reboarded\n", - "reboarding\n", - "reboards\n", - "reboil\n", - "reboiled\n", - "reboiling\n", - "reboils\n", - "rebop\n", - "rebops\n", - "reborn\n", - "rebound\n", - "rebounded\n", - "rebounding\n", - "rebounds\n", - "rebozo\n", - "rebozos\n", - "rebranch\n", - "rebranched\n", - "rebranches\n", - "rebranching\n", - "rebroadcast\n", - "rebroadcasted\n", - "rebroadcasting\n", - "rebroadcasts\n", - "rebs\n", - "rebuff\n", - "rebuffed\n", - "rebuffing\n", - "rebuffs\n", - "rebuild\n", - "rebuilded\n", - "rebuilding\n", - "rebuilds\n", - "rebuilt\n", - "rebuke\n", - "rebuked\n", - "rebuker\n", - "rebukers\n", - "rebukes\n", - "rebuking\n", - "reburial\n", - "reburials\n", - "reburied\n", - "reburies\n", - "rebury\n", - "reburying\n", - "rebus\n", - "rebuses\n", - "rebut\n", - "rebuts\n", - "rebuttal\n", - "rebuttals\n", - "rebutted\n", - "rebutter\n", - "rebutters\n", - "rebutting\n", - "rebutton\n", - "rebuttoned\n", - "rebuttoning\n", - "rebuttons\n", - "rec\n", - "recalcitrance\n", - "recalcitrances\n", - "recalcitrant\n", - "recalculate\n", - "recalculated\n", - "recalculates\n", - "recalculating\n", - "recall\n", - "recalled\n", - "recaller\n", - "recallers\n", - "recalling\n", - "recalls\n", - "recane\n", - "recaned\n", - "recanes\n", - "recaning\n", - "recant\n", - "recanted\n", - "recanter\n", - "recanters\n", - "recanting\n", - "recants\n", - "recap\n", - "recapitulate\n", - "recapitulated\n", - "recapitulates\n", - "recapitulating\n", - "recapitulation\n", - "recapitulations\n", - "recapped\n", - "recapping\n", - "recaps\n", - "recapture\n", - "recaptured\n", - "recaptures\n", - "recapturing\n", - "recarried\n", - "recarries\n", - "recarry\n", - "recarrying\n", - "recast\n", - "recasting\n", - "recasts\n", - "recede\n", - "receded\n", - "recedes\n", - "receding\n", - "receipt\n", - "receipted\n", - "receipting\n", - "receipts\n", - "receivable\n", - "receivables\n", - "receive\n", - "received\n", - "receiver\n", - "receivers\n", - "receivership\n", - "receiverships\n", - "receives\n", - "receiving\n", - "recencies\n", - "recency\n", - "recent\n", - "recenter\n", - "recentest\n", - "recently\n", - "recentness\n", - "recentnesses\n", - "recept\n", - "receptacle\n", - "receptacles\n", - "reception\n", - "receptionist\n", - "receptionists\n", - "receptions\n", - "receptive\n", - "receptively\n", - "receptiveness\n", - "receptivenesses\n", - "receptivities\n", - "receptivity\n", - "receptor\n", - "receptors\n", - "recepts\n", - "recertification\n", - "recertifications\n", - "recertified\n", - "recertifies\n", - "recertify\n", - "recertifying\n", - "recess\n", - "recessed\n", - "recesses\n", - "recessing\n", - "recession\n", - "recessions\n", - "rechange\n", - "rechanged\n", - "rechanges\n", - "rechanging\n", - "rechannel\n", - "rechanneled\n", - "rechanneling\n", - "rechannels\n", - "recharge\n", - "recharged\n", - "recharges\n", - "recharging\n", - "rechart\n", - "recharted\n", - "recharting\n", - "recharts\n", - "recheat\n", - "recheats\n", - "recheck\n", - "rechecked\n", - "rechecking\n", - "rechecks\n", - "rechoose\n", - "rechooses\n", - "rechoosing\n", - "rechose\n", - "rechosen\n", - "rechristen\n", - "rechristened\n", - "rechristening\n", - "rechristens\n", - "recipe\n", - "recipes\n", - "recipient\n", - "recipients\n", - "reciprocal\n", - "reciprocally\n", - "reciprocals\n", - "reciprocate\n", - "reciprocated\n", - "reciprocates\n", - "reciprocating\n", - "reciprocation\n", - "reciprocations\n", - "reciprocities\n", - "reciprocity\n", - "recircle\n", - "recircled\n", - "recircles\n", - "recircling\n", - "recirculate\n", - "recirculated\n", - "recirculates\n", - "recirculating\n", - "recirculation\n", - "recirculations\n", - "recision\n", - "recisions\n", - "recital\n", - "recitals\n", - "recitation\n", - "recitations\n", - "recite\n", - "recited\n", - "reciter\n", - "reciters\n", - "recites\n", - "reciting\n", - "reck\n", - "recked\n", - "recking\n", - "reckless\n", - "recklessly\n", - "recklessness\n", - "recklessnesses\n", - "reckon\n", - "reckoned\n", - "reckoner\n", - "reckoners\n", - "reckoning\n", - "reckonings\n", - "reckons\n", - "recks\n", - "reclad\n", - "reclaim\n", - "reclaimable\n", - "reclaimed\n", - "reclaiming\n", - "reclaims\n", - "reclamation\n", - "reclamations\n", - "reclame\n", - "reclames\n", - "reclasp\n", - "reclasped\n", - "reclasping\n", - "reclasps\n", - "reclassification\n", - "reclassifications\n", - "reclassified\n", - "reclassifies\n", - "reclassify\n", - "reclassifying\n", - "reclean\n", - "recleaned\n", - "recleaning\n", - "recleans\n", - "recline\n", - "reclined\n", - "recliner\n", - "recliners\n", - "reclines\n", - "reclining\n", - "reclothe\n", - "reclothed\n", - "reclothes\n", - "reclothing\n", - "recluse\n", - "recluses\n", - "recoal\n", - "recoaled\n", - "recoaling\n", - "recoals\n", - "recock\n", - "recocked\n", - "recocking\n", - "recocks\n", - "recodified\n", - "recodifies\n", - "recodify\n", - "recodifying\n", - "recognition\n", - "recognitions\n", - "recognizable\n", - "recognizably\n", - "recognizance\n", - "recognizances\n", - "recognize\n", - "recognized\n", - "recognizes\n", - "recognizing\n", - "recoil\n", - "recoiled\n", - "recoiler\n", - "recoilers\n", - "recoiling\n", - "recoils\n", - "recoin\n", - "recoined\n", - "recoining\n", - "recoins\n", - "recollection\n", - "recollections\n", - "recolonize\n", - "recolonized\n", - "recolonizes\n", - "recolonizing\n", - "recolor\n", - "recolored\n", - "recoloring\n", - "recolors\n", - "recomb\n", - "recombed\n", - "recombine\n", - "recombined\n", - "recombines\n", - "recombing\n", - "recombining\n", - "recombs\n", - "recommend\n", - "recommendable\n", - "recommendation\n", - "recommendations\n", - "recommendatory\n", - "recommended\n", - "recommender\n", - "recommenders\n", - "recommending\n", - "recommends\n", - "recommit\n", - "recommits\n", - "recommitted\n", - "recommitting\n", - "recompense\n", - "recompensed\n", - "recompenses\n", - "recompensing\n", - "recompile\n", - "recompiled\n", - "recompiles\n", - "recompiling\n", - "recompute\n", - "recomputed\n", - "recomputes\n", - "recomputing\n", - "recon\n", - "reconceive\n", - "reconceived\n", - "reconceives\n", - "reconceiving\n", - "reconcilable\n", - "reconcile\n", - "reconciled\n", - "reconcilement\n", - "reconcilements\n", - "reconciler\n", - "reconcilers\n", - "reconciles\n", - "reconciliation\n", - "reconciliations\n", - "reconciling\n", - "recondite\n", - "reconfigure\n", - "reconfigured\n", - "reconfigures\n", - "reconfiguring\n", - "reconnaissance\n", - "reconnaissances\n", - "reconnect\n", - "reconnected\n", - "reconnecting\n", - "reconnects\n", - "reconnoiter\n", - "reconnoitered\n", - "reconnoitering\n", - "reconnoiters\n", - "reconquer\n", - "reconquered\n", - "reconquering\n", - "reconquers\n", - "reconquest\n", - "reconquests\n", - "recons\n", - "reconsider\n", - "reconsideration\n", - "reconsiderations\n", - "reconsidered\n", - "reconsidering\n", - "reconsiders\n", - "reconsolidate\n", - "reconsolidated\n", - "reconsolidates\n", - "reconsolidating\n", - "reconstruct\n", - "reconstructed\n", - "reconstructing\n", - "reconstructs\n", - "recontaminate\n", - "recontaminated\n", - "recontaminates\n", - "recontaminating\n", - "reconvene\n", - "reconvened\n", - "reconvenes\n", - "reconvening\n", - "reconvey\n", - "reconveyed\n", - "reconveying\n", - "reconveys\n", - "reconvict\n", - "reconvicted\n", - "reconvicting\n", - "reconvicts\n", - "recook\n", - "recooked\n", - "recooking\n", - "recooks\n", - "recopied\n", - "recopies\n", - "recopy\n", - "recopying\n", - "record\n", - "recordable\n", - "recorded\n", - "recorder\n", - "recorders\n", - "recording\n", - "records\n", - "recount\n", - "recounted\n", - "recounting\n", - "recounts\n", - "recoup\n", - "recoupe\n", - "recouped\n", - "recouping\n", - "recouple\n", - "recoupled\n", - "recouples\n", - "recoupling\n", - "recoups\n", - "recourse\n", - "recourses\n", - "recover\n", - "recoverable\n", - "recovered\n", - "recoveries\n", - "recovering\n", - "recovers\n", - "recovery\n", - "recrate\n", - "recrated\n", - "recrates\n", - "recrating\n", - "recreant\n", - "recreants\n", - "recreate\n", - "recreated\n", - "recreates\n", - "recreating\n", - "recreation\n", - "recreational\n", - "recreations\n", - "recreative\n", - "recriminate\n", - "recriminated\n", - "recriminates\n", - "recriminating\n", - "recrimination\n", - "recriminations\n", - "recriminatory\n", - "recross\n", - "recrossed\n", - "recrosses\n", - "recrossing\n", - "recrown\n", - "recrowned\n", - "recrowning\n", - "recrowns\n", - "recruit\n", - "recruited\n", - "recruiting\n", - "recruitment\n", - "recruitments\n", - "recruits\n", - "recs\n", - "recta\n", - "rectal\n", - "rectally\n", - "rectangle\n", - "rectangles\n", - "recti\n", - "rectification\n", - "rectifications\n", - "rectified\n", - "rectifier\n", - "rectifiers\n", - "rectifies\n", - "rectify\n", - "rectifying\n", - "rectitude\n", - "rectitudes\n", - "recto\n", - "rector\n", - "rectorate\n", - "rectorates\n", - "rectorial\n", - "rectories\n", - "rectors\n", - "rectory\n", - "rectos\n", - "rectrices\n", - "rectrix\n", - "rectum\n", - "rectums\n", - "rectus\n", - "recumbent\n", - "recuperate\n", - "recuperated\n", - "recuperates\n", - "recuperating\n", - "recuperation\n", - "recuperations\n", - "recuperative\n", - "recur\n", - "recurred\n", - "recurrence\n", - "recurrences\n", - "recurrent\n", - "recurring\n", - "recurs\n", - "recurve\n", - "recurved\n", - "recurves\n", - "recurving\n", - "recusant\n", - "recusants\n", - "recuse\n", - "recused\n", - "recuses\n", - "recusing\n", - "recut\n", - "recuts\n", - "recutting\n", - "recycle\n", - "recycled\n", - "recycles\n", - "recycling\n", - "red\n", - "redact\n", - "redacted\n", - "redacting\n", - "redactor\n", - "redactors\n", - "redacts\n", - "redan\n", - "redans\n", - "redargue\n", - "redargued\n", - "redargues\n", - "redarguing\n", - "redate\n", - "redated\n", - "redates\n", - "redating\n", - "redbait\n", - "redbaited\n", - "redbaiting\n", - "redbaits\n", - "redbay\n", - "redbays\n", - "redbird\n", - "redbirds\n", - "redbone\n", - "redbones\n", - "redbrick\n", - "redbud\n", - "redbuds\n", - "redbug\n", - "redbugs\n", - "redcap\n", - "redcaps\n", - "redcoat\n", - "redcoats\n", - "redd\n", - "redded\n", - "redden\n", - "reddened\n", - "reddening\n", - "reddens\n", - "redder\n", - "redders\n", - "reddest\n", - "redding\n", - "reddish\n", - "reddle\n", - "reddled\n", - "reddles\n", - "reddling\n", - "redds\n", - "rede\n", - "redear\n", - "redears\n", - "redecorate\n", - "redecorated\n", - "redecorates\n", - "redecorating\n", - "reded\n", - "rededicate\n", - "rededicated\n", - "rededicates\n", - "rededicating\n", - "rededication\n", - "rededications\n", - "redeem\n", - "redeemable\n", - "redeemed\n", - "redeemer\n", - "redeemers\n", - "redeeming\n", - "redeems\n", - "redefeat\n", - "redefeated\n", - "redefeating\n", - "redefeats\n", - "redefied\n", - "redefies\n", - "redefine\n", - "redefined\n", - "redefines\n", - "redefining\n", - "redefy\n", - "redefying\n", - "redemand\n", - "redemanded\n", - "redemanding\n", - "redemands\n", - "redemption\n", - "redemptions\n", - "redemptive\n", - "redemptory\n", - "redenied\n", - "redenies\n", - "redeny\n", - "redenying\n", - "redeploy\n", - "redeployed\n", - "redeploying\n", - "redeploys\n", - "redeposit\n", - "redeposited\n", - "redepositing\n", - "redeposits\n", - "redes\n", - "redesign\n", - "redesignate\n", - "redesignated\n", - "redesignates\n", - "redesignating\n", - "redesigned\n", - "redesigning\n", - "redesigns\n", - "redevelop\n", - "redeveloped\n", - "redeveloping\n", - "redevelops\n", - "redeye\n", - "redeyes\n", - "redfin\n", - "redfins\n", - "redfish\n", - "redfishes\n", - "redhead\n", - "redheaded\n", - "redheads\n", - "redhorse\n", - "redhorses\n", - "redia\n", - "rediae\n", - "redial\n", - "redias\n", - "redid\n", - "redigest\n", - "redigested\n", - "redigesting\n", - "redigests\n", - "reding\n", - "redip\n", - "redipped\n", - "redipping\n", - "redips\n", - "redipt\n", - "redirect\n", - "redirected\n", - "redirecting\n", - "redirects\n", - "rediscover\n", - "rediscovered\n", - "rediscoveries\n", - "rediscovering\n", - "rediscovers\n", - "rediscovery\n", - "redissolve\n", - "redissolved\n", - "redissolves\n", - "redissolving\n", - "redistribute\n", - "redistributed\n", - "redistributes\n", - "redistributing\n", - "redivide\n", - "redivided\n", - "redivides\n", - "redividing\n", - "redleg\n", - "redlegs\n", - "redly\n", - "redneck\n", - "rednecks\n", - "redness\n", - "rednesses\n", - "redo\n", - "redock\n", - "redocked\n", - "redocking\n", - "redocks\n", - "redoes\n", - "redoing\n", - "redolence\n", - "redolences\n", - "redolent\n", - "redolently\n", - "redone\n", - "redos\n", - "redouble\n", - "redoubled\n", - "redoubles\n", - "redoubling\n", - "redoubt\n", - "redoubtable\n", - "redoubts\n", - "redound\n", - "redounded\n", - "redounding\n", - "redounds\n", - "redout\n", - "redouts\n", - "redowa\n", - "redowas\n", - "redox\n", - "redoxes\n", - "redpoll\n", - "redpolls\n", - "redraft\n", - "redrafted\n", - "redrafting\n", - "redrafts\n", - "redraw\n", - "redrawer\n", - "redrawers\n", - "redrawing\n", - "redrawn\n", - "redraws\n", - "redress\n", - "redressed\n", - "redresses\n", - "redressing\n", - "redrew\n", - "redried\n", - "redries\n", - "redrill\n", - "redrilled\n", - "redrilling\n", - "redrills\n", - "redrive\n", - "redriven\n", - "redrives\n", - "redriving\n", - "redroot\n", - "redroots\n", - "redrove\n", - "redry\n", - "redrying\n", - "reds\n", - "redshank\n", - "redshanks\n", - "redshirt\n", - "redshirted\n", - "redshirting\n", - "redshirts\n", - "redskin\n", - "redskins\n", - "redstart\n", - "redstarts\n", - "redtop\n", - "redtops\n", - "reduce\n", - "reduced\n", - "reducer\n", - "reducers\n", - "reduces\n", - "reducible\n", - "reducing\n", - "reduction\n", - "reductions\n", - "redundancies\n", - "redundancy\n", - "redundant\n", - "redundantly\n", - "reduviid\n", - "reduviids\n", - "redware\n", - "redwares\n", - "redwing\n", - "redwings\n", - "redwood\n", - "redwoods\n", - "redye\n", - "redyed\n", - "redyeing\n", - "redyes\n", - "ree\n", - "reearn\n", - "reearned\n", - "reearning\n", - "reearns\n", - "reecho\n", - "reechoed\n", - "reechoes\n", - "reechoing\n", - "reed\n", - "reedbird\n", - "reedbirds\n", - "reedbuck\n", - "reedbucks\n", - "reeded\n", - "reedier\n", - "reediest\n", - "reedified\n", - "reedifies\n", - "reedify\n", - "reedifying\n", - "reeding\n", - "reedings\n", - "reedit\n", - "reedited\n", - "reediting\n", - "reedits\n", - "reedling\n", - "reedlings\n", - "reeds\n", - "reedy\n", - "reef\n", - "reefed\n", - "reefer\n", - "reefers\n", - "reefier\n", - "reefiest\n", - "reefing\n", - "reefs\n", - "reefy\n", - "reeject\n", - "reejected\n", - "reejecting\n", - "reejects\n", - "reek\n", - "reeked\n", - "reeker\n", - "reekers\n", - "reekier\n", - "reekiest\n", - "reeking\n", - "reeks\n", - "reeky\n", - "reel\n", - "reelable\n", - "reelect\n", - "reelected\n", - "reelecting\n", - "reelects\n", - "reeled\n", - "reeler\n", - "reelers\n", - "reeling\n", - "reels\n", - "reembark\n", - "reembarked\n", - "reembarking\n", - "reembarks\n", - "reembodied\n", - "reembodies\n", - "reembody\n", - "reembodying\n", - "reemerge\n", - "reemerged\n", - "reemergence\n", - "reemergences\n", - "reemerges\n", - "reemerging\n", - "reemit\n", - "reemits\n", - "reemitted\n", - "reemitting\n", - "reemphasize\n", - "reemphasized\n", - "reemphasizes\n", - "reemphasizing\n", - "reemploy\n", - "reemployed\n", - "reemploying\n", - "reemploys\n", - "reenact\n", - "reenacted\n", - "reenacting\n", - "reenacts\n", - "reendow\n", - "reendowed\n", - "reendowing\n", - "reendows\n", - "reenergize\n", - "reenergized\n", - "reenergizes\n", - "reenergizing\n", - "reengage\n", - "reengaged\n", - "reengages\n", - "reengaging\n", - "reenjoy\n", - "reenjoyed\n", - "reenjoying\n", - "reenjoys\n", - "reenlist\n", - "reenlisted\n", - "reenlisting\n", - "reenlistness\n", - "reenlistnesses\n", - "reenlists\n", - "reenter\n", - "reentered\n", - "reentering\n", - "reenters\n", - "reentries\n", - "reentry\n", - "reequip\n", - "reequipped\n", - "reequipping\n", - "reequips\n", - "reerect\n", - "reerected\n", - "reerecting\n", - "reerects\n", - "rees\n", - "reest\n", - "reestablish\n", - "reestablished\n", - "reestablishes\n", - "reestablishing\n", - "reestablishment\n", - "reestablishments\n", - "reested\n", - "reestimate\n", - "reestimated\n", - "reestimates\n", - "reestimating\n", - "reesting\n", - "reests\n", - "reevaluate\n", - "reevaluated\n", - "reevaluates\n", - "reevaluating\n", - "reevaluation\n", - "reevaluations\n", - "reeve\n", - "reeved\n", - "reeves\n", - "reeving\n", - "reevoke\n", - "reevoked\n", - "reevokes\n", - "reevoking\n", - "reexamination\n", - "reexaminations\n", - "reexamine\n", - "reexamined\n", - "reexamines\n", - "reexamining\n", - "reexpel\n", - "reexpelled\n", - "reexpelling\n", - "reexpels\n", - "reexport\n", - "reexported\n", - "reexporting\n", - "reexports\n", - "ref\n", - "reface\n", - "refaced\n", - "refaces\n", - "refacing\n", - "refall\n", - "refallen\n", - "refalling\n", - "refalls\n", - "refasten\n", - "refastened\n", - "refastening\n", - "refastens\n", - "refect\n", - "refected\n", - "refecting\n", - "refects\n", - "refed\n", - "refeed\n", - "refeeding\n", - "refeeds\n", - "refel\n", - "refell\n", - "refelled\n", - "refelling\n", - "refels\n", - "refer\n", - "referable\n", - "referee\n", - "refereed\n", - "refereeing\n", - "referees\n", - "reference\n", - "references\n", - "referenda\n", - "referendum\n", - "referendums\n", - "referent\n", - "referents\n", - "referral\n", - "referrals\n", - "referred\n", - "referrer\n", - "referrers\n", - "referring\n", - "refers\n", - "reffed\n", - "reffing\n", - "refight\n", - "refighting\n", - "refights\n", - "refigure\n", - "refigured\n", - "refigures\n", - "refiguring\n", - "refile\n", - "refiled\n", - "refiles\n", - "refiling\n", - "refill\n", - "refillable\n", - "refilled\n", - "refilling\n", - "refills\n", - "refilm\n", - "refilmed\n", - "refilming\n", - "refilms\n", - "refilter\n", - "refiltered\n", - "refiltering\n", - "refilters\n", - "refinance\n", - "refinanced\n", - "refinances\n", - "refinancing\n", - "refind\n", - "refinding\n", - "refinds\n", - "refine\n", - "refined\n", - "refinement\n", - "refinements\n", - "refiner\n", - "refineries\n", - "refiners\n", - "refinery\n", - "refines\n", - "refining\n", - "refinish\n", - "refinished\n", - "refinishes\n", - "refinishing\n", - "refire\n", - "refired\n", - "refires\n", - "refiring\n", - "refit\n", - "refits\n", - "refitted\n", - "refitting\n", - "refix\n", - "refixed\n", - "refixes\n", - "refixing\n", - "reflate\n", - "reflated\n", - "reflates\n", - "reflating\n", - "reflect\n", - "reflected\n", - "reflecting\n", - "reflection\n", - "reflections\n", - "reflective\n", - "reflector\n", - "reflectors\n", - "reflects\n", - "reflet\n", - "reflets\n", - "reflew\n", - "reflex\n", - "reflexed\n", - "reflexes\n", - "reflexing\n", - "reflexive\n", - "reflexively\n", - "reflexiveness\n", - "reflexivenesses\n", - "reflexly\n", - "reflies\n", - "refloat\n", - "refloated\n", - "refloating\n", - "refloats\n", - "reflood\n", - "reflooded\n", - "reflooding\n", - "refloods\n", - "reflow\n", - "reflowed\n", - "reflower\n", - "reflowered\n", - "reflowering\n", - "reflowers\n", - "reflowing\n", - "reflown\n", - "reflows\n", - "refluent\n", - "reflux\n", - "refluxed\n", - "refluxes\n", - "refluxing\n", - "refly\n", - "reflying\n", - "refocus\n", - "refocused\n", - "refocuses\n", - "refocusing\n", - "refocussed\n", - "refocusses\n", - "refocussing\n", - "refold\n", - "refolded\n", - "refolding\n", - "refolds\n", - "reforest\n", - "reforested\n", - "reforesting\n", - "reforests\n", - "reforge\n", - "reforged\n", - "reforges\n", - "reforging\n", - "reform\n", - "reformat\n", - "reformatories\n", - "reformatory\n", - "reformats\n", - "reformatted\n", - "reformatting\n", - "reformed\n", - "reformer\n", - "reformers\n", - "reforming\n", - "reforms\n", - "reformulate\n", - "reformulated\n", - "reformulates\n", - "reformulating\n", - "refought\n", - "refound\n", - "refounded\n", - "refounding\n", - "refounds\n", - "refract\n", - "refracted\n", - "refracting\n", - "refraction\n", - "refractions\n", - "refractive\n", - "refractory\n", - "refracts\n", - "refrain\n", - "refrained\n", - "refraining\n", - "refrainment\n", - "refrainments\n", - "refrains\n", - "reframe\n", - "reframed\n", - "reframes\n", - "reframing\n", - "refreeze\n", - "refreezes\n", - "refreezing\n", - "refresh\n", - "refreshed\n", - "refresher\n", - "refreshers\n", - "refreshes\n", - "refreshing\n", - "refreshingly\n", - "refreshment\n", - "refreshments\n", - "refried\n", - "refries\n", - "refrigerant\n", - "refrigerants\n", - "refrigerate\n", - "refrigerated\n", - "refrigerates\n", - "refrigerating\n", - "refrigeration\n", - "refrigerations\n", - "refrigerator\n", - "refrigerators\n", - "refront\n", - "refronted\n", - "refronting\n", - "refronts\n", - "refroze\n", - "refrozen\n", - "refry\n", - "refrying\n", - "refs\n", - "reft\n", - "refuel\n", - "refueled\n", - "refueling\n", - "refuelled\n", - "refuelling\n", - "refuels\n", - "refuge\n", - "refuged\n", - "refugee\n", - "refugees\n", - "refuges\n", - "refugia\n", - "refuging\n", - "refugium\n", - "refund\n", - "refundable\n", - "refunded\n", - "refunder\n", - "refunders\n", - "refunding\n", - "refunds\n", - "refurbish\n", - "refurbished\n", - "refurbishes\n", - "refurbishing\n", - "refusal\n", - "refusals\n", - "refuse\n", - "refused\n", - "refuser\n", - "refusers\n", - "refuses\n", - "refusing\n", - "refutal\n", - "refutals\n", - "refutation\n", - "refutations\n", - "refute\n", - "refuted\n", - "refuter\n", - "refuters\n", - "refutes\n", - "refuting\n", - "regain\n", - "regained\n", - "regainer\n", - "regainers\n", - "regaining\n", - "regains\n", - "regal\n", - "regale\n", - "regaled\n", - "regalement\n", - "regalements\n", - "regales\n", - "regalia\n", - "regaling\n", - "regalities\n", - "regality\n", - "regally\n", - "regard\n", - "regarded\n", - "regardful\n", - "regarding\n", - "regardless\n", - "regards\n", - "regather\n", - "regathered\n", - "regathering\n", - "regathers\n", - "regatta\n", - "regattas\n", - "regauge\n", - "regauged\n", - "regauges\n", - "regauging\n", - "regave\n", - "regear\n", - "regeared\n", - "regearing\n", - "regears\n", - "regelate\n", - "regelated\n", - "regelates\n", - "regelating\n", - "regencies\n", - "regency\n", - "regenerate\n", - "regenerated\n", - "regenerates\n", - "regenerating\n", - "regeneration\n", - "regenerations\n", - "regenerative\n", - "regenerator\n", - "regenerators\n", - "regent\n", - "regental\n", - "regents\n", - "reges\n", - "regicide\n", - "regicides\n", - "regild\n", - "regilded\n", - "regilding\n", - "regilds\n", - "regilt\n", - "regime\n", - "regimen\n", - "regimens\n", - "regiment\n", - "regimental\n", - "regimentation\n", - "regimentations\n", - "regimented\n", - "regimenting\n", - "regiments\n", - "regimes\n", - "regina\n", - "reginae\n", - "reginal\n", - "reginas\n", - "region\n", - "regional\n", - "regionally\n", - "regionals\n", - "regions\n", - "register\n", - "registered\n", - "registering\n", - "registers\n", - "registrar\n", - "registrars\n", - "registration\n", - "registrations\n", - "registries\n", - "registry\n", - "regius\n", - "regive\n", - "regiven\n", - "regives\n", - "regiving\n", - "reglaze\n", - "reglazed\n", - "reglazes\n", - "reglazing\n", - "reglet\n", - "reglets\n", - "regloss\n", - "reglossed\n", - "reglosses\n", - "reglossing\n", - "reglow\n", - "reglowed\n", - "reglowing\n", - "reglows\n", - "reglue\n", - "reglued\n", - "reglues\n", - "regluing\n", - "regma\n", - "regmata\n", - "regna\n", - "regnal\n", - "regnancies\n", - "regnancy\n", - "regnant\n", - "regnum\n", - "regolith\n", - "regoliths\n", - "regorge\n", - "regorged\n", - "regorges\n", - "regorging\n", - "regosol\n", - "regosols\n", - "regrade\n", - "regraded\n", - "regrades\n", - "regrading\n", - "regraft\n", - "regrafted\n", - "regrafting\n", - "regrafts\n", - "regrant\n", - "regranted\n", - "regranting\n", - "regrants\n", - "regrate\n", - "regrated\n", - "regrates\n", - "regrating\n", - "regreet\n", - "regreeted\n", - "regreeting\n", - "regreets\n", - "regress\n", - "regressed\n", - "regresses\n", - "regressing\n", - "regression\n", - "regressions\n", - "regressive\n", - "regressor\n", - "regressors\n", - "regret\n", - "regretfully\n", - "regrets\n", - "regrettable\n", - "regrettably\n", - "regretted\n", - "regretter\n", - "regretters\n", - "regretting\n", - "regrew\n", - "regrind\n", - "regrinding\n", - "regrinds\n", - "regroove\n", - "regrooved\n", - "regrooves\n", - "regrooving\n", - "reground\n", - "regroup\n", - "regrouped\n", - "regrouping\n", - "regroups\n", - "regrow\n", - "regrowing\n", - "regrown\n", - "regrows\n", - "regrowth\n", - "regrowths\n", - "regular\n", - "regularities\n", - "regularity\n", - "regularize\n", - "regularized\n", - "regularizes\n", - "regularizing\n", - "regularly\n", - "regulars\n", - "regulate\n", - "regulated\n", - "regulates\n", - "regulating\n", - "regulation\n", - "regulations\n", - "regulative\n", - "regulator\n", - "regulators\n", - "regulatory\n", - "reguli\n", - "reguline\n", - "regulus\n", - "reguluses\n", - "regurgitate\n", - "regurgitated\n", - "regurgitates\n", - "regurgitating\n", - "regurgitation\n", - "regurgitations\n", - "rehabilitate\n", - "rehabilitated\n", - "rehabilitates\n", - "rehabilitating\n", - "rehabilitation\n", - "rehabilitations\n", - "rehabilitative\n", - "rehammer\n", - "rehammered\n", - "rehammering\n", - "rehammers\n", - "rehandle\n", - "rehandled\n", - "rehandles\n", - "rehandling\n", - "rehang\n", - "rehanged\n", - "rehanging\n", - "rehangs\n", - "reharden\n", - "rehardened\n", - "rehardening\n", - "rehardens\n", - "rehash\n", - "rehashed\n", - "rehashes\n", - "rehashing\n", - "rehear\n", - "reheard\n", - "rehearing\n", - "rehears\n", - "rehearsal\n", - "rehearsals\n", - "rehearse\n", - "rehearsed\n", - "rehearser\n", - "rehearsers\n", - "rehearses\n", - "rehearsing\n", - "reheat\n", - "reheated\n", - "reheater\n", - "reheaters\n", - "reheating\n", - "reheats\n", - "reheel\n", - "reheeled\n", - "reheeling\n", - "reheels\n", - "rehem\n", - "rehemmed\n", - "rehemming\n", - "rehems\n", - "rehinge\n", - "rehinged\n", - "rehinges\n", - "rehinging\n", - "rehire\n", - "rehired\n", - "rehires\n", - "rehiring\n", - "rehospitalization\n", - "rehospitalizations\n", - "rehospitalize\n", - "rehospitalized\n", - "rehospitalizes\n", - "rehospitalizing\n", - "rehouse\n", - "rehoused\n", - "rehouses\n", - "rehousing\n", - "rehung\n", - "rei\n", - "reidentified\n", - "reidentifies\n", - "reidentify\n", - "reidentifying\n", - "reif\n", - "reified\n", - "reifier\n", - "reifiers\n", - "reifies\n", - "reifs\n", - "reify\n", - "reifying\n", - "reign\n", - "reigned\n", - "reigning\n", - "reignite\n", - "reignited\n", - "reignites\n", - "reigniting\n", - "reigns\n", - "reimage\n", - "reimaged\n", - "reimages\n", - "reimaging\n", - "reimbursable\n", - "reimburse\n", - "reimbursed\n", - "reimbursement\n", - "reimbursements\n", - "reimburses\n", - "reimbursing\n", - "reimplant\n", - "reimplanted\n", - "reimplanting\n", - "reimplants\n", - "reimport\n", - "reimported\n", - "reimporting\n", - "reimports\n", - "reimpose\n", - "reimposed\n", - "reimposes\n", - "reimposing\n", - "rein\n", - "reincarnate\n", - "reincarnated\n", - "reincarnates\n", - "reincarnating\n", - "reincarnation\n", - "reincarnations\n", - "reincite\n", - "reincited\n", - "reincites\n", - "reinciting\n", - "reincorporate\n", - "reincorporated\n", - "reincorporates\n", - "reincorporating\n", - "reincur\n", - "reincurred\n", - "reincurring\n", - "reincurs\n", - "reindeer\n", - "reindeers\n", - "reindex\n", - "reindexed\n", - "reindexes\n", - "reindexing\n", - "reinduce\n", - "reinduced\n", - "reinduces\n", - "reinducing\n", - "reinduct\n", - "reinducted\n", - "reinducting\n", - "reinducts\n", - "reined\n", - "reinfect\n", - "reinfected\n", - "reinfecting\n", - "reinfection\n", - "reinfections\n", - "reinfects\n", - "reinforcement\n", - "reinforcements\n", - "reinforcer\n", - "reinforcers\n", - "reinform\n", - "reinformed\n", - "reinforming\n", - "reinforms\n", - "reinfuse\n", - "reinfused\n", - "reinfuses\n", - "reinfusing\n", - "reining\n", - "reinjection\n", - "reinjections\n", - "reinjure\n", - "reinjured\n", - "reinjures\n", - "reinjuring\n", - "reinless\n", - "reinoculate\n", - "reinoculated\n", - "reinoculates\n", - "reinoculating\n", - "reins\n", - "reinsert\n", - "reinserted\n", - "reinserting\n", - "reinsertion\n", - "reinsertions\n", - "reinserts\n", - "reinsman\n", - "reinsmen\n", - "reinspect\n", - "reinspected\n", - "reinspecting\n", - "reinspects\n", - "reinstall\n", - "reinstalled\n", - "reinstalling\n", - "reinstalls\n", - "reinstate\n", - "reinstated\n", - "reinstates\n", - "reinstating\n", - "reinstitute\n", - "reinstituted\n", - "reinstitutes\n", - "reinstituting\n", - "reinsure\n", - "reinsured\n", - "reinsures\n", - "reinsuring\n", - "reintegrate\n", - "reintegrated\n", - "reintegrates\n", - "reintegrating\n", - "reintegration\n", - "reintegrations\n", - "reinter\n", - "reinterred\n", - "reinterring\n", - "reinters\n", - "reintroduce\n", - "reintroduced\n", - "reintroduces\n", - "reintroducing\n", - "reinvent\n", - "reinvented\n", - "reinventing\n", - "reinvents\n", - "reinvest\n", - "reinvested\n", - "reinvestigate\n", - "reinvestigated\n", - "reinvestigates\n", - "reinvestigating\n", - "reinvestigation\n", - "reinvestigations\n", - "reinvesting\n", - "reinvests\n", - "reinvigorate\n", - "reinvigorated\n", - "reinvigorates\n", - "reinvigorating\n", - "reinvite\n", - "reinvited\n", - "reinvites\n", - "reinviting\n", - "reinvoke\n", - "reinvoked\n", - "reinvokes\n", - "reinvoking\n", - "reis\n", - "reissue\n", - "reissued\n", - "reissuer\n", - "reissuers\n", - "reissues\n", - "reissuing\n", - "reitbok\n", - "reitboks\n", - "reiterate\n", - "reiterated\n", - "reiterates\n", - "reiterating\n", - "reiteration\n", - "reiterations\n", - "reive\n", - "reived\n", - "reiver\n", - "reivers\n", - "reives\n", - "reiving\n", - "reject\n", - "rejected\n", - "rejectee\n", - "rejectees\n", - "rejecter\n", - "rejecters\n", - "rejecting\n", - "rejection\n", - "rejections\n", - "rejector\n", - "rejectors\n", - "rejects\n", - "rejigger\n", - "rejiggered\n", - "rejiggering\n", - "rejiggers\n", - "rejoice\n", - "rejoiced\n", - "rejoicer\n", - "rejoicers\n", - "rejoices\n", - "rejoicing\n", - "rejoicings\n", - "rejoin\n", - "rejoinder\n", - "rejoinders\n", - "rejoined\n", - "rejoining\n", - "rejoins\n", - "rejudge\n", - "rejudged\n", - "rejudges\n", - "rejudging\n", - "rejuvenate\n", - "rejuvenated\n", - "rejuvenates\n", - "rejuvenating\n", - "rejuvenation\n", - "rejuvenations\n", - "rekey\n", - "rekeyed\n", - "rekeying\n", - "rekeys\n", - "rekindle\n", - "rekindled\n", - "rekindles\n", - "rekindling\n", - "reknit\n", - "reknits\n", - "reknitted\n", - "reknitting\n", - "relabel\n", - "relabeled\n", - "relabeling\n", - "relabelled\n", - "relabelling\n", - "relabels\n", - "relace\n", - "relaced\n", - "relaces\n", - "relacing\n", - "relaid\n", - "relandscape\n", - "relandscaped\n", - "relandscapes\n", - "relandscaping\n", - "relapse\n", - "relapsed\n", - "relapser\n", - "relapsers\n", - "relapses\n", - "relapsing\n", - "relatable\n", - "relate\n", - "related\n", - "relater\n", - "relaters\n", - "relates\n", - "relating\n", - "relation\n", - "relations\n", - "relationship\n", - "relationships\n", - "relative\n", - "relatively\n", - "relativeness\n", - "relativenesses\n", - "relatives\n", - "relator\n", - "relators\n", - "relaunch\n", - "relaunched\n", - "relaunches\n", - "relaunching\n", - "relax\n", - "relaxant\n", - "relaxants\n", - "relaxation\n", - "relaxations\n", - "relaxed\n", - "relaxer\n", - "relaxers\n", - "relaxes\n", - "relaxin\n", - "relaxing\n", - "relaxins\n", - "relay\n", - "relayed\n", - "relaying\n", - "relays\n", - "relearn\n", - "relearned\n", - "relearning\n", - "relearns\n", - "relearnt\n", - "release\n", - "released\n", - "releaser\n", - "releasers\n", - "releases\n", - "releasing\n", - "relegate\n", - "relegated\n", - "relegates\n", - "relegating\n", - "relegation\n", - "relegations\n", - "relend\n", - "relending\n", - "relends\n", - "relent\n", - "relented\n", - "relenting\n", - "relentless\n", - "relentlessly\n", - "relentlessness\n", - "relentlessnesses\n", - "relents\n", - "relet\n", - "relets\n", - "reletter\n", - "relettered\n", - "relettering\n", - "reletters\n", - "reletting\n", - "relevance\n", - "relevances\n", - "relevant\n", - "relevantly\n", - "reliabilities\n", - "reliability\n", - "reliable\n", - "reliableness\n", - "reliablenesses\n", - "reliably\n", - "reliance\n", - "reliances\n", - "reliant\n", - "relic\n", - "relics\n", - "relict\n", - "relicts\n", - "relied\n", - "relief\n", - "reliefs\n", - "relier\n", - "reliers\n", - "relies\n", - "relieve\n", - "relieved\n", - "reliever\n", - "relievers\n", - "relieves\n", - "relieving\n", - "relievo\n", - "relievos\n", - "relight\n", - "relighted\n", - "relighting\n", - "relights\n", - "religion\n", - "religionist\n", - "religionists\n", - "religions\n", - "religious\n", - "religiously\n", - "reline\n", - "relined\n", - "relines\n", - "relining\n", - "relinquish\n", - "relinquished\n", - "relinquishes\n", - "relinquishing\n", - "relinquishment\n", - "relinquishments\n", - "relique\n", - "reliques\n", - "relish\n", - "relishable\n", - "relished\n", - "relishes\n", - "relishing\n", - "relist\n", - "relisted\n", - "relisting\n", - "relists\n", - "relit\n", - "relive\n", - "relived\n", - "relives\n", - "reliving\n", - "reload\n", - "reloaded\n", - "reloader\n", - "reloaders\n", - "reloading\n", - "reloads\n", - "reloan\n", - "reloaned\n", - "reloaning\n", - "reloans\n", - "relocate\n", - "relocated\n", - "relocates\n", - "relocating\n", - "relocation\n", - "relocations\n", - "relucent\n", - "reluct\n", - "reluctance\n", - "reluctant\n", - "reluctantly\n", - "relucted\n", - "relucting\n", - "relucts\n", - "relume\n", - "relumed\n", - "relumes\n", - "relumine\n", - "relumined\n", - "relumines\n", - "reluming\n", - "relumining\n", - "rely\n", - "relying\n", - "rem\n", - "remade\n", - "remail\n", - "remailed\n", - "remailing\n", - "remails\n", - "remain\n", - "remainder\n", - "remainders\n", - "remained\n", - "remaining\n", - "remains\n", - "remake\n", - "remakes\n", - "remaking\n", - "reman\n", - "remand\n", - "remanded\n", - "remanding\n", - "remands\n", - "remanent\n", - "remanned\n", - "remanning\n", - "remans\n", - "remap\n", - "remapped\n", - "remapping\n", - "remaps\n", - "remark\n", - "remarkable\n", - "remarkableness\n", - "remarkablenesses\n", - "remarkably\n", - "remarked\n", - "remarker\n", - "remarkers\n", - "remarking\n", - "remarks\n", - "remarque\n", - "remarques\n", - "remarriage\n", - "remarriages\n", - "remarried\n", - "remarries\n", - "remarry\n", - "remarrying\n", - "rematch\n", - "rematched\n", - "rematches\n", - "rematching\n", - "remeasure\n", - "remeasured\n", - "remeasures\n", - "remeasuring\n", - "remedial\n", - "remedially\n", - "remedied\n", - "remedies\n", - "remedy\n", - "remedying\n", - "remeet\n", - "remeeting\n", - "remeets\n", - "remelt\n", - "remelted\n", - "remelting\n", - "remelts\n", - "remember\n", - "remembered\n", - "remembering\n", - "remembers\n", - "remend\n", - "remended\n", - "remending\n", - "remends\n", - "remerge\n", - "remerged\n", - "remerges\n", - "remerging\n", - "remet\n", - "remex\n", - "remiges\n", - "remigial\n", - "remind\n", - "reminded\n", - "reminder\n", - "reminders\n", - "reminding\n", - "reminds\n", - "reminisce\n", - "reminisced\n", - "reminiscence\n", - "reminiscences\n", - "reminiscent\n", - "reminiscently\n", - "reminisces\n", - "reminiscing\n", - "remint\n", - "reminted\n", - "reminting\n", - "remints\n", - "remise\n", - "remised\n", - "remises\n", - "remising\n", - "remiss\n", - "remission\n", - "remissions\n", - "remissly\n", - "remissness\n", - "remissnesses\n", - "remit\n", - "remits\n", - "remittal\n", - "remittals\n", - "remittance\n", - "remittances\n", - "remitted\n", - "remitter\n", - "remitters\n", - "remitting\n", - "remittor\n", - "remittors\n", - "remix\n", - "remixed\n", - "remixes\n", - "remixing\n", - "remixt\n", - "remnant\n", - "remnants\n", - "remobilize\n", - "remobilized\n", - "remobilizes\n", - "remobilizing\n", - "remodel\n", - "remodeled\n", - "remodeling\n", - "remodelled\n", - "remodelling\n", - "remodels\n", - "remodified\n", - "remodifies\n", - "remodify\n", - "remodifying\n", - "remoisten\n", - "remoistened\n", - "remoistening\n", - "remoistens\n", - "remolade\n", - "remolades\n", - "remold\n", - "remolded\n", - "remolding\n", - "remolds\n", - "remonstrance\n", - "remonstrances\n", - "remonstrate\n", - "remonstrated\n", - "remonstrates\n", - "remonstrating\n", - "remonstration\n", - "remonstrations\n", - "remora\n", - "remoras\n", - "remorid\n", - "remorse\n", - "remorseful\n", - "remorseless\n", - "remorses\n", - "remote\n", - "remotely\n", - "remoteness\n", - "remotenesses\n", - "remoter\n", - "remotest\n", - "remotion\n", - "remotions\n", - "remotivate\n", - "remotivated\n", - "remotivates\n", - "remotivating\n", - "remount\n", - "remounted\n", - "remounting\n", - "remounts\n", - "removable\n", - "removal\n", - "removals\n", - "remove\n", - "removed\n", - "remover\n", - "removers\n", - "removes\n", - "removing\n", - "rems\n", - "remuda\n", - "remudas\n", - "remunerate\n", - "remunerated\n", - "remunerates\n", - "remunerating\n", - "remuneration\n", - "remunerations\n", - "remunerative\n", - "remuneratively\n", - "remunerativeness\n", - "remunerativenesses\n", - "remunerator\n", - "remunerators\n", - "remuneratory\n", - "renaissance\n", - "renaissances\n", - "renal\n", - "rename\n", - "renamed\n", - "renames\n", - "renaming\n", - "renature\n", - "renatured\n", - "renatures\n", - "renaturing\n", - "rend\n", - "rended\n", - "render\n", - "rendered\n", - "renderer\n", - "renderers\n", - "rendering\n", - "renders\n", - "rendezvous\n", - "rendezvoused\n", - "rendezvousing\n", - "rendible\n", - "rending\n", - "rendition\n", - "renditions\n", - "rends\n", - "rendzina\n", - "rendzinas\n", - "renegade\n", - "renegaded\n", - "renegades\n", - "renegading\n", - "renegado\n", - "renegadoes\n", - "renegados\n", - "renege\n", - "reneged\n", - "reneger\n", - "renegers\n", - "reneges\n", - "reneging\n", - "renegotiate\n", - "renegotiated\n", - "renegotiates\n", - "renegotiating\n", - "renew\n", - "renewable\n", - "renewal\n", - "renewals\n", - "renewed\n", - "renewer\n", - "renewers\n", - "renewing\n", - "renews\n", - "reniform\n", - "renig\n", - "renigged\n", - "renigging\n", - "renigs\n", - "renin\n", - "renins\n", - "renitent\n", - "rennase\n", - "rennases\n", - "rennet\n", - "rennets\n", - "rennin\n", - "rennins\n", - "renogram\n", - "renograms\n", - "renotified\n", - "renotifies\n", - "renotify\n", - "renotifying\n", - "renounce\n", - "renounced\n", - "renouncement\n", - "renouncements\n", - "renounces\n", - "renouncing\n", - "renovate\n", - "renovated\n", - "renovates\n", - "renovating\n", - "renovation\n", - "renovations\n", - "renovator\n", - "renovators\n", - "renown\n", - "renowned\n", - "renowning\n", - "renowns\n", - "rent\n", - "rentable\n", - "rental\n", - "rentals\n", - "rente\n", - "rented\n", - "renter\n", - "renters\n", - "rentes\n", - "rentier\n", - "rentiers\n", - "renting\n", - "rents\n", - "renumber\n", - "renumbered\n", - "renumbering\n", - "renumbers\n", - "renunciation\n", - "renunciations\n", - "renvoi\n", - "renvois\n", - "reobject\n", - "reobjected\n", - "reobjecting\n", - "reobjects\n", - "reobtain\n", - "reobtained\n", - "reobtaining\n", - "reobtains\n", - "reoccupied\n", - "reoccupies\n", - "reoccupy\n", - "reoccupying\n", - "reoccur\n", - "reoccurred\n", - "reoccurrence\n", - "reoccurrences\n", - "reoccurring\n", - "reoccurs\n", - "reoffer\n", - "reoffered\n", - "reoffering\n", - "reoffers\n", - "reoil\n", - "reoiled\n", - "reoiling\n", - "reoils\n", - "reopen\n", - "reopened\n", - "reopening\n", - "reopens\n", - "reoperate\n", - "reoperated\n", - "reoperates\n", - "reoperating\n", - "reoppose\n", - "reopposed\n", - "reopposes\n", - "reopposing\n", - "reorchestrate\n", - "reorchestrated\n", - "reorchestrates\n", - "reorchestrating\n", - "reordain\n", - "reordained\n", - "reordaining\n", - "reordains\n", - "reorder\n", - "reordered\n", - "reordering\n", - "reorders\n", - "reorganization\n", - "reorganizations\n", - "reorganize\n", - "reorganized\n", - "reorganizes\n", - "reorganizing\n", - "reorient\n", - "reoriented\n", - "reorienting\n", - "reorients\n", - "reovirus\n", - "reoviruses\n", - "rep\n", - "repacified\n", - "repacifies\n", - "repacify\n", - "repacifying\n", - "repack\n", - "repacked\n", - "repacking\n", - "repacks\n", - "repaid\n", - "repaint\n", - "repainted\n", - "repainting\n", - "repaints\n", - "repair\n", - "repaired\n", - "repairer\n", - "repairers\n", - "repairing\n", - "repairman\n", - "repairmen\n", - "repairs\n", - "repand\n", - "repandly\n", - "repaper\n", - "repapered\n", - "repapering\n", - "repapers\n", - "reparation\n", - "reparations\n", - "repartee\n", - "repartees\n", - "repass\n", - "repassed\n", - "repasses\n", - "repassing\n", - "repast\n", - "repasted\n", - "repasting\n", - "repasts\n", - "repatriate\n", - "repatriated\n", - "repatriates\n", - "repatriating\n", - "repatriation\n", - "repatriations\n", - "repave\n", - "repaved\n", - "repaves\n", - "repaving\n", - "repay\n", - "repayable\n", - "repaying\n", - "repayment\n", - "repayments\n", - "repays\n", - "repeal\n", - "repealed\n", - "repealer\n", - "repealers\n", - "repealing\n", - "repeals\n", - "repeat\n", - "repeatable\n", - "repeated\n", - "repeatedly\n", - "repeater\n", - "repeaters\n", - "repeating\n", - "repeats\n", - "repel\n", - "repelled\n", - "repellent\n", - "repellents\n", - "repeller\n", - "repellers\n", - "repelling\n", - "repels\n", - "repent\n", - "repentance\n", - "repentances\n", - "repentant\n", - "repented\n", - "repenter\n", - "repenters\n", - "repenting\n", - "repents\n", - "repeople\n", - "repeopled\n", - "repeoples\n", - "repeopling\n", - "repercussion\n", - "repercussions\n", - "reperk\n", - "reperked\n", - "reperking\n", - "reperks\n", - "repertoire\n", - "repertoires\n", - "repertories\n", - "repertory\n", - "repetend\n", - "repetends\n", - "repetition\n", - "repetitions\n", - "repetitious\n", - "repetitiously\n", - "repetitiousness\n", - "repetitiousnesses\n", - "repetitive\n", - "repetitively\n", - "repetitiveness\n", - "repetitivenesses\n", - "rephotograph\n", - "rephotographed\n", - "rephotographing\n", - "rephotographs\n", - "rephrase\n", - "rephrased\n", - "rephrases\n", - "rephrasing\n", - "repin\n", - "repine\n", - "repined\n", - "repiner\n", - "repiners\n", - "repines\n", - "repining\n", - "repinned\n", - "repinning\n", - "repins\n", - "replace\n", - "replaceable\n", - "replaced\n", - "replacement\n", - "replacements\n", - "replacer\n", - "replacers\n", - "replaces\n", - "replacing\n", - "replan\n", - "replanned\n", - "replanning\n", - "replans\n", - "replant\n", - "replanted\n", - "replanting\n", - "replants\n", - "replate\n", - "replated\n", - "replates\n", - "replating\n", - "replay\n", - "replayed\n", - "replaying\n", - "replays\n", - "repledge\n", - "repledged\n", - "repledges\n", - "repledging\n", - "replenish\n", - "replenished\n", - "replenishes\n", - "replenishing\n", - "replenishment\n", - "replenishments\n", - "replete\n", - "repleteness\n", - "repletenesses\n", - "repletion\n", - "repletions\n", - "replevied\n", - "replevies\n", - "replevin\n", - "replevined\n", - "replevining\n", - "replevins\n", - "replevy\n", - "replevying\n", - "replica\n", - "replicas\n", - "replicate\n", - "replicated\n", - "replicates\n", - "replicating\n", - "replied\n", - "replier\n", - "repliers\n", - "replies\n", - "replunge\n", - "replunged\n", - "replunges\n", - "replunging\n", - "reply\n", - "replying\n", - "repolish\n", - "repolished\n", - "repolishes\n", - "repolishing\n", - "repopulate\n", - "repopulated\n", - "repopulates\n", - "repopulating\n", - "report\n", - "reportage\n", - "reportages\n", - "reported\n", - "reportedly\n", - "reporter\n", - "reporters\n", - "reporting\n", - "reportorial\n", - "reports\n", - "reposal\n", - "reposals\n", - "repose\n", - "reposed\n", - "reposeful\n", - "reposer\n", - "reposers\n", - "reposes\n", - "reposing\n", - "reposit\n", - "reposited\n", - "repositing\n", - "repository\n", - "reposits\n", - "repossess\n", - "repossession\n", - "repossessions\n", - "repour\n", - "repoured\n", - "repouring\n", - "repours\n", - "repousse\n", - "repousses\n", - "repower\n", - "repowered\n", - "repowering\n", - "repowers\n", - "repp\n", - "repped\n", - "repps\n", - "reprehend\n", - "reprehends\n", - "reprehensible\n", - "reprehensibly\n", - "reprehension\n", - "reprehensions\n", - "represent\n", - "representation\n", - "representations\n", - "representative\n", - "representatively\n", - "representativeness\n", - "representativenesses\n", - "representatives\n", - "represented\n", - "representing\n", - "represents\n", - "repress\n", - "repressed\n", - "represses\n", - "repressing\n", - "repression\n", - "repressions\n", - "repressive\n", - "repressurize\n", - "repressurized\n", - "repressurizes\n", - "repressurizing\n", - "reprice\n", - "repriced\n", - "reprices\n", - "repricing\n", - "reprieve\n", - "reprieved\n", - "reprieves\n", - "reprieving\n", - "reprimand\n", - "reprimanded\n", - "reprimanding\n", - "reprimands\n", - "reprint\n", - "reprinted\n", - "reprinting\n", - "reprints\n", - "reprisal\n", - "reprisals\n", - "reprise\n", - "reprised\n", - "reprises\n", - "reprising\n", - "repro\n", - "reproach\n", - "reproached\n", - "reproaches\n", - "reproachful\n", - "reproachfully\n", - "reproachfulness\n", - "reproachfulnesses\n", - "reproaching\n", - "reprobate\n", - "reprobates\n", - "reprobation\n", - "reprobations\n", - "reprobe\n", - "reprobed\n", - "reprobes\n", - "reprobing\n", - "reprocess\n", - "reprocessed\n", - "reprocesses\n", - "reprocessing\n", - "reproduce\n", - "reproduced\n", - "reproduces\n", - "reproducible\n", - "reproducing\n", - "reproduction\n", - "reproductions\n", - "reproductive\n", - "reprogram\n", - "reprogramed\n", - "reprograming\n", - "reprograms\n", - "reproof\n", - "reproofs\n", - "repropose\n", - "reproposed\n", - "reproposes\n", - "reproposing\n", - "repros\n", - "reproval\n", - "reprovals\n", - "reprove\n", - "reproved\n", - "reprover\n", - "reprovers\n", - "reproves\n", - "reproving\n", - "reps\n", - "reptant\n", - "reptile\n", - "reptiles\n", - "republic\n", - "republican\n", - "republicanism\n", - "republicanisms\n", - "republicans\n", - "republics\n", - "repudiate\n", - "repudiated\n", - "repudiates\n", - "repudiating\n", - "repudiation\n", - "repudiations\n", - "repudiator\n", - "repudiators\n", - "repugn\n", - "repugnance\n", - "repugnances\n", - "repugnant\n", - "repugnantly\n", - "repugned\n", - "repugning\n", - "repugns\n", - "repulse\n", - "repulsed\n", - "repulser\n", - "repulsers\n", - "repulses\n", - "repulsing\n", - "repulsion\n", - "repulsions\n", - "repulsive\n", - "repulsively\n", - "repulsiveness\n", - "repulsivenesses\n", - "repurified\n", - "repurifies\n", - "repurify\n", - "repurifying\n", - "repursue\n", - "repursued\n", - "repursues\n", - "repursuing\n", - "reputable\n", - "reputabley\n", - "reputation\n", - "reputations\n", - "repute\n", - "reputed\n", - "reputedly\n", - "reputes\n", - "reputing\n", - "request\n", - "requested\n", - "requesting\n", - "requests\n", - "requiem\n", - "requiems\n", - "requin\n", - "requins\n", - "require\n", - "required\n", - "requirement\n", - "requirements\n", - "requirer\n", - "requirers\n", - "requires\n", - "requiring\n", - "requisite\n", - "requisites\n", - "requisition\n", - "requisitioned\n", - "requisitioning\n", - "requisitions\n", - "requital\n", - "requitals\n", - "requite\n", - "requited\n", - "requiter\n", - "requiters\n", - "requites\n", - "requiting\n", - "reran\n", - "reread\n", - "rereading\n", - "rereads\n", - "rerecord\n", - "rerecorded\n", - "rerecording\n", - "rerecords\n", - "reredos\n", - "reredoses\n", - "reregister\n", - "reregistered\n", - "reregistering\n", - "reregisters\n", - "reremice\n", - "reremouse\n", - "rereward\n", - "rerewards\n", - "rerise\n", - "rerisen\n", - "rerises\n", - "rerising\n", - "reroll\n", - "rerolled\n", - "reroller\n", - "rerollers\n", - "rerolling\n", - "rerolls\n", - "rerose\n", - "reroute\n", - "rerouted\n", - "reroutes\n", - "rerouting\n", - "rerun\n", - "rerunning\n", - "reruns\n", - "res\n", - "resaddle\n", - "resaddled\n", - "resaddles\n", - "resaddling\n", - "resaid\n", - "resail\n", - "resailed\n", - "resailing\n", - "resails\n", - "resalable\n", - "resale\n", - "resales\n", - "resalute\n", - "resaluted\n", - "resalutes\n", - "resaluting\n", - "resample\n", - "resampled\n", - "resamples\n", - "resampling\n", - "resaw\n", - "resawed\n", - "resawing\n", - "resawn\n", - "resaws\n", - "resay\n", - "resaying\n", - "resays\n", - "rescale\n", - "rescaled\n", - "rescales\n", - "rescaling\n", - "reschedule\n", - "rescheduled\n", - "reschedules\n", - "rescheduling\n", - "rescind\n", - "rescinded\n", - "rescinder\n", - "rescinders\n", - "rescinding\n", - "rescinds\n", - "rescission\n", - "rescissions\n", - "rescore\n", - "rescored\n", - "rescores\n", - "rescoring\n", - "rescreen\n", - "rescreened\n", - "rescreening\n", - "rescreens\n", - "rescript\n", - "rescripts\n", - "rescue\n", - "rescued\n", - "rescuer\n", - "rescuers\n", - "rescues\n", - "rescuing\n", - "reseal\n", - "resealed\n", - "resealing\n", - "reseals\n", - "research\n", - "researched\n", - "researcher\n", - "researchers\n", - "researches\n", - "researching\n", - "reseat\n", - "reseated\n", - "reseating\n", - "reseats\n", - "reseau\n", - "reseaus\n", - "reseaux\n", - "resect\n", - "resected\n", - "resecting\n", - "resects\n", - "reseda\n", - "resedas\n", - "resee\n", - "reseed\n", - "reseeded\n", - "reseeding\n", - "reseeds\n", - "reseeing\n", - "reseek\n", - "reseeking\n", - "reseeks\n", - "reseen\n", - "resees\n", - "resegregate\n", - "resegregated\n", - "resegregates\n", - "resegregating\n", - "reseize\n", - "reseized\n", - "reseizes\n", - "reseizing\n", - "resell\n", - "reseller\n", - "resellers\n", - "reselling\n", - "resells\n", - "resemblance\n", - "resemblances\n", - "resemble\n", - "resembled\n", - "resembles\n", - "resembling\n", - "resend\n", - "resending\n", - "resends\n", - "resent\n", - "resented\n", - "resentence\n", - "resentenced\n", - "resentences\n", - "resentencing\n", - "resentful\n", - "resentfully\n", - "resenting\n", - "resentment\n", - "resentments\n", - "resents\n", - "reservation\n", - "reservations\n", - "reserve\n", - "reserved\n", - "reserver\n", - "reservers\n", - "reserves\n", - "reserving\n", - "reset\n", - "resets\n", - "resetter\n", - "resetters\n", - "resetting\n", - "resettle\n", - "resettled\n", - "resettles\n", - "resettling\n", - "resew\n", - "resewed\n", - "resewing\n", - "resewn\n", - "resews\n", - "resh\n", - "reshape\n", - "reshaped\n", - "reshaper\n", - "reshapers\n", - "reshapes\n", - "reshaping\n", - "reshes\n", - "reship\n", - "reshipped\n", - "reshipping\n", - "reships\n", - "reshod\n", - "reshoe\n", - "reshoeing\n", - "reshoes\n", - "reshoot\n", - "reshooting\n", - "reshoots\n", - "reshot\n", - "reshow\n", - "reshowed\n", - "reshowing\n", - "reshown\n", - "reshows\n", - "resid\n", - "reside\n", - "resided\n", - "residence\n", - "residences\n", - "resident\n", - "residential\n", - "residents\n", - "resider\n", - "residers\n", - "resides\n", - "residing\n", - "resids\n", - "residua\n", - "residual\n", - "residuals\n", - "residue\n", - "residues\n", - "residuum\n", - "residuums\n", - "resift\n", - "resifted\n", - "resifting\n", - "resifts\n", - "resign\n", - "resignation\n", - "resignations\n", - "resigned\n", - "resignedly\n", - "resigner\n", - "resigners\n", - "resigning\n", - "resigns\n", - "resile\n", - "resiled\n", - "resiles\n", - "resilience\n", - "resiliences\n", - "resiliencies\n", - "resiliency\n", - "resilient\n", - "resiling\n", - "resilver\n", - "resilvered\n", - "resilvering\n", - "resilvers\n", - "resin\n", - "resinate\n", - "resinated\n", - "resinates\n", - "resinating\n", - "resined\n", - "resinified\n", - "resinifies\n", - "resinify\n", - "resinifying\n", - "resining\n", - "resinoid\n", - "resinoids\n", - "resinous\n", - "resins\n", - "resiny\n", - "resist\n", - "resistable\n", - "resistance\n", - "resistances\n", - "resistant\n", - "resisted\n", - "resister\n", - "resisters\n", - "resistible\n", - "resisting\n", - "resistless\n", - "resistor\n", - "resistors\n", - "resists\n", - "resize\n", - "resized\n", - "resizes\n", - "resizing\n", - "resmelt\n", - "resmelted\n", - "resmelting\n", - "resmelts\n", - "resmooth\n", - "resmoothed\n", - "resmoothing\n", - "resmooths\n", - "resojet\n", - "resojets\n", - "resold\n", - "resolder\n", - "resoldered\n", - "resoldering\n", - "resolders\n", - "resole\n", - "resoled\n", - "resoles\n", - "resolidified\n", - "resolidifies\n", - "resolidify\n", - "resolidifying\n", - "resoling\n", - "resolute\n", - "resolutely\n", - "resoluteness\n", - "resolutenesses\n", - "resoluter\n", - "resolutes\n", - "resolutest\n", - "resolution\n", - "resolutions\n", - "resolvable\n", - "resolve\n", - "resolved\n", - "resolver\n", - "resolvers\n", - "resolves\n", - "resolving\n", - "resonance\n", - "resonances\n", - "resonant\n", - "resonantly\n", - "resonants\n", - "resonate\n", - "resonated\n", - "resonates\n", - "resonating\n", - "resorb\n", - "resorbed\n", - "resorbing\n", - "resorbs\n", - "resorcin\n", - "resorcins\n", - "resort\n", - "resorted\n", - "resorter\n", - "resorters\n", - "resorting\n", - "resorts\n", - "resought\n", - "resound\n", - "resounded\n", - "resounding\n", - "resoundingly\n", - "resounds\n", - "resource\n", - "resourceful\n", - "resourcefulness\n", - "resourcefulnesses\n", - "resources\n", - "resow\n", - "resowed\n", - "resowing\n", - "resown\n", - "resows\n", - "respect\n", - "respectabilities\n", - "respectability\n", - "respectable\n", - "respectably\n", - "respected\n", - "respecter\n", - "respecters\n", - "respectful\n", - "respectfully\n", - "respectfulness\n", - "respectfulnesses\n", - "respecting\n", - "respective\n", - "respectively\n", - "respects\n", - "respell\n", - "respelled\n", - "respelling\n", - "respells\n", - "respelt\n", - "respiration\n", - "respirations\n", - "respirator\n", - "respiratories\n", - "respirators\n", - "respiratory\n", - "respire\n", - "respired\n", - "respires\n", - "respiring\n", - "respite\n", - "respited\n", - "respites\n", - "respiting\n", - "resplendence\n", - "resplendences\n", - "resplendent\n", - "resplendently\n", - "respond\n", - "responded\n", - "respondent\n", - "respondents\n", - "responder\n", - "responders\n", - "responding\n", - "responds\n", - "responsa\n", - "response\n", - "responses\n", - "responsibilities\n", - "responsibility\n", - "responsible\n", - "responsibleness\n", - "responsiblenesses\n", - "responsiblities\n", - "responsiblity\n", - "responsibly\n", - "responsive\n", - "responsiveness\n", - "responsivenesses\n", - "resprang\n", - "respread\n", - "respreading\n", - "respreads\n", - "respring\n", - "respringing\n", - "resprings\n", - "resprung\n", - "rest\n", - "restack\n", - "restacked\n", - "restacking\n", - "restacks\n", - "restaff\n", - "restaffed\n", - "restaffing\n", - "restaffs\n", - "restage\n", - "restaged\n", - "restages\n", - "restaging\n", - "restamp\n", - "restamped\n", - "restamping\n", - "restamps\n", - "restart\n", - "restartable\n", - "restarted\n", - "restarting\n", - "restarts\n", - "restate\n", - "restated\n", - "restatement\n", - "restatements\n", - "restates\n", - "restating\n", - "restaurant\n", - "restaurants\n", - "rested\n", - "rester\n", - "resters\n", - "restful\n", - "restfuller\n", - "restfullest\n", - "restfully\n", - "restimulate\n", - "restimulated\n", - "restimulates\n", - "restimulating\n", - "resting\n", - "restitution\n", - "restitutions\n", - "restive\n", - "restively\n", - "restiveness\n", - "restivenesses\n", - "restless\n", - "restlessness\n", - "restlessnesses\n", - "restock\n", - "restocked\n", - "restocking\n", - "restocks\n", - "restorable\n", - "restoral\n", - "restorals\n", - "restoration\n", - "restorations\n", - "restorative\n", - "restoratives\n", - "restore\n", - "restored\n", - "restorer\n", - "restorers\n", - "restores\n", - "restoring\n", - "restrain\n", - "restrainable\n", - "restrained\n", - "restrainedly\n", - "restrainer\n", - "restrainers\n", - "restraining\n", - "restrains\n", - "restraint\n", - "restraints\n", - "restricken\n", - "restrict\n", - "restricted\n", - "restricting\n", - "restriction\n", - "restrictions\n", - "restrictive\n", - "restrictively\n", - "restricts\n", - "restrike\n", - "restrikes\n", - "restriking\n", - "restring\n", - "restringing\n", - "restrings\n", - "restrive\n", - "restriven\n", - "restrives\n", - "restriving\n", - "restrove\n", - "restruck\n", - "restructure\n", - "restructured\n", - "restructures\n", - "restructuring\n", - "restrung\n", - "rests\n", - "restudied\n", - "restudies\n", - "restudy\n", - "restudying\n", - "restuff\n", - "restuffed\n", - "restuffing\n", - "restuffs\n", - "restyle\n", - "restyled\n", - "restyles\n", - "restyling\n", - "resubmit\n", - "resubmits\n", - "resubmitted\n", - "resubmitting\n", - "result\n", - "resultant\n", - "resulted\n", - "resulting\n", - "results\n", - "resume\n", - "resumed\n", - "resumer\n", - "resumers\n", - "resumes\n", - "resuming\n", - "resummon\n", - "resummoned\n", - "resummoning\n", - "resummons\n", - "resumption\n", - "resumptions\n", - "resupine\n", - "resupplied\n", - "resupplies\n", - "resupply\n", - "resupplying\n", - "resurface\n", - "resurfaced\n", - "resurfaces\n", - "resurfacing\n", - "resurge\n", - "resurged\n", - "resurgence\n", - "resurgences\n", - "resurgent\n", - "resurges\n", - "resurging\n", - "resurrect\n", - "resurrected\n", - "resurrecting\n", - "resurrection\n", - "resurrections\n", - "resurrects\n", - "resurvey\n", - "resurveyed\n", - "resurveying\n", - "resurveys\n", - "resuscitate\n", - "resuscitated\n", - "resuscitates\n", - "resuscitating\n", - "resuscitation\n", - "resuscitations\n", - "resuscitator\n", - "resuscitators\n", - "resyntheses\n", - "resynthesis\n", - "resynthesize\n", - "resynthesized\n", - "resynthesizes\n", - "resynthesizing\n", - "ret\n", - "retable\n", - "retables\n", - "retail\n", - "retailed\n", - "retailer\n", - "retailers\n", - "retailing\n", - "retailor\n", - "retailored\n", - "retailoring\n", - "retailors\n", - "retails\n", - "retain\n", - "retained\n", - "retainer\n", - "retainers\n", - "retaining\n", - "retains\n", - "retake\n", - "retaken\n", - "retaker\n", - "retakers\n", - "retakes\n", - "retaking\n", - "retaliate\n", - "retaliated\n", - "retaliates\n", - "retaliating\n", - "retaliation\n", - "retaliations\n", - "retaliatory\n", - "retard\n", - "retardation\n", - "retardations\n", - "retarded\n", - "retarder\n", - "retarders\n", - "retarding\n", - "retards\n", - "retaste\n", - "retasted\n", - "retastes\n", - "retasting\n", - "retaught\n", - "retch\n", - "retched\n", - "retches\n", - "retching\n", - "rete\n", - "reteach\n", - "reteaches\n", - "reteaching\n", - "retell\n", - "retelling\n", - "retells\n", - "retem\n", - "retems\n", - "retene\n", - "retenes\n", - "retention\n", - "retentions\n", - "retentive\n", - "retest\n", - "retested\n", - "retesting\n", - "retests\n", - "rethink\n", - "rethinking\n", - "rethinks\n", - "rethought\n", - "rethread\n", - "rethreaded\n", - "rethreading\n", - "rethreads\n", - "retia\n", - "retial\n", - "retiarii\n", - "retiary\n", - "reticence\n", - "reticences\n", - "reticent\n", - "reticently\n", - "reticle\n", - "reticles\n", - "reticula\n", - "reticule\n", - "reticules\n", - "retie\n", - "retied\n", - "reties\n", - "retiform\n", - "retighten\n", - "retightened\n", - "retightening\n", - "retightens\n", - "retime\n", - "retimed\n", - "retimes\n", - "retiming\n", - "retina\n", - "retinae\n", - "retinal\n", - "retinals\n", - "retinas\n", - "retinene\n", - "retinenes\n", - "retinite\n", - "retinites\n", - "retinol\n", - "retinols\n", - "retint\n", - "retinted\n", - "retinting\n", - "retints\n", - "retinue\n", - "retinued\n", - "retinues\n", - "retinula\n", - "retinulae\n", - "retinulas\n", - "retirant\n", - "retirants\n", - "retire\n", - "retired\n", - "retiree\n", - "retirees\n", - "retirement\n", - "retirements\n", - "retirer\n", - "retirers\n", - "retires\n", - "retiring\n", - "retitle\n", - "retitled\n", - "retitles\n", - "retitling\n", - "retold\n", - "retook\n", - "retool\n", - "retooled\n", - "retooling\n", - "retools\n", - "retort\n", - "retorted\n", - "retorter\n", - "retorters\n", - "retorting\n", - "retorts\n", - "retouch\n", - "retouched\n", - "retouches\n", - "retouching\n", - "retrace\n", - "retraced\n", - "retraces\n", - "retracing\n", - "retrack\n", - "retracked\n", - "retracking\n", - "retracks\n", - "retract\n", - "retractable\n", - "retracted\n", - "retracting\n", - "retraction\n", - "retractions\n", - "retracts\n", - "retrain\n", - "retrained\n", - "retraining\n", - "retrains\n", - "retral\n", - "retrally\n", - "retranslate\n", - "retranslated\n", - "retranslates\n", - "retranslating\n", - "retransmit\n", - "retransmited\n", - "retransmiting\n", - "retransmits\n", - "retransplant\n", - "retransplanted\n", - "retransplanting\n", - "retransplants\n", - "retread\n", - "retreaded\n", - "retreading\n", - "retreads\n", - "retreat\n", - "retreated\n", - "retreating\n", - "retreatment\n", - "retreats\n", - "retrench\n", - "retrenched\n", - "retrenches\n", - "retrenching\n", - "retrenchment\n", - "retrenchments\n", - "retrial\n", - "retrials\n", - "retribution\n", - "retributions\n", - "retributive\n", - "retributory\n", - "retried\n", - "retries\n", - "retrievabilities\n", - "retrievability\n", - "retrievable\n", - "retrieval\n", - "retrievals\n", - "retrieve\n", - "retrieved\n", - "retriever\n", - "retrievers\n", - "retrieves\n", - "retrieving\n", - "retrim\n", - "retrimmed\n", - "retrimming\n", - "retrims\n", - "retroact\n", - "retroacted\n", - "retroacting\n", - "retroactive\n", - "retroactively\n", - "retroacts\n", - "retrofit\n", - "retrofits\n", - "retrofitted\n", - "retrofitting\n", - "retrograde\n", - "retrogress\n", - "retrogressed\n", - "retrogresses\n", - "retrogressing\n", - "retrogression\n", - "retrogressions\n", - "retrorse\n", - "retrospect\n", - "retrospection\n", - "retrospections\n", - "retrospective\n", - "retrospectively\n", - "retrospectives\n", - "retry\n", - "retrying\n", - "rets\n", - "retsina\n", - "retsinas\n", - "retted\n", - "retting\n", - "retune\n", - "retuned\n", - "retunes\n", - "retuning\n", - "return\n", - "returnable\n", - "returned\n", - "returnee\n", - "returnees\n", - "returner\n", - "returners\n", - "returning\n", - "returns\n", - "retuse\n", - "retwist\n", - "retwisted\n", - "retwisting\n", - "retwists\n", - "retying\n", - "retype\n", - "retyped\n", - "retypes\n", - "retyping\n", - "reunified\n", - "reunifies\n", - "reunify\n", - "reunifying\n", - "reunion\n", - "reunions\n", - "reunite\n", - "reunited\n", - "reuniter\n", - "reuniters\n", - "reunites\n", - "reuniting\n", - "reupholster\n", - "reupholstered\n", - "reupholstering\n", - "reupholsters\n", - "reusable\n", - "reuse\n", - "reused\n", - "reuses\n", - "reusing\n", - "reutter\n", - "reuttered\n", - "reuttering\n", - "reutters\n", - "rev\n", - "revaccinate\n", - "revaccinated\n", - "revaccinates\n", - "revaccinating\n", - "revaccination\n", - "revaccinations\n", - "revalue\n", - "revalued\n", - "revalues\n", - "revaluing\n", - "revamp\n", - "revamped\n", - "revamper\n", - "revampers\n", - "revamping\n", - "revamps\n", - "revanche\n", - "revanches\n", - "reveal\n", - "revealed\n", - "revealer\n", - "revealers\n", - "revealing\n", - "reveals\n", - "revehent\n", - "reveille\n", - "reveilles\n", - "revel\n", - "revelation\n", - "revelations\n", - "reveled\n", - "reveler\n", - "revelers\n", - "reveling\n", - "revelled\n", - "reveller\n", - "revellers\n", - "revelling\n", - "revelries\n", - "revelry\n", - "revels\n", - "revenant\n", - "revenants\n", - "revenge\n", - "revenged\n", - "revengeful\n", - "revenger\n", - "revengers\n", - "revenges\n", - "revenging\n", - "revenual\n", - "revenue\n", - "revenued\n", - "revenuer\n", - "revenuers\n", - "revenues\n", - "reverb\n", - "reverberate\n", - "reverberated\n", - "reverberates\n", - "reverberating\n", - "reverberation\n", - "reverberations\n", - "reverbs\n", - "revere\n", - "revered\n", - "reverence\n", - "reverences\n", - "reverend\n", - "reverends\n", - "reverent\n", - "reverer\n", - "reverers\n", - "reveres\n", - "reverie\n", - "reveries\n", - "reverified\n", - "reverifies\n", - "reverify\n", - "reverifying\n", - "revering\n", - "revers\n", - "reversal\n", - "reversals\n", - "reverse\n", - "reversed\n", - "reversely\n", - "reverser\n", - "reversers\n", - "reverses\n", - "reversible\n", - "reversing\n", - "reversion\n", - "reverso\n", - "reversos\n", - "revert\n", - "reverted\n", - "reverter\n", - "reverters\n", - "reverting\n", - "reverts\n", - "revery\n", - "revest\n", - "revested\n", - "revesting\n", - "revests\n", - "revet\n", - "revets\n", - "revetted\n", - "revetting\n", - "review\n", - "reviewal\n", - "reviewals\n", - "reviewed\n", - "reviewer\n", - "reviewers\n", - "reviewing\n", - "reviews\n", - "revile\n", - "reviled\n", - "revilement\n", - "revilements\n", - "reviler\n", - "revilers\n", - "reviles\n", - "reviling\n", - "revisable\n", - "revisal\n", - "revisals\n", - "revise\n", - "revised\n", - "reviser\n", - "revisers\n", - "revises\n", - "revising\n", - "revision\n", - "revisions\n", - "revisit\n", - "revisited\n", - "revisiting\n", - "revisits\n", - "revisor\n", - "revisors\n", - "revisory\n", - "revival\n", - "revivals\n", - "revive\n", - "revived\n", - "reviver\n", - "revivers\n", - "revives\n", - "revivified\n", - "revivifies\n", - "revivify\n", - "revivifying\n", - "reviving\n", - "revocation\n", - "revocations\n", - "revoice\n", - "revoiced\n", - "revoices\n", - "revoicing\n", - "revoke\n", - "revoked\n", - "revoker\n", - "revokers\n", - "revokes\n", - "revoking\n", - "revolt\n", - "revolted\n", - "revolter\n", - "revolters\n", - "revolting\n", - "revolts\n", - "revolute\n", - "revolution\n", - "revolutionaries\n", - "revolutionary\n", - "revolutionize\n", - "revolutionized\n", - "revolutionizer\n", - "revolutionizers\n", - "revolutionizes\n", - "revolutionizing\n", - "revolutions\n", - "revolvable\n", - "revolve\n", - "revolved\n", - "revolver\n", - "revolvers\n", - "revolves\n", - "revolving\n", - "revs\n", - "revue\n", - "revues\n", - "revuist\n", - "revuists\n", - "revulsed\n", - "revulsion\n", - "revulsions\n", - "revved\n", - "revving\n", - "rewake\n", - "rewaked\n", - "rewaken\n", - "rewakened\n", - "rewakening\n", - "rewakens\n", - "rewakes\n", - "rewaking\n", - "rewan\n", - "reward\n", - "rewarded\n", - "rewarder\n", - "rewarders\n", - "rewarding\n", - "rewards\n", - "rewarm\n", - "rewarmed\n", - "rewarming\n", - "rewarms\n", - "rewash\n", - "rewashed\n", - "rewashes\n", - "rewashing\n", - "rewax\n", - "rewaxed\n", - "rewaxes\n", - "rewaxing\n", - "reweave\n", - "reweaved\n", - "reweaves\n", - "reweaving\n", - "rewed\n", - "reweigh\n", - "reweighed\n", - "reweighing\n", - "reweighs\n", - "reweld\n", - "rewelded\n", - "rewelding\n", - "rewelds\n", - "rewiden\n", - "rewidened\n", - "rewidening\n", - "rewidens\n", - "rewin\n", - "rewind\n", - "rewinded\n", - "rewinder\n", - "rewinders\n", - "rewinding\n", - "rewinds\n", - "rewinning\n", - "rewins\n", - "rewire\n", - "rewired\n", - "rewires\n", - "rewiring\n", - "rewoke\n", - "rewoken\n", - "rewon\n", - "reword\n", - "reworded\n", - "rewording\n", - "rewords\n", - "rework\n", - "reworked\n", - "reworking\n", - "reworks\n", - "rewound\n", - "rewove\n", - "rewoven\n", - "rewrap\n", - "rewrapped\n", - "rewrapping\n", - "rewraps\n", - "rewrapt\n", - "rewrite\n", - "rewriter\n", - "rewriters\n", - "rewrites\n", - "rewriting\n", - "rewritten\n", - "rewrote\n", - "rewrought\n", - "rex\n", - "rexes\n", - "reynard\n", - "reynards\n", - "rezone\n", - "rezoned\n", - "rezones\n", - "rezoning\n", - "rhabdom\n", - "rhabdome\n", - "rhabdomes\n", - "rhabdoms\n", - "rhachides\n", - "rhachis\n", - "rhachises\n", - "rhamnose\n", - "rhamnoses\n", - "rhamnus\n", - "rhamnuses\n", - "rhaphae\n", - "rhaphe\n", - "rhaphes\n", - "rhapsode\n", - "rhapsodes\n", - "rhapsodic\n", - "rhapsodically\n", - "rhapsodies\n", - "rhapsodize\n", - "rhapsodized\n", - "rhapsodizes\n", - "rhapsodizing\n", - "rhapsody\n", - "rhatanies\n", - "rhatany\n", - "rhea\n", - "rheas\n", - "rhebok\n", - "rheboks\n", - "rhematic\n", - "rhenium\n", - "rheniums\n", - "rheobase\n", - "rheobases\n", - "rheologies\n", - "rheology\n", - "rheophil\n", - "rheostat\n", - "rheostats\n", - "rhesus\n", - "rhesuses\n", - "rhetor\n", - "rhetoric\n", - "rhetorical\n", - "rhetorician\n", - "rhetoricians\n", - "rhetorics\n", - "rhetors\n", - "rheum\n", - "rheumatic\n", - "rheumatism\n", - "rheumatisms\n", - "rheumic\n", - "rheumier\n", - "rheumiest\n", - "rheums\n", - "rheumy\n", - "rhinal\n", - "rhinestone\n", - "rhinestones\n", - "rhinitides\n", - "rhinitis\n", - "rhino\n", - "rhinoceri\n", - "rhinoceros\n", - "rhinoceroses\n", - "rhinos\n", - "rhizobia\n", - "rhizoid\n", - "rhizoids\n", - "rhizoma\n", - "rhizomata\n", - "rhizome\n", - "rhizomes\n", - "rhizomic\n", - "rhizopi\n", - "rhizopod\n", - "rhizopods\n", - "rhizopus\n", - "rhizopuses\n", - "rho\n", - "rhodamin\n", - "rhodamins\n", - "rhodic\n", - "rhodium\n", - "rhodiums\n", - "rhododendron\n", - "rhododendrons\n", - "rhodora\n", - "rhodoras\n", - "rhomb\n", - "rhombi\n", - "rhombic\n", - "rhomboid\n", - "rhomboids\n", - "rhombs\n", - "rhombus\n", - "rhombuses\n", - "rhonchal\n", - "rhonchi\n", - "rhonchus\n", - "rhos\n", - "rhubarb\n", - "rhubarbs\n", - "rhumb\n", - "rhumba\n", - "rhumbaed\n", - "rhumbaing\n", - "rhumbas\n", - "rhumbs\n", - "rhus\n", - "rhuses\n", - "rhyme\n", - "rhymed\n", - "rhymer\n", - "rhymers\n", - "rhymes\n", - "rhyming\n", - "rhyolite\n", - "rhyolites\n", - "rhyta\n", - "rhythm\n", - "rhythmic\n", - "rhythmical\n", - "rhythmically\n", - "rhythmics\n", - "rhythms\n", - "rhyton\n", - "rial\n", - "rials\n", - "rialto\n", - "rialtos\n", - "riant\n", - "riantly\n", - "riata\n", - "riatas\n", - "rib\n", - "ribald\n", - "ribaldly\n", - "ribaldries\n", - "ribaldry\n", - "ribalds\n", - "riband\n", - "ribands\n", - "ribband\n", - "ribbands\n", - "ribbed\n", - "ribber\n", - "ribbers\n", - "ribbier\n", - "ribbiest\n", - "ribbing\n", - "ribbings\n", - "ribbon\n", - "ribboned\n", - "ribboning\n", - "ribbons\n", - "ribbony\n", - "ribby\n", - "ribes\n", - "ribgrass\n", - "ribgrasses\n", - "ribless\n", - "riblet\n", - "riblets\n", - "riblike\n", - "riboflavin\n", - "riboflavins\n", - "ribose\n", - "riboses\n", - "ribosome\n", - "ribosomes\n", - "ribs\n", - "ribwort\n", - "ribworts\n", - "rice\n", - "ricebird\n", - "ricebirds\n", - "riced\n", - "ricer\n", - "ricercar\n", - "ricercars\n", - "ricers\n", - "rices\n", - "rich\n", - "richen\n", - "richened\n", - "richening\n", - "richens\n", - "richer\n", - "riches\n", - "richest\n", - "richly\n", - "richness\n", - "richnesses\n", - "richweed\n", - "richweeds\n", - "ricin\n", - "ricing\n", - "ricins\n", - "ricinus\n", - "ricinuses\n", - "rick\n", - "ricked\n", - "ricketier\n", - "ricketiest\n", - "rickets\n", - "rickety\n", - "rickey\n", - "rickeys\n", - "ricking\n", - "rickrack\n", - "rickracks\n", - "ricks\n", - "ricksha\n", - "rickshas\n", - "rickshaw\n", - "rickshaws\n", - "ricochet\n", - "ricocheted\n", - "ricocheting\n", - "ricochets\n", - "ricochetted\n", - "ricochetting\n", - "ricotta\n", - "ricottas\n", - "ricrac\n", - "ricracs\n", - "rictal\n", - "rictus\n", - "rictuses\n", - "rid\n", - "ridable\n", - "riddance\n", - "riddances\n", - "ridded\n", - "ridden\n", - "ridder\n", - "ridders\n", - "ridding\n", - "riddle\n", - "riddled\n", - "riddler\n", - "riddlers\n", - "riddles\n", - "riddling\n", - "ride\n", - "rideable\n", - "rident\n", - "rider\n", - "riderless\n", - "riders\n", - "rides\n", - "ridge\n", - "ridged\n", - "ridgel\n", - "ridgels\n", - "ridges\n", - "ridgier\n", - "ridgiest\n", - "ridgil\n", - "ridgils\n", - "ridging\n", - "ridgling\n", - "ridglings\n", - "ridgy\n", - "ridicule\n", - "ridiculed\n", - "ridicules\n", - "ridiculing\n", - "ridiculous\n", - "ridiculously\n", - "ridiculousness\n", - "ridiculousnesses\n", - "riding\n", - "ridings\n", - "ridley\n", - "ridleys\n", - "ridotto\n", - "ridottos\n", - "rids\n", - "riel\n", - "riels\n", - "riever\n", - "rievers\n", - "rife\n", - "rifely\n", - "rifeness\n", - "rifenesses\n", - "rifer\n", - "rifest\n", - "riff\n", - "riffed\n", - "riffing\n", - "riffle\n", - "riffled\n", - "riffler\n", - "rifflers\n", - "riffles\n", - "riffling\n", - "riffraff\n", - "riffraffs\n", - "riffs\n", - "rifle\n", - "rifled\n", - "rifleman\n", - "riflemen\n", - "rifler\n", - "rifleries\n", - "riflers\n", - "riflery\n", - "rifles\n", - "rifling\n", - "riflings\n", - "rift\n", - "rifted\n", - "rifting\n", - "riftless\n", - "rifts\n", - "rig\n", - "rigadoon\n", - "rigadoons\n", - "rigatoni\n", - "rigatonis\n", - "rigaudon\n", - "rigaudons\n", - "rigged\n", - "rigger\n", - "riggers\n", - "rigging\n", - "riggings\n", - "right\n", - "righted\n", - "righteous\n", - "righteously\n", - "righteousness\n", - "righteousnesses\n", - "righter\n", - "righters\n", - "rightest\n", - "rightful\n", - "rightfully\n", - "rightfulness\n", - "rightfulnesses\n", - "righties\n", - "righting\n", - "rightism\n", - "rightisms\n", - "rightist\n", - "rightists\n", - "rightly\n", - "rightness\n", - "rightnesses\n", - "righto\n", - "rights\n", - "rightward\n", - "righty\n", - "rigid\n", - "rigidified\n", - "rigidifies\n", - "rigidify\n", - "rigidifying\n", - "rigidities\n", - "rigidity\n", - "rigidly\n", - "rigmarole\n", - "rigmaroles\n", - "rigor\n", - "rigorism\n", - "rigorisms\n", - "rigorist\n", - "rigorists\n", - "rigorous\n", - "rigorously\n", - "rigors\n", - "rigour\n", - "rigours\n", - "rigs\n", - "rikisha\n", - "rikishas\n", - "rikshaw\n", - "rikshaws\n", - "rile\n", - "riled\n", - "riles\n", - "riley\n", - "rilievi\n", - "rilievo\n", - "riling\n", - "rill\n", - "rille\n", - "rilled\n", - "rilles\n", - "rillet\n", - "rillets\n", - "rilling\n", - "rills\n", - "rilly\n", - "rim\n", - "rime\n", - "rimed\n", - "rimer\n", - "rimers\n", - "rimes\n", - "rimester\n", - "rimesters\n", - "rimfire\n", - "rimier\n", - "rimiest\n", - "riming\n", - "rimland\n", - "rimlands\n", - "rimless\n", - "rimmed\n", - "rimmer\n", - "rimmers\n", - "rimming\n", - "rimose\n", - "rimosely\n", - "rimosities\n", - "rimosity\n", - "rimous\n", - "rimple\n", - "rimpled\n", - "rimples\n", - "rimpling\n", - "rimrock\n", - "rimrocks\n", - "rims\n", - "rimy\n", - "rin\n", - "rind\n", - "rinded\n", - "rinds\n", - "ring\n", - "ringbark\n", - "ringbarked\n", - "ringbarking\n", - "ringbarks\n", - "ringbolt\n", - "ringbolts\n", - "ringbone\n", - "ringbones\n", - "ringdove\n", - "ringdoves\n", - "ringed\n", - "ringent\n", - "ringer\n", - "ringers\n", - "ringhals\n", - "ringhalses\n", - "ringing\n", - "ringleader\n", - "ringlet\n", - "ringlets\n", - "ringlike\n", - "ringneck\n", - "ringnecks\n", - "rings\n", - "ringside\n", - "ringsides\n", - "ringtail\n", - "ringtails\n", - "ringtaw\n", - "ringtaws\n", - "ringtoss\n", - "ringtosses\n", - "ringworm\n", - "ringworms\n", - "rink\n", - "rinks\n", - "rinning\n", - "rins\n", - "rinsable\n", - "rinse\n", - "rinsed\n", - "rinser\n", - "rinsers\n", - "rinses\n", - "rinsible\n", - "rinsing\n", - "rinsings\n", - "riot\n", - "rioted\n", - "rioter\n", - "rioters\n", - "rioting\n", - "riotous\n", - "riots\n", - "rip\n", - "riparian\n", - "ripcord\n", - "ripcords\n", - "ripe\n", - "riped\n", - "ripely\n", - "ripen\n", - "ripened\n", - "ripener\n", - "ripeners\n", - "ripeness\n", - "ripenesses\n", - "ripening\n", - "ripens\n", - "riper\n", - "ripes\n", - "ripest\n", - "ripieni\n", - "ripieno\n", - "ripienos\n", - "riping\n", - "ripost\n", - "riposte\n", - "riposted\n", - "ripostes\n", - "riposting\n", - "riposts\n", - "rippable\n", - "ripped\n", - "ripper\n", - "rippers\n", - "ripping\n", - "ripple\n", - "rippled\n", - "rippler\n", - "ripplers\n", - "ripples\n", - "ripplet\n", - "ripplets\n", - "ripplier\n", - "rippliest\n", - "rippling\n", - "ripply\n", - "riprap\n", - "riprapped\n", - "riprapping\n", - "ripraps\n", - "rips\n", - "ripsaw\n", - "ripsaws\n", - "riptide\n", - "riptides\n", - "rise\n", - "risen\n", - "riser\n", - "risers\n", - "rises\n", - "rishi\n", - "rishis\n", - "risibilities\n", - "risibility\n", - "risible\n", - "risibles\n", - "risibly\n", - "rising\n", - "risings\n", - "risk\n", - "risked\n", - "risker\n", - "riskers\n", - "riskier\n", - "riskiest\n", - "riskily\n", - "riskiness\n", - "riskinesses\n", - "risking\n", - "risks\n", - "risky\n", - "risotto\n", - "risottos\n", - "risque\n", - "rissole\n", - "rissoles\n", - "risus\n", - "risuses\n", - "ritard\n", - "ritards\n", - "rite\n", - "rites\n", - "ritter\n", - "ritters\n", - "ritual\n", - "ritualism\n", - "ritualisms\n", - "ritualistic\n", - "ritualistically\n", - "ritually\n", - "rituals\n", - "ritz\n", - "ritzes\n", - "ritzier\n", - "ritziest\n", - "ritzily\n", - "ritzy\n", - "rivage\n", - "rivages\n", - "rival\n", - "rivaled\n", - "rivaling\n", - "rivalled\n", - "rivalling\n", - "rivalries\n", - "rivalry\n", - "rivals\n", - "rive\n", - "rived\n", - "riven\n", - "river\n", - "riverbank\n", - "riverbanks\n", - "riverbed\n", - "riverbeds\n", - "riverboat\n", - "riverboats\n", - "riverine\n", - "rivers\n", - "riverside\n", - "riversides\n", - "rives\n", - "rivet\n", - "riveted\n", - "riveter\n", - "riveters\n", - "riveting\n", - "rivets\n", - "rivetted\n", - "rivetting\n", - "riviera\n", - "rivieras\n", - "riviere\n", - "rivieres\n", - "riving\n", - "rivulet\n", - "rivulets\n", - "riyal\n", - "riyals\n", - "roach\n", - "roached\n", - "roaches\n", - "roaching\n", - "road\n", - "roadbed\n", - "roadbeds\n", - "roadblock\n", - "roadblocks\n", - "roadless\n", - "roadrunner\n", - "roadrunners\n", - "roads\n", - "roadside\n", - "roadsides\n", - "roadster\n", - "roadsters\n", - "roadway\n", - "roadways\n", - "roadwork\n", - "roadworks\n", - "roam\n", - "roamed\n", - "roamer\n", - "roamers\n", - "roaming\n", - "roams\n", - "roan\n", - "roans\n", - "roar\n", - "roared\n", - "roarer\n", - "roarers\n", - "roaring\n", - "roarings\n", - "roars\n", - "roast\n", - "roasted\n", - "roaster\n", - "roasters\n", - "roasting\n", - "roasts\n", - "rob\n", - "robalo\n", - "robalos\n", - "roband\n", - "robands\n", - "robbed\n", - "robber\n", - "robberies\n", - "robbers\n", - "robbery\n", - "robbin\n", - "robbing\n", - "robbins\n", - "robe\n", - "robed\n", - "robes\n", - "robin\n", - "robing\n", - "robins\n", - "roble\n", - "robles\n", - "roborant\n", - "roborants\n", - "robot\n", - "robotics\n", - "robotism\n", - "robotisms\n", - "robotize\n", - "robotized\n", - "robotizes\n", - "robotizing\n", - "robotries\n", - "robotry\n", - "robots\n", - "robs\n", - "robust\n", - "robuster\n", - "robustest\n", - "robustly\n", - "robustness\n", - "robustnesses\n", - "roc\n", - "rochet\n", - "rochets\n", - "rock\n", - "rockabies\n", - "rockaby\n", - "rockabye\n", - "rockabyes\n", - "rockaway\n", - "rockaways\n", - "rocked\n", - "rocker\n", - "rockeries\n", - "rockers\n", - "rockery\n", - "rocket\n", - "rocketed\n", - "rocketer\n", - "rocketers\n", - "rocketing\n", - "rocketries\n", - "rocketry\n", - "rockets\n", - "rockfall\n", - "rockfalls\n", - "rockfish\n", - "rockfishes\n", - "rockier\n", - "rockiest\n", - "rocking\n", - "rockless\n", - "rocklike\n", - "rockling\n", - "rocklings\n", - "rockoon\n", - "rockoons\n", - "rockrose\n", - "rockroses\n", - "rocks\n", - "rockweed\n", - "rockweeds\n", - "rockwork\n", - "rockworks\n", - "rocky\n", - "rococo\n", - "rococos\n", - "rocs\n", - "rod\n", - "rodded\n", - "rodding\n", - "rode\n", - "rodent\n", - "rodents\n", - "rodeo\n", - "rodeos\n", - "rodless\n", - "rodlike\n", - "rodman\n", - "rodmen\n", - "rods\n", - "rodsman\n", - "rodsmen\n", - "roe\n", - "roebuck\n", - "roebucks\n", - "roentgen\n", - "roentgens\n", - "roes\n", - "rogation\n", - "rogations\n", - "rogatory\n", - "roger\n", - "rogers\n", - "rogue\n", - "rogued\n", - "rogueing\n", - "rogueries\n", - "roguery\n", - "rogues\n", - "roguing\n", - "roguish\n", - "roguishly\n", - "roguishness\n", - "roguishnesses\n", - "roil\n", - "roiled\n", - "roilier\n", - "roiliest\n", - "roiling\n", - "roils\n", - "roily\n", - "roister\n", - "roistered\n", - "roistering\n", - "roisters\n", - "rolamite\n", - "rolamites\n", - "role\n", - "roles\n", - "roll\n", - "rollaway\n", - "rollback\n", - "rollbacks\n", - "rolled\n", - "roller\n", - "rollers\n", - "rollick\n", - "rollicked\n", - "rollicking\n", - "rollicks\n", - "rollicky\n", - "rolling\n", - "rollings\n", - "rollmop\n", - "rollmops\n", - "rollout\n", - "rollouts\n", - "rollover\n", - "rollovers\n", - "rolls\n", - "rolltop\n", - "rollway\n", - "rollways\n", - "romaine\n", - "romaines\n", - "roman\n", - "romance\n", - "romanced\n", - "romancer\n", - "romancers\n", - "romances\n", - "romancing\n", - "romanize\n", - "romanized\n", - "romanizes\n", - "romanizing\n", - "romano\n", - "romanos\n", - "romans\n", - "romantic\n", - "romantically\n", - "romantics\n", - "romaunt\n", - "romaunts\n", - "romp\n", - "romped\n", - "romper\n", - "rompers\n", - "romping\n", - "rompish\n", - "romps\n", - "rondeau\n", - "rondeaux\n", - "rondel\n", - "rondelet\n", - "rondelets\n", - "rondelle\n", - "rondelles\n", - "rondels\n", - "rondo\n", - "rondos\n", - "rondure\n", - "rondures\n", - "ronion\n", - "ronions\n", - "ronnel\n", - "ronnels\n", - "rontgen\n", - "rontgens\n", - "ronyon\n", - "ronyons\n", - "rood\n", - "roods\n", - "roof\n", - "roofed\n", - "roofer\n", - "roofers\n", - "roofing\n", - "roofings\n", - "roofless\n", - "rooflike\n", - "roofline\n", - "rooflines\n", - "roofs\n", - "rooftop\n", - "rooftops\n", - "rooftree\n", - "rooftrees\n", - "rook\n", - "rooked\n", - "rookeries\n", - "rookery\n", - "rookie\n", - "rookier\n", - "rookies\n", - "rookiest\n", - "rooking\n", - "rooks\n", - "rooky\n", - "room\n", - "roomed\n", - "roomer\n", - "roomers\n", - "roomette\n", - "roomettes\n", - "roomful\n", - "roomfuls\n", - "roomier\n", - "roomiest\n", - "roomily\n", - "rooming\n", - "roommate\n", - "roommates\n", - "rooms\n", - "roomy\n", - "roorback\n", - "roorbacks\n", - "roose\n", - "roosed\n", - "rooser\n", - "roosers\n", - "rooses\n", - "roosing\n", - "roost\n", - "roosted\n", - "rooster\n", - "roosters\n", - "roosting\n", - "roosts\n", - "root\n", - "rootage\n", - "rootages\n", - "rooted\n", - "rooter\n", - "rooters\n", - "roothold\n", - "rootholds\n", - "rootier\n", - "rootiest\n", - "rooting\n", - "rootless\n", - "rootlet\n", - "rootlets\n", - "rootlike\n", - "roots\n", - "rooty\n", - "ropable\n", - "rope\n", - "roped\n", - "roper\n", - "roperies\n", - "ropers\n", - "ropery\n", - "ropes\n", - "ropewalk\n", - "ropewalks\n", - "ropeway\n", - "ropeways\n", - "ropier\n", - "ropiest\n", - "ropily\n", - "ropiness\n", - "ropinesses\n", - "roping\n", - "ropy\n", - "roque\n", - "roques\n", - "roquet\n", - "roqueted\n", - "roqueting\n", - "roquets\n", - "rorqual\n", - "rorquals\n", - "rosaria\n", - "rosarian\n", - "rosarians\n", - "rosaries\n", - "rosarium\n", - "rosariums\n", - "rosary\n", - "roscoe\n", - "roscoes\n", - "rose\n", - "roseate\n", - "rosebay\n", - "rosebays\n", - "rosebud\n", - "rosebuds\n", - "rosebush\n", - "rosebushes\n", - "rosed\n", - "rosefish\n", - "rosefishes\n", - "roselike\n", - "roselle\n", - "roselles\n", - "rosemaries\n", - "rosemary\n", - "roseola\n", - "roseolar\n", - "roseolas\n", - "roser\n", - "roseries\n", - "roseroot\n", - "roseroots\n", - "rosery\n", - "roses\n", - "roset\n", - "rosets\n", - "rosette\n", - "rosettes\n", - "rosewater\n", - "rosewood\n", - "rosewoods\n", - "rosier\n", - "rosiest\n", - "rosily\n", - "rosin\n", - "rosined\n", - "rosiness\n", - "rosinesses\n", - "rosing\n", - "rosining\n", - "rosinous\n", - "rosins\n", - "rosiny\n", - "roslindale\n", - "rosolio\n", - "rosolios\n", - "rostella\n", - "roster\n", - "rosters\n", - "rostra\n", - "rostral\n", - "rostrate\n", - "rostrum\n", - "rostrums\n", - "rosulate\n", - "rosy\n", - "rot\n", - "rota\n", - "rotaries\n", - "rotary\n", - "rotas\n", - "rotate\n", - "rotated\n", - "rotates\n", - "rotating\n", - "rotation\n", - "rotations\n", - "rotative\n", - "rotator\n", - "rotatores\n", - "rotators\n", - "rotatory\n", - "rotch\n", - "rotche\n", - "rotches\n", - "rote\n", - "rotenone\n", - "rotenones\n", - "rotes\n", - "rotgut\n", - "rotguts\n", - "rotifer\n", - "rotifers\n", - "rotiform\n", - "rotl\n", - "rotls\n", - "roto\n", - "rotor\n", - "rotors\n", - "rotos\n", - "rototill\n", - "rototilled\n", - "rototilling\n", - "rototills\n", - "rots\n", - "rotted\n", - "rotten\n", - "rottener\n", - "rottenest\n", - "rottenly\n", - "rottenness\n", - "rottennesses\n", - "rotter\n", - "rotters\n", - "rotting\n", - "rotund\n", - "rotunda\n", - "rotundas\n", - "rotundly\n", - "roturier\n", - "roturiers\n", - "rouble\n", - "roubles\n", - "rouche\n", - "rouches\n", - "roue\n", - "rouen\n", - "rouens\n", - "roues\n", - "rouge\n", - "rouged\n", - "rouges\n", - "rough\n", - "roughage\n", - "roughages\n", - "roughdried\n", - "roughdries\n", - "roughdry\n", - "roughdrying\n", - "roughed\n", - "roughen\n", - "roughened\n", - "roughening\n", - "roughens\n", - "rougher\n", - "roughers\n", - "roughest\n", - "roughhew\n", - "roughhewed\n", - "roughhewing\n", - "roughhewn\n", - "roughhews\n", - "roughing\n", - "roughish\n", - "roughleg\n", - "roughlegs\n", - "roughly\n", - "roughneck\n", - "roughnecks\n", - "roughness\n", - "roughnesses\n", - "roughs\n", - "rouging\n", - "roulade\n", - "roulades\n", - "rouleau\n", - "rouleaus\n", - "rouleaux\n", - "roulette\n", - "rouletted\n", - "roulettes\n", - "rouletting\n", - "round\n", - "roundabout\n", - "rounded\n", - "roundel\n", - "roundels\n", - "rounder\n", - "rounders\n", - "roundest\n", - "rounding\n", - "roundish\n", - "roundlet\n", - "roundlets\n", - "roundly\n", - "roundness\n", - "roundnesses\n", - "rounds\n", - "roundup\n", - "roundups\n", - "roup\n", - "rouped\n", - "roupet\n", - "roupier\n", - "roupiest\n", - "roupily\n", - "rouping\n", - "roups\n", - "roupy\n", - "rouse\n", - "roused\n", - "rouser\n", - "rousers\n", - "rouses\n", - "rousing\n", - "rousseau\n", - "rousseaus\n", - "roust\n", - "rousted\n", - "rouster\n", - "rousters\n", - "rousting\n", - "rousts\n", - "rout\n", - "route\n", - "routed\n", - "routeman\n", - "routemen\n", - "router\n", - "routers\n", - "routes\n", - "routeway\n", - "routeways\n", - "routh\n", - "rouths\n", - "routine\n", - "routinely\n", - "routines\n", - "routing\n", - "routs\n", - "roux\n", - "rove\n", - "roved\n", - "roven\n", - "rover\n", - "rovers\n", - "roves\n", - "roving\n", - "rovingly\n", - "rovings\n", - "row\n", - "rowable\n", - "rowan\n", - "rowans\n", - "rowboat\n", - "rowboats\n", - "rowdier\n", - "rowdies\n", - "rowdiest\n", - "rowdily\n", - "rowdiness\n", - "rowdinesses\n", - "rowdy\n", - "rowdyish\n", - "rowdyism\n", - "rowdyisms\n", - "rowed\n", - "rowel\n", - "roweled\n", - "roweling\n", - "rowelled\n", - "rowelling\n", - "rowels\n", - "rowen\n", - "rowens\n", - "rower\n", - "rowers\n", - "rowing\n", - "rowings\n", - "rowlock\n", - "rowlocks\n", - "rows\n", - "rowth\n", - "rowths\n", - "royal\n", - "royalism\n", - "royalisms\n", - "royalist\n", - "royalists\n", - "royally\n", - "royals\n", - "royalties\n", - "royalty\n", - "royster\n", - "roystered\n", - "roystering\n", - "roysters\n", - "rozzer\n", - "rozzers\n", - "rub\n", - "rubaboo\n", - "rubaboos\n", - "rubace\n", - "rubaces\n", - "rubaiyat\n", - "rubasse\n", - "rubasses\n", - "rubato\n", - "rubatos\n", - "rubbaboo\n", - "rubbaboos\n", - "rubbed\n", - "rubber\n", - "rubberize\n", - "rubberized\n", - "rubberizes\n", - "rubberizing\n", - "rubbers\n", - "rubbery\n", - "rubbing\n", - "rubbings\n", - "rubbish\n", - "rubbishes\n", - "rubbishy\n", - "rubble\n", - "rubbled\n", - "rubbles\n", - "rubblier\n", - "rubbliest\n", - "rubbling\n", - "rubbly\n", - "rubdown\n", - "rubdowns\n", - "rube\n", - "rubella\n", - "rubellas\n", - "rubeola\n", - "rubeolar\n", - "rubeolas\n", - "rubes\n", - "rubicund\n", - "rubidic\n", - "rubidium\n", - "rubidiums\n", - "rubied\n", - "rubier\n", - "rubies\n", - "rubiest\n", - "rubigo\n", - "rubigos\n", - "ruble\n", - "rubles\n", - "rubric\n", - "rubrical\n", - "rubrics\n", - "rubs\n", - "rubus\n", - "ruby\n", - "rubying\n", - "rubylike\n", - "ruche\n", - "ruches\n", - "ruching\n", - "ruchings\n", - "ruck\n", - "rucked\n", - "rucking\n", - "rucks\n", - "rucksack\n", - "rucksacks\n", - "ruckus\n", - "ruckuses\n", - "ruction\n", - "ructions\n", - "ructious\n", - "rudd\n", - "rudder\n", - "rudders\n", - "ruddier\n", - "ruddiest\n", - "ruddily\n", - "ruddiness\n", - "ruddinesses\n", - "ruddle\n", - "ruddled\n", - "ruddles\n", - "ruddling\n", - "ruddock\n", - "ruddocks\n", - "rudds\n", - "ruddy\n", - "rude\n", - "rudely\n", - "rudeness\n", - "rudenesses\n", - "ruder\n", - "ruderal\n", - "ruderals\n", - "rudesbies\n", - "rudesby\n", - "rudest\n", - "rudiment\n", - "rudimentary\n", - "rudiments\n", - "rue\n", - "rued\n", - "rueful\n", - "ruefully\n", - "ruefulness\n", - "ruefulnesses\n", - "ruer\n", - "ruers\n", - "rues\n", - "ruff\n", - "ruffe\n", - "ruffed\n", - "ruffes\n", - "ruffian\n", - "ruffians\n", - "ruffing\n", - "ruffle\n", - "ruffled\n", - "ruffler\n", - "rufflers\n", - "ruffles\n", - "rufflike\n", - "ruffling\n", - "ruffly\n", - "ruffs\n", - "rufous\n", - "rug\n", - "ruga\n", - "rugae\n", - "rugal\n", - "rugate\n", - "rugbies\n", - "rugby\n", - "rugged\n", - "ruggeder\n", - "ruggedest\n", - "ruggedly\n", - "ruggedness\n", - "ruggednesses\n", - "rugger\n", - "ruggers\n", - "rugging\n", - "ruglike\n", - "rugose\n", - "rugosely\n", - "rugosities\n", - "rugosity\n", - "rugous\n", - "rugs\n", - "rugulose\n", - "ruin\n", - "ruinable\n", - "ruinate\n", - "ruinated\n", - "ruinates\n", - "ruinating\n", - "ruined\n", - "ruiner\n", - "ruiners\n", - "ruing\n", - "ruining\n", - "ruinous\n", - "ruinously\n", - "ruins\n", - "rulable\n", - "rule\n", - "ruled\n", - "ruleless\n", - "ruler\n", - "rulers\n", - "rules\n", - "ruling\n", - "rulings\n", - "rum\n", - "rumba\n", - "rumbaed\n", - "rumbaing\n", - "rumbas\n", - "rumble\n", - "rumbled\n", - "rumbler\n", - "rumblers\n", - "rumbles\n", - "rumbling\n", - "rumblings\n", - "rumbly\n", - "rumen\n", - "rumens\n", - "rumina\n", - "ruminal\n", - "ruminant\n", - "ruminants\n", - "ruminate\n", - "ruminated\n", - "ruminates\n", - "ruminating\n", - "rummage\n", - "rummaged\n", - "rummager\n", - "rummagers\n", - "rummages\n", - "rummaging\n", - "rummer\n", - "rummers\n", - "rummest\n", - "rummier\n", - "rummies\n", - "rummiest\n", - "rummy\n", - "rumor\n", - "rumored\n", - "rumoring\n", - "rumors\n", - "rumour\n", - "rumoured\n", - "rumouring\n", - "rumours\n", - "rump\n", - "rumple\n", - "rumpled\n", - "rumples\n", - "rumpless\n", - "rumplier\n", - "rumpliest\n", - "rumpling\n", - "rumply\n", - "rumps\n", - "rumpus\n", - "rumpuses\n", - "rums\n", - "run\n", - "runabout\n", - "runabouts\n", - "runagate\n", - "runagates\n", - "runaround\n", - "runarounds\n", - "runaway\n", - "runaways\n", - "runback\n", - "runbacks\n", - "rundle\n", - "rundles\n", - "rundlet\n", - "rundlets\n", - "rundown\n", - "rundowns\n", - "rune\n", - "runelike\n", - "runes\n", - "rung\n", - "rungless\n", - "rungs\n", - "runic\n", - "runkle\n", - "runkled\n", - "runkles\n", - "runkling\n", - "runless\n", - "runlet\n", - "runlets\n", - "runnel\n", - "runnels\n", - "runner\n", - "runners\n", - "runnier\n", - "runniest\n", - "running\n", - "runnings\n", - "runny\n", - "runoff\n", - "runoffs\n", - "runout\n", - "runouts\n", - "runover\n", - "runovers\n", - "runround\n", - "runrounds\n", - "runs\n", - "runt\n", - "runtier\n", - "runtiest\n", - "runtish\n", - "runts\n", - "runty\n", - "runway\n", - "runways\n", - "rupee\n", - "rupees\n", - "rupiah\n", - "rupiahs\n", - "rupture\n", - "ruptured\n", - "ruptures\n", - "rupturing\n", - "rural\n", - "ruralise\n", - "ruralised\n", - "ruralises\n", - "ruralising\n", - "ruralism\n", - "ruralisms\n", - "ruralist\n", - "ruralists\n", - "ruralite\n", - "ruralites\n", - "ruralities\n", - "rurality\n", - "ruralize\n", - "ruralized\n", - "ruralizes\n", - "ruralizing\n", - "rurally\n", - "rurban\n", - "ruse\n", - "ruses\n", - "rush\n", - "rushed\n", - "rushee\n", - "rushees\n", - "rusher\n", - "rushers\n", - "rushes\n", - "rushier\n", - "rushiest\n", - "rushing\n", - "rushings\n", - "rushlike\n", - "rushy\n", - "rusine\n", - "rusk\n", - "rusks\n", - "russet\n", - "russets\n", - "russety\n", - "russified\n", - "russifies\n", - "russify\n", - "russifying\n", - "rust\n", - "rustable\n", - "rusted\n", - "rustic\n", - "rustical\n", - "rustically\n", - "rusticities\n", - "rusticity\n", - "rusticly\n", - "rustics\n", - "rustier\n", - "rustiest\n", - "rustily\n", - "rusting\n", - "rustle\n", - "rustled\n", - "rustler\n", - "rustlers\n", - "rustles\n", - "rustless\n", - "rustling\n", - "rusts\n", - "rusty\n", - "rut\n", - "rutabaga\n", - "rutabagas\n", - "ruth\n", - "ruthenic\n", - "ruthful\n", - "ruthless\n", - "ruthlessly\n", - "ruthlessness\n", - "ruthlessnesses\n", - "ruths\n", - "rutilant\n", - "rutile\n", - "rutiles\n", - "ruts\n", - "rutted\n", - "ruttier\n", - "ruttiest\n", - "ruttily\n", - "rutting\n", - "ruttish\n", - "rutty\n", - "rya\n", - "ryas\n", - "rye\n", - "ryegrass\n", - "ryegrasses\n", - "ryes\n", - "ryke\n", - "ryked\n", - "rykes\n", - "ryking\n", - "rynd\n", - "rynds\n", - "ryot\n", - "ryots\n", - "sab\n", - "sabaton\n", - "sabatons\n", - "sabbat\n", - "sabbath\n", - "sabbaths\n", - "sabbatic\n", - "sabbats\n", - "sabbed\n", - "sabbing\n", - "sabe\n", - "sabed\n", - "sabeing\n", - "saber\n", - "sabered\n", - "sabering\n", - "sabers\n", - "sabes\n", - "sabin\n", - "sabine\n", - "sabines\n", - "sabins\n", - "sabir\n", - "sabirs\n", - "sable\n", - "sables\n", - "sabot\n", - "sabotage\n", - "sabotaged\n", - "sabotages\n", - "sabotaging\n", - "saboteur\n", - "saboteurs\n", - "sabots\n", - "sabra\n", - "sabras\n", - "sabre\n", - "sabred\n", - "sabres\n", - "sabring\n", - "sabs\n", - "sabulose\n", - "sabulous\n", - "sac\n", - "sacaton\n", - "sacatons\n", - "sacbut\n", - "sacbuts\n", - "saccade\n", - "saccades\n", - "saccadic\n", - "saccate\n", - "saccharin\n", - "saccharine\n", - "saccharins\n", - "saccular\n", - "saccule\n", - "saccules\n", - "sacculi\n", - "sacculus\n", - "sachem\n", - "sachemic\n", - "sachems\n", - "sachet\n", - "sacheted\n", - "sachets\n", - "sack\n", - "sackbut\n", - "sackbuts\n", - "sackcloth\n", - "sackcloths\n", - "sacked\n", - "sacker\n", - "sackers\n", - "sackful\n", - "sackfuls\n", - "sacking\n", - "sackings\n", - "sacklike\n", - "sacks\n", - "sacksful\n", - "saclike\n", - "sacque\n", - "sacques\n", - "sacra\n", - "sacral\n", - "sacrals\n", - "sacrament\n", - "sacramental\n", - "sacraments\n", - "sacraria\n", - "sacred\n", - "sacredly\n", - "sacrifice\n", - "sacrificed\n", - "sacrifices\n", - "sacrificial\n", - "sacrificially\n", - "sacrificing\n", - "sacrilege\n", - "sacrileges\n", - "sacrilegious\n", - "sacrilegiously\n", - "sacrist\n", - "sacristies\n", - "sacrists\n", - "sacristy\n", - "sacrosanct\n", - "sacrum\n", - "sacs\n", - "sad\n", - "sadden\n", - "saddened\n", - "saddening\n", - "saddens\n", - "sadder\n", - "saddest\n", - "saddhu\n", - "saddhus\n", - "saddle\n", - "saddled\n", - "saddler\n", - "saddleries\n", - "saddlers\n", - "saddlery\n", - "saddles\n", - "saddling\n", - "sade\n", - "sades\n", - "sadhe\n", - "sadhes\n", - "sadhu\n", - "sadhus\n", - "sadi\n", - "sadiron\n", - "sadirons\n", - "sadis\n", - "sadism\n", - "sadisms\n", - "sadist\n", - "sadistic\n", - "sadistically\n", - "sadists\n", - "sadly\n", - "sadness\n", - "sadnesses\n", - "sae\n", - "safari\n", - "safaried\n", - "safariing\n", - "safaris\n", - "safe\n", - "safeguard\n", - "safeguarded\n", - "safeguarding\n", - "safeguards\n", - "safekeeping\n", - "safekeepings\n", - "safely\n", - "safeness\n", - "safenesses\n", - "safer\n", - "safes\n", - "safest\n", - "safetied\n", - "safeties\n", - "safety\n", - "safetying\n", - "safflower\n", - "safflowers\n", - "saffron\n", - "saffrons\n", - "safranin\n", - "safranins\n", - "safrol\n", - "safrole\n", - "safroles\n", - "safrols\n", - "sag\n", - "saga\n", - "sagacious\n", - "sagacities\n", - "sagacity\n", - "sagaman\n", - "sagamen\n", - "sagamore\n", - "sagamores\n", - "saganash\n", - "saganashes\n", - "sagas\n", - "sagbut\n", - "sagbuts\n", - "sage\n", - "sagebrush\n", - "sagebrushes\n", - "sagely\n", - "sageness\n", - "sagenesses\n", - "sager\n", - "sages\n", - "sagest\n", - "saggar\n", - "saggard\n", - "saggards\n", - "saggared\n", - "saggaring\n", - "saggars\n", - "sagged\n", - "sagger\n", - "saggered\n", - "saggering\n", - "saggers\n", - "sagging\n", - "sagier\n", - "sagiest\n", - "sagittal\n", - "sago\n", - "sagos\n", - "sags\n", - "saguaro\n", - "saguaros\n", - "sagum\n", - "sagy\n", - "sahib\n", - "sahibs\n", - "sahiwal\n", - "sahiwals\n", - "sahuaro\n", - "sahuaros\n", - "saice\n", - "saices\n", - "said\n", - "saids\n", - "saiga\n", - "saigas\n", - "sail\n", - "sailable\n", - "sailboat\n", - "sailboats\n", - "sailed\n", - "sailer\n", - "sailers\n", - "sailfish\n", - "sailfishes\n", - "sailing\n", - "sailings\n", - "sailor\n", - "sailorly\n", - "sailors\n", - "sails\n", - "sain\n", - "sained\n", - "sainfoin\n", - "sainfoins\n", - "saining\n", - "sains\n", - "saint\n", - "saintdom\n", - "saintdoms\n", - "sainted\n", - "sainthood\n", - "sainthoods\n", - "sainting\n", - "saintlier\n", - "saintliest\n", - "saintliness\n", - "saintlinesses\n", - "saintly\n", - "saints\n", - "saith\n", - "saithe\n", - "saiyid\n", - "saiyids\n", - "sajou\n", - "sajous\n", - "sake\n", - "saker\n", - "sakers\n", - "sakes\n", - "saki\n", - "sakis\n", - "sal\n", - "salaam\n", - "salaamed\n", - "salaaming\n", - "salaams\n", - "salable\n", - "salably\n", - "salacious\n", - "salacities\n", - "salacity\n", - "salad\n", - "saladang\n", - "saladangs\n", - "salads\n", - "salamander\n", - "salamanders\n", - "salami\n", - "salamis\n", - "salariat\n", - "salariats\n", - "salaried\n", - "salaries\n", - "salary\n", - "salarying\n", - "sale\n", - "saleable\n", - "saleably\n", - "salep\n", - "saleps\n", - "saleroom\n", - "salerooms\n", - "sales\n", - "salesman\n", - "salesmen\n", - "saleswoman\n", - "saleswomen\n", - "salic\n", - "salicin\n", - "salicine\n", - "salicines\n", - "salicins\n", - "salience\n", - "saliences\n", - "saliencies\n", - "saliency\n", - "salient\n", - "salients\n", - "salified\n", - "salifies\n", - "salify\n", - "salifying\n", - "salina\n", - "salinas\n", - "saline\n", - "salines\n", - "salinities\n", - "salinity\n", - "salinize\n", - "salinized\n", - "salinizes\n", - "salinizing\n", - "saliva\n", - "salivary\n", - "salivas\n", - "salivate\n", - "salivated\n", - "salivates\n", - "salivating\n", - "salivation\n", - "salivations\n", - "sall\n", - "sallet\n", - "sallets\n", - "sallied\n", - "sallier\n", - "salliers\n", - "sallies\n", - "sallow\n", - "sallowed\n", - "sallower\n", - "sallowest\n", - "sallowing\n", - "sallowly\n", - "sallows\n", - "sallowy\n", - "sally\n", - "sallying\n", - "salmi\n", - "salmis\n", - "salmon\n", - "salmonid\n", - "salmonids\n", - "salmons\n", - "salol\n", - "salols\n", - "salon\n", - "salons\n", - "saloon\n", - "saloons\n", - "saloop\n", - "saloops\n", - "salp\n", - "salpa\n", - "salpae\n", - "salpas\n", - "salpian\n", - "salpians\n", - "salpid\n", - "salpids\n", - "salpinges\n", - "salpinx\n", - "salps\n", - "sals\n", - "salsifies\n", - "salsify\n", - "salsilla\n", - "salsillas\n", - "salt\n", - "saltant\n", - "saltbox\n", - "saltboxes\n", - "saltbush\n", - "saltbushes\n", - "salted\n", - "salter\n", - "saltern\n", - "salterns\n", - "salters\n", - "saltest\n", - "saltie\n", - "saltier\n", - "saltiers\n", - "salties\n", - "saltiest\n", - "saltily\n", - "saltine\n", - "saltines\n", - "saltiness\n", - "saltinesses\n", - "salting\n", - "saltire\n", - "saltires\n", - "saltish\n", - "saltless\n", - "saltlike\n", - "saltness\n", - "saltnesses\n", - "saltpan\n", - "saltpans\n", - "salts\n", - "saltwater\n", - "saltwaters\n", - "saltwork\n", - "saltworks\n", - "saltwort\n", - "saltworts\n", - "salty\n", - "salubrious\n", - "saluki\n", - "salukis\n", - "salutary\n", - "salutation\n", - "salutations\n", - "salute\n", - "saluted\n", - "saluter\n", - "saluters\n", - "salutes\n", - "saluting\n", - "salvable\n", - "salvably\n", - "salvage\n", - "salvaged\n", - "salvagee\n", - "salvagees\n", - "salvager\n", - "salvagers\n", - "salvages\n", - "salvaging\n", - "salvation\n", - "salvations\n", - "salve\n", - "salved\n", - "salver\n", - "salvers\n", - "salves\n", - "salvia\n", - "salvias\n", - "salvific\n", - "salving\n", - "salvo\n", - "salvoed\n", - "salvoes\n", - "salvoing\n", - "salvor\n", - "salvors\n", - "salvos\n", - "samara\n", - "samaras\n", - "samarium\n", - "samariums\n", - "samba\n", - "sambaed\n", - "sambaing\n", - "sambar\n", - "sambars\n", - "sambas\n", - "sambhar\n", - "sambhars\n", - "sambhur\n", - "sambhurs\n", - "sambo\n", - "sambos\n", - "sambuca\n", - "sambucas\n", - "sambuke\n", - "sambukes\n", - "sambur\n", - "samburs\n", - "same\n", - "samech\n", - "samechs\n", - "samek\n", - "samekh\n", - "samekhs\n", - "sameks\n", - "sameness\n", - "samenesses\n", - "samiel\n", - "samiels\n", - "samisen\n", - "samisens\n", - "samite\n", - "samites\n", - "samlet\n", - "samlets\n", - "samovar\n", - "samovars\n", - "samp\n", - "sampan\n", - "sampans\n", - "samphire\n", - "samphires\n", - "sample\n", - "sampled\n", - "sampler\n", - "samplers\n", - "samples\n", - "sampling\n", - "samplings\n", - "samps\n", - "samsara\n", - "samsaras\n", - "samshu\n", - "samshus\n", - "samurai\n", - "samurais\n", - "sanative\n", - "sanatoria\n", - "sanatorium\n", - "sanatoriums\n", - "sancta\n", - "sanctification\n", - "sanctifications\n", - "sanctified\n", - "sanctifies\n", - "sanctify\n", - "sanctifying\n", - "sanctimonious\n", - "sanction\n", - "sanctioned\n", - "sanctioning\n", - "sanctions\n", - "sanctities\n", - "sanctity\n", - "sanctuaries\n", - "sanctuary\n", - "sanctum\n", - "sanctums\n", - "sand\n", - "sandal\n", - "sandaled\n", - "sandaling\n", - "sandalled\n", - "sandalling\n", - "sandals\n", - "sandarac\n", - "sandaracs\n", - "sandbag\n", - "sandbagged\n", - "sandbagging\n", - "sandbags\n", - "sandbank\n", - "sandbanks\n", - "sandbar\n", - "sandbars\n", - "sandbox\n", - "sandboxes\n", - "sandbur\n", - "sandburr\n", - "sandburrs\n", - "sandburs\n", - "sanded\n", - "sander\n", - "sanders\n", - "sandfish\n", - "sandfishes\n", - "sandflies\n", - "sandfly\n", - "sandhi\n", - "sandhis\n", - "sandhog\n", - "sandhogs\n", - "sandier\n", - "sandiest\n", - "sanding\n", - "sandlike\n", - "sandling\n", - "sandlings\n", - "sandlot\n", - "sandlots\n", - "sandman\n", - "sandmen\n", - "sandpaper\n", - "sandpapered\n", - "sandpapering\n", - "sandpapers\n", - "sandpeep\n", - "sandpeeps\n", - "sandpile\n", - "sandpiles\n", - "sandpiper\n", - "sandpipers\n", - "sandpit\n", - "sandpits\n", - "sands\n", - "sandsoap\n", - "sandsoaps\n", - "sandstone\n", - "sandstones\n", - "sandstorm\n", - "sandstorms\n", - "sandwich\n", - "sandwiched\n", - "sandwiches\n", - "sandwiching\n", - "sandworm\n", - "sandworms\n", - "sandwort\n", - "sandworts\n", - "sandy\n", - "sane\n", - "saned\n", - "sanely\n", - "saneness\n", - "sanenesses\n", - "saner\n", - "sanes\n", - "sanest\n", - "sang\n", - "sanga\n", - "sangar\n", - "sangaree\n", - "sangarees\n", - "sangars\n", - "sangas\n", - "sanger\n", - "sangers\n", - "sangh\n", - "sanghs\n", - "sangria\n", - "sangrias\n", - "sanguinary\n", - "sanguine\n", - "sanguines\n", - "sanicle\n", - "sanicles\n", - "sanies\n", - "saning\n", - "sanious\n", - "sanitaria\n", - "sanitaries\n", - "sanitarium\n", - "sanitariums\n", - "sanitary\n", - "sanitate\n", - "sanitated\n", - "sanitates\n", - "sanitating\n", - "sanitation\n", - "sanitations\n", - "sanities\n", - "sanitise\n", - "sanitised\n", - "sanitises\n", - "sanitising\n", - "sanitize\n", - "sanitized\n", - "sanitizes\n", - "sanitizing\n", - "sanity\n", - "sanjak\n", - "sanjaks\n", - "sank\n", - "sannop\n", - "sannops\n", - "sannup\n", - "sannups\n", - "sannyasi\n", - "sannyasis\n", - "sans\n", - "sansar\n", - "sansars\n", - "sansei\n", - "sanseis\n", - "sanserif\n", - "sanserifs\n", - "santalic\n", - "santimi\n", - "santims\n", - "santir\n", - "santirs\n", - "santol\n", - "santols\n", - "santonin\n", - "santonins\n", - "santour\n", - "santours\n", - "sap\n", - "sapajou\n", - "sapajous\n", - "saphead\n", - "sapheads\n", - "saphena\n", - "saphenae\n", - "sapid\n", - "sapidities\n", - "sapidity\n", - "sapience\n", - "sapiences\n", - "sapiencies\n", - "sapiency\n", - "sapiens\n", - "sapient\n", - "sapless\n", - "sapling\n", - "saplings\n", - "saponified\n", - "saponifies\n", - "saponify\n", - "saponifying\n", - "saponin\n", - "saponine\n", - "saponines\n", - "saponins\n", - "saponite\n", - "saponites\n", - "sapor\n", - "saporous\n", - "sapors\n", - "sapota\n", - "sapotas\n", - "sapour\n", - "sapours\n", - "sapped\n", - "sapper\n", - "sappers\n", - "sapphic\n", - "sapphics\n", - "sapphire\n", - "sapphires\n", - "sapphism\n", - "sapphisms\n", - "sapphist\n", - "sapphists\n", - "sappier\n", - "sappiest\n", - "sappily\n", - "sapping\n", - "sappy\n", - "sapremia\n", - "sapremias\n", - "sapremic\n", - "saprobe\n", - "saprobes\n", - "saprobic\n", - "sapropel\n", - "sapropels\n", - "saps\n", - "sapsago\n", - "sapsagos\n", - "sapsucker\n", - "sapsuckers\n", - "sapwood\n", - "sapwoods\n", - "saraband\n", - "sarabands\n", - "saran\n", - "sarape\n", - "sarapes\n", - "sarcasm\n", - "sarcasms\n", - "sarcastic\n", - "sarcastically\n", - "sarcenet\n", - "sarcenets\n", - "sarcoid\n", - "sarcoids\n", - "sarcoma\n", - "sarcomas\n", - "sarcomata\n", - "sarcophagi\n", - "sarcophagus\n", - "sarcous\n", - "sard\n", - "sardar\n", - "sardars\n", - "sardine\n", - "sardines\n", - "sardius\n", - "sardiuses\n", - "sardonic\n", - "sardonically\n", - "sardonyx\n", - "sardonyxes\n", - "sards\n", - "saree\n", - "sarees\n", - "sargasso\n", - "sargassos\n", - "sarge\n", - "sarges\n", - "sari\n", - "sarin\n", - "sarins\n", - "saris\n", - "sark\n", - "sarks\n", - "sarment\n", - "sarmenta\n", - "sarments\n", - "sarod\n", - "sarode\n", - "sarodes\n", - "sarodist\n", - "sarodists\n", - "sarods\n", - "sarong\n", - "sarongs\n", - "sarsaparilla\n", - "sarsaparillas\n", - "sarsar\n", - "sarsars\n", - "sarsen\n", - "sarsenet\n", - "sarsenets\n", - "sarsens\n", - "sartor\n", - "sartorii\n", - "sartors\n", - "sash\n", - "sashay\n", - "sashayed\n", - "sashaying\n", - "sashays\n", - "sashed\n", - "sashes\n", - "sashimi\n", - "sashimis\n", - "sashing\n", - "sasin\n", - "sasins\n", - "sass\n", - "sassabies\n", - "sassaby\n", - "sassafras\n", - "sassafrases\n", - "sassed\n", - "sasses\n", - "sassier\n", - "sassies\n", - "sassiest\n", - "sassily\n", - "sassing\n", - "sasswood\n", - "sasswoods\n", - "sassy\n", - "sastruga\n", - "sastrugi\n", - "sat\n", - "satang\n", - "satangs\n", - "satanic\n", - "satanism\n", - "satanisms\n", - "satanist\n", - "satanists\n", - "satara\n", - "sataras\n", - "satchel\n", - "satchels\n", - "sate\n", - "sated\n", - "sateen\n", - "sateens\n", - "satellite\n", - "satellites\n", - "satem\n", - "sates\n", - "sati\n", - "satiable\n", - "satiably\n", - "satiate\n", - "satiated\n", - "satiates\n", - "satiating\n", - "satieties\n", - "satiety\n", - "satin\n", - "satinet\n", - "satinets\n", - "sating\n", - "satinpod\n", - "satinpods\n", - "satins\n", - "satiny\n", - "satire\n", - "satires\n", - "satiric\n", - "satirical\n", - "satirically\n", - "satirise\n", - "satirised\n", - "satirises\n", - "satirising\n", - "satirist\n", - "satirists\n", - "satirize\n", - "satirized\n", - "satirizes\n", - "satirizing\n", - "satis\n", - "satisfaction\n", - "satisfactions\n", - "satisfactorily\n", - "satisfactory\n", - "satisfied\n", - "satisfies\n", - "satisfy\n", - "satisfying\n", - "satisfyingly\n", - "satori\n", - "satoris\n", - "satrap\n", - "satrapies\n", - "satraps\n", - "satrapy\n", - "saturant\n", - "saturants\n", - "saturate\n", - "saturated\n", - "saturates\n", - "saturating\n", - "saturation\n", - "saturations\n", - "saturnine\n", - "satyr\n", - "satyric\n", - "satyrid\n", - "satyrids\n", - "satyrs\n", - "sau\n", - "sauce\n", - "saucebox\n", - "sauceboxes\n", - "sauced\n", - "saucepan\n", - "saucepans\n", - "saucer\n", - "saucers\n", - "sauces\n", - "sauch\n", - "sauchs\n", - "saucier\n", - "sauciest\n", - "saucily\n", - "saucing\n", - "saucy\n", - "sauerkraut\n", - "sauerkrauts\n", - "sauger\n", - "saugers\n", - "saugh\n", - "saughs\n", - "saughy\n", - "saul\n", - "sauls\n", - "sault\n", - "saults\n", - "sauna\n", - "saunas\n", - "saunter\n", - "sauntered\n", - "sauntering\n", - "saunters\n", - "saurel\n", - "saurels\n", - "saurian\n", - "saurians\n", - "sauries\n", - "sauropod\n", - "sauropods\n", - "saury\n", - "sausage\n", - "sausages\n", - "saute\n", - "sauted\n", - "sauteed\n", - "sauteing\n", - "sauterne\n", - "sauternes\n", - "sautes\n", - "sautoir\n", - "sautoire\n", - "sautoires\n", - "sautoirs\n", - "savable\n", - "savage\n", - "savaged\n", - "savagely\n", - "savageness\n", - "savagenesses\n", - "savager\n", - "savageries\n", - "savagery\n", - "savages\n", - "savagest\n", - "savaging\n", - "savagism\n", - "savagisms\n", - "savanna\n", - "savannah\n", - "savannahs\n", - "savannas\n", - "savant\n", - "savants\n", - "savate\n", - "savates\n", - "save\n", - "saveable\n", - "saved\n", - "saveloy\n", - "saveloys\n", - "saver\n", - "savers\n", - "saves\n", - "savin\n", - "savine\n", - "savines\n", - "saving\n", - "savingly\n", - "savings\n", - "savins\n", - "savior\n", - "saviors\n", - "saviour\n", - "saviours\n", - "savor\n", - "savored\n", - "savorer\n", - "savorers\n", - "savorier\n", - "savories\n", - "savoriest\n", - "savorily\n", - "savoring\n", - "savorous\n", - "savors\n", - "savory\n", - "savour\n", - "savoured\n", - "savourer\n", - "savourers\n", - "savourier\n", - "savouries\n", - "savouriest\n", - "savouring\n", - "savours\n", - "savoury\n", - "savoy\n", - "savoys\n", - "savvied\n", - "savvies\n", - "savvy\n", - "savvying\n", - "saw\n", - "sawbill\n", - "sawbills\n", - "sawbones\n", - "sawboneses\n", - "sawbuck\n", - "sawbucks\n", - "sawdust\n", - "sawdusts\n", - "sawed\n", - "sawer\n", - "sawers\n", - "sawfish\n", - "sawfishes\n", - "sawflies\n", - "sawfly\n", - "sawhorse\n", - "sawhorses\n", - "sawing\n", - "sawlike\n", - "sawlog\n", - "sawlogs\n", - "sawmill\n", - "sawmills\n", - "sawn\n", - "sawney\n", - "sawneys\n", - "saws\n", - "sawteeth\n", - "sawtooth\n", - "sawyer\n", - "sawyers\n", - "sax\n", - "saxatile\n", - "saxes\n", - "saxhorn\n", - "saxhorns\n", - "saxonies\n", - "saxony\n", - "saxophone\n", - "saxophones\n", - "saxtuba\n", - "saxtubas\n", - "say\n", - "sayable\n", - "sayer\n", - "sayers\n", - "sayest\n", - "sayid\n", - "sayids\n", - "saying\n", - "sayings\n", - "sayonara\n", - "sayonaras\n", - "says\n", - "sayst\n", - "sayyid\n", - "sayyids\n", - "scab\n", - "scabbard\n", - "scabbarded\n", - "scabbarding\n", - "scabbards\n", - "scabbed\n", - "scabbier\n", - "scabbiest\n", - "scabbily\n", - "scabbing\n", - "scabble\n", - "scabbled\n", - "scabbles\n", - "scabbling\n", - "scabby\n", - "scabies\n", - "scabiosa\n", - "scabiosas\n", - "scabious\n", - "scabiouses\n", - "scablike\n", - "scabrous\n", - "scabs\n", - "scad\n", - "scads\n", - "scaffold\n", - "scaffolded\n", - "scaffolding\n", - "scaffolds\n", - "scag\n", - "scags\n", - "scalable\n", - "scalably\n", - "scalade\n", - "scalades\n", - "scalado\n", - "scalados\n", - "scalage\n", - "scalages\n", - "scalar\n", - "scalare\n", - "scalares\n", - "scalars\n", - "scalawag\n", - "scalawags\n", - "scald\n", - "scalded\n", - "scaldic\n", - "scalding\n", - "scalds\n", - "scale\n", - "scaled\n", - "scaleless\n", - "scalene\n", - "scaleni\n", - "scalenus\n", - "scalepan\n", - "scalepans\n", - "scaler\n", - "scalers\n", - "scales\n", - "scalier\n", - "scaliest\n", - "scaling\n", - "scall\n", - "scallion\n", - "scallions\n", - "scallop\n", - "scalloped\n", - "scalloping\n", - "scallops\n", - "scalls\n", - "scalp\n", - "scalped\n", - "scalpel\n", - "scalpels\n", - "scalper\n", - "scalpers\n", - "scalping\n", - "scalps\n", - "scaly\n", - "scam\n", - "scammonies\n", - "scammony\n", - "scamp\n", - "scamped\n", - "scamper\n", - "scampered\n", - "scampering\n", - "scampers\n", - "scampi\n", - "scamping\n", - "scampish\n", - "scamps\n", - "scams\n", - "scan\n", - "scandal\n", - "scandaled\n", - "scandaling\n", - "scandalize\n", - "scandalized\n", - "scandalizes\n", - "scandalizing\n", - "scandalled\n", - "scandalling\n", - "scandalous\n", - "scandals\n", - "scandent\n", - "scandia\n", - "scandias\n", - "scandic\n", - "scandium\n", - "scandiums\n", - "scanned\n", - "scanner\n", - "scanners\n", - "scanning\n", - "scannings\n", - "scans\n", - "scansion\n", - "scansions\n", - "scant\n", - "scanted\n", - "scanter\n", - "scantest\n", - "scantier\n", - "scanties\n", - "scantiest\n", - "scantily\n", - "scanting\n", - "scantly\n", - "scants\n", - "scanty\n", - "scape\n", - "scaped\n", - "scapegoat\n", - "scapegoats\n", - "scapes\n", - "scaphoid\n", - "scaphoids\n", - "scaping\n", - "scapose\n", - "scapula\n", - "scapulae\n", - "scapular\n", - "scapulars\n", - "scapulas\n", - "scar\n", - "scarab\n", - "scarabs\n", - "scarce\n", - "scarcely\n", - "scarcer\n", - "scarcest\n", - "scarcities\n", - "scarcity\n", - "scare\n", - "scarecrow\n", - "scarecrows\n", - "scared\n", - "scarer\n", - "scarers\n", - "scares\n", - "scarey\n", - "scarf\n", - "scarfed\n", - "scarfing\n", - "scarfpin\n", - "scarfpins\n", - "scarfs\n", - "scarier\n", - "scariest\n", - "scarified\n", - "scarifies\n", - "scarify\n", - "scarifying\n", - "scaring\n", - "scariose\n", - "scarious\n", - "scarless\n", - "scarlet\n", - "scarlets\n", - "scarp\n", - "scarped\n", - "scarper\n", - "scarpered\n", - "scarpering\n", - "scarpers\n", - "scarph\n", - "scarphed\n", - "scarphing\n", - "scarphs\n", - "scarping\n", - "scarps\n", - "scarred\n", - "scarrier\n", - "scarriest\n", - "scarring\n", - "scarry\n", - "scars\n", - "scart\n", - "scarted\n", - "scarting\n", - "scarts\n", - "scarves\n", - "scary\n", - "scat\n", - "scatback\n", - "scatbacks\n", - "scathe\n", - "scathed\n", - "scathes\n", - "scathing\n", - "scats\n", - "scatt\n", - "scatted\n", - "scatter\n", - "scattered\n", - "scattergram\n", - "scattergrams\n", - "scattering\n", - "scatters\n", - "scattier\n", - "scattiest\n", - "scatting\n", - "scatts\n", - "scatty\n", - "scaup\n", - "scauper\n", - "scaupers\n", - "scaups\n", - "scaur\n", - "scaurs\n", - "scavenge\n", - "scavenged\n", - "scavenger\n", - "scavengers\n", - "scavenges\n", - "scavenging\n", - "scena\n", - "scenario\n", - "scenarios\n", - "scenas\n", - "scend\n", - "scended\n", - "scending\n", - "scends\n", - "scene\n", - "sceneries\n", - "scenery\n", - "scenes\n", - "scenic\n", - "scenical\n", - "scent\n", - "scented\n", - "scenting\n", - "scents\n", - "scepter\n", - "sceptered\n", - "sceptering\n", - "scepters\n", - "sceptic\n", - "sceptics\n", - "sceptral\n", - "sceptre\n", - "sceptred\n", - "sceptres\n", - "sceptring\n", - "schappe\n", - "schappes\n", - "schav\n", - "schavs\n", - "schedule\n", - "scheduled\n", - "schedules\n", - "scheduling\n", - "schema\n", - "schemata\n", - "schematic\n", - "scheme\n", - "schemed\n", - "schemer\n", - "schemers\n", - "schemes\n", - "scheming\n", - "scherzi\n", - "scherzo\n", - "scherzos\n", - "schiller\n", - "schillers\n", - "schism\n", - "schisms\n", - "schist\n", - "schists\n", - "schizo\n", - "schizoid\n", - "schizoids\n", - "schizont\n", - "schizonts\n", - "schizophrenia\n", - "schizophrenias\n", - "schizophrenic\n", - "schizophrenics\n", - "schizos\n", - "schlep\n", - "schlepp\n", - "schlepped\n", - "schlepping\n", - "schlepps\n", - "schleps\n", - "schlock\n", - "schlocks\n", - "schmaltz\n", - "schmaltzes\n", - "schmalz\n", - "schmalzes\n", - "schmalzier\n", - "schmalziest\n", - "schmalzy\n", - "schmeer\n", - "schmeered\n", - "schmeering\n", - "schmeers\n", - "schmelze\n", - "schmelzes\n", - "schmo\n", - "schmoe\n", - "schmoes\n", - "schmoos\n", - "schmoose\n", - "schmoosed\n", - "schmooses\n", - "schmoosing\n", - "schmooze\n", - "schmoozed\n", - "schmoozes\n", - "schmoozing\n", - "schmuck\n", - "schmucks\n", - "schnapps\n", - "schnaps\n", - "schnecke\n", - "schnecken\n", - "schnook\n", - "schnooks\n", - "scholar\n", - "scholars\n", - "scholarship\n", - "scholarships\n", - "scholastic\n", - "scholia\n", - "scholium\n", - "scholiums\n", - "school\n", - "schoolboy\n", - "schoolboys\n", - "schooled\n", - "schoolgirl\n", - "schoolgirls\n", - "schoolhouse\n", - "schoolhouses\n", - "schooling\n", - "schoolmate\n", - "schoolmates\n", - "schoolroom\n", - "schoolrooms\n", - "schools\n", - "schoolteacher\n", - "schoolteachers\n", - "schooner\n", - "schooners\n", - "schorl\n", - "schorls\n", - "schrik\n", - "schriks\n", - "schtick\n", - "schticks\n", - "schuit\n", - "schuits\n", - "schul\n", - "schuln\n", - "schuss\n", - "schussed\n", - "schusses\n", - "schussing\n", - "schwa\n", - "schwas\n", - "sciaenid\n", - "sciaenids\n", - "sciatic\n", - "sciatica\n", - "sciaticas\n", - "sciatics\n", - "science\n", - "sciences\n", - "scientific\n", - "scientifically\n", - "scientist\n", - "scientists\n", - "scilicet\n", - "scilla\n", - "scillas\n", - "scimetar\n", - "scimetars\n", - "scimitar\n", - "scimitars\n", - "scimiter\n", - "scimiters\n", - "scincoid\n", - "scincoids\n", - "scintillate\n", - "scintillated\n", - "scintillates\n", - "scintillating\n", - "scintillation\n", - "scintillations\n", - "sciolism\n", - "sciolisms\n", - "sciolist\n", - "sciolists\n", - "scion\n", - "scions\n", - "scirocco\n", - "sciroccos\n", - "scirrhi\n", - "scirrhus\n", - "scirrhuses\n", - "scissile\n", - "scission\n", - "scissions\n", - "scissor\n", - "scissored\n", - "scissoring\n", - "scissors\n", - "scissure\n", - "scissures\n", - "sciurine\n", - "sciurines\n", - "sciuroid\n", - "sclaff\n", - "sclaffed\n", - "sclaffer\n", - "sclaffers\n", - "sclaffing\n", - "sclaffs\n", - "sclera\n", - "sclerae\n", - "scleral\n", - "scleras\n", - "sclereid\n", - "sclereids\n", - "sclerite\n", - "sclerites\n", - "scleroid\n", - "scleroma\n", - "scleromata\n", - "sclerose\n", - "sclerosed\n", - "scleroses\n", - "sclerosing\n", - "sclerosis\n", - "sclerosises\n", - "sclerotic\n", - "sclerous\n", - "scoff\n", - "scoffed\n", - "scoffer\n", - "scoffers\n", - "scoffing\n", - "scofflaw\n", - "scofflaws\n", - "scoffs\n", - "scold\n", - "scolded\n", - "scolder\n", - "scolders\n", - "scolding\n", - "scoldings\n", - "scolds\n", - "scoleces\n", - "scolex\n", - "scolices\n", - "scolioma\n", - "scoliomas\n", - "scollop\n", - "scolloped\n", - "scolloping\n", - "scollops\n", - "sconce\n", - "sconced\n", - "sconces\n", - "sconcing\n", - "scone\n", - "scones\n", - "scoop\n", - "scooped\n", - "scooper\n", - "scoopers\n", - "scoopful\n", - "scoopfuls\n", - "scooping\n", - "scoops\n", - "scoopsful\n", - "scoot\n", - "scooted\n", - "scooter\n", - "scooters\n", - "scooting\n", - "scoots\n", - "scop\n", - "scope\n", - "scopes\n", - "scops\n", - "scopula\n", - "scopulae\n", - "scopulas\n", - "scorch\n", - "scorched\n", - "scorcher\n", - "scorchers\n", - "scorches\n", - "scorching\n", - "score\n", - "scored\n", - "scoreless\n", - "scorepad\n", - "scorepads\n", - "scorer\n", - "scorers\n", - "scores\n", - "scoria\n", - "scoriae\n", - "scorified\n", - "scorifies\n", - "scorify\n", - "scorifying\n", - "scoring\n", - "scorn\n", - "scorned\n", - "scorner\n", - "scorners\n", - "scornful\n", - "scornfully\n", - "scorning\n", - "scorns\n", - "scorpion\n", - "scorpions\n", - "scot\n", - "scotch\n", - "scotched\n", - "scotches\n", - "scotching\n", - "scoter\n", - "scoters\n", - "scotia\n", - "scotias\n", - "scotoma\n", - "scotomas\n", - "scotomata\n", - "scotopia\n", - "scotopias\n", - "scotopic\n", - "scots\n", - "scottie\n", - "scotties\n", - "scoundrel\n", - "scoundrels\n", - "scour\n", - "scoured\n", - "scourer\n", - "scourers\n", - "scourge\n", - "scourged\n", - "scourger\n", - "scourgers\n", - "scourges\n", - "scourging\n", - "scouring\n", - "scourings\n", - "scours\n", - "scouse\n", - "scouses\n", - "scout\n", - "scouted\n", - "scouter\n", - "scouters\n", - "scouth\n", - "scouther\n", - "scouthered\n", - "scouthering\n", - "scouthers\n", - "scouths\n", - "scouting\n", - "scoutings\n", - "scouts\n", - "scow\n", - "scowder\n", - "scowdered\n", - "scowdering\n", - "scowders\n", - "scowed\n", - "scowing\n", - "scowl\n", - "scowled\n", - "scowler\n", - "scowlers\n", - "scowling\n", - "scowls\n", - "scows\n", - "scrabble\n", - "scrabbled\n", - "scrabbles\n", - "scrabbling\n", - "scrabbly\n", - "scrag\n", - "scragged\n", - "scraggier\n", - "scraggiest\n", - "scragging\n", - "scragglier\n", - "scraggliest\n", - "scraggly\n", - "scraggy\n", - "scrags\n", - "scraich\n", - "scraiched\n", - "scraiching\n", - "scraichs\n", - "scraigh\n", - "scraighed\n", - "scraighing\n", - "scraighs\n", - "scram\n", - "scramble\n", - "scrambled\n", - "scrambles\n", - "scrambling\n", - "scrammed\n", - "scramming\n", - "scrams\n", - "scrannel\n", - "scrannels\n", - "scrap\n", - "scrapbook\n", - "scrapbooks\n", - "scrape\n", - "scraped\n", - "scraper\n", - "scrapers\n", - "scrapes\n", - "scrapie\n", - "scrapies\n", - "scraping\n", - "scrapings\n", - "scrapped\n", - "scrapper\n", - "scrappers\n", - "scrappier\n", - "scrappiest\n", - "scrapping\n", - "scrapple\n", - "scrapples\n", - "scrappy\n", - "scraps\n", - "scratch\n", - "scratched\n", - "scratches\n", - "scratchier\n", - "scratchiest\n", - "scratching\n", - "scratchy\n", - "scrawl\n", - "scrawled\n", - "scrawler\n", - "scrawlers\n", - "scrawlier\n", - "scrawliest\n", - "scrawling\n", - "scrawls\n", - "scrawly\n", - "scrawnier\n", - "scrawniest\n", - "scrawny\n", - "screak\n", - "screaked\n", - "screaking\n", - "screaks\n", - "screaky\n", - "scream\n", - "screamed\n", - "screamer\n", - "screamers\n", - "screaming\n", - "screams\n", - "scree\n", - "screech\n", - "screeched\n", - "screeches\n", - "screechier\n", - "screechiest\n", - "screeching\n", - "screechy\n", - "screed\n", - "screeded\n", - "screeding\n", - "screeds\n", - "screen\n", - "screened\n", - "screener\n", - "screeners\n", - "screening\n", - "screens\n", - "screes\n", - "screw\n", - "screwball\n", - "screwballs\n", - "screwdriver\n", - "screwdrivers\n", - "screwed\n", - "screwer\n", - "screwers\n", - "screwier\n", - "screwiest\n", - "screwing\n", - "screws\n", - "screwy\n", - "scribal\n", - "scribble\n", - "scribbled\n", - "scribbles\n", - "scribbling\n", - "scribe\n", - "scribed\n", - "scriber\n", - "scribers\n", - "scribes\n", - "scribing\n", - "scrieve\n", - "scrieved\n", - "scrieves\n", - "scrieving\n", - "scrim\n", - "scrimp\n", - "scrimped\n", - "scrimpier\n", - "scrimpiest\n", - "scrimping\n", - "scrimpit\n", - "scrimps\n", - "scrimpy\n", - "scrims\n", - "scrip\n", - "scrips\n", - "script\n", - "scripted\n", - "scripting\n", - "scripts\n", - "scriptural\n", - "scripture\n", - "scriptures\n", - "scrive\n", - "scrived\n", - "scrives\n", - "scriving\n", - "scrod\n", - "scrods\n", - "scrofula\n", - "scrofulas\n", - "scroggier\n", - "scroggiest\n", - "scroggy\n", - "scroll\n", - "scrolls\n", - "scrooge\n", - "scrooges\n", - "scroop\n", - "scrooped\n", - "scrooping\n", - "scroops\n", - "scrota\n", - "scrotal\n", - "scrotum\n", - "scrotums\n", - "scrouge\n", - "scrouged\n", - "scrouges\n", - "scrouging\n", - "scrounge\n", - "scrounged\n", - "scrounges\n", - "scroungier\n", - "scroungiest\n", - "scrounging\n", - "scroungy\n", - "scrub\n", - "scrubbed\n", - "scrubber\n", - "scrubbers\n", - "scrubbier\n", - "scrubbiest\n", - "scrubbing\n", - "scrubby\n", - "scrubs\n", - "scruff\n", - "scruffier\n", - "scruffiest\n", - "scruffs\n", - "scruffy\n", - "scrum\n", - "scrums\n", - "scrunch\n", - "scrunched\n", - "scrunches\n", - "scrunching\n", - "scruple\n", - "scrupled\n", - "scruples\n", - "scrupling\n", - "scrupulous\n", - "scrupulously\n", - "scrutinies\n", - "scrutinize\n", - "scrutinized\n", - "scrutinizes\n", - "scrutinizing\n", - "scrutiny\n", - "scuba\n", - "scubas\n", - "scud\n", - "scudded\n", - "scudding\n", - "scudi\n", - "scudo\n", - "scuds\n", - "scuff\n", - "scuffed\n", - "scuffing\n", - "scuffle\n", - "scuffled\n", - "scuffler\n", - "scufflers\n", - "scuffles\n", - "scuffling\n", - "scuffs\n", - "sculk\n", - "sculked\n", - "sculker\n", - "sculkers\n", - "sculking\n", - "sculks\n", - "scull\n", - "sculled\n", - "sculler\n", - "sculleries\n", - "scullers\n", - "scullery\n", - "sculling\n", - "scullion\n", - "scullions\n", - "sculls\n", - "sculp\n", - "sculped\n", - "sculpin\n", - "sculping\n", - "sculpins\n", - "sculps\n", - "sculpt\n", - "sculpted\n", - "sculpting\n", - "sculptor\n", - "sculptors\n", - "sculpts\n", - "sculptural\n", - "sculpture\n", - "sculptured\n", - "sculptures\n", - "sculpturing\n", - "scum\n", - "scumble\n", - "scumbled\n", - "scumbles\n", - "scumbling\n", - "scumlike\n", - "scummed\n", - "scummer\n", - "scummers\n", - "scummier\n", - "scummiest\n", - "scumming\n", - "scummy\n", - "scums\n", - "scunner\n", - "scunnered\n", - "scunnering\n", - "scunners\n", - "scup\n", - "scuppaug\n", - "scuppaugs\n", - "scupper\n", - "scuppered\n", - "scuppering\n", - "scuppers\n", - "scups\n", - "scurf\n", - "scurfier\n", - "scurfiest\n", - "scurfs\n", - "scurfy\n", - "scurried\n", - "scurries\n", - "scurril\n", - "scurrile\n", - "scurrilous\n", - "scurry\n", - "scurrying\n", - "scurvier\n", - "scurvies\n", - "scurviest\n", - "scurvily\n", - "scurvy\n", - "scut\n", - "scuta\n", - "scutage\n", - "scutages\n", - "scutate\n", - "scutch\n", - "scutched\n", - "scutcher\n", - "scutchers\n", - "scutches\n", - "scutching\n", - "scute\n", - "scutella\n", - "scutes\n", - "scuts\n", - "scutter\n", - "scuttered\n", - "scuttering\n", - "scutters\n", - "scuttle\n", - "scuttled\n", - "scuttles\n", - "scuttling\n", - "scutum\n", - "scyphate\n", - "scythe\n", - "scythed\n", - "scythes\n", - "scything\n", - "sea\n", - "seabag\n", - "seabags\n", - "seabeach\n", - "seabeaches\n", - "seabed\n", - "seabeds\n", - "seabird\n", - "seabirds\n", - "seaboard\n", - "seaboards\n", - "seaboot\n", - "seaboots\n", - "seaborne\n", - "seacoast\n", - "seacoasts\n", - "seacock\n", - "seacocks\n", - "seacraft\n", - "seacrafts\n", - "seadog\n", - "seadogs\n", - "seadrome\n", - "seadromes\n", - "seafarer\n", - "seafarers\n", - "seafaring\n", - "seafarings\n", - "seafloor\n", - "seafloors\n", - "seafood\n", - "seafoods\n", - "seafowl\n", - "seafowls\n", - "seafront\n", - "seafronts\n", - "seagirt\n", - "seagoing\n", - "seal\n", - "sealable\n", - "sealant\n", - "sealants\n", - "sealed\n", - "sealer\n", - "sealeries\n", - "sealers\n", - "sealery\n", - "sealing\n", - "seallike\n", - "seals\n", - "sealskin\n", - "sealskins\n", - "seam\n", - "seaman\n", - "seamanly\n", - "seamanship\n", - "seamanships\n", - "seamark\n", - "seamarks\n", - "seamed\n", - "seamen\n", - "seamer\n", - "seamers\n", - "seamier\n", - "seamiest\n", - "seaming\n", - "seamless\n", - "seamlike\n", - "seamount\n", - "seamounts\n", - "seams\n", - "seamster\n", - "seamsters\n", - "seamstress\n", - "seamstresses\n", - "seamy\n", - "seance\n", - "seances\n", - "seapiece\n", - "seapieces\n", - "seaplane\n", - "seaplanes\n", - "seaport\n", - "seaports\n", - "seaquake\n", - "seaquakes\n", - "sear\n", - "search\n", - "searched\n", - "searcher\n", - "searchers\n", - "searches\n", - "searching\n", - "searchlight\n", - "searchlights\n", - "seared\n", - "searer\n", - "searest\n", - "searing\n", - "sears\n", - "seas\n", - "seascape\n", - "seascapes\n", - "seascout\n", - "seascouts\n", - "seashell\n", - "seashells\n", - "seashore\n", - "seashores\n", - "seasick\n", - "seasickness\n", - "seasicknesses\n", - "seaside\n", - "seasides\n", - "season\n", - "seasonable\n", - "seasonably\n", - "seasonal\n", - "seasonally\n", - "seasoned\n", - "seasoner\n", - "seasoners\n", - "seasoning\n", - "seasons\n", - "seat\n", - "seated\n", - "seater\n", - "seaters\n", - "seating\n", - "seatings\n", - "seatless\n", - "seatmate\n", - "seatmates\n", - "seatrain\n", - "seatrains\n", - "seats\n", - "seatwork\n", - "seatworks\n", - "seawall\n", - "seawalls\n", - "seawan\n", - "seawans\n", - "seawant\n", - "seawants\n", - "seaward\n", - "seawards\n", - "seaware\n", - "seawares\n", - "seawater\n", - "seawaters\n", - "seaway\n", - "seaways\n", - "seaweed\n", - "seaweeds\n", - "seaworthy\n", - "sebacic\n", - "sebasic\n", - "sebum\n", - "sebums\n", - "sec\n", - "secant\n", - "secantly\n", - "secants\n", - "secateur\n", - "secateurs\n", - "secco\n", - "seccos\n", - "secede\n", - "seceded\n", - "seceder\n", - "seceders\n", - "secedes\n", - "seceding\n", - "secern\n", - "secerned\n", - "secerning\n", - "secerns\n", - "seclude\n", - "secluded\n", - "secludes\n", - "secluding\n", - "seclusion\n", - "seclusions\n", - "second\n", - "secondary\n", - "seconde\n", - "seconded\n", - "seconder\n", - "seconders\n", - "secondes\n", - "secondhand\n", - "secondi\n", - "seconding\n", - "secondly\n", - "secondo\n", - "seconds\n", - "secpar\n", - "secpars\n", - "secrecies\n", - "secrecy\n", - "secret\n", - "secretarial\n", - "secretariat\n", - "secretariats\n", - "secretaries\n", - "secretary\n", - "secrete\n", - "secreted\n", - "secreter\n", - "secretes\n", - "secretest\n", - "secretin\n", - "secreting\n", - "secretins\n", - "secretion\n", - "secretions\n", - "secretive\n", - "secretly\n", - "secretor\n", - "secretors\n", - "secrets\n", - "secs\n", - "sect\n", - "sectarian\n", - "sectarians\n", - "sectaries\n", - "sectary\n", - "sectile\n", - "section\n", - "sectional\n", - "sectioned\n", - "sectioning\n", - "sections\n", - "sector\n", - "sectoral\n", - "sectored\n", - "sectoring\n", - "sectors\n", - "sects\n", - "secular\n", - "seculars\n", - "secund\n", - "secundly\n", - "secundum\n", - "secure\n", - "secured\n", - "securely\n", - "securer\n", - "securers\n", - "secures\n", - "securest\n", - "securing\n", - "securities\n", - "security\n", - "sedan\n", - "sedans\n", - "sedarim\n", - "sedate\n", - "sedated\n", - "sedately\n", - "sedater\n", - "sedates\n", - "sedatest\n", - "sedating\n", - "sedation\n", - "sedations\n", - "sedative\n", - "sedatives\n", - "sedentary\n", - "seder\n", - "seders\n", - "sederunt\n", - "sederunts\n", - "sedge\n", - "sedges\n", - "sedgier\n", - "sedgiest\n", - "sedgy\n", - "sedile\n", - "sedilia\n", - "sedilium\n", - "sediment\n", - "sedimentary\n", - "sedimentation\n", - "sedimentations\n", - "sedimented\n", - "sedimenting\n", - "sediments\n", - "sedition\n", - "seditions\n", - "seditious\n", - "seduce\n", - "seduced\n", - "seducer\n", - "seducers\n", - "seduces\n", - "seducing\n", - "seducive\n", - "seduction\n", - "seductions\n", - "seductive\n", - "sedulities\n", - "sedulity\n", - "sedulous\n", - "sedum\n", - "sedums\n", - "see\n", - "seeable\n", - "seecatch\n", - "seecatchie\n", - "seed\n", - "seedbed\n", - "seedbeds\n", - "seedcake\n", - "seedcakes\n", - "seedcase\n", - "seedcases\n", - "seeded\n", - "seeder\n", - "seeders\n", - "seedier\n", - "seediest\n", - "seedily\n", - "seeding\n", - "seedless\n", - "seedlike\n", - "seedling\n", - "seedlings\n", - "seedman\n", - "seedmen\n", - "seedpod\n", - "seedpods\n", - "seeds\n", - "seedsman\n", - "seedsmen\n", - "seedtime\n", - "seedtimes\n", - "seedy\n", - "seeing\n", - "seeings\n", - "seek\n", - "seeker\n", - "seekers\n", - "seeking\n", - "seeks\n", - "seel\n", - "seeled\n", - "seeling\n", - "seels\n", - "seely\n", - "seem\n", - "seemed\n", - "seemer\n", - "seemers\n", - "seeming\n", - "seemingly\n", - "seemings\n", - "seemlier\n", - "seemliest\n", - "seemly\n", - "seems\n", - "seen\n", - "seep\n", - "seepage\n", - "seepages\n", - "seeped\n", - "seepier\n", - "seepiest\n", - "seeping\n", - "seeps\n", - "seepy\n", - "seer\n", - "seeress\n", - "seeresses\n", - "seers\n", - "seersucker\n", - "seersuckers\n", - "sees\n", - "seesaw\n", - "seesawed\n", - "seesawing\n", - "seesaws\n", - "seethe\n", - "seethed\n", - "seethes\n", - "seething\n", - "segetal\n", - "seggar\n", - "seggars\n", - "segment\n", - "segmented\n", - "segmenting\n", - "segments\n", - "segni\n", - "segno\n", - "segnos\n", - "sego\n", - "segos\n", - "segregate\n", - "segregated\n", - "segregates\n", - "segregating\n", - "segregation\n", - "segregations\n", - "segue\n", - "segued\n", - "segueing\n", - "segues\n", - "sei\n", - "seicento\n", - "seicentos\n", - "seiche\n", - "seiches\n", - "seidel\n", - "seidels\n", - "seigneur\n", - "seigneurs\n", - "seignior\n", - "seigniors\n", - "seignories\n", - "seignory\n", - "seine\n", - "seined\n", - "seiner\n", - "seiners\n", - "seines\n", - "seining\n", - "seis\n", - "seisable\n", - "seise\n", - "seised\n", - "seiser\n", - "seisers\n", - "seises\n", - "seisin\n", - "seising\n", - "seisings\n", - "seisins\n", - "seism\n", - "seismal\n", - "seismic\n", - "seismism\n", - "seismisms\n", - "seismograph\n", - "seismographs\n", - "seisms\n", - "seisor\n", - "seisors\n", - "seisure\n", - "seisures\n", - "seizable\n", - "seize\n", - "seized\n", - "seizer\n", - "seizers\n", - "seizes\n", - "seizin\n", - "seizing\n", - "seizings\n", - "seizins\n", - "seizor\n", - "seizors\n", - "seizure\n", - "seizures\n", - "sejant\n", - "sejeant\n", - "sel\n", - "seladang\n", - "seladangs\n", - "selah\n", - "selahs\n", - "selamlik\n", - "selamliks\n", - "selcouth\n", - "seldom\n", - "seldomly\n", - "select\n", - "selected\n", - "selectee\n", - "selectees\n", - "selecting\n", - "selection\n", - "selections\n", - "selective\n", - "selectly\n", - "selectman\n", - "selectmen\n", - "selector\n", - "selectors\n", - "selects\n", - "selenate\n", - "selenates\n", - "selenic\n", - "selenide\n", - "selenides\n", - "selenite\n", - "selenites\n", - "selenium\n", - "seleniums\n", - "selenous\n", - "self\n", - "selfdom\n", - "selfdoms\n", - "selfed\n", - "selfheal\n", - "selfheals\n", - "selfhood\n", - "selfhoods\n", - "selfing\n", - "selfish\n", - "selfishly\n", - "selfishness\n", - "selfishnesses\n", - "selfless\n", - "selflessness\n", - "selflessnesses\n", - "selfness\n", - "selfnesses\n", - "selfs\n", - "selfsame\n", - "selfward\n", - "sell\n", - "sellable\n", - "selle\n", - "seller\n", - "sellers\n", - "selles\n", - "selling\n", - "sellout\n", - "sellouts\n", - "sells\n", - "sels\n", - "selsyn\n", - "selsyns\n", - "seltzer\n", - "seltzers\n", - "selvage\n", - "selvaged\n", - "selvages\n", - "selvedge\n", - "selvedges\n", - "selves\n", - "semantic\n", - "semantics\n", - "semaphore\n", - "semaphores\n", - "sematic\n", - "semblance\n", - "semblances\n", - "seme\n", - "sememe\n", - "sememes\n", - "semen\n", - "semens\n", - "semes\n", - "semester\n", - "semesters\n", - "semi\n", - "semiarid\n", - "semibald\n", - "semicolon\n", - "semicolons\n", - "semicoma\n", - "semicomas\n", - "semiconductor\n", - "semiconductors\n", - "semideaf\n", - "semidome\n", - "semidomes\n", - "semidry\n", - "semifinal\n", - "semifinalist\n", - "semifinalists\n", - "semifinals\n", - "semifit\n", - "semiformal\n", - "semigala\n", - "semihard\n", - "semihigh\n", - "semihobo\n", - "semihoboes\n", - "semihobos\n", - "semilog\n", - "semimat\n", - "semimatt\n", - "semimute\n", - "semina\n", - "seminal\n", - "seminar\n", - "seminarian\n", - "seminarians\n", - "seminaries\n", - "seminars\n", - "seminary\n", - "seminude\n", - "semioses\n", - "semiosis\n", - "semiotic\n", - "semiotics\n", - "semipro\n", - "semipros\n", - "semiraw\n", - "semis\n", - "semises\n", - "semisoft\n", - "semitist\n", - "semitists\n", - "semitone\n", - "semitones\n", - "semiwild\n", - "semolina\n", - "semolinas\n", - "semple\n", - "semplice\n", - "sempre\n", - "sen\n", - "senarii\n", - "senarius\n", - "senary\n", - "senate\n", - "senates\n", - "senator\n", - "senatorial\n", - "senators\n", - "send\n", - "sendable\n", - "sendal\n", - "sendals\n", - "sender\n", - "senders\n", - "sending\n", - "sendoff\n", - "sendoffs\n", - "sends\n", - "seneca\n", - "senecas\n", - "senecio\n", - "senecios\n", - "senega\n", - "senegas\n", - "sengi\n", - "senhor\n", - "senhora\n", - "senhoras\n", - "senhores\n", - "senhors\n", - "senile\n", - "senilely\n", - "seniles\n", - "senilities\n", - "senility\n", - "senior\n", - "seniorities\n", - "seniority\n", - "seniors\n", - "seniti\n", - "senna\n", - "sennas\n", - "sennet\n", - "sennets\n", - "sennight\n", - "sennights\n", - "sennit\n", - "sennits\n", - "senopia\n", - "senopias\n", - "senor\n", - "senora\n", - "senoras\n", - "senores\n", - "senorita\n", - "senoritas\n", - "senors\n", - "sensa\n", - "sensate\n", - "sensated\n", - "sensates\n", - "sensating\n", - "sensation\n", - "sensational\n", - "sensations\n", - "sense\n", - "sensed\n", - "senseful\n", - "senseless\n", - "senselessly\n", - "senses\n", - "sensibilities\n", - "sensibility\n", - "sensible\n", - "sensibler\n", - "sensibles\n", - "sensiblest\n", - "sensibly\n", - "sensilla\n", - "sensing\n", - "sensitive\n", - "sensitiveness\n", - "sensitivenesses\n", - "sensitivities\n", - "sensitivity\n", - "sensitize\n", - "sensitized\n", - "sensitizes\n", - "sensitizing\n", - "sensor\n", - "sensoria\n", - "sensors\n", - "sensory\n", - "sensual\n", - "sensualist\n", - "sensualists\n", - "sensualities\n", - "sensuality\n", - "sensually\n", - "sensum\n", - "sensuous\n", - "sensuously\n", - "sensuousness\n", - "sensuousnesses\n", - "sent\n", - "sentence\n", - "sentenced\n", - "sentences\n", - "sentencing\n", - "sententious\n", - "senti\n", - "sentient\n", - "sentients\n", - "sentiment\n", - "sentimental\n", - "sentimentalism\n", - "sentimentalisms\n", - "sentimentalist\n", - "sentimentalists\n", - "sentimentalize\n", - "sentimentalized\n", - "sentimentalizes\n", - "sentimentalizing\n", - "sentimentally\n", - "sentiments\n", - "sentinel\n", - "sentineled\n", - "sentineling\n", - "sentinelled\n", - "sentinelling\n", - "sentinels\n", - "sentries\n", - "sentry\n", - "sepal\n", - "sepaled\n", - "sepaline\n", - "sepalled\n", - "sepaloid\n", - "sepalous\n", - "sepals\n", - "separable\n", - "separate\n", - "separated\n", - "separately\n", - "separates\n", - "separating\n", - "separation\n", - "separations\n", - "separator\n", - "separators\n", - "sepia\n", - "sepias\n", - "sepic\n", - "sepoy\n", - "sepoys\n", - "seppuku\n", - "seppukus\n", - "sepses\n", - "sepsis\n", - "sept\n", - "septa\n", - "septal\n", - "septaria\n", - "septate\n", - "september\n", - "septet\n", - "septets\n", - "septette\n", - "septettes\n", - "septic\n", - "septical\n", - "septics\n", - "septime\n", - "septimes\n", - "septs\n", - "septum\n", - "septuple\n", - "septupled\n", - "septuples\n", - "septupling\n", - "sepulcher\n", - "sepulchers\n", - "sepulchral\n", - "sepulchre\n", - "sepulchres\n", - "sequel\n", - "sequela\n", - "sequelae\n", - "sequels\n", - "sequence\n", - "sequenced\n", - "sequences\n", - "sequencies\n", - "sequencing\n", - "sequency\n", - "sequent\n", - "sequential\n", - "sequentially\n", - "sequents\n", - "sequester\n", - "sequestered\n", - "sequestering\n", - "sequesters\n", - "sequin\n", - "sequined\n", - "sequins\n", - "sequitur\n", - "sequiturs\n", - "sequoia\n", - "sequoias\n", - "ser\n", - "sera\n", - "serac\n", - "seracs\n", - "seraglio\n", - "seraglios\n", - "serai\n", - "serail\n", - "serails\n", - "serais\n", - "seral\n", - "serape\n", - "serapes\n", - "seraph\n", - "seraphic\n", - "seraphim\n", - "seraphims\n", - "seraphin\n", - "seraphs\n", - "serdab\n", - "serdabs\n", - "sere\n", - "sered\n", - "serein\n", - "sereins\n", - "serenade\n", - "serenaded\n", - "serenades\n", - "serenading\n", - "serenata\n", - "serenatas\n", - "serenate\n", - "serendipitous\n", - "serendipity\n", - "serene\n", - "serenely\n", - "serener\n", - "serenes\n", - "serenest\n", - "serenities\n", - "serenity\n", - "serer\n", - "seres\n", - "serest\n", - "serf\n", - "serfage\n", - "serfages\n", - "serfdom\n", - "serfdoms\n", - "serfhood\n", - "serfhoods\n", - "serfish\n", - "serflike\n", - "serfs\n", - "serge\n", - "sergeant\n", - "sergeants\n", - "serges\n", - "serging\n", - "sergings\n", - "serial\n", - "serially\n", - "serials\n", - "seriate\n", - "seriated\n", - "seriates\n", - "seriatim\n", - "seriating\n", - "sericin\n", - "sericins\n", - "seriema\n", - "seriemas\n", - "series\n", - "serif\n", - "serifs\n", - "serin\n", - "serine\n", - "serines\n", - "sering\n", - "seringa\n", - "seringas\n", - "serins\n", - "serious\n", - "seriously\n", - "seriousness\n", - "seriousnesses\n", - "serjeant\n", - "serjeants\n", - "sermon\n", - "sermonic\n", - "sermons\n", - "serologies\n", - "serology\n", - "serosa\n", - "serosae\n", - "serosal\n", - "serosas\n", - "serosities\n", - "serosity\n", - "serotine\n", - "serotines\n", - "serotype\n", - "serotypes\n", - "serous\n", - "serow\n", - "serows\n", - "serpent\n", - "serpentine\n", - "serpents\n", - "serpigines\n", - "serpigo\n", - "serpigoes\n", - "serranid\n", - "serranids\n", - "serrate\n", - "serrated\n", - "serrates\n", - "serrating\n", - "serried\n", - "serries\n", - "serry\n", - "serrying\n", - "sers\n", - "serum\n", - "serumal\n", - "serums\n", - "servable\n", - "serval\n", - "servals\n", - "servant\n", - "servants\n", - "serve\n", - "served\n", - "server\n", - "servers\n", - "serves\n", - "service\n", - "serviceable\n", - "serviced\n", - "serviceman\n", - "servicemen\n", - "servicer\n", - "servicers\n", - "services\n", - "servicing\n", - "servile\n", - "servilities\n", - "servility\n", - "serving\n", - "servings\n", - "servitor\n", - "servitors\n", - "servitude\n", - "servitudes\n", - "servo\n", - "servos\n", - "sesame\n", - "sesames\n", - "sesamoid\n", - "sesamoids\n", - "sessile\n", - "session\n", - "sessions\n", - "sesspool\n", - "sesspools\n", - "sesterce\n", - "sesterces\n", - "sestet\n", - "sestets\n", - "sestina\n", - "sestinas\n", - "sestine\n", - "sestines\n", - "set\n", - "seta\n", - "setae\n", - "setal\n", - "setback\n", - "setbacks\n", - "setiform\n", - "setline\n", - "setlines\n", - "setoff\n", - "setoffs\n", - "seton\n", - "setons\n", - "setose\n", - "setous\n", - "setout\n", - "setouts\n", - "sets\n", - "setscrew\n", - "setscrews\n", - "settee\n", - "settees\n", - "setter\n", - "setters\n", - "setting\n", - "settings\n", - "settle\n", - "settled\n", - "settlement\n", - "settlements\n", - "settler\n", - "settlers\n", - "settles\n", - "settling\n", - "settlings\n", - "settlor\n", - "settlors\n", - "setulose\n", - "setulous\n", - "setup\n", - "setups\n", - "seven\n", - "sevens\n", - "seventeen\n", - "seventeens\n", - "seventeenth\n", - "seventeenths\n", - "seventh\n", - "sevenths\n", - "seventies\n", - "seventieth\n", - "seventieths\n", - "seventy\n", - "sever\n", - "several\n", - "severals\n", - "severance\n", - "severances\n", - "severe\n", - "severed\n", - "severely\n", - "severer\n", - "severest\n", - "severing\n", - "severities\n", - "severity\n", - "severs\n", - "sew\n", - "sewage\n", - "sewages\n", - "sewan\n", - "sewans\n", - "sewar\n", - "sewars\n", - "sewed\n", - "sewer\n", - "sewerage\n", - "sewerages\n", - "sewers\n", - "sewing\n", - "sewings\n", - "sewn\n", - "sews\n", - "sex\n", - "sexed\n", - "sexes\n", - "sexier\n", - "sexiest\n", - "sexily\n", - "sexiness\n", - "sexinesses\n", - "sexing\n", - "sexism\n", - "sexisms\n", - "sexist\n", - "sexists\n", - "sexless\n", - "sexologies\n", - "sexology\n", - "sexpot\n", - "sexpots\n", - "sext\n", - "sextain\n", - "sextains\n", - "sextan\n", - "sextans\n", - "sextant\n", - "sextants\n", - "sextarii\n", - "sextet\n", - "sextets\n", - "sextette\n", - "sextettes\n", - "sextile\n", - "sextiles\n", - "sexto\n", - "sexton\n", - "sextons\n", - "sextos\n", - "sexts\n", - "sextuple\n", - "sextupled\n", - "sextuples\n", - "sextupling\n", - "sextuply\n", - "sexual\n", - "sexualities\n", - "sexuality\n", - "sexually\n", - "sexy\n", - "sferics\n", - "sforzato\n", - "sforzatos\n", - "sfumato\n", - "sfumatos\n", - "sh\n", - "shabbier\n", - "shabbiest\n", - "shabbily\n", - "shabbiness\n", - "shabbinesses\n", - "shabby\n", - "shack\n", - "shackle\n", - "shackled\n", - "shackler\n", - "shacklers\n", - "shackles\n", - "shackling\n", - "shacko\n", - "shackoes\n", - "shackos\n", - "shacks\n", - "shad\n", - "shadblow\n", - "shadblows\n", - "shadbush\n", - "shadbushes\n", - "shadchan\n", - "shadchanim\n", - "shadchans\n", - "shaddock\n", - "shaddocks\n", - "shade\n", - "shaded\n", - "shader\n", - "shaders\n", - "shades\n", - "shadflies\n", - "shadfly\n", - "shadier\n", - "shadiest\n", - "shadily\n", - "shading\n", - "shadings\n", - "shadoof\n", - "shadoofs\n", - "shadow\n", - "shadowed\n", - "shadower\n", - "shadowers\n", - "shadowier\n", - "shadowiest\n", - "shadowing\n", - "shadows\n", - "shadowy\n", - "shadrach\n", - "shadrachs\n", - "shads\n", - "shaduf\n", - "shadufs\n", - "shady\n", - "shaft\n", - "shafted\n", - "shafting\n", - "shaftings\n", - "shafts\n", - "shag\n", - "shagbark\n", - "shagbarks\n", - "shagged\n", - "shaggier\n", - "shaggiest\n", - "shaggily\n", - "shagging\n", - "shaggy\n", - "shagreen\n", - "shagreens\n", - "shags\n", - "shah\n", - "shahdom\n", - "shahdoms\n", - "shahs\n", - "shaird\n", - "shairds\n", - "shairn\n", - "shairns\n", - "shaitan\n", - "shaitans\n", - "shakable\n", - "shake\n", - "shaken\n", - "shakeout\n", - "shakeouts\n", - "shaker\n", - "shakers\n", - "shakes\n", - "shakeup\n", - "shakeups\n", - "shakier\n", - "shakiest\n", - "shakily\n", - "shakiness\n", - "shakinesses\n", - "shaking\n", - "shako\n", - "shakoes\n", - "shakos\n", - "shaky\n", - "shale\n", - "shaled\n", - "shales\n", - "shalier\n", - "shaliest\n", - "shall\n", - "shalloon\n", - "shalloons\n", - "shallop\n", - "shallops\n", - "shallot\n", - "shallots\n", - "shallow\n", - "shallowed\n", - "shallower\n", - "shallowest\n", - "shallowing\n", - "shallows\n", - "shalom\n", - "shalt\n", - "shaly\n", - "sham\n", - "shamable\n", - "shaman\n", - "shamanic\n", - "shamans\n", - "shamble\n", - "shambled\n", - "shambles\n", - "shambling\n", - "shame\n", - "shamed\n", - "shamefaced\n", - "shameful\n", - "shamefully\n", - "shameless\n", - "shamelessly\n", - "shames\n", - "shaming\n", - "shammas\n", - "shammash\n", - "shammashim\n", - "shammasim\n", - "shammed\n", - "shammer\n", - "shammers\n", - "shammes\n", - "shammied\n", - "shammies\n", - "shamming\n", - "shammos\n", - "shammosim\n", - "shammy\n", - "shammying\n", - "shamois\n", - "shamosim\n", - "shamoy\n", - "shamoyed\n", - "shamoying\n", - "shamoys\n", - "shampoo\n", - "shampooed\n", - "shampooing\n", - "shampoos\n", - "shamrock\n", - "shamrocks\n", - "shams\n", - "shamus\n", - "shamuses\n", - "shandies\n", - "shandy\n", - "shanghai\n", - "shanghaied\n", - "shanghaiing\n", - "shanghais\n", - "shank\n", - "shanked\n", - "shanking\n", - "shanks\n", - "shantey\n", - "shanteys\n", - "shanti\n", - "shanties\n", - "shantih\n", - "shantihs\n", - "shantis\n", - "shantung\n", - "shantungs\n", - "shanty\n", - "shapable\n", - "shape\n", - "shaped\n", - "shapeless\n", - "shapelier\n", - "shapeliest\n", - "shapely\n", - "shapen\n", - "shaper\n", - "shapers\n", - "shapes\n", - "shapeup\n", - "shapeups\n", - "shaping\n", - "sharable\n", - "shard\n", - "shards\n", - "share\n", - "sharecrop\n", - "sharecroped\n", - "sharecroping\n", - "sharecropper\n", - "sharecroppers\n", - "sharecrops\n", - "shared\n", - "shareholder\n", - "shareholders\n", - "sharer\n", - "sharers\n", - "shares\n", - "sharif\n", - "sharifs\n", - "sharing\n", - "shark\n", - "sharked\n", - "sharker\n", - "sharkers\n", - "sharking\n", - "sharks\n", - "sharn\n", - "sharns\n", - "sharny\n", - "sharp\n", - "sharped\n", - "sharpen\n", - "sharpened\n", - "sharpener\n", - "sharpeners\n", - "sharpening\n", - "sharpens\n", - "sharper\n", - "sharpers\n", - "sharpest\n", - "sharpie\n", - "sharpies\n", - "sharping\n", - "sharply\n", - "sharpness\n", - "sharpnesses\n", - "sharps\n", - "sharpshooter\n", - "sharpshooters\n", - "sharpshooting\n", - "sharpshootings\n", - "sharpy\n", - "shashlik\n", - "shashliks\n", - "shaslik\n", - "shasliks\n", - "shat\n", - "shatter\n", - "shattered\n", - "shattering\n", - "shatters\n", - "shaugh\n", - "shaughs\n", - "shaul\n", - "shauled\n", - "shauling\n", - "shauls\n", - "shavable\n", - "shave\n", - "shaved\n", - "shaven\n", - "shaver\n", - "shavers\n", - "shaves\n", - "shavie\n", - "shavies\n", - "shaving\n", - "shavings\n", - "shaw\n", - "shawed\n", - "shawing\n", - "shawl\n", - "shawled\n", - "shawling\n", - "shawls\n", - "shawm\n", - "shawms\n", - "shawn\n", - "shaws\n", - "shay\n", - "shays\n", - "she\n", - "shea\n", - "sheaf\n", - "sheafed\n", - "sheafing\n", - "sheafs\n", - "sheal\n", - "shealing\n", - "shealings\n", - "sheals\n", - "shear\n", - "sheared\n", - "shearer\n", - "shearers\n", - "shearing\n", - "shears\n", - "sheas\n", - "sheath\n", - "sheathe\n", - "sheathed\n", - "sheather\n", - "sheathers\n", - "sheathes\n", - "sheathing\n", - "sheaths\n", - "sheave\n", - "sheaved\n", - "sheaves\n", - "sheaving\n", - "shebang\n", - "shebangs\n", - "shebean\n", - "shebeans\n", - "shebeen\n", - "shebeens\n", - "shed\n", - "shedable\n", - "shedded\n", - "shedder\n", - "shedders\n", - "shedding\n", - "sheds\n", - "sheen\n", - "sheened\n", - "sheeney\n", - "sheeneys\n", - "sheenful\n", - "sheenie\n", - "sheenier\n", - "sheenies\n", - "sheeniest\n", - "sheening\n", - "sheens\n", - "sheeny\n", - "sheep\n", - "sheepdog\n", - "sheepdogs\n", - "sheepish\n", - "sheepman\n", - "sheepmen\n", - "sheepskin\n", - "sheepskins\n", - "sheer\n", - "sheered\n", - "sheerer\n", - "sheerest\n", - "sheering\n", - "sheerly\n", - "sheers\n", - "sheet\n", - "sheeted\n", - "sheeter\n", - "sheeters\n", - "sheetfed\n", - "sheeting\n", - "sheetings\n", - "sheets\n", - "sheeve\n", - "sheeves\n", - "shegetz\n", - "sheik\n", - "sheikdom\n", - "sheikdoms\n", - "sheikh\n", - "sheikhdom\n", - "sheikhdoms\n", - "sheikhs\n", - "sheiks\n", - "sheitan\n", - "sheitans\n", - "shekel\n", - "shekels\n", - "shelduck\n", - "shelducks\n", - "shelf\n", - "shelfful\n", - "shelffuls\n", - "shell\n", - "shellac\n", - "shellack\n", - "shellacked\n", - "shellacking\n", - "shellackings\n", - "shellacks\n", - "shellacs\n", - "shelled\n", - "sheller\n", - "shellers\n", - "shellfish\n", - "shellfishes\n", - "shellier\n", - "shelliest\n", - "shelling\n", - "shells\n", - "shelly\n", - "shelter\n", - "sheltered\n", - "sheltering\n", - "shelters\n", - "sheltie\n", - "shelties\n", - "shelty\n", - "shelve\n", - "shelved\n", - "shelver\n", - "shelvers\n", - "shelves\n", - "shelvier\n", - "shelviest\n", - "shelving\n", - "shelvings\n", - "shelvy\n", - "shenanigans\n", - "shend\n", - "shending\n", - "shends\n", - "shent\n", - "sheol\n", - "sheols\n", - "shepherd\n", - "shepherded\n", - "shepherdess\n", - "shepherdesses\n", - "shepherding\n", - "shepherds\n", - "sherbert\n", - "sherberts\n", - "sherbet\n", - "sherbets\n", - "sherd\n", - "sherds\n", - "shereef\n", - "shereefs\n", - "sherif\n", - "sheriff\n", - "sheriffs\n", - "sherifs\n", - "sherlock\n", - "sherlocks\n", - "sheroot\n", - "sheroots\n", - "sherries\n", - "sherris\n", - "sherrises\n", - "sherry\n", - "shes\n", - "shetland\n", - "shetlands\n", - "sheuch\n", - "sheuchs\n", - "sheugh\n", - "sheughs\n", - "shew\n", - "shewed\n", - "shewer\n", - "shewers\n", - "shewing\n", - "shewn\n", - "shews\n", - "shh\n", - "shibah\n", - "shibahs\n", - "shicksa\n", - "shicksas\n", - "shied\n", - "shiel\n", - "shield\n", - "shielded\n", - "shielder\n", - "shielders\n", - "shielding\n", - "shields\n", - "shieling\n", - "shielings\n", - "shiels\n", - "shier\n", - "shiers\n", - "shies\n", - "shiest\n", - "shift\n", - "shifted\n", - "shifter\n", - "shifters\n", - "shiftier\n", - "shiftiest\n", - "shiftily\n", - "shifting\n", - "shiftless\n", - "shiftlessness\n", - "shiftlessnesses\n", - "shifts\n", - "shifty\n", - "shigella\n", - "shigellae\n", - "shigellas\n", - "shikar\n", - "shikaree\n", - "shikarees\n", - "shikari\n", - "shikaris\n", - "shikarred\n", - "shikarring\n", - "shikars\n", - "shiksa\n", - "shiksas\n", - "shikse\n", - "shikses\n", - "shilingi\n", - "shill\n", - "shillala\n", - "shillalas\n", - "shilled\n", - "shillelagh\n", - "shillelaghs\n", - "shilling\n", - "shillings\n", - "shills\n", - "shilpit\n", - "shily\n", - "shim\n", - "shimmed\n", - "shimmer\n", - "shimmered\n", - "shimmering\n", - "shimmers\n", - "shimmery\n", - "shimmied\n", - "shimmies\n", - "shimming\n", - "shimmy\n", - "shimmying\n", - "shims\n", - "shin\n", - "shinbone\n", - "shinbones\n", - "shindies\n", - "shindig\n", - "shindigs\n", - "shindy\n", - "shindys\n", - "shine\n", - "shined\n", - "shiner\n", - "shiners\n", - "shines\n", - "shingle\n", - "shingled\n", - "shingler\n", - "shinglers\n", - "shingles\n", - "shingling\n", - "shingly\n", - "shinier\n", - "shiniest\n", - "shinily\n", - "shining\n", - "shinleaf\n", - "shinleafs\n", - "shinleaves\n", - "shinned\n", - "shinneries\n", - "shinnery\n", - "shinney\n", - "shinneys\n", - "shinnied\n", - "shinnies\n", - "shinning\n", - "shinny\n", - "shinnying\n", - "shins\n", - "shiny\n", - "ship\n", - "shipboard\n", - "shipboards\n", - "shipbuilder\n", - "shipbuilders\n", - "shiplap\n", - "shiplaps\n", - "shipload\n", - "shiploads\n", - "shipman\n", - "shipmate\n", - "shipmates\n", - "shipmen\n", - "shipment\n", - "shipments\n", - "shipped\n", - "shippen\n", - "shippens\n", - "shipper\n", - "shippers\n", - "shipping\n", - "shippings\n", - "shippon\n", - "shippons\n", - "ships\n", - "shipshape\n", - "shipside\n", - "shipsides\n", - "shipway\n", - "shipways\n", - "shipworm\n", - "shipworms\n", - "shipwreck\n", - "shipwrecked\n", - "shipwrecking\n", - "shipwrecks\n", - "shipyard\n", - "shipyards\n", - "shire\n", - "shires\n", - "shirk\n", - "shirked\n", - "shirker\n", - "shirkers\n", - "shirking\n", - "shirks\n", - "shirr\n", - "shirred\n", - "shirring\n", - "shirrings\n", - "shirrs\n", - "shirt\n", - "shirtier\n", - "shirtiest\n", - "shirting\n", - "shirtings\n", - "shirtless\n", - "shirts\n", - "shirty\n", - "shist\n", - "shists\n", - "shiv\n", - "shiva\n", - "shivah\n", - "shivahs\n", - "shivaree\n", - "shivareed\n", - "shivareeing\n", - "shivarees\n", - "shivas\n", - "shive\n", - "shiver\n", - "shivered\n", - "shiverer\n", - "shiverers\n", - "shivering\n", - "shivers\n", - "shivery\n", - "shives\n", - "shivs\n", - "shkotzim\n", - "shlemiel\n", - "shlemiels\n", - "shlock\n", - "shlocks\n", - "shmo\n", - "shmoes\n", - "shnaps\n", - "shoal\n", - "shoaled\n", - "shoaler\n", - "shoalest\n", - "shoalier\n", - "shoaliest\n", - "shoaling\n", - "shoals\n", - "shoaly\n", - "shoat\n", - "shoats\n", - "shock\n", - "shocked\n", - "shocker\n", - "shockers\n", - "shocking\n", - "shockproof\n", - "shocks\n", - "shod\n", - "shodden\n", - "shoddier\n", - "shoddies\n", - "shoddiest\n", - "shoddily\n", - "shoddiness\n", - "shoddinesses\n", - "shoddy\n", - "shoe\n", - "shoebill\n", - "shoebills\n", - "shoed\n", - "shoehorn\n", - "shoehorned\n", - "shoehorning\n", - "shoehorns\n", - "shoeing\n", - "shoelace\n", - "shoelaces\n", - "shoemaker\n", - "shoemakers\n", - "shoepac\n", - "shoepack\n", - "shoepacks\n", - "shoepacs\n", - "shoer\n", - "shoers\n", - "shoes\n", - "shoetree\n", - "shoetrees\n", - "shofar\n", - "shofars\n", - "shofroth\n", - "shog\n", - "shogged\n", - "shogging\n", - "shogs\n", - "shogun\n", - "shogunal\n", - "shoguns\n", - "shoji\n", - "shojis\n", - "sholom\n", - "shone\n", - "shoo\n", - "shooed\n", - "shooflies\n", - "shoofly\n", - "shooing\n", - "shook\n", - "shooks\n", - "shool\n", - "shooled\n", - "shooling\n", - "shools\n", - "shoon\n", - "shoos\n", - "shoot\n", - "shooter\n", - "shooters\n", - "shooting\n", - "shootings\n", - "shoots\n", - "shop\n", - "shopboy\n", - "shopboys\n", - "shopgirl\n", - "shopgirls\n", - "shophar\n", - "shophars\n", - "shophroth\n", - "shopkeeper\n", - "shopkeepers\n", - "shoplift\n", - "shoplifted\n", - "shoplifter\n", - "shoplifters\n", - "shoplifting\n", - "shoplifts\n", - "shopman\n", - "shopmen\n", - "shoppe\n", - "shopped\n", - "shopper\n", - "shoppers\n", - "shoppes\n", - "shopping\n", - "shoppings\n", - "shops\n", - "shoptalk\n", - "shoptalks\n", - "shopworn\n", - "shoran\n", - "shorans\n", - "shore\n", - "shorebird\n", - "shorebirds\n", - "shored\n", - "shoreless\n", - "shores\n", - "shoring\n", - "shorings\n", - "shorl\n", - "shorls\n", - "shorn\n", - "short\n", - "shortage\n", - "shortages\n", - "shortcake\n", - "shortcakes\n", - "shortchange\n", - "shortchanged\n", - "shortchanges\n", - "shortchanging\n", - "shortcoming\n", - "shortcomings\n", - "shortcut\n", - "shortcuts\n", - "shorted\n", - "shorten\n", - "shortened\n", - "shortening\n", - "shortens\n", - "shorter\n", - "shortest\n", - "shorthand\n", - "shorthands\n", - "shortia\n", - "shortias\n", - "shortie\n", - "shorties\n", - "shorting\n", - "shortish\n", - "shortliffe\n", - "shortly\n", - "shortness\n", - "shortnesses\n", - "shorts\n", - "shortsighted\n", - "shorty\n", - "shot\n", - "shote\n", - "shotes\n", - "shotgun\n", - "shotgunned\n", - "shotgunning\n", - "shotguns\n", - "shots\n", - "shott\n", - "shotted\n", - "shotten\n", - "shotting\n", - "shotts\n", - "should\n", - "shoulder\n", - "shouldered\n", - "shouldering\n", - "shoulders\n", - "shouldest\n", - "shouldst\n", - "shout\n", - "shouted\n", - "shouter\n", - "shouters\n", - "shouting\n", - "shouts\n", - "shove\n", - "shoved\n", - "shovel\n", - "shoveled\n", - "shoveler\n", - "shovelers\n", - "shoveling\n", - "shovelled\n", - "shovelling\n", - "shovels\n", - "shover\n", - "shovers\n", - "shoves\n", - "shoving\n", - "show\n", - "showboat\n", - "showboats\n", - "showcase\n", - "showcased\n", - "showcases\n", - "showcasing\n", - "showdown\n", - "showdowns\n", - "showed\n", - "shower\n", - "showered\n", - "showering\n", - "showers\n", - "showery\n", - "showgirl\n", - "showgirls\n", - "showier\n", - "showiest\n", - "showily\n", - "showiness\n", - "showinesses\n", - "showing\n", - "showings\n", - "showman\n", - "showmen\n", - "shown\n", - "showoff\n", - "showoffs\n", - "showroom\n", - "showrooms\n", - "shows\n", - "showy\n", - "shrank\n", - "shrapnel\n", - "shred\n", - "shredded\n", - "shredder\n", - "shredders\n", - "shredding\n", - "shreds\n", - "shrew\n", - "shrewd\n", - "shrewder\n", - "shrewdest\n", - "shrewdly\n", - "shrewdness\n", - "shrewdnesses\n", - "shrewed\n", - "shrewing\n", - "shrewish\n", - "shrews\n", - "shri\n", - "shriek\n", - "shrieked\n", - "shrieker\n", - "shriekers\n", - "shriekier\n", - "shriekiest\n", - "shrieking\n", - "shrieks\n", - "shrieky\n", - "shrieval\n", - "shrieve\n", - "shrieved\n", - "shrieves\n", - "shrieving\n", - "shrift\n", - "shrifts\n", - "shrike\n", - "shrikes\n", - "shrill\n", - "shrilled\n", - "shriller\n", - "shrillest\n", - "shrilling\n", - "shrills\n", - "shrilly\n", - "shrimp\n", - "shrimped\n", - "shrimper\n", - "shrimpers\n", - "shrimpier\n", - "shrimpiest\n", - "shrimping\n", - "shrimps\n", - "shrimpy\n", - "shrine\n", - "shrined\n", - "shrines\n", - "shrining\n", - "shrink\n", - "shrinkable\n", - "shrinkage\n", - "shrinkages\n", - "shrinker\n", - "shrinkers\n", - "shrinking\n", - "shrinks\n", - "shris\n", - "shrive\n", - "shrived\n", - "shrivel\n", - "shriveled\n", - "shriveling\n", - "shrivelled\n", - "shrivelling\n", - "shrivels\n", - "shriven\n", - "shriver\n", - "shrivers\n", - "shrives\n", - "shriving\n", - "shroff\n", - "shroffed\n", - "shroffing\n", - "shroffs\n", - "shroud\n", - "shrouded\n", - "shrouding\n", - "shrouds\n", - "shrove\n", - "shrub\n", - "shrubberies\n", - "shrubbery\n", - "shrubbier\n", - "shrubbiest\n", - "shrubby\n", - "shrubs\n", - "shrug\n", - "shrugged\n", - "shrugging\n", - "shrugs\n", - "shrunk\n", - "shrunken\n", - "shtetel\n", - "shtetl\n", - "shtetlach\n", - "shtick\n", - "shticks\n", - "shuck\n", - "shucked\n", - "shucker\n", - "shuckers\n", - "shucking\n", - "shuckings\n", - "shucks\n", - "shudder\n", - "shuddered\n", - "shuddering\n", - "shudders\n", - "shuddery\n", - "shuffle\n", - "shuffleboard\n", - "shuffleboards\n", - "shuffled\n", - "shuffler\n", - "shufflers\n", - "shuffles\n", - "shuffling\n", - "shul\n", - "shuln\n", - "shuls\n", - "shun\n", - "shunned\n", - "shunner\n", - "shunners\n", - "shunning\n", - "shunpike\n", - "shunpikes\n", - "shuns\n", - "shunt\n", - "shunted\n", - "shunter\n", - "shunters\n", - "shunting\n", - "shunts\n", - "shush\n", - "shushed\n", - "shushes\n", - "shushing\n", - "shut\n", - "shutdown\n", - "shutdowns\n", - "shute\n", - "shuted\n", - "shutes\n", - "shuteye\n", - "shuteyes\n", - "shuting\n", - "shutoff\n", - "shutoffs\n", - "shutout\n", - "shutouts\n", - "shuts\n", - "shutter\n", - "shuttered\n", - "shuttering\n", - "shutters\n", - "shutting\n", - "shuttle\n", - "shuttlecock\n", - "shuttlecocks\n", - "shuttled\n", - "shuttles\n", - "shuttling\n", - "shwanpan\n", - "shwanpans\n", - "shy\n", - "shyer\n", - "shyers\n", - "shyest\n", - "shying\n", - "shylock\n", - "shylocked\n", - "shylocking\n", - "shylocks\n", - "shyly\n", - "shyness\n", - "shynesses\n", - "shyster\n", - "shysters\n", - "si\n", - "sial\n", - "sialic\n", - "sialoid\n", - "sials\n", - "siamang\n", - "siamangs\n", - "siamese\n", - "siameses\n", - "sib\n", - "sibb\n", - "sibbs\n", - "sibilant\n", - "sibilants\n", - "sibilate\n", - "sibilated\n", - "sibilates\n", - "sibilating\n", - "sibling\n", - "siblings\n", - "sibs\n", - "sibyl\n", - "sibylic\n", - "sibyllic\n", - "sibyls\n", - "sic\n", - "siccan\n", - "sicced\n", - "siccing\n", - "sice\n", - "sices\n", - "sick\n", - "sickbay\n", - "sickbays\n", - "sickbed\n", - "sickbeds\n", - "sicked\n", - "sicken\n", - "sickened\n", - "sickener\n", - "sickeners\n", - "sickening\n", - "sickens\n", - "sicker\n", - "sickerly\n", - "sickest\n", - "sicking\n", - "sickish\n", - "sickle\n", - "sickled\n", - "sickles\n", - "sicklied\n", - "sicklier\n", - "sicklies\n", - "sickliest\n", - "sicklily\n", - "sickling\n", - "sickly\n", - "sicklying\n", - "sickness\n", - "sicknesses\n", - "sickroom\n", - "sickrooms\n", - "sicks\n", - "sics\n", - "siddur\n", - "siddurim\n", - "siddurs\n", - "side\n", - "sidearm\n", - "sideband\n", - "sidebands\n", - "sideboard\n", - "sideboards\n", - "sideburns\n", - "sidecar\n", - "sidecars\n", - "sided\n", - "sidehill\n", - "sidehills\n", - "sidekick\n", - "sidekicks\n", - "sideline\n", - "sidelined\n", - "sidelines\n", - "sideling\n", - "sidelining\n", - "sidelong\n", - "sideman\n", - "sidemen\n", - "sidereal\n", - "siderite\n", - "siderites\n", - "sides\n", - "sideshow\n", - "sideshows\n", - "sideslip\n", - "sideslipped\n", - "sideslipping\n", - "sideslips\n", - "sidespin\n", - "sidespins\n", - "sidestep\n", - "sidestepped\n", - "sidestepping\n", - "sidesteps\n", - "sideswipe\n", - "sideswiped\n", - "sideswipes\n", - "sideswiping\n", - "sidetrack\n", - "sidetracked\n", - "sidetracking\n", - "sidetracks\n", - "sidewalk\n", - "sidewalks\n", - "sidewall\n", - "sidewalls\n", - "sideward\n", - "sideway\n", - "sideways\n", - "sidewise\n", - "siding\n", - "sidings\n", - "sidle\n", - "sidled\n", - "sidler\n", - "sidlers\n", - "sidles\n", - "sidling\n", - "siege\n", - "sieged\n", - "sieges\n", - "sieging\n", - "siemens\n", - "sienite\n", - "sienites\n", - "sienna\n", - "siennas\n", - "sierozem\n", - "sierozems\n", - "sierra\n", - "sierran\n", - "sierras\n", - "siesta\n", - "siestas\n", - "sieur\n", - "sieurs\n", - "sieva\n", - "sieve\n", - "sieved\n", - "sieves\n", - "sieving\n", - "siffleur\n", - "siffleurs\n", - "sift\n", - "sifted\n", - "sifter\n", - "sifters\n", - "sifting\n", - "siftings\n", - "sifts\n", - "siganid\n", - "siganids\n", - "sigh\n", - "sighed\n", - "sigher\n", - "sighers\n", - "sighing\n", - "sighless\n", - "sighlike\n", - "sighs\n", - "sight\n", - "sighted\n", - "sighter\n", - "sighters\n", - "sighting\n", - "sightless\n", - "sightlier\n", - "sightliest\n", - "sightly\n", - "sights\n", - "sightsaw\n", - "sightsee\n", - "sightseeing\n", - "sightseen\n", - "sightseer\n", - "sightseers\n", - "sightsees\n", - "sigil\n", - "sigils\n", - "sigloi\n", - "siglos\n", - "sigma\n", - "sigmas\n", - "sigmate\n", - "sigmoid\n", - "sigmoids\n", - "sign\n", - "signal\n", - "signaled\n", - "signaler\n", - "signalers\n", - "signaling\n", - "signalled\n", - "signalling\n", - "signally\n", - "signals\n", - "signatories\n", - "signatory\n", - "signature\n", - "signatures\n", - "signed\n", - "signer\n", - "signers\n", - "signet\n", - "signeted\n", - "signeting\n", - "signets\n", - "signficance\n", - "signficances\n", - "signficant\n", - "signficantly\n", - "significance\n", - "significances\n", - "significant\n", - "significantly\n", - "signification\n", - "significations\n", - "signified\n", - "signifies\n", - "signify\n", - "signifying\n", - "signing\n", - "signior\n", - "signiori\n", - "signiories\n", - "signiors\n", - "signiory\n", - "signor\n", - "signora\n", - "signoras\n", - "signore\n", - "signori\n", - "signories\n", - "signors\n", - "signory\n", - "signpost\n", - "signposted\n", - "signposting\n", - "signposts\n", - "signs\n", - "sike\n", - "siker\n", - "sikes\n", - "silage\n", - "silages\n", - "silane\n", - "silanes\n", - "sild\n", - "silds\n", - "silence\n", - "silenced\n", - "silencer\n", - "silencers\n", - "silences\n", - "silencing\n", - "sileni\n", - "silent\n", - "silenter\n", - "silentest\n", - "silently\n", - "silents\n", - "silenus\n", - "silesia\n", - "silesias\n", - "silex\n", - "silexes\n", - "silhouette\n", - "silhouetted\n", - "silhouettes\n", - "silhouetting\n", - "silica\n", - "silicas\n", - "silicate\n", - "silicates\n", - "silicic\n", - "silicide\n", - "silicides\n", - "silicified\n", - "silicifies\n", - "silicify\n", - "silicifying\n", - "silicium\n", - "siliciums\n", - "silicle\n", - "silicles\n", - "silicon\n", - "silicone\n", - "silicones\n", - "silicons\n", - "siliqua\n", - "siliquae\n", - "silique\n", - "siliques\n", - "silk\n", - "silked\n", - "silken\n", - "silkier\n", - "silkiest\n", - "silkily\n", - "silking\n", - "silklike\n", - "silks\n", - "silkweed\n", - "silkweeds\n", - "silkworm\n", - "silkworms\n", - "silky\n", - "sill\n", - "sillabub\n", - "sillabubs\n", - "siller\n", - "sillers\n", - "sillibib\n", - "sillibibs\n", - "sillier\n", - "sillies\n", - "silliest\n", - "sillily\n", - "silliness\n", - "sillinesses\n", - "sills\n", - "silly\n", - "silo\n", - "siloed\n", - "siloing\n", - "silos\n", - "siloxane\n", - "siloxanes\n", - "silt\n", - "silted\n", - "siltier\n", - "siltiest\n", - "silting\n", - "silts\n", - "silty\n", - "silurid\n", - "silurids\n", - "siluroid\n", - "siluroids\n", - "silva\n", - "silvae\n", - "silvan\n", - "silvans\n", - "silvas\n", - "silver\n", - "silvered\n", - "silverer\n", - "silverers\n", - "silvering\n", - "silverly\n", - "silvern\n", - "silvers\n", - "silverware\n", - "silverwares\n", - "silvery\n", - "silvical\n", - "silvics\n", - "sim\n", - "sima\n", - "simar\n", - "simars\n", - "simaruba\n", - "simarubas\n", - "simas\n", - "simazine\n", - "simazines\n", - "simian\n", - "simians\n", - "similar\n", - "similarities\n", - "similarity\n", - "similarly\n", - "simile\n", - "similes\n", - "similitude\n", - "similitudes\n", - "simioid\n", - "simious\n", - "simitar\n", - "simitars\n", - "simlin\n", - "simlins\n", - "simmer\n", - "simmered\n", - "simmering\n", - "simmers\n", - "simnel\n", - "simnels\n", - "simoleon\n", - "simoleons\n", - "simoniac\n", - "simoniacs\n", - "simonies\n", - "simonist\n", - "simonists\n", - "simonize\n", - "simonized\n", - "simonizes\n", - "simonizing\n", - "simony\n", - "simoom\n", - "simooms\n", - "simoon\n", - "simoons\n", - "simp\n", - "simper\n", - "simpered\n", - "simperer\n", - "simperers\n", - "simpering\n", - "simpers\n", - "simple\n", - "simpleness\n", - "simplenesses\n", - "simpler\n", - "simples\n", - "simplest\n", - "simpleton\n", - "simpletons\n", - "simplex\n", - "simplexes\n", - "simplices\n", - "simplicia\n", - "simplicities\n", - "simplicity\n", - "simplification\n", - "simplifications\n", - "simplified\n", - "simplifies\n", - "simplify\n", - "simplifying\n", - "simplism\n", - "simplisms\n", - "simply\n", - "simps\n", - "sims\n", - "simulant\n", - "simulants\n", - "simular\n", - "simulars\n", - "simulate\n", - "simulated\n", - "simulates\n", - "simulating\n", - "simulation\n", - "simulations\n", - "simultaneous\n", - "simultaneously\n", - "simultaneousness\n", - "simultaneousnesses\n", - "sin\n", - "sinapism\n", - "sinapisms\n", - "since\n", - "sincere\n", - "sincerely\n", - "sincerer\n", - "sincerest\n", - "sincerities\n", - "sincerity\n", - "sincipita\n", - "sinciput\n", - "sinciputs\n", - "sine\n", - "sinecure\n", - "sinecures\n", - "sines\n", - "sinew\n", - "sinewed\n", - "sinewing\n", - "sinews\n", - "sinewy\n", - "sinfonia\n", - "sinfonie\n", - "sinful\n", - "sinfully\n", - "sing\n", - "singable\n", - "singe\n", - "singed\n", - "singeing\n", - "singer\n", - "singers\n", - "singes\n", - "singing\n", - "single\n", - "singled\n", - "singleness\n", - "singlenesses\n", - "singles\n", - "singlet\n", - "singlets\n", - "singling\n", - "singly\n", - "sings\n", - "singsong\n", - "singsongs\n", - "singular\n", - "singularities\n", - "singularity\n", - "singularly\n", - "singulars\n", - "sinh\n", - "sinhs\n", - "sinicize\n", - "sinicized\n", - "sinicizes\n", - "sinicizing\n", - "sinister\n", - "sink\n", - "sinkable\n", - "sinkage\n", - "sinkages\n", - "sinker\n", - "sinkers\n", - "sinkhole\n", - "sinkholes\n", - "sinking\n", - "sinks\n", - "sinless\n", - "sinned\n", - "sinner\n", - "sinners\n", - "sinning\n", - "sinologies\n", - "sinology\n", - "sinopia\n", - "sinopias\n", - "sinopie\n", - "sins\n", - "sinsyne\n", - "sinter\n", - "sintered\n", - "sintering\n", - "sinters\n", - "sinuate\n", - "sinuated\n", - "sinuates\n", - "sinuating\n", - "sinuous\n", - "sinuousities\n", - "sinuousity\n", - "sinuously\n", - "sinus\n", - "sinuses\n", - "sinusoid\n", - "sinusoids\n", - "sip\n", - "sipe\n", - "siped\n", - "sipes\n", - "siphon\n", - "siphonal\n", - "siphoned\n", - "siphonic\n", - "siphoning\n", - "siphons\n", - "siping\n", - "sipped\n", - "sipper\n", - "sippers\n", - "sippet\n", - "sippets\n", - "sipping\n", - "sips\n", - "sir\n", - "sirdar\n", - "sirdars\n", - "sire\n", - "sired\n", - "siree\n", - "sirees\n", - "siren\n", - "sirenian\n", - "sirenians\n", - "sirens\n", - "sires\n", - "siring\n", - "sirloin\n", - "sirloins\n", - "sirocco\n", - "siroccos\n", - "sirra\n", - "sirrah\n", - "sirrahs\n", - "sirras\n", - "sirree\n", - "sirrees\n", - "sirs\n", - "sirup\n", - "sirups\n", - "sirupy\n", - "sirvente\n", - "sirventes\n", - "sis\n", - "sisal\n", - "sisals\n", - "sises\n", - "siskin\n", - "siskins\n", - "sissier\n", - "sissies\n", - "sissiest\n", - "sissy\n", - "sissyish\n", - "sister\n", - "sistered\n", - "sisterhood\n", - "sisterhoods\n", - "sistering\n", - "sisterly\n", - "sisters\n", - "sistra\n", - "sistroid\n", - "sistrum\n", - "sistrums\n", - "sit\n", - "sitar\n", - "sitarist\n", - "sitarists\n", - "sitars\n", - "site\n", - "sited\n", - "sites\n", - "sith\n", - "sithence\n", - "sithens\n", - "siti\n", - "siting\n", - "sitologies\n", - "sitology\n", - "sits\n", - "sitten\n", - "sitter\n", - "sitters\n", - "sitting\n", - "sittings\n", - "situate\n", - "situated\n", - "situates\n", - "situating\n", - "situation\n", - "situations\n", - "situs\n", - "situses\n", - "sitzmark\n", - "sitzmarks\n", - "siver\n", - "sivers\n", - "six\n", - "sixes\n", - "sixfold\n", - "sixmo\n", - "sixmos\n", - "sixpence\n", - "sixpences\n", - "sixpenny\n", - "sixte\n", - "sixteen\n", - "sixteens\n", - "sixteenth\n", - "sixteenths\n", - "sixtes\n", - "sixth\n", - "sixthly\n", - "sixths\n", - "sixties\n", - "sixtieth\n", - "sixtieths\n", - "sixty\n", - "sizable\n", - "sizably\n", - "sizar\n", - "sizars\n", - "size\n", - "sizeable\n", - "sizeably\n", - "sized\n", - "sizer\n", - "sizers\n", - "sizes\n", - "sizier\n", - "siziest\n", - "siziness\n", - "sizinesses\n", - "sizing\n", - "sizings\n", - "sizy\n", - "sizzle\n", - "sizzled\n", - "sizzler\n", - "sizzlers\n", - "sizzles\n", - "sizzling\n", - "skag\n", - "skags\n", - "skald\n", - "skaldic\n", - "skalds\n", - "skat\n", - "skate\n", - "skated\n", - "skater\n", - "skaters\n", - "skates\n", - "skating\n", - "skatings\n", - "skatol\n", - "skatole\n", - "skatoles\n", - "skatols\n", - "skats\n", - "skean\n", - "skeane\n", - "skeanes\n", - "skeans\n", - "skee\n", - "skeed\n", - "skeeing\n", - "skeen\n", - "skeens\n", - "skees\n", - "skeet\n", - "skeeter\n", - "skeeters\n", - "skeets\n", - "skeg\n", - "skegs\n", - "skeigh\n", - "skein\n", - "skeined\n", - "skeining\n", - "skeins\n", - "skeletal\n", - "skeleton\n", - "skeletons\n", - "skellum\n", - "skellums\n", - "skelp\n", - "skelped\n", - "skelping\n", - "skelpit\n", - "skelps\n", - "skelter\n", - "skeltered\n", - "skeltering\n", - "skelters\n", - "skene\n", - "skenes\n", - "skep\n", - "skeps\n", - "skepsis\n", - "skepsises\n", - "skeptic\n", - "skeptical\n", - "skepticism\n", - "skepticisms\n", - "skeptics\n", - "skerries\n", - "skerry\n", - "sketch\n", - "sketched\n", - "sketcher\n", - "sketchers\n", - "sketches\n", - "sketchier\n", - "sketchiest\n", - "sketching\n", - "sketchy\n", - "skew\n", - "skewback\n", - "skewbacks\n", - "skewbald\n", - "skewbalds\n", - "skewed\n", - "skewer\n", - "skewered\n", - "skewering\n", - "skewers\n", - "skewing\n", - "skewness\n", - "skewnesses\n", - "skews\n", - "ski\n", - "skiable\n", - "skiagram\n", - "skiagrams\n", - "skibob\n", - "skibobs\n", - "skid\n", - "skidded\n", - "skidder\n", - "skidders\n", - "skiddier\n", - "skiddiest\n", - "skidding\n", - "skiddoo\n", - "skiddooed\n", - "skiddooing\n", - "skiddoos\n", - "skiddy\n", - "skidoo\n", - "skidooed\n", - "skidooing\n", - "skidoos\n", - "skids\n", - "skidway\n", - "skidways\n", - "skied\n", - "skier\n", - "skiers\n", - "skies\n", - "skiey\n", - "skiff\n", - "skiffle\n", - "skiffled\n", - "skiffles\n", - "skiffling\n", - "skiffs\n", - "skiing\n", - "skiings\n", - "skiis\n", - "skijorer\n", - "skijorers\n", - "skilful\n", - "skill\n", - "skilled\n", - "skilless\n", - "skillet\n", - "skillets\n", - "skillful\n", - "skillfully\n", - "skillfulness\n", - "skillfulnesses\n", - "skilling\n", - "skillings\n", - "skills\n", - "skim\n", - "skimmed\n", - "skimmer\n", - "skimmers\n", - "skimming\n", - "skimmings\n", - "skimo\n", - "skimos\n", - "skimp\n", - "skimped\n", - "skimpier\n", - "skimpiest\n", - "skimpily\n", - "skimping\n", - "skimps\n", - "skimpy\n", - "skims\n", - "skin\n", - "skinflint\n", - "skinflints\n", - "skinful\n", - "skinfuls\n", - "skinhead\n", - "skinheads\n", - "skink\n", - "skinked\n", - "skinker\n", - "skinkers\n", - "skinking\n", - "skinks\n", - "skinless\n", - "skinlike\n", - "skinned\n", - "skinner\n", - "skinners\n", - "skinnier\n", - "skinniest\n", - "skinning\n", - "skinny\n", - "skins\n", - "skint\n", - "skintight\n", - "skioring\n", - "skiorings\n", - "skip\n", - "skipjack\n", - "skipjacks\n", - "skiplane\n", - "skiplanes\n", - "skipped\n", - "skipper\n", - "skippered\n", - "skippering\n", - "skippers\n", - "skippet\n", - "skippets\n", - "skipping\n", - "skips\n", - "skirl\n", - "skirled\n", - "skirling\n", - "skirls\n", - "skirmish\n", - "skirmished\n", - "skirmishes\n", - "skirmishing\n", - "skirr\n", - "skirred\n", - "skirret\n", - "skirrets\n", - "skirring\n", - "skirrs\n", - "skirt\n", - "skirted\n", - "skirter\n", - "skirters\n", - "skirting\n", - "skirtings\n", - "skirts\n", - "skis\n", - "skit\n", - "skite\n", - "skited\n", - "skites\n", - "skiting\n", - "skits\n", - "skitter\n", - "skittered\n", - "skitterier\n", - "skitteriest\n", - "skittering\n", - "skitters\n", - "skittery\n", - "skittish\n", - "skittle\n", - "skittles\n", - "skive\n", - "skived\n", - "skiver\n", - "skivers\n", - "skives\n", - "skiving\n", - "skivvies\n", - "skivvy\n", - "skiwear\n", - "skiwears\n", - "sklent\n", - "sklented\n", - "sklenting\n", - "sklents\n", - "skoal\n", - "skoaled\n", - "skoaling\n", - "skoals\n", - "skookum\n", - "skreegh\n", - "skreeghed\n", - "skreeghing\n", - "skreeghs\n", - "skreigh\n", - "skreighed\n", - "skreighing\n", - "skreighs\n", - "skua\n", - "skuas\n", - "skulk\n", - "skulked\n", - "skulker\n", - "skulkers\n", - "skulking\n", - "skulks\n", - "skull\n", - "skullcap\n", - "skullcaps\n", - "skulled\n", - "skulls\n", - "skunk\n", - "skunked\n", - "skunking\n", - "skunks\n", - "sky\n", - "skyborne\n", - "skycap\n", - "skycaps\n", - "skydive\n", - "skydived\n", - "skydiver\n", - "skydivers\n", - "skydives\n", - "skydiving\n", - "skydove\n", - "skyed\n", - "skyey\n", - "skyhook\n", - "skyhooks\n", - "skying\n", - "skyjack\n", - "skyjacked\n", - "skyjacking\n", - "skyjacks\n", - "skylark\n", - "skylarked\n", - "skylarking\n", - "skylarks\n", - "skylight\n", - "skylights\n", - "skyline\n", - "skylines\n", - "skyman\n", - "skymen\n", - "skyphoi\n", - "skyphos\n", - "skyrocket\n", - "skyrocketed\n", - "skyrocketing\n", - "skyrockets\n", - "skysail\n", - "skysails\n", - "skyscraper\n", - "skyscrapers\n", - "skyward\n", - "skywards\n", - "skyway\n", - "skyways\n", - "skywrite\n", - "skywrites\n", - "skywriting\n", - "skywritten\n", - "skywrote\n", - "slab\n", - "slabbed\n", - "slabber\n", - "slabbered\n", - "slabbering\n", - "slabbers\n", - "slabbery\n", - "slabbing\n", - "slabs\n", - "slack\n", - "slacked\n", - "slacken\n", - "slackened\n", - "slackening\n", - "slackens\n", - "slacker\n", - "slackers\n", - "slackest\n", - "slacking\n", - "slackly\n", - "slackness\n", - "slacknesses\n", - "slacks\n", - "slag\n", - "slagged\n", - "slaggier\n", - "slaggiest\n", - "slagging\n", - "slaggy\n", - "slags\n", - "slain\n", - "slakable\n", - "slake\n", - "slaked\n", - "slaker\n", - "slakers\n", - "slakes\n", - "slaking\n", - "slalom\n", - "slalomed\n", - "slaloming\n", - "slaloms\n", - "slam\n", - "slammed\n", - "slamming\n", - "slams\n", - "slander\n", - "slandered\n", - "slanderer\n", - "slanderers\n", - "slandering\n", - "slanderous\n", - "slanders\n", - "slang\n", - "slanged\n", - "slangier\n", - "slangiest\n", - "slangily\n", - "slanging\n", - "slangs\n", - "slangy\n", - "slank\n", - "slant\n", - "slanted\n", - "slanting\n", - "slants\n", - "slap\n", - "slapdash\n", - "slapdashes\n", - "slapjack\n", - "slapjacks\n", - "slapped\n", - "slapper\n", - "slappers\n", - "slapping\n", - "slaps\n", - "slash\n", - "slashed\n", - "slasher\n", - "slashers\n", - "slashes\n", - "slashing\n", - "slashings\n", - "slat\n", - "slatch\n", - "slatches\n", - "slate\n", - "slated\n", - "slater\n", - "slaters\n", - "slates\n", - "slather\n", - "slathered\n", - "slathering\n", - "slathers\n", - "slatier\n", - "slatiest\n", - "slating\n", - "slatings\n", - "slats\n", - "slatted\n", - "slattern\n", - "slatterns\n", - "slatting\n", - "slaty\n", - "slaughter\n", - "slaughtered\n", - "slaughterhouse\n", - "slaughterhouses\n", - "slaughtering\n", - "slaughters\n", - "slave\n", - "slaved\n", - "slaver\n", - "slavered\n", - "slaverer\n", - "slaverers\n", - "slaveries\n", - "slavering\n", - "slavers\n", - "slavery\n", - "slaves\n", - "slavey\n", - "slaveys\n", - "slaving\n", - "slavish\n", - "slaw\n", - "slaws\n", - "slay\n", - "slayer\n", - "slayers\n", - "slaying\n", - "slays\n", - "sleave\n", - "sleaved\n", - "sleaves\n", - "sleaving\n", - "sleazier\n", - "sleaziest\n", - "sleazily\n", - "sleazy\n", - "sled\n", - "sledded\n", - "sledder\n", - "sledders\n", - "sledding\n", - "sleddings\n", - "sledge\n", - "sledged\n", - "sledgehammer\n", - "sledgehammered\n", - "sledgehammering\n", - "sledgehammers\n", - "sledges\n", - "sledging\n", - "sleds\n", - "sleek\n", - "sleeked\n", - "sleeken\n", - "sleekened\n", - "sleekening\n", - "sleekens\n", - "sleeker\n", - "sleekest\n", - "sleekier\n", - "sleekiest\n", - "sleeking\n", - "sleekit\n", - "sleekly\n", - "sleeks\n", - "sleeky\n", - "sleep\n", - "sleeper\n", - "sleepers\n", - "sleepier\n", - "sleepiest\n", - "sleepily\n", - "sleepiness\n", - "sleeping\n", - "sleepings\n", - "sleepless\n", - "sleeplessness\n", - "sleeps\n", - "sleepwalk\n", - "sleepwalked\n", - "sleepwalker\n", - "sleepwalkers\n", - "sleepwalking\n", - "sleepwalks\n", - "sleepy\n", - "sleet\n", - "sleeted\n", - "sleetier\n", - "sleetiest\n", - "sleeting\n", - "sleets\n", - "sleety\n", - "sleeve\n", - "sleeved\n", - "sleeveless\n", - "sleeves\n", - "sleeving\n", - "sleigh\n", - "sleighed\n", - "sleigher\n", - "sleighers\n", - "sleighing\n", - "sleighs\n", - "sleight\n", - "sleights\n", - "slender\n", - "slenderer\n", - "slenderest\n", - "slept\n", - "sleuth\n", - "sleuthed\n", - "sleuthing\n", - "sleuths\n", - "slew\n", - "slewed\n", - "slewing\n", - "slews\n", - "slice\n", - "sliced\n", - "slicer\n", - "slicers\n", - "slices\n", - "slicing\n", - "slick\n", - "slicked\n", - "slicker\n", - "slickers\n", - "slickest\n", - "slicking\n", - "slickly\n", - "slicks\n", - "slid\n", - "slidable\n", - "slidden\n", - "slide\n", - "slider\n", - "sliders\n", - "slides\n", - "slideway\n", - "slideways\n", - "sliding\n", - "slier\n", - "sliest\n", - "slight\n", - "slighted\n", - "slighter\n", - "slightest\n", - "slighting\n", - "slightly\n", - "slights\n", - "slily\n", - "slim\n", - "slime\n", - "slimed\n", - "slimes\n", - "slimier\n", - "slimiest\n", - "slimily\n", - "sliming\n", - "slimly\n", - "slimmed\n", - "slimmer\n", - "slimmest\n", - "slimming\n", - "slimness\n", - "slimnesses\n", - "slimpsier\n", - "slimpsiest\n", - "slimpsy\n", - "slims\n", - "slimsier\n", - "slimsiest\n", - "slimsy\n", - "slimy\n", - "sling\n", - "slinger\n", - "slingers\n", - "slinging\n", - "slings\n", - "slingshot\n", - "slingshots\n", - "slink\n", - "slinkier\n", - "slinkiest\n", - "slinkily\n", - "slinking\n", - "slinks\n", - "slinky\n", - "slip\n", - "slipcase\n", - "slipcases\n", - "slipe\n", - "sliped\n", - "slipes\n", - "slipform\n", - "slipformed\n", - "slipforming\n", - "slipforms\n", - "sliping\n", - "slipknot\n", - "slipknots\n", - "slipless\n", - "slipout\n", - "slipouts\n", - "slipover\n", - "slipovers\n", - "slippage\n", - "slippages\n", - "slipped\n", - "slipper\n", - "slipperier\n", - "slipperiest\n", - "slipperiness\n", - "slipperinesses\n", - "slippers\n", - "slippery\n", - "slippier\n", - "slippiest\n", - "slipping\n", - "slippy\n", - "slips\n", - "slipshod\n", - "slipslop\n", - "slipslops\n", - "slipsole\n", - "slipsoles\n", - "slipt\n", - "slipup\n", - "slipups\n", - "slipware\n", - "slipwares\n", - "slipway\n", - "slipways\n", - "slit\n", - "slither\n", - "slithered\n", - "slithering\n", - "slithers\n", - "slithery\n", - "slitless\n", - "slits\n", - "slitted\n", - "slitter\n", - "slitters\n", - "slitting\n", - "sliver\n", - "slivered\n", - "sliverer\n", - "sliverers\n", - "slivering\n", - "slivers\n", - "slivovic\n", - "slivovics\n", - "slob\n", - "slobber\n", - "slobbered\n", - "slobbering\n", - "slobbers\n", - "slobbery\n", - "slobbish\n", - "slobs\n", - "sloe\n", - "sloes\n", - "slog\n", - "slogan\n", - "slogans\n", - "slogged\n", - "slogger\n", - "sloggers\n", - "slogging\n", - "slogs\n", - "sloid\n", - "sloids\n", - "slojd\n", - "slojds\n", - "sloop\n", - "sloops\n", - "slop\n", - "slope\n", - "sloped\n", - "sloper\n", - "slopers\n", - "slopes\n", - "sloping\n", - "slopped\n", - "sloppier\n", - "sloppiest\n", - "sloppily\n", - "slopping\n", - "sloppy\n", - "slops\n", - "slopwork\n", - "slopworks\n", - "slosh\n", - "sloshed\n", - "sloshes\n", - "sloshier\n", - "sloshiest\n", - "sloshing\n", - "sloshy\n", - "slot\n", - "slotback\n", - "slotbacks\n", - "sloth\n", - "slothful\n", - "sloths\n", - "slots\n", - "slotted\n", - "slotting\n", - "slouch\n", - "slouched\n", - "sloucher\n", - "slouchers\n", - "slouches\n", - "slouchier\n", - "slouchiest\n", - "slouching\n", - "slouchy\n", - "slough\n", - "sloughed\n", - "sloughier\n", - "sloughiest\n", - "sloughing\n", - "sloughs\n", - "sloughy\n", - "sloven\n", - "slovenlier\n", - "slovenliest\n", - "slovenly\n", - "slovens\n", - "slow\n", - "slowdown\n", - "slowdowns\n", - "slowed\n", - "slower\n", - "slowest\n", - "slowing\n", - "slowish\n", - "slowly\n", - "slowness\n", - "slownesses\n", - "slowpoke\n", - "slowpokes\n", - "slows\n", - "slowworm\n", - "slowworms\n", - "sloyd\n", - "sloyds\n", - "slub\n", - "slubbed\n", - "slubber\n", - "slubbered\n", - "slubbering\n", - "slubbers\n", - "slubbing\n", - "slubbings\n", - "slubs\n", - "sludge\n", - "sludges\n", - "sludgier\n", - "sludgiest\n", - "sludgy\n", - "slue\n", - "slued\n", - "slues\n", - "sluff\n", - "sluffed\n", - "sluffing\n", - "sluffs\n", - "slug\n", - "slugabed\n", - "slugabeds\n", - "slugfest\n", - "slugfests\n", - "sluggard\n", - "sluggards\n", - "slugged\n", - "slugger\n", - "sluggers\n", - "slugging\n", - "sluggish\n", - "sluggishly\n", - "sluggishness\n", - "sluggishnesses\n", - "slugs\n", - "sluice\n", - "sluiced\n", - "sluices\n", - "sluicing\n", - "sluicy\n", - "sluing\n", - "slum\n", - "slumber\n", - "slumbered\n", - "slumbering\n", - "slumbers\n", - "slumbery\n", - "slumgum\n", - "slumgums\n", - "slumlord\n", - "slumlords\n", - "slummed\n", - "slummer\n", - "slummers\n", - "slummier\n", - "slummiest\n", - "slumming\n", - "slummy\n", - "slump\n", - "slumped\n", - "slumping\n", - "slumps\n", - "slums\n", - "slung\n", - "slunk\n", - "slur\n", - "slurb\n", - "slurban\n", - "slurbs\n", - "slurp\n", - "slurped\n", - "slurping\n", - "slurps\n", - "slurred\n", - "slurried\n", - "slurries\n", - "slurring\n", - "slurry\n", - "slurrying\n", - "slurs\n", - "slush\n", - "slushed\n", - "slushes\n", - "slushier\n", - "slushiest\n", - "slushily\n", - "slushing\n", - "slushy\n", - "slut\n", - "sluts\n", - "sluttish\n", - "sly\n", - "slyboots\n", - "slyer\n", - "slyest\n", - "slyly\n", - "slyness\n", - "slynesses\n", - "slype\n", - "slypes\n", - "smack\n", - "smacked\n", - "smacker\n", - "smackers\n", - "smacking\n", - "smacks\n", - "small\n", - "smallage\n", - "smallages\n", - "smaller\n", - "smallest\n", - "smallish\n", - "smallness\n", - "smallnesses\n", - "smallpox\n", - "smallpoxes\n", - "smalls\n", - "smalt\n", - "smalti\n", - "smaltine\n", - "smaltines\n", - "smaltite\n", - "smaltites\n", - "smalto\n", - "smaltos\n", - "smalts\n", - "smaragd\n", - "smaragde\n", - "smaragdes\n", - "smaragds\n", - "smarm\n", - "smarmier\n", - "smarmiest\n", - "smarms\n", - "smarmy\n", - "smart\n", - "smarted\n", - "smarten\n", - "smartened\n", - "smartening\n", - "smartens\n", - "smarter\n", - "smartest\n", - "smartie\n", - "smarties\n", - "smarting\n", - "smartly\n", - "smartness\n", - "smartnesses\n", - "smarts\n", - "smarty\n", - "smash\n", - "smashed\n", - "smasher\n", - "smashers\n", - "smashes\n", - "smashing\n", - "smashup\n", - "smashups\n", - "smatter\n", - "smattered\n", - "smattering\n", - "smatterings\n", - "smatters\n", - "smaze\n", - "smazes\n", - "smear\n", - "smeared\n", - "smearer\n", - "smearers\n", - "smearier\n", - "smeariest\n", - "smearing\n", - "smears\n", - "smeary\n", - "smectic\n", - "smeddum\n", - "smeddums\n", - "smeek\n", - "smeeked\n", - "smeeking\n", - "smeeks\n", - "smegma\n", - "smegmas\n", - "smell\n", - "smelled\n", - "smeller\n", - "smellers\n", - "smellier\n", - "smelliest\n", - "smelling\n", - "smells\n", - "smelly\n", - "smelt\n", - "smelted\n", - "smelter\n", - "smelteries\n", - "smelters\n", - "smeltery\n", - "smelting\n", - "smelts\n", - "smerk\n", - "smerked\n", - "smerking\n", - "smerks\n", - "smew\n", - "smews\n", - "smidgen\n", - "smidgens\n", - "smidgeon\n", - "smidgeons\n", - "smidgin\n", - "smidgins\n", - "smilax\n", - "smilaxes\n", - "smile\n", - "smiled\n", - "smiler\n", - "smilers\n", - "smiles\n", - "smiling\n", - "smirch\n", - "smirched\n", - "smirches\n", - "smirching\n", - "smirk\n", - "smirked\n", - "smirker\n", - "smirkers\n", - "smirkier\n", - "smirkiest\n", - "smirking\n", - "smirks\n", - "smirky\n", - "smit\n", - "smite\n", - "smiter\n", - "smiters\n", - "smites\n", - "smith\n", - "smitheries\n", - "smithery\n", - "smithies\n", - "smiths\n", - "smithy\n", - "smiting\n", - "smitten\n", - "smock\n", - "smocked\n", - "smocking\n", - "smockings\n", - "smocks\n", - "smog\n", - "smoggier\n", - "smoggiest\n", - "smoggy\n", - "smogless\n", - "smogs\n", - "smokable\n", - "smoke\n", - "smoked\n", - "smokeless\n", - "smokepot\n", - "smokepots\n", - "smoker\n", - "smokers\n", - "smokes\n", - "smokestack\n", - "smokestacks\n", - "smokey\n", - "smokier\n", - "smokiest\n", - "smokily\n", - "smoking\n", - "smoky\n", - "smolder\n", - "smoldered\n", - "smoldering\n", - "smolders\n", - "smolt\n", - "smolts\n", - "smooch\n", - "smooched\n", - "smooches\n", - "smooching\n", - "smoochy\n", - "smooth\n", - "smoothed\n", - "smoothen\n", - "smoothened\n", - "smoothening\n", - "smoothens\n", - "smoother\n", - "smoothers\n", - "smoothest\n", - "smoothie\n", - "smoothies\n", - "smoothing\n", - "smoothly\n", - "smoothness\n", - "smoothnesses\n", - "smooths\n", - "smoothy\n", - "smorgasbord\n", - "smorgasbords\n", - "smote\n", - "smother\n", - "smothered\n", - "smothering\n", - "smothers\n", - "smothery\n", - "smoulder\n", - "smouldered\n", - "smouldering\n", - "smoulders\n", - "smudge\n", - "smudged\n", - "smudges\n", - "smudgier\n", - "smudgiest\n", - "smudgily\n", - "smudging\n", - "smudgy\n", - "smug\n", - "smugger\n", - "smuggest\n", - "smuggle\n", - "smuggled\n", - "smuggler\n", - "smugglers\n", - "smuggles\n", - "smuggling\n", - "smugly\n", - "smugness\n", - "smugnesses\n", - "smut\n", - "smutch\n", - "smutched\n", - "smutches\n", - "smutchier\n", - "smutchiest\n", - "smutching\n", - "smutchy\n", - "smuts\n", - "smutted\n", - "smuttier\n", - "smuttiest\n", - "smuttily\n", - "smutting\n", - "smutty\n", - "snack\n", - "snacked\n", - "snacking\n", - "snacks\n", - "snaffle\n", - "snaffled\n", - "snaffles\n", - "snaffling\n", - "snafu\n", - "snafued\n", - "snafuing\n", - "snafus\n", - "snag\n", - "snagged\n", - "snaggier\n", - "snaggiest\n", - "snagging\n", - "snaggy\n", - "snaglike\n", - "snags\n", - "snail\n", - "snailed\n", - "snailing\n", - "snails\n", - "snake\n", - "snaked\n", - "snakes\n", - "snakier\n", - "snakiest\n", - "snakily\n", - "snaking\n", - "snaky\n", - "snap\n", - "snapback\n", - "snapbacks\n", - "snapdragon\n", - "snapdragons\n", - "snapless\n", - "snapped\n", - "snapper\n", - "snappers\n", - "snappier\n", - "snappiest\n", - "snappily\n", - "snapping\n", - "snappish\n", - "snappy\n", - "snaps\n", - "snapshot\n", - "snapshots\n", - "snapshotted\n", - "snapshotting\n", - "snapweed\n", - "snapweeds\n", - "snare\n", - "snared\n", - "snarer\n", - "snarers\n", - "snares\n", - "snaring\n", - "snark\n", - "snarks\n", - "snarl\n", - "snarled\n", - "snarler\n", - "snarlers\n", - "snarlier\n", - "snarliest\n", - "snarling\n", - "snarls\n", - "snarly\n", - "snash\n", - "snashes\n", - "snatch\n", - "snatched\n", - "snatcher\n", - "snatchers\n", - "snatches\n", - "snatchier\n", - "snatchiest\n", - "snatching\n", - "snatchy\n", - "snath\n", - "snathe\n", - "snathes\n", - "snaths\n", - "snaw\n", - "snawed\n", - "snawing\n", - "snaws\n", - "snazzier\n", - "snazziest\n", - "snazzy\n", - "sneak\n", - "sneaked\n", - "sneaker\n", - "sneakers\n", - "sneakier\n", - "sneakiest\n", - "sneakily\n", - "sneaking\n", - "sneakingly\n", - "sneaks\n", - "sneaky\n", - "sneap\n", - "sneaped\n", - "sneaping\n", - "sneaps\n", - "sneck\n", - "snecks\n", - "sned\n", - "snedded\n", - "snedding\n", - "sneds\n", - "sneer\n", - "sneered\n", - "sneerer\n", - "sneerers\n", - "sneerful\n", - "sneering\n", - "sneers\n", - "sneesh\n", - "sneeshes\n", - "sneeze\n", - "sneezed\n", - "sneezer\n", - "sneezers\n", - "sneezes\n", - "sneezier\n", - "sneeziest\n", - "sneezing\n", - "sneezy\n", - "snell\n", - "sneller\n", - "snellest\n", - "snells\n", - "snib\n", - "snibbed\n", - "snibbing\n", - "snibs\n", - "snick\n", - "snicked\n", - "snicker\n", - "snickered\n", - "snickering\n", - "snickers\n", - "snickery\n", - "snicking\n", - "snicks\n", - "snide\n", - "snidely\n", - "snider\n", - "snidest\n", - "sniff\n", - "sniffed\n", - "sniffer\n", - "sniffers\n", - "sniffier\n", - "sniffiest\n", - "sniffily\n", - "sniffing\n", - "sniffish\n", - "sniffle\n", - "sniffled\n", - "sniffler\n", - "snifflers\n", - "sniffles\n", - "sniffling\n", - "sniffs\n", - "sniffy\n", - "snifter\n", - "snifters\n", - "snigger\n", - "sniggered\n", - "sniggering\n", - "sniggers\n", - "sniggle\n", - "sniggled\n", - "sniggler\n", - "snigglers\n", - "sniggles\n", - "sniggling\n", - "snip\n", - "snipe\n", - "sniped\n", - "sniper\n", - "snipers\n", - "snipes\n", - "sniping\n", - "snipped\n", - "snipper\n", - "snippers\n", - "snippet\n", - "snippetier\n", - "snippetiest\n", - "snippets\n", - "snippety\n", - "snippier\n", - "snippiest\n", - "snippily\n", - "snipping\n", - "snippy\n", - "snips\n", - "snit\n", - "snitch\n", - "snitched\n", - "snitcher\n", - "snitchers\n", - "snitches\n", - "snitching\n", - "snits\n", - "snivel\n", - "sniveled\n", - "sniveler\n", - "snivelers\n", - "sniveling\n", - "snivelled\n", - "snivelling\n", - "snivels\n", - "snob\n", - "snobberies\n", - "snobbery\n", - "snobbier\n", - "snobbiest\n", - "snobbily\n", - "snobbish\n", - "snobbishly\n", - "snobbishness\n", - "snobbishnesses\n", - "snobbism\n", - "snobbisms\n", - "snobby\n", - "snobs\n", - "snood\n", - "snooded\n", - "snooding\n", - "snoods\n", - "snook\n", - "snooked\n", - "snooker\n", - "snookers\n", - "snooking\n", - "snooks\n", - "snool\n", - "snooled\n", - "snooling\n", - "snools\n", - "snoop\n", - "snooped\n", - "snooper\n", - "snoopers\n", - "snoopier\n", - "snoopiest\n", - "snoopily\n", - "snooping\n", - "snoops\n", - "snoopy\n", - "snoot\n", - "snooted\n", - "snootier\n", - "snootiest\n", - "snootily\n", - "snooting\n", - "snoots\n", - "snooty\n", - "snooze\n", - "snoozed\n", - "snoozer\n", - "snoozers\n", - "snoozes\n", - "snoozier\n", - "snooziest\n", - "snoozing\n", - "snoozle\n", - "snoozled\n", - "snoozles\n", - "snoozling\n", - "snoozy\n", - "snore\n", - "snored\n", - "snorer\n", - "snorers\n", - "snores\n", - "snoring\n", - "snorkel\n", - "snorkeled\n", - "snorkeling\n", - "snorkels\n", - "snort\n", - "snorted\n", - "snorter\n", - "snorters\n", - "snorting\n", - "snorts\n", - "snot\n", - "snots\n", - "snottier\n", - "snottiest\n", - "snottily\n", - "snotty\n", - "snout\n", - "snouted\n", - "snoutier\n", - "snoutiest\n", - "snouting\n", - "snoutish\n", - "snouts\n", - "snouty\n", - "snow\n", - "snowball\n", - "snowballed\n", - "snowballing\n", - "snowballs\n", - "snowbank\n", - "snowbanks\n", - "snowbell\n", - "snowbells\n", - "snowbird\n", - "snowbirds\n", - "snowbush\n", - "snowbushes\n", - "snowcap\n", - "snowcaps\n", - "snowdrift\n", - "snowdrifts\n", - "snowdrop\n", - "snowdrops\n", - "snowed\n", - "snowfall\n", - "snowfalls\n", - "snowflake\n", - "snowflakes\n", - "snowier\n", - "snowiest\n", - "snowily\n", - "snowing\n", - "snowland\n", - "snowlands\n", - "snowless\n", - "snowlike\n", - "snowman\n", - "snowmelt\n", - "snowmelts\n", - "snowmen\n", - "snowpack\n", - "snowpacks\n", - "snowplow\n", - "snowplowed\n", - "snowplowing\n", - "snowplows\n", - "snows\n", - "snowshed\n", - "snowsheds\n", - "snowshoe\n", - "snowshoed\n", - "snowshoeing\n", - "snowshoes\n", - "snowstorm\n", - "snowstorms\n", - "snowsuit\n", - "snowsuits\n", - "snowy\n", - "snub\n", - "snubbed\n", - "snubber\n", - "snubbers\n", - "snubbier\n", - "snubbiest\n", - "snubbing\n", - "snubby\n", - "snubness\n", - "snubnesses\n", - "snubs\n", - "snuck\n", - "snuff\n", - "snuffbox\n", - "snuffboxes\n", - "snuffed\n", - "snuffer\n", - "snuffers\n", - "snuffier\n", - "snuffiest\n", - "snuffily\n", - "snuffing\n", - "snuffle\n", - "snuffled\n", - "snuffler\n", - "snufflers\n", - "snuffles\n", - "snufflier\n", - "snuffliest\n", - "snuffling\n", - "snuffly\n", - "snuffs\n", - "snuffy\n", - "snug\n", - "snugged\n", - "snugger\n", - "snuggeries\n", - "snuggery\n", - "snuggest\n", - "snugging\n", - "snuggle\n", - "snuggled\n", - "snuggles\n", - "snuggling\n", - "snugly\n", - "snugness\n", - "snugnesses\n", - "snugs\n", - "snye\n", - "snyes\n", - "so\n", - "soak\n", - "soakage\n", - "soakages\n", - "soaked\n", - "soaker\n", - "soakers\n", - "soaking\n", - "soaks\n", - "soap\n", - "soapbark\n", - "soapbarks\n", - "soapbox\n", - "soapboxes\n", - "soaped\n", - "soapier\n", - "soapiest\n", - "soapily\n", - "soaping\n", - "soapless\n", - "soaplike\n", - "soaps\n", - "soapsuds\n", - "soapwort\n", - "soapworts\n", - "soapy\n", - "soar\n", - "soared\n", - "soarer\n", - "soarers\n", - "soaring\n", - "soarings\n", - "soars\n", - "soave\n", - "soaves\n", - "sob\n", - "sobbed\n", - "sobber\n", - "sobbers\n", - "sobbing\n", - "sobeit\n", - "sober\n", - "sobered\n", - "soberer\n", - "soberest\n", - "sobering\n", - "soberize\n", - "soberized\n", - "soberizes\n", - "soberizing\n", - "soberly\n", - "sobers\n", - "sobful\n", - "sobrieties\n", - "sobriety\n", - "sobs\n", - "socage\n", - "socager\n", - "socagers\n", - "socages\n", - "soccage\n", - "soccages\n", - "soccer\n", - "soccers\n", - "sociabilities\n", - "sociability\n", - "sociable\n", - "sociables\n", - "sociably\n", - "social\n", - "socialism\n", - "socialist\n", - "socialistic\n", - "socialists\n", - "socialization\n", - "socializations\n", - "socialize\n", - "socialized\n", - "socializes\n", - "socializing\n", - "socially\n", - "socials\n", - "societal\n", - "societies\n", - "society\n", - "sociological\n", - "sociologies\n", - "sociologist\n", - "sociologists\n", - "sociology\n", - "sock\n", - "socked\n", - "socket\n", - "socketed\n", - "socketing\n", - "sockets\n", - "sockeye\n", - "sockeyes\n", - "socking\n", - "sockman\n", - "sockmen\n", - "socks\n", - "socle\n", - "socles\n", - "socman\n", - "socmen\n", - "sod\n", - "soda\n", - "sodaless\n", - "sodalist\n", - "sodalists\n", - "sodalite\n", - "sodalites\n", - "sodalities\n", - "sodality\n", - "sodamide\n", - "sodamides\n", - "sodas\n", - "sodded\n", - "sodden\n", - "soddened\n", - "soddening\n", - "soddenly\n", - "soddens\n", - "soddies\n", - "sodding\n", - "soddy\n", - "sodic\n", - "sodium\n", - "sodiums\n", - "sodomies\n", - "sodomite\n", - "sodomites\n", - "sodomy\n", - "sods\n", - "soever\n", - "sofa\n", - "sofar\n", - "sofars\n", - "sofas\n", - "soffit\n", - "soffits\n", - "soft\n", - "softa\n", - "softas\n", - "softback\n", - "softbacks\n", - "softball\n", - "softballs\n", - "soften\n", - "softened\n", - "softener\n", - "softeners\n", - "softening\n", - "softens\n", - "softer\n", - "softest\n", - "softhead\n", - "softheads\n", - "softie\n", - "softies\n", - "softly\n", - "softness\n", - "softnesses\n", - "softs\n", - "software\n", - "softwares\n", - "softwood\n", - "softwoods\n", - "softy\n", - "sogged\n", - "soggier\n", - "soggiest\n", - "soggily\n", - "sogginess\n", - "sogginesses\n", - "soggy\n", - "soigne\n", - "soignee\n", - "soil\n", - "soilage\n", - "soilages\n", - "soiled\n", - "soiling\n", - "soilless\n", - "soils\n", - "soilure\n", - "soilures\n", - "soiree\n", - "soirees\n", - "soja\n", - "sojas\n", - "sojourn\n", - "sojourned\n", - "sojourning\n", - "sojourns\n", - "soke\n", - "sokeman\n", - "sokemen\n", - "sokes\n", - "sol\n", - "sola\n", - "solace\n", - "solaced\n", - "solacer\n", - "solacers\n", - "solaces\n", - "solacing\n", - "solan\n", - "soland\n", - "solander\n", - "solanders\n", - "solands\n", - "solanin\n", - "solanine\n", - "solanines\n", - "solanins\n", - "solano\n", - "solanos\n", - "solans\n", - "solanum\n", - "solanums\n", - "solar\n", - "solaria\n", - "solarise\n", - "solarised\n", - "solarises\n", - "solarising\n", - "solarism\n", - "solarisms\n", - "solarium\n", - "solariums\n", - "solarize\n", - "solarized\n", - "solarizes\n", - "solarizing\n", - "solate\n", - "solated\n", - "solates\n", - "solatia\n", - "solating\n", - "solation\n", - "solations\n", - "solatium\n", - "sold\n", - "soldan\n", - "soldans\n", - "solder\n", - "soldered\n", - "solderer\n", - "solderers\n", - "soldering\n", - "solders\n", - "soldi\n", - "soldier\n", - "soldiered\n", - "soldieries\n", - "soldiering\n", - "soldierly\n", - "soldiers\n", - "soldiery\n", - "soldo\n", - "sole\n", - "solecise\n", - "solecised\n", - "solecises\n", - "solecising\n", - "solecism\n", - "solecisms\n", - "solecist\n", - "solecists\n", - "solecize\n", - "solecized\n", - "solecizes\n", - "solecizing\n", - "soled\n", - "soleless\n", - "solely\n", - "solemn\n", - "solemner\n", - "solemnest\n", - "solemnly\n", - "solemnness\n", - "solemnnesses\n", - "soleness\n", - "solenesses\n", - "solenoid\n", - "solenoids\n", - "soleret\n", - "solerets\n", - "soles\n", - "solfege\n", - "solfeges\n", - "solfeggi\n", - "solgel\n", - "soli\n", - "solicit\n", - "solicitation\n", - "solicited\n", - "soliciting\n", - "solicitor\n", - "solicitors\n", - "solicitous\n", - "solicits\n", - "solicitude\n", - "solicitudes\n", - "solid\n", - "solidago\n", - "solidagos\n", - "solidarities\n", - "solidarity\n", - "solidary\n", - "solider\n", - "solidest\n", - "solidi\n", - "solidification\n", - "solidifications\n", - "solidified\n", - "solidifies\n", - "solidify\n", - "solidifying\n", - "solidities\n", - "solidity\n", - "solidly\n", - "solidness\n", - "solidnesses\n", - "solids\n", - "solidus\n", - "soliloquize\n", - "soliloquized\n", - "soliloquizes\n", - "soliloquizing\n", - "soliloquy\n", - "soliloquys\n", - "soling\n", - "solion\n", - "solions\n", - "soliquid\n", - "soliquids\n", - "solitaire\n", - "solitaires\n", - "solitaries\n", - "solitary\n", - "solitude\n", - "solitudes\n", - "solleret\n", - "sollerets\n", - "solo\n", - "soloed\n", - "soloing\n", - "soloist\n", - "soloists\n", - "solon\n", - "solonets\n", - "solonetses\n", - "solonetz\n", - "solonetzes\n", - "solons\n", - "solos\n", - "sols\n", - "solstice\n", - "solstices\n", - "solubilities\n", - "solubility\n", - "soluble\n", - "solubles\n", - "solubly\n", - "solum\n", - "solums\n", - "solus\n", - "solute\n", - "solutes\n", - "solution\n", - "solutions\n", - "solvable\n", - "solvate\n", - "solvated\n", - "solvates\n", - "solvating\n", - "solve\n", - "solved\n", - "solvencies\n", - "solvency\n", - "solvent\n", - "solvents\n", - "solver\n", - "solvers\n", - "solves\n", - "solving\n", - "soma\n", - "somas\n", - "somata\n", - "somatic\n", - "somber\n", - "somberly\n", - "sombre\n", - "sombrely\n", - "sombrero\n", - "sombreros\n", - "sombrous\n", - "some\n", - "somebodies\n", - "somebody\n", - "someday\n", - "somedeal\n", - "somehow\n", - "someone\n", - "someones\n", - "someplace\n", - "somersault\n", - "somersaulted\n", - "somersaulting\n", - "somersaults\n", - "somerset\n", - "somerseted\n", - "somerseting\n", - "somersets\n", - "somersetted\n", - "somersetting\n", - "somerville\n", - "something\n", - "sometime\n", - "sometimes\n", - "someway\n", - "someways\n", - "somewhat\n", - "somewhats\n", - "somewhen\n", - "somewhere\n", - "somewise\n", - "somital\n", - "somite\n", - "somites\n", - "somitic\n", - "somnambulism\n", - "somnambulist\n", - "somnambulists\n", - "somnolence\n", - "somnolences\n", - "somnolent\n", - "son\n", - "sonance\n", - "sonances\n", - "sonant\n", - "sonantal\n", - "sonantic\n", - "sonants\n", - "sonar\n", - "sonarman\n", - "sonarmen\n", - "sonars\n", - "sonata\n", - "sonatas\n", - "sonatina\n", - "sonatinas\n", - "sonatine\n", - "sonde\n", - "sonder\n", - "sonders\n", - "sondes\n", - "sone\n", - "sones\n", - "song\n", - "songbird\n", - "songbirds\n", - "songbook\n", - "songbooks\n", - "songfest\n", - "songfests\n", - "songful\n", - "songless\n", - "songlike\n", - "songs\n", - "songster\n", - "songsters\n", - "sonic\n", - "sonicate\n", - "sonicated\n", - "sonicates\n", - "sonicating\n", - "sonics\n", - "sonless\n", - "sonlike\n", - "sonly\n", - "sonnet\n", - "sonneted\n", - "sonneting\n", - "sonnets\n", - "sonnetted\n", - "sonnetting\n", - "sonnies\n", - "sonny\n", - "sonorant\n", - "sonorants\n", - "sonorities\n", - "sonority\n", - "sonorous\n", - "sonovox\n", - "sonovoxes\n", - "sons\n", - "sonship\n", - "sonships\n", - "sonsie\n", - "sonsier\n", - "sonsiest\n", - "sonsy\n", - "soochong\n", - "soochongs\n", - "sooey\n", - "soon\n", - "sooner\n", - "sooners\n", - "soonest\n", - "soot\n", - "sooted\n", - "sooth\n", - "soothe\n", - "soothed\n", - "soother\n", - "soothers\n", - "soothes\n", - "soothest\n", - "soothing\n", - "soothly\n", - "sooths\n", - "soothsaid\n", - "soothsay\n", - "soothsayer\n", - "soothsayers\n", - "soothsaying\n", - "soothsayings\n", - "soothsays\n", - "sootier\n", - "sootiest\n", - "sootily\n", - "sooting\n", - "soots\n", - "sooty\n", - "sop\n", - "soph\n", - "sophies\n", - "sophism\n", - "sophisms\n", - "sophist\n", - "sophistic\n", - "sophistical\n", - "sophisticate\n", - "sophisticated\n", - "sophisticates\n", - "sophistication\n", - "sophistications\n", - "sophistries\n", - "sophistry\n", - "sophists\n", - "sophomore\n", - "sophomores\n", - "sophs\n", - "sophy\n", - "sopite\n", - "sopited\n", - "sopites\n", - "sopiting\n", - "sopor\n", - "soporific\n", - "sopors\n", - "sopped\n", - "soppier\n", - "soppiest\n", - "sopping\n", - "soppy\n", - "soprani\n", - "soprano\n", - "sopranos\n", - "sops\n", - "sora\n", - "soras\n", - "sorb\n", - "sorbable\n", - "sorbate\n", - "sorbates\n", - "sorbed\n", - "sorbent\n", - "sorbents\n", - "sorbet\n", - "sorbets\n", - "sorbic\n", - "sorbing\n", - "sorbitol\n", - "sorbitols\n", - "sorbose\n", - "sorboses\n", - "sorbs\n", - "sorcerer\n", - "sorcerers\n", - "sorceress\n", - "sorceresses\n", - "sorceries\n", - "sorcery\n", - "sord\n", - "sordid\n", - "sordidly\n", - "sordidness\n", - "sordidnesses\n", - "sordine\n", - "sordines\n", - "sordini\n", - "sordino\n", - "sords\n", - "sore\n", - "sorehead\n", - "soreheads\n", - "sorel\n", - "sorels\n", - "sorely\n", - "soreness\n", - "sorenesses\n", - "sorer\n", - "sores\n", - "sorest\n", - "sorgho\n", - "sorghos\n", - "sorghum\n", - "sorghums\n", - "sorgo\n", - "sorgos\n", - "sori\n", - "soricine\n", - "sorites\n", - "soritic\n", - "sorn\n", - "sorned\n", - "sorner\n", - "sorners\n", - "sorning\n", - "sorns\n", - "soroche\n", - "soroches\n", - "sororal\n", - "sororate\n", - "sororates\n", - "sororities\n", - "sorority\n", - "soroses\n", - "sorosis\n", - "sorosises\n", - "sorption\n", - "sorptions\n", - "sorptive\n", - "sorrel\n", - "sorrels\n", - "sorrier\n", - "sorriest\n", - "sorrily\n", - "sorrow\n", - "sorrowed\n", - "sorrower\n", - "sorrowers\n", - "sorrowful\n", - "sorrowfully\n", - "sorrowing\n", - "sorrows\n", - "sorry\n", - "sort\n", - "sortable\n", - "sortably\n", - "sorted\n", - "sorter\n", - "sorters\n", - "sortie\n", - "sortied\n", - "sortieing\n", - "sorties\n", - "sorting\n", - "sorts\n", - "sorus\n", - "sos\n", - "sot\n", - "soth\n", - "soths\n", - "sotol\n", - "sotols\n", - "sots\n", - "sottish\n", - "sou\n", - "souari\n", - "souaris\n", - "soubise\n", - "soubises\n", - "soucar\n", - "soucars\n", - "souchong\n", - "souchongs\n", - "soudan\n", - "soudans\n", - "souffle\n", - "souffles\n", - "sough\n", - "soughed\n", - "soughing\n", - "soughs\n", - "sought\n", - "soul\n", - "souled\n", - "soulful\n", - "soulfully\n", - "soulless\n", - "soullike\n", - "souls\n", - "sound\n", - "soundbox\n", - "soundboxes\n", - "sounded\n", - "sounder\n", - "sounders\n", - "soundest\n", - "sounding\n", - "soundings\n", - "soundly\n", - "soundness\n", - "soundnesses\n", - "soundproof\n", - "soundproofed\n", - "soundproofing\n", - "soundproofs\n", - "sounds\n", - "soup\n", - "soupcon\n", - "soupcons\n", - "souped\n", - "soupier\n", - "soupiest\n", - "souping\n", - "soups\n", - "soupy\n", - "sour\n", - "sourball\n", - "sourballs\n", - "source\n", - "sources\n", - "sourdine\n", - "sourdines\n", - "soured\n", - "sourer\n", - "sourest\n", - "souring\n", - "sourish\n", - "sourly\n", - "sourness\n", - "sournesses\n", - "sourpuss\n", - "sourpusses\n", - "sours\n", - "soursop\n", - "soursops\n", - "sourwood\n", - "sourwoods\n", - "sous\n", - "souse\n", - "soused\n", - "souses\n", - "sousing\n", - "soutache\n", - "soutaches\n", - "soutane\n", - "soutanes\n", - "souter\n", - "souters\n", - "south\n", - "southeast\n", - "southeastern\n", - "southeasts\n", - "southed\n", - "souther\n", - "southerly\n", - "southern\n", - "southernmost\n", - "southerns\n", - "southernward\n", - "southernwards\n", - "southers\n", - "southing\n", - "southings\n", - "southpaw\n", - "southpaws\n", - "southron\n", - "southrons\n", - "souths\n", - "southwest\n", - "southwesterly\n", - "southwestern\n", - "southwests\n", - "souvenir\n", - "souvenirs\n", - "sovereign\n", - "sovereigns\n", - "sovereignties\n", - "sovereignty\n", - "soviet\n", - "soviets\n", - "sovkhoz\n", - "sovkhozes\n", - "sovkhozy\n", - "sovran\n", - "sovranly\n", - "sovrans\n", - "sovranties\n", - "sovranty\n", - "sow\n", - "sowable\n", - "sowans\n", - "sowar\n", - "sowars\n", - "sowbellies\n", - "sowbelly\n", - "sowbread\n", - "sowbreads\n", - "sowcar\n", - "sowcars\n", - "sowed\n", - "sowens\n", - "sower\n", - "sowers\n", - "sowing\n", - "sown\n", - "sows\n", - "sox\n", - "soy\n", - "soya\n", - "soyas\n", - "soybean\n", - "soybeans\n", - "soys\n", - "sozin\n", - "sozine\n", - "sozines\n", - "sozins\n", - "spa\n", - "space\n", - "spacecraft\n", - "spacecrafts\n", - "spaced\n", - "spaceflight\n", - "spaceflights\n", - "spaceman\n", - "spacemen\n", - "spacer\n", - "spacers\n", - "spaces\n", - "spaceship\n", - "spaceships\n", - "spacial\n", - "spacing\n", - "spacings\n", - "spacious\n", - "spaciously\n", - "spaciousness\n", - "spaciousnesses\n", - "spade\n", - "spaded\n", - "spadeful\n", - "spadefuls\n", - "spader\n", - "spaders\n", - "spades\n", - "spadices\n", - "spadille\n", - "spadilles\n", - "spading\n", - "spadix\n", - "spado\n", - "spadones\n", - "spae\n", - "spaed\n", - "spaeing\n", - "spaeings\n", - "spaes\n", - "spaghetti\n", - "spaghettis\n", - "spagyric\n", - "spagyrics\n", - "spahee\n", - "spahees\n", - "spahi\n", - "spahis\n", - "spail\n", - "spails\n", - "spait\n", - "spaits\n", - "spake\n", - "spale\n", - "spales\n", - "spall\n", - "spalled\n", - "spaller\n", - "spallers\n", - "spalling\n", - "spalls\n", - "spalpeen\n", - "spalpeens\n", - "span\n", - "spancel\n", - "spanceled\n", - "spanceling\n", - "spancelled\n", - "spancelling\n", - "spancels\n", - "spandrel\n", - "spandrels\n", - "spandril\n", - "spandrils\n", - "spang\n", - "spangle\n", - "spangled\n", - "spangles\n", - "spanglier\n", - "spangliest\n", - "spangling\n", - "spangly\n", - "spaniel\n", - "spaniels\n", - "spank\n", - "spanked\n", - "spanker\n", - "spankers\n", - "spanking\n", - "spankings\n", - "spanks\n", - "spanless\n", - "spanned\n", - "spanner\n", - "spanners\n", - "spanning\n", - "spans\n", - "spanworm\n", - "spanworms\n", - "spar\n", - "sparable\n", - "sparables\n", - "spare\n", - "spared\n", - "sparely\n", - "sparer\n", - "sparerib\n", - "spareribs\n", - "sparers\n", - "spares\n", - "sparest\n", - "sparge\n", - "sparged\n", - "sparger\n", - "spargers\n", - "sparges\n", - "sparging\n", - "sparid\n", - "sparids\n", - "sparing\n", - "sparingly\n", - "spark\n", - "sparked\n", - "sparker\n", - "sparkers\n", - "sparkier\n", - "sparkiest\n", - "sparkily\n", - "sparking\n", - "sparkish\n", - "sparkle\n", - "sparkled\n", - "sparkler\n", - "sparklers\n", - "sparkles\n", - "sparkling\n", - "sparks\n", - "sparky\n", - "sparlike\n", - "sparling\n", - "sparlings\n", - "sparoid\n", - "sparoids\n", - "sparred\n", - "sparrier\n", - "sparriest\n", - "sparring\n", - "sparrow\n", - "sparrows\n", - "sparry\n", - "spars\n", - "sparse\n", - "sparsely\n", - "sparser\n", - "sparsest\n", - "sparsities\n", - "sparsity\n", - "spas\n", - "spasm\n", - "spasmodic\n", - "spasms\n", - "spastic\n", - "spastics\n", - "spat\n", - "spate\n", - "spates\n", - "spathal\n", - "spathe\n", - "spathed\n", - "spathes\n", - "spathic\n", - "spathose\n", - "spatial\n", - "spatially\n", - "spats\n", - "spatted\n", - "spatter\n", - "spattered\n", - "spattering\n", - "spatters\n", - "spatting\n", - "spatula\n", - "spatular\n", - "spatulas\n", - "spavie\n", - "spavies\n", - "spaviet\n", - "spavin\n", - "spavined\n", - "spavins\n", - "spawn\n", - "spawned\n", - "spawner\n", - "spawners\n", - "spawning\n", - "spawns\n", - "spay\n", - "spayed\n", - "spaying\n", - "spays\n", - "speak\n", - "speaker\n", - "speakers\n", - "speaking\n", - "speakings\n", - "speaks\n", - "spean\n", - "speaned\n", - "speaning\n", - "speans\n", - "spear\n", - "speared\n", - "spearer\n", - "spearers\n", - "spearhead\n", - "spearheaded\n", - "spearheading\n", - "spearheads\n", - "spearing\n", - "spearman\n", - "spearmen\n", - "spearmint\n", - "spears\n", - "special\n", - "specialer\n", - "specialest\n", - "specialist\n", - "specialists\n", - "specialization\n", - "specializations\n", - "specialize\n", - "specialized\n", - "specializes\n", - "specializing\n", - "specially\n", - "specials\n", - "specialties\n", - "specialty\n", - "speciate\n", - "speciated\n", - "speciates\n", - "speciating\n", - "specie\n", - "species\n", - "specific\n", - "specifically\n", - "specification\n", - "specifications\n", - "specificities\n", - "specificity\n", - "specifics\n", - "specified\n", - "specifies\n", - "specify\n", - "specifying\n", - "specimen\n", - "specimens\n", - "specious\n", - "speck\n", - "specked\n", - "specking\n", - "speckle\n", - "speckled\n", - "speckles\n", - "speckling\n", - "specks\n", - "specs\n", - "spectacle\n", - "spectacles\n", - "spectacular\n", - "spectate\n", - "spectated\n", - "spectates\n", - "spectating\n", - "spectator\n", - "spectators\n", - "specter\n", - "specters\n", - "spectra\n", - "spectral\n", - "spectre\n", - "spectres\n", - "spectrum\n", - "spectrums\n", - "specula\n", - "specular\n", - "speculate\n", - "speculated\n", - "speculates\n", - "speculating\n", - "speculation\n", - "speculations\n", - "speculative\n", - "speculator\n", - "speculators\n", - "speculum\n", - "speculums\n", - "sped\n", - "speech\n", - "speeches\n", - "speechless\n", - "speed\n", - "speedboat\n", - "speedboats\n", - "speeded\n", - "speeder\n", - "speeders\n", - "speedier\n", - "speediest\n", - "speedily\n", - "speeding\n", - "speedings\n", - "speedometer\n", - "speedometers\n", - "speeds\n", - "speedup\n", - "speedups\n", - "speedway\n", - "speedways\n", - "speedy\n", - "speel\n", - "speeled\n", - "speeling\n", - "speels\n", - "speer\n", - "speered\n", - "speering\n", - "speerings\n", - "speers\n", - "speil\n", - "speiled\n", - "speiling\n", - "speils\n", - "speir\n", - "speired\n", - "speiring\n", - "speirs\n", - "speise\n", - "speises\n", - "speiss\n", - "speisses\n", - "spelaean\n", - "spelean\n", - "spell\n", - "spellbound\n", - "spelled\n", - "speller\n", - "spellers\n", - "spelling\n", - "spellings\n", - "spells\n", - "spelt\n", - "spelter\n", - "spelters\n", - "spelts\n", - "speltz\n", - "speltzes\n", - "spelunk\n", - "spelunked\n", - "spelunking\n", - "spelunks\n", - "spence\n", - "spencer\n", - "spencers\n", - "spences\n", - "spend\n", - "spender\n", - "spenders\n", - "spending\n", - "spends\n", - "spendthrift\n", - "spendthrifts\n", - "spent\n", - "sperm\n", - "spermaries\n", - "spermary\n", - "spermic\n", - "spermine\n", - "spermines\n", - "spermous\n", - "sperms\n", - "spew\n", - "spewed\n", - "spewer\n", - "spewers\n", - "spewing\n", - "spews\n", - "sphagnum\n", - "sphagnums\n", - "sphene\n", - "sphenes\n", - "sphenic\n", - "sphenoid\n", - "sphenoids\n", - "spheral\n", - "sphere\n", - "sphered\n", - "spheres\n", - "spheric\n", - "spherical\n", - "spherics\n", - "spherier\n", - "spheriest\n", - "sphering\n", - "spheroid\n", - "spheroids\n", - "spherule\n", - "spherules\n", - "sphery\n", - "sphinges\n", - "sphingid\n", - "sphingids\n", - "sphinx\n", - "sphinxes\n", - "sphygmic\n", - "sphygmus\n", - "sphygmuses\n", - "spic\n", - "spica\n", - "spicae\n", - "spicas\n", - "spicate\n", - "spicated\n", - "spiccato\n", - "spiccatos\n", - "spice\n", - "spiced\n", - "spicer\n", - "spiceries\n", - "spicers\n", - "spicery\n", - "spices\n", - "spicey\n", - "spicier\n", - "spiciest\n", - "spicily\n", - "spicing\n", - "spick\n", - "spicks\n", - "spics\n", - "spicula\n", - "spiculae\n", - "spicular\n", - "spicule\n", - "spicules\n", - "spiculum\n", - "spicy\n", - "spider\n", - "spiderier\n", - "spideriest\n", - "spiders\n", - "spidery\n", - "spied\n", - "spiegel\n", - "spiegels\n", - "spiel\n", - "spieled\n", - "spieler\n", - "spielers\n", - "spieling\n", - "spiels\n", - "spier\n", - "spiered\n", - "spiering\n", - "spiers\n", - "spies\n", - "spiffier\n", - "spiffiest\n", - "spiffily\n", - "spiffing\n", - "spiffy\n", - "spigot\n", - "spigots\n", - "spik\n", - "spike\n", - "spiked\n", - "spikelet\n", - "spikelets\n", - "spiker\n", - "spikers\n", - "spikes\n", - "spikier\n", - "spikiest\n", - "spikily\n", - "spiking\n", - "spiks\n", - "spiky\n", - "spile\n", - "spiled\n", - "spiles\n", - "spilikin\n", - "spilikins\n", - "spiling\n", - "spilings\n", - "spill\n", - "spillable\n", - "spillage\n", - "spillages\n", - "spilled\n", - "spiller\n", - "spillers\n", - "spilling\n", - "spills\n", - "spillway\n", - "spillways\n", - "spilt\n", - "spilth\n", - "spilths\n", - "spin\n", - "spinach\n", - "spinaches\n", - "spinage\n", - "spinages\n", - "spinal\n", - "spinally\n", - "spinals\n", - "spinate\n", - "spindle\n", - "spindled\n", - "spindler\n", - "spindlers\n", - "spindles\n", - "spindlier\n", - "spindliest\n", - "spindling\n", - "spindly\n", - "spine\n", - "spined\n", - "spinel\n", - "spineless\n", - "spinelle\n", - "spinelles\n", - "spinels\n", - "spines\n", - "spinet\n", - "spinets\n", - "spinier\n", - "spiniest\n", - "spinifex\n", - "spinifexes\n", - "spinless\n", - "spinner\n", - "spinneries\n", - "spinners\n", - "spinnery\n", - "spinney\n", - "spinneys\n", - "spinnies\n", - "spinning\n", - "spinnings\n", - "spinny\n", - "spinoff\n", - "spinoffs\n", - "spinor\n", - "spinors\n", - "spinose\n", - "spinous\n", - "spinout\n", - "spinouts\n", - "spins\n", - "spinster\n", - "spinsters\n", - "spinula\n", - "spinulae\n", - "spinule\n", - "spinules\n", - "spinwriter\n", - "spiny\n", - "spiracle\n", - "spiracles\n", - "spiraea\n", - "spiraeas\n", - "spiral\n", - "spiraled\n", - "spiraling\n", - "spiralled\n", - "spiralling\n", - "spirally\n", - "spirals\n", - "spirant\n", - "spirants\n", - "spire\n", - "spirea\n", - "spireas\n", - "spired\n", - "spirem\n", - "spireme\n", - "spiremes\n", - "spirems\n", - "spires\n", - "spirilla\n", - "spiring\n", - "spirit\n", - "spirited\n", - "spiriting\n", - "spiritless\n", - "spirits\n", - "spiritual\n", - "spiritualism\n", - "spiritualisms\n", - "spiritualist\n", - "spiritualistic\n", - "spiritualists\n", - "spiritualities\n", - "spirituality\n", - "spiritually\n", - "spirituals\n", - "spiroid\n", - "spirt\n", - "spirted\n", - "spirting\n", - "spirts\n", - "spirula\n", - "spirulae\n", - "spirulas\n", - "spiry\n", - "spit\n", - "spital\n", - "spitals\n", - "spitball\n", - "spitballs\n", - "spite\n", - "spited\n", - "spiteful\n", - "spitefuller\n", - "spitefullest\n", - "spitefully\n", - "spites\n", - "spitfire\n", - "spitfires\n", - "spiting\n", - "spits\n", - "spitted\n", - "spitter\n", - "spitters\n", - "spitting\n", - "spittle\n", - "spittles\n", - "spittoon\n", - "spittoons\n", - "spitz\n", - "spitzes\n", - "spiv\n", - "spivs\n", - "splake\n", - "splakes\n", - "splash\n", - "splashed\n", - "splasher\n", - "splashers\n", - "splashes\n", - "splashier\n", - "splashiest\n", - "splashing\n", - "splashy\n", - "splat\n", - "splats\n", - "splatter\n", - "splattered\n", - "splattering\n", - "splatters\n", - "splay\n", - "splayed\n", - "splaying\n", - "splays\n", - "spleen\n", - "spleenier\n", - "spleeniest\n", - "spleens\n", - "spleeny\n", - "splendid\n", - "splendider\n", - "splendidest\n", - "splendidly\n", - "splendor\n", - "splendors\n", - "splenia\n", - "splenial\n", - "splenic\n", - "splenii\n", - "splenium\n", - "splenius\n", - "splent\n", - "splents\n", - "splice\n", - "spliced\n", - "splicer\n", - "splicers\n", - "splices\n", - "splicing\n", - "spline\n", - "splined\n", - "splines\n", - "splining\n", - "splint\n", - "splinted\n", - "splinter\n", - "splintered\n", - "splintering\n", - "splinters\n", - "splinting\n", - "splints\n", - "split\n", - "splits\n", - "splitter\n", - "splitters\n", - "splitting\n", - "splore\n", - "splores\n", - "splosh\n", - "sploshed\n", - "sploshes\n", - "sploshing\n", - "splotch\n", - "splotched\n", - "splotches\n", - "splotchier\n", - "splotchiest\n", - "splotching\n", - "splotchy\n", - "splurge\n", - "splurged\n", - "splurges\n", - "splurgier\n", - "splurgiest\n", - "splurging\n", - "splurgy\n", - "splutter\n", - "spluttered\n", - "spluttering\n", - "splutters\n", - "spode\n", - "spodes\n", - "spoil\n", - "spoilage\n", - "spoilages\n", - "spoiled\n", - "spoiler\n", - "spoilers\n", - "spoiling\n", - "spoils\n", - "spoilt\n", - "spoke\n", - "spoked\n", - "spoken\n", - "spokes\n", - "spokesman\n", - "spokesmen\n", - "spokeswoman\n", - "spokeswomen\n", - "spoking\n", - "spoliate\n", - "spoliated\n", - "spoliates\n", - "spoliating\n", - "spondaic\n", - "spondaics\n", - "spondee\n", - "spondees\n", - "sponge\n", - "sponged\n", - "sponger\n", - "spongers\n", - "sponges\n", - "spongier\n", - "spongiest\n", - "spongily\n", - "spongin\n", - "sponging\n", - "spongins\n", - "spongy\n", - "sponsal\n", - "sponsion\n", - "sponsions\n", - "sponson\n", - "sponsons\n", - "sponsor\n", - "sponsored\n", - "sponsoring\n", - "sponsors\n", - "sponsorship\n", - "sponsorships\n", - "spontaneities\n", - "spontaneity\n", - "spontaneous\n", - "spontaneously\n", - "spontoon\n", - "spontoons\n", - "spoof\n", - "spoofed\n", - "spoofing\n", - "spoofs\n", - "spook\n", - "spooked\n", - "spookier\n", - "spookiest\n", - "spookily\n", - "spooking\n", - "spookish\n", - "spooks\n", - "spooky\n", - "spool\n", - "spooled\n", - "spooling\n", - "spools\n", - "spoon\n", - "spooned\n", - "spooney\n", - "spooneys\n", - "spoonful\n", - "spoonfuls\n", - "spoonier\n", - "spoonies\n", - "spooniest\n", - "spoonily\n", - "spooning\n", - "spoons\n", - "spoonsful\n", - "spoony\n", - "spoor\n", - "spoored\n", - "spooring\n", - "spoors\n", - "sporadic\n", - "sporadically\n", - "sporal\n", - "spore\n", - "spored\n", - "spores\n", - "sporing\n", - "sporoid\n", - "sporran\n", - "sporrans\n", - "sport\n", - "sported\n", - "sporter\n", - "sporters\n", - "sportful\n", - "sportier\n", - "sportiest\n", - "sportily\n", - "sporting\n", - "sportive\n", - "sports\n", - "sportscast\n", - "sportscaster\n", - "sportscasters\n", - "sportscasts\n", - "sportsman\n", - "sportsmanship\n", - "sportsmanships\n", - "sportsmen\n", - "sporty\n", - "sporular\n", - "sporule\n", - "sporules\n", - "spot\n", - "spotless\n", - "spotlessly\n", - "spotlight\n", - "spotlighted\n", - "spotlighting\n", - "spotlights\n", - "spots\n", - "spotted\n", - "spotter\n", - "spotters\n", - "spottier\n", - "spottiest\n", - "spottily\n", - "spotting\n", - "spotty\n", - "spousal\n", - "spousals\n", - "spouse\n", - "spoused\n", - "spouses\n", - "spousing\n", - "spout\n", - "spouted\n", - "spouter\n", - "spouters\n", - "spouting\n", - "spouts\n", - "spraddle\n", - "spraddled\n", - "spraddles\n", - "spraddling\n", - "sprag\n", - "sprags\n", - "sprain\n", - "sprained\n", - "spraining\n", - "sprains\n", - "sprang\n", - "sprat\n", - "sprats\n", - "sprattle\n", - "sprattled\n", - "sprattles\n", - "sprattling\n", - "sprawl\n", - "sprawled\n", - "sprawler\n", - "sprawlers\n", - "sprawlier\n", - "sprawliest\n", - "sprawling\n", - "sprawls\n", - "sprawly\n", - "spray\n", - "sprayed\n", - "sprayer\n", - "sprayers\n", - "spraying\n", - "sprays\n", - "spread\n", - "spreader\n", - "spreaders\n", - "spreading\n", - "spreads\n", - "spree\n", - "sprees\n", - "sprent\n", - "sprier\n", - "spriest\n", - "sprig\n", - "sprigged\n", - "sprigger\n", - "spriggers\n", - "spriggier\n", - "spriggiest\n", - "sprigging\n", - "spriggy\n", - "spright\n", - "sprightliness\n", - "sprightlinesses\n", - "sprightly\n", - "sprights\n", - "sprigs\n", - "spring\n", - "springal\n", - "springals\n", - "springe\n", - "springed\n", - "springeing\n", - "springer\n", - "springers\n", - "springes\n", - "springier\n", - "springiest\n", - "springing\n", - "springs\n", - "springy\n", - "sprinkle\n", - "sprinkled\n", - "sprinkler\n", - "sprinklers\n", - "sprinkles\n", - "sprinkling\n", - "sprint\n", - "sprinted\n", - "sprinter\n", - "sprinters\n", - "sprinting\n", - "sprints\n", - "sprit\n", - "sprite\n", - "sprites\n", - "sprits\n", - "sprocket\n", - "sprockets\n", - "sprout\n", - "sprouted\n", - "sprouting\n", - "sprouts\n", - "spruce\n", - "spruced\n", - "sprucely\n", - "sprucer\n", - "spruces\n", - "sprucest\n", - "sprucier\n", - "spruciest\n", - "sprucing\n", - "sprucy\n", - "sprue\n", - "sprues\n", - "sprug\n", - "sprugs\n", - "sprung\n", - "spry\n", - "spryer\n", - "spryest\n", - "spryly\n", - "spryness\n", - "sprynesses\n", - "spud\n", - "spudded\n", - "spudder\n", - "spudders\n", - "spudding\n", - "spuds\n", - "spue\n", - "spued\n", - "spues\n", - "spuing\n", - "spume\n", - "spumed\n", - "spumes\n", - "spumier\n", - "spumiest\n", - "spuming\n", - "spumone\n", - "spumones\n", - "spumoni\n", - "spumonis\n", - "spumous\n", - "spumy\n", - "spun\n", - "spunk\n", - "spunked\n", - "spunkie\n", - "spunkier\n", - "spunkies\n", - "spunkiest\n", - "spunkily\n", - "spunking\n", - "spunks\n", - "spunky\n", - "spur\n", - "spurgall\n", - "spurgalled\n", - "spurgalling\n", - "spurgalls\n", - "spurge\n", - "spurges\n", - "spurious\n", - "spurn\n", - "spurned\n", - "spurner\n", - "spurners\n", - "spurning\n", - "spurns\n", - "spurred\n", - "spurrer\n", - "spurrers\n", - "spurrey\n", - "spurreys\n", - "spurrier\n", - "spurriers\n", - "spurries\n", - "spurring\n", - "spurry\n", - "spurs\n", - "spurt\n", - "spurted\n", - "spurting\n", - "spurtle\n", - "spurtles\n", - "spurts\n", - "sputa\n", - "sputnik\n", - "sputniks\n", - "sputter\n", - "sputtered\n", - "sputtering\n", - "sputters\n", - "sputum\n", - "spy\n", - "spyglass\n", - "spyglasses\n", - "spying\n", - "squab\n", - "squabbier\n", - "squabbiest\n", - "squabble\n", - "squabbled\n", - "squabbles\n", - "squabbling\n", - "squabby\n", - "squabs\n", - "squad\n", - "squadded\n", - "squadding\n", - "squadron\n", - "squadroned\n", - "squadroning\n", - "squadrons\n", - "squads\n", - "squalene\n", - "squalenes\n", - "squalid\n", - "squalider\n", - "squalidest\n", - "squall\n", - "squalled\n", - "squaller\n", - "squallers\n", - "squallier\n", - "squalliest\n", - "squalling\n", - "squalls\n", - "squally\n", - "squalor\n", - "squalors\n", - "squama\n", - "squamae\n", - "squamate\n", - "squamose\n", - "squamous\n", - "squander\n", - "squandered\n", - "squandering\n", - "squanders\n", - "square\n", - "squared\n", - "squarely\n", - "squarer\n", - "squarers\n", - "squares\n", - "squarest\n", - "squaring\n", - "squarish\n", - "squash\n", - "squashed\n", - "squasher\n", - "squashers\n", - "squashes\n", - "squashier\n", - "squashiest\n", - "squashing\n", - "squashy\n", - "squat\n", - "squatly\n", - "squats\n", - "squatted\n", - "squatter\n", - "squattered\n", - "squattering\n", - "squatters\n", - "squattest\n", - "squattier\n", - "squattiest\n", - "squatting\n", - "squatty\n", - "squaw\n", - "squawk\n", - "squawked\n", - "squawker\n", - "squawkers\n", - "squawking\n", - "squawks\n", - "squaws\n", - "squeak\n", - "squeaked\n", - "squeaker\n", - "squeakers\n", - "squeakier\n", - "squeakiest\n", - "squeaking\n", - "squeaks\n", - "squeaky\n", - "squeal\n", - "squealed\n", - "squealer\n", - "squealers\n", - "squealing\n", - "squeals\n", - "squeamish\n", - "squeegee\n", - "squeegeed\n", - "squeegeeing\n", - "squeegees\n", - "squeeze\n", - "squeezed\n", - "squeezer\n", - "squeezers\n", - "squeezes\n", - "squeezing\n", - "squeg\n", - "squegged\n", - "squegging\n", - "squegs\n", - "squelch\n", - "squelched\n", - "squelches\n", - "squelchier\n", - "squelchiest\n", - "squelching\n", - "squelchy\n", - "squib\n", - "squibbed\n", - "squibbing\n", - "squibs\n", - "squid\n", - "squidded\n", - "squidding\n", - "squids\n", - "squiffed\n", - "squiffy\n", - "squiggle\n", - "squiggled\n", - "squiggles\n", - "squigglier\n", - "squiggliest\n", - "squiggling\n", - "squiggly\n", - "squilgee\n", - "squilgeed\n", - "squilgeeing\n", - "squilgees\n", - "squill\n", - "squilla\n", - "squillae\n", - "squillas\n", - "squills\n", - "squinch\n", - "squinched\n", - "squinches\n", - "squinching\n", - "squinnied\n", - "squinnier\n", - "squinnies\n", - "squinniest\n", - "squinny\n", - "squinnying\n", - "squint\n", - "squinted\n", - "squinter\n", - "squinters\n", - "squintest\n", - "squintier\n", - "squintiest\n", - "squinting\n", - "squints\n", - "squinty\n", - "squire\n", - "squired\n", - "squireen\n", - "squireens\n", - "squires\n", - "squiring\n", - "squirish\n", - "squirm\n", - "squirmed\n", - "squirmer\n", - "squirmers\n", - "squirmier\n", - "squirmiest\n", - "squirming\n", - "squirms\n", - "squirmy\n", - "squirrel\n", - "squirreled\n", - "squirreling\n", - "squirrelled\n", - "squirrelling\n", - "squirrels\n", - "squirt\n", - "squirted\n", - "squirter\n", - "squirters\n", - "squirting\n", - "squirts\n", - "squish\n", - "squished\n", - "squishes\n", - "squishier\n", - "squishiest\n", - "squishing\n", - "squishy\n", - "squoosh\n", - "squooshed\n", - "squooshes\n", - "squooshing\n", - "squush\n", - "squushed\n", - "squushes\n", - "squushing\n", - "sraddha\n", - "sraddhas\n", - "sradha\n", - "sradhas\n", - "sri\n", - "sris\n", - "stab\n", - "stabbed\n", - "stabber\n", - "stabbers\n", - "stabbing\n", - "stabile\n", - "stabiles\n", - "stabilities\n", - "stability\n", - "stabilization\n", - "stabilize\n", - "stabilized\n", - "stabilizer\n", - "stabilizers\n", - "stabilizes\n", - "stabilizing\n", - "stable\n", - "stabled\n", - "stabler\n", - "stablers\n", - "stables\n", - "stablest\n", - "stabling\n", - "stablings\n", - "stablish\n", - "stablished\n", - "stablishes\n", - "stablishing\n", - "stably\n", - "stabs\n", - "staccati\n", - "staccato\n", - "staccatos\n", - "stack\n", - "stacked\n", - "stacker\n", - "stackers\n", - "stacking\n", - "stacks\n", - "stacte\n", - "stactes\n", - "staddle\n", - "staddles\n", - "stade\n", - "stades\n", - "stadia\n", - "stadias\n", - "stadium\n", - "stadiums\n", - "staff\n", - "staffed\n", - "staffer\n", - "staffers\n", - "staffing\n", - "staffs\n", - "stag\n", - "stage\n", - "stagecoach\n", - "stagecoaches\n", - "staged\n", - "stager\n", - "stagers\n", - "stages\n", - "stagey\n", - "staggard\n", - "staggards\n", - "staggart\n", - "staggarts\n", - "stagged\n", - "stagger\n", - "staggered\n", - "staggering\n", - "staggeringly\n", - "staggers\n", - "staggery\n", - "staggie\n", - "staggier\n", - "staggies\n", - "staggiest\n", - "stagging\n", - "staggy\n", - "stagier\n", - "stagiest\n", - "stagily\n", - "staging\n", - "stagings\n", - "stagnant\n", - "stagnate\n", - "stagnated\n", - "stagnates\n", - "stagnating\n", - "stagnation\n", - "stagnations\n", - "stags\n", - "stagy\n", - "staid\n", - "staider\n", - "staidest\n", - "staidly\n", - "staig\n", - "staigs\n", - "stain\n", - "stained\n", - "stainer\n", - "stainers\n", - "staining\n", - "stainless\n", - "stains\n", - "stair\n", - "staircase\n", - "staircases\n", - "stairs\n", - "stairway\n", - "stairways\n", - "stairwell\n", - "stairwells\n", - "stake\n", - "staked\n", - "stakeout\n", - "stakeouts\n", - "stakes\n", - "staking\n", - "stalactite\n", - "stalactites\n", - "stalag\n", - "stalagmite\n", - "stalagmites\n", - "stalags\n", - "stale\n", - "staled\n", - "stalely\n", - "stalemate\n", - "stalemated\n", - "stalemates\n", - "stalemating\n", - "staler\n", - "stales\n", - "stalest\n", - "staling\n", - "stalinism\n", - "stalk\n", - "stalked\n", - "stalker\n", - "stalkers\n", - "stalkier\n", - "stalkiest\n", - "stalkily\n", - "stalking\n", - "stalks\n", - "stalky\n", - "stall\n", - "stalled\n", - "stalling\n", - "stallion\n", - "stallions\n", - "stalls\n", - "stalwart\n", - "stalwarts\n", - "stamen\n", - "stamens\n", - "stamina\n", - "staminal\n", - "staminas\n", - "stammel\n", - "stammels\n", - "stammer\n", - "stammered\n", - "stammering\n", - "stammers\n", - "stamp\n", - "stamped\n", - "stampede\n", - "stampeded\n", - "stampedes\n", - "stampeding\n", - "stamper\n", - "stampers\n", - "stamping\n", - "stamps\n", - "stance\n", - "stances\n", - "stanch\n", - "stanched\n", - "stancher\n", - "stanchers\n", - "stanches\n", - "stanchest\n", - "stanching\n", - "stanchion\n", - "stanchions\n", - "stanchly\n", - "stand\n", - "standard\n", - "standardization\n", - "standardizations\n", - "standardize\n", - "standardized\n", - "standardizes\n", - "standardizing\n", - "standards\n", - "standby\n", - "standbys\n", - "standee\n", - "standees\n", - "stander\n", - "standers\n", - "standing\n", - "standings\n", - "standish\n", - "standishes\n", - "standoff\n", - "standoffs\n", - "standout\n", - "standouts\n", - "standpat\n", - "standpoint\n", - "standpoints\n", - "stands\n", - "standstill\n", - "standup\n", - "stane\n", - "staned\n", - "stanes\n", - "stang\n", - "stanged\n", - "stanging\n", - "stangs\n", - "stanhope\n", - "stanhopes\n", - "staning\n", - "stank\n", - "stanks\n", - "stannaries\n", - "stannary\n", - "stannic\n", - "stannite\n", - "stannites\n", - "stannous\n", - "stannum\n", - "stannums\n", - "stanza\n", - "stanzaed\n", - "stanzaic\n", - "stanzas\n", - "stapedes\n", - "stapelia\n", - "stapelias\n", - "stapes\n", - "staph\n", - "staphs\n", - "staple\n", - "stapled\n", - "stapler\n", - "staplers\n", - "staples\n", - "stapling\n", - "star\n", - "starboard\n", - "starboards\n", - "starch\n", - "starched\n", - "starches\n", - "starchier\n", - "starchiest\n", - "starching\n", - "starchy\n", - "stardom\n", - "stardoms\n", - "stardust\n", - "stardusts\n", - "stare\n", - "stared\n", - "starer\n", - "starers\n", - "stares\n", - "starets\n", - "starfish\n", - "starfishes\n", - "stargaze\n", - "stargazed\n", - "stargazes\n", - "stargazing\n", - "staring\n", - "stark\n", - "starker\n", - "starkest\n", - "starkly\n", - "starless\n", - "starlet\n", - "starlets\n", - "starlight\n", - "starlights\n", - "starlike\n", - "starling\n", - "starlings\n", - "starlit\n", - "starnose\n", - "starnoses\n", - "starred\n", - "starrier\n", - "starriest\n", - "starring\n", - "starry\n", - "stars\n", - "start\n", - "started\n", - "starter\n", - "starters\n", - "starting\n", - "startle\n", - "startled\n", - "startler\n", - "startlers\n", - "startles\n", - "startling\n", - "starts\n", - "startsy\n", - "starvation\n", - "starvations\n", - "starve\n", - "starved\n", - "starver\n", - "starvers\n", - "starves\n", - "starving\n", - "starwort\n", - "starworts\n", - "stases\n", - "stash\n", - "stashed\n", - "stashes\n", - "stashing\n", - "stasima\n", - "stasimon\n", - "stasis\n", - "statable\n", - "statal\n", - "statant\n", - "state\n", - "stated\n", - "statedly\n", - "statehood\n", - "statehoods\n", - "statelier\n", - "stateliest\n", - "stateliness\n", - "statelinesses\n", - "stately\n", - "statement\n", - "statements\n", - "stater\n", - "stateroom\n", - "staterooms\n", - "staters\n", - "states\n", - "statesman\n", - "statesmanlike\n", - "statesmanship\n", - "statesmanships\n", - "statesmen\n", - "static\n", - "statical\n", - "statice\n", - "statices\n", - "statics\n", - "stating\n", - "station\n", - "stationary\n", - "stationed\n", - "stationer\n", - "stationeries\n", - "stationers\n", - "stationery\n", - "stationing\n", - "stations\n", - "statism\n", - "statisms\n", - "statist\n", - "statistic\n", - "statistical\n", - "statistically\n", - "statistician\n", - "statisticians\n", - "statistics\n", - "statists\n", - "stative\n", - "statives\n", - "stator\n", - "stators\n", - "statuaries\n", - "statuary\n", - "statue\n", - "statued\n", - "statues\n", - "statuesque\n", - "statuette\n", - "statuettes\n", - "stature\n", - "statures\n", - "status\n", - "statuses\n", - "statute\n", - "statutes\n", - "statutory\n", - "staumrel\n", - "staumrels\n", - "staunch\n", - "staunched\n", - "stauncher\n", - "staunches\n", - "staunchest\n", - "staunching\n", - "staunchly\n", - "stave\n", - "staved\n", - "staves\n", - "staving\n", - "staw\n", - "stay\n", - "stayed\n", - "stayer\n", - "stayers\n", - "staying\n", - "stays\n", - "staysail\n", - "staysails\n", - "stead\n", - "steaded\n", - "steadfast\n", - "steadfastly\n", - "steadfastness\n", - "steadfastnesses\n", - "steadied\n", - "steadier\n", - "steadiers\n", - "steadies\n", - "steadiest\n", - "steadily\n", - "steadiness\n", - "steadinesses\n", - "steading\n", - "steadings\n", - "steads\n", - "steady\n", - "steadying\n", - "steak\n", - "steaks\n", - "steal\n", - "stealage\n", - "stealages\n", - "stealer\n", - "stealers\n", - "stealing\n", - "stealings\n", - "steals\n", - "stealth\n", - "stealthier\n", - "stealthiest\n", - "stealthily\n", - "stealths\n", - "stealthy\n", - "steam\n", - "steamboat\n", - "steamboats\n", - "steamed\n", - "steamer\n", - "steamered\n", - "steamering\n", - "steamers\n", - "steamier\n", - "steamiest\n", - "steamily\n", - "steaming\n", - "steams\n", - "steamship\n", - "steamships\n", - "steamy\n", - "steapsin\n", - "steapsins\n", - "stearate\n", - "stearates\n", - "stearic\n", - "stearin\n", - "stearine\n", - "stearines\n", - "stearins\n", - "steatite\n", - "steatites\n", - "stedfast\n", - "steed\n", - "steeds\n", - "steek\n", - "steeked\n", - "steeking\n", - "steeks\n", - "steel\n", - "steeled\n", - "steelie\n", - "steelier\n", - "steelies\n", - "steeliest\n", - "steeling\n", - "steels\n", - "steely\n", - "steenbok\n", - "steenboks\n", - "steep\n", - "steeped\n", - "steepen\n", - "steepened\n", - "steepening\n", - "steepens\n", - "steeper\n", - "steepers\n", - "steepest\n", - "steeping\n", - "steeple\n", - "steeplechase\n", - "steeplechases\n", - "steepled\n", - "steeples\n", - "steeply\n", - "steepness\n", - "steepnesses\n", - "steeps\n", - "steer\n", - "steerage\n", - "steerages\n", - "steered\n", - "steerer\n", - "steerers\n", - "steering\n", - "steers\n", - "steeve\n", - "steeved\n", - "steeves\n", - "steeving\n", - "steevings\n", - "stegodon\n", - "stegodons\n", - "stein\n", - "steinbok\n", - "steinboks\n", - "steins\n", - "stela\n", - "stelae\n", - "stelai\n", - "stelar\n", - "stele\n", - "stelene\n", - "steles\n", - "stelic\n", - "stella\n", - "stellar\n", - "stellas\n", - "stellate\n", - "stellified\n", - "stellifies\n", - "stellify\n", - "stellifying\n", - "stem\n", - "stemless\n", - "stemlike\n", - "stemma\n", - "stemmas\n", - "stemmata\n", - "stemmed\n", - "stemmer\n", - "stemmeries\n", - "stemmers\n", - "stemmery\n", - "stemmier\n", - "stemmiest\n", - "stemming\n", - "stemmy\n", - "stems\n", - "stemson\n", - "stemsons\n", - "stemware\n", - "stemwares\n", - "stench\n", - "stenches\n", - "stenchier\n", - "stenchiest\n", - "stenchy\n", - "stencil\n", - "stenciled\n", - "stenciling\n", - "stencilled\n", - "stencilling\n", - "stencils\n", - "stengah\n", - "stengahs\n", - "steno\n", - "stenographer\n", - "stenographers\n", - "stenographic\n", - "stenography\n", - "stenos\n", - "stenosed\n", - "stenoses\n", - "stenosis\n", - "stenotic\n", - "stentor\n", - "stentorian\n", - "stentors\n", - "step\n", - "stepdame\n", - "stepdames\n", - "stepladder\n", - "stepladders\n", - "steplike\n", - "steppe\n", - "stepped\n", - "stepper\n", - "steppers\n", - "steppes\n", - "stepping\n", - "steps\n", - "stepson\n", - "stepsons\n", - "stepwise\n", - "stere\n", - "stereo\n", - "stereoed\n", - "stereoing\n", - "stereophonic\n", - "stereos\n", - "stereotype\n", - "stereotyped\n", - "stereotypes\n", - "stereotyping\n", - "steres\n", - "steric\n", - "sterical\n", - "sterigma\n", - "sterigmas\n", - "sterigmata\n", - "sterile\n", - "sterilities\n", - "sterility\n", - "sterilization\n", - "sterilizations\n", - "sterilize\n", - "sterilized\n", - "sterilizer\n", - "sterilizers\n", - "sterilizes\n", - "sterilizing\n", - "sterlet\n", - "sterlets\n", - "sterling\n", - "sterlings\n", - "stern\n", - "sterna\n", - "sternal\n", - "sterner\n", - "sternest\n", - "sternite\n", - "sternites\n", - "sternly\n", - "sternness\n", - "sternnesses\n", - "sterns\n", - "sternson\n", - "sternsons\n", - "sternum\n", - "sternums\n", - "sternway\n", - "sternways\n", - "steroid\n", - "steroids\n", - "sterol\n", - "sterols\n", - "stertor\n", - "stertors\n", - "stet\n", - "stethoscope\n", - "stethoscopes\n", - "stets\n", - "stetson\n", - "stetsons\n", - "stetted\n", - "stetting\n", - "stevedore\n", - "stevedores\n", - "stew\n", - "steward\n", - "stewarded\n", - "stewardess\n", - "stewardesses\n", - "stewarding\n", - "stewards\n", - "stewardship\n", - "stewardships\n", - "stewbum\n", - "stewbums\n", - "stewed\n", - "stewing\n", - "stewpan\n", - "stewpans\n", - "stews\n", - "stey\n", - "sthenia\n", - "sthenias\n", - "sthenic\n", - "stibial\n", - "stibine\n", - "stibines\n", - "stibium\n", - "stibiums\n", - "stibnite\n", - "stibnites\n", - "stich\n", - "stichic\n", - "stichs\n", - "stick\n", - "sticked\n", - "sticker\n", - "stickers\n", - "stickful\n", - "stickfuls\n", - "stickier\n", - "stickiest\n", - "stickily\n", - "sticking\n", - "stickit\n", - "stickle\n", - "stickled\n", - "stickler\n", - "sticklers\n", - "stickles\n", - "stickling\n", - "stickman\n", - "stickmen\n", - "stickout\n", - "stickouts\n", - "stickpin\n", - "stickpins\n", - "sticks\n", - "stickum\n", - "stickums\n", - "stickup\n", - "stickups\n", - "sticky\n", - "stied\n", - "sties\n", - "stiff\n", - "stiffen\n", - "stiffened\n", - "stiffening\n", - "stiffens\n", - "stiffer\n", - "stiffest\n", - "stiffish\n", - "stiffly\n", - "stiffness\n", - "stiffnesses\n", - "stiffs\n", - "stifle\n", - "stifled\n", - "stifler\n", - "stiflers\n", - "stifles\n", - "stifling\n", - "stigma\n", - "stigmal\n", - "stigmas\n", - "stigmata\n", - "stigmatize\n", - "stigmatized\n", - "stigmatizes\n", - "stigmatizing\n", - "stilbene\n", - "stilbenes\n", - "stilbite\n", - "stilbites\n", - "stile\n", - "stiles\n", - "stiletto\n", - "stilettoed\n", - "stilettoes\n", - "stilettoing\n", - "stilettos\n", - "still\n", - "stillbirth\n", - "stillbirths\n", - "stillborn\n", - "stilled\n", - "stiller\n", - "stillest\n", - "stillier\n", - "stilliest\n", - "stilling\n", - "stillman\n", - "stillmen\n", - "stillness\n", - "stillnesses\n", - "stills\n", - "stilly\n", - "stilt\n", - "stilted\n", - "stilting\n", - "stilts\n", - "stime\n", - "stimes\n", - "stimied\n", - "stimies\n", - "stimulant\n", - "stimulants\n", - "stimulate\n", - "stimulated\n", - "stimulates\n", - "stimulating\n", - "stimulation\n", - "stimulations\n", - "stimuli\n", - "stimulus\n", - "stimy\n", - "stimying\n", - "sting\n", - "stinger\n", - "stingers\n", - "stingier\n", - "stingiest\n", - "stingily\n", - "stinginess\n", - "stinginesses\n", - "stinging\n", - "stingo\n", - "stingos\n", - "stingray\n", - "stingrays\n", - "stings\n", - "stingy\n", - "stink\n", - "stinkard\n", - "stinkards\n", - "stinkbug\n", - "stinkbugs\n", - "stinker\n", - "stinkers\n", - "stinkier\n", - "stinkiest\n", - "stinking\n", - "stinko\n", - "stinkpot\n", - "stinkpots\n", - "stinks\n", - "stinky\n", - "stint\n", - "stinted\n", - "stinter\n", - "stinters\n", - "stinting\n", - "stints\n", - "stipe\n", - "stiped\n", - "stipel\n", - "stipels\n", - "stipend\n", - "stipends\n", - "stipes\n", - "stipites\n", - "stipple\n", - "stippled\n", - "stippler\n", - "stipplers\n", - "stipples\n", - "stippling\n", - "stipular\n", - "stipulate\n", - "stipulated\n", - "stipulates\n", - "stipulating\n", - "stipulation\n", - "stipulations\n", - "stipule\n", - "stipuled\n", - "stipules\n", - "stir\n", - "stirk\n", - "stirks\n", - "stirp\n", - "stirpes\n", - "stirps\n", - "stirred\n", - "stirrer\n", - "stirrers\n", - "stirring\n", - "stirrup\n", - "stirrups\n", - "stirs\n", - "stitch\n", - "stitched\n", - "stitcher\n", - "stitchers\n", - "stitches\n", - "stitching\n", - "stithied\n", - "stithies\n", - "stithy\n", - "stithying\n", - "stiver\n", - "stivers\n", - "stoa\n", - "stoae\n", - "stoai\n", - "stoas\n", - "stoat\n", - "stoats\n", - "stob\n", - "stobbed\n", - "stobbing\n", - "stobs\n", - "stoccado\n", - "stoccados\n", - "stoccata\n", - "stoccatas\n", - "stock\n", - "stockade\n", - "stockaded\n", - "stockades\n", - "stockading\n", - "stockcar\n", - "stockcars\n", - "stocked\n", - "stocker\n", - "stockers\n", - "stockier\n", - "stockiest\n", - "stockily\n", - "stocking\n", - "stockings\n", - "stockish\n", - "stockist\n", - "stockists\n", - "stockman\n", - "stockmen\n", - "stockpile\n", - "stockpiled\n", - "stockpiles\n", - "stockpiling\n", - "stockpot\n", - "stockpots\n", - "stocks\n", - "stocky\n", - "stockyard\n", - "stockyards\n", - "stodge\n", - "stodged\n", - "stodges\n", - "stodgier\n", - "stodgiest\n", - "stodgily\n", - "stodging\n", - "stodgy\n", - "stogey\n", - "stogeys\n", - "stogie\n", - "stogies\n", - "stogy\n", - "stoic\n", - "stoical\n", - "stoically\n", - "stoicism\n", - "stoicisms\n", - "stoics\n", - "stoke\n", - "stoked\n", - "stoker\n", - "stokers\n", - "stokes\n", - "stokesia\n", - "stokesias\n", - "stoking\n", - "stole\n", - "stoled\n", - "stolen\n", - "stoles\n", - "stolid\n", - "stolider\n", - "stolidest\n", - "stolidities\n", - "stolidity\n", - "stolidly\n", - "stollen\n", - "stollens\n", - "stolon\n", - "stolonic\n", - "stolons\n", - "stoma\n", - "stomach\n", - "stomachache\n", - "stomachaches\n", - "stomached\n", - "stomaching\n", - "stomachs\n", - "stomachy\n", - "stomal\n", - "stomas\n", - "stomata\n", - "stomatal\n", - "stomate\n", - "stomates\n", - "stomatic\n", - "stomatitis\n", - "stomodea\n", - "stomp\n", - "stomped\n", - "stomper\n", - "stompers\n", - "stomping\n", - "stomps\n", - "stonable\n", - "stone\n", - "stoned\n", - "stoneflies\n", - "stonefly\n", - "stoner\n", - "stoners\n", - "stones\n", - "stoney\n", - "stonier\n", - "stoniest\n", - "stonily\n", - "stoning\n", - "stonish\n", - "stonished\n", - "stonishes\n", - "stonishing\n", - "stony\n", - "stood\n", - "stooge\n", - "stooged\n", - "stooges\n", - "stooging\n", - "stook\n", - "stooked\n", - "stooker\n", - "stookers\n", - "stooking\n", - "stooks\n", - "stool\n", - "stooled\n", - "stoolie\n", - "stoolies\n", - "stooling\n", - "stools\n", - "stoop\n", - "stooped\n", - "stooper\n", - "stoopers\n", - "stooping\n", - "stoops\n", - "stop\n", - "stopcock\n", - "stopcocks\n", - "stope\n", - "stoped\n", - "stoper\n", - "stopers\n", - "stopes\n", - "stopgap\n", - "stopgaps\n", - "stoping\n", - "stoplight\n", - "stoplights\n", - "stopover\n", - "stopovers\n", - "stoppage\n", - "stoppages\n", - "stopped\n", - "stopper\n", - "stoppered\n", - "stoppering\n", - "stoppers\n", - "stopping\n", - "stopple\n", - "stoppled\n", - "stopples\n", - "stoppling\n", - "stops\n", - "stopt\n", - "stopwatch\n", - "stopwatches\n", - "storable\n", - "storables\n", - "storage\n", - "storages\n", - "storax\n", - "storaxes\n", - "store\n", - "stored\n", - "storehouse\n", - "storehouses\n", - "storekeeper\n", - "storekeepers\n", - "storeroom\n", - "storerooms\n", - "stores\n", - "storey\n", - "storeyed\n", - "storeys\n", - "storied\n", - "stories\n", - "storing\n", - "stork\n", - "storks\n", - "storm\n", - "stormed\n", - "stormier\n", - "stormiest\n", - "stormily\n", - "storming\n", - "storms\n", - "stormy\n", - "story\n", - "storying\n", - "storyteller\n", - "storytellers\n", - "storytelling\n", - "storytellings\n", - "stoss\n", - "stotinka\n", - "stotinki\n", - "stound\n", - "stounded\n", - "stounding\n", - "stounds\n", - "stoup\n", - "stoups\n", - "stour\n", - "stoure\n", - "stoures\n", - "stourie\n", - "stours\n", - "stoury\n", - "stout\n", - "stouten\n", - "stoutened\n", - "stoutening\n", - "stoutens\n", - "stouter\n", - "stoutest\n", - "stoutish\n", - "stoutly\n", - "stoutness\n", - "stoutnesses\n", - "stouts\n", - "stove\n", - "stover\n", - "stovers\n", - "stoves\n", - "stow\n", - "stowable\n", - "stowage\n", - "stowages\n", - "stowaway\n", - "stowaways\n", - "stowed\n", - "stowing\n", - "stowp\n", - "stowps\n", - "stows\n", - "straddle\n", - "straddled\n", - "straddles\n", - "straddling\n", - "strafe\n", - "strafed\n", - "strafer\n", - "strafers\n", - "strafes\n", - "strafing\n", - "straggle\n", - "straggled\n", - "straggler\n", - "stragglers\n", - "straggles\n", - "stragglier\n", - "straggliest\n", - "straggling\n", - "straggly\n", - "straight\n", - "straighted\n", - "straighten\n", - "straightened\n", - "straightening\n", - "straightens\n", - "straighter\n", - "straightest\n", - "straightforward\n", - "straightforwarder\n", - "straightforwardest\n", - "straighting\n", - "straights\n", - "straightway\n", - "strain\n", - "strained\n", - "strainer\n", - "strainers\n", - "straining\n", - "strains\n", - "strait\n", - "straiten\n", - "straitened\n", - "straitening\n", - "straitens\n", - "straiter\n", - "straitest\n", - "straitly\n", - "straits\n", - "strake\n", - "straked\n", - "strakes\n", - "stramash\n", - "stramashes\n", - "stramonies\n", - "stramony\n", - "strand\n", - "stranded\n", - "strander\n", - "stranders\n", - "stranding\n", - "strands\n", - "strang\n", - "strange\n", - "strangely\n", - "strangeness\n", - "strangenesses\n", - "stranger\n", - "strangered\n", - "strangering\n", - "strangers\n", - "strangest\n", - "strangle\n", - "strangled\n", - "strangler\n", - "stranglers\n", - "strangles\n", - "strangling\n", - "strangulation\n", - "strangulations\n", - "strap\n", - "strapness\n", - "strapnesses\n", - "strapped\n", - "strapper\n", - "strappers\n", - "strapping\n", - "straps\n", - "strass\n", - "strasses\n", - "strata\n", - "stratagem\n", - "stratagems\n", - "stratal\n", - "stratas\n", - "strategic\n", - "strategies\n", - "strategist\n", - "strategists\n", - "strategy\n", - "strath\n", - "straths\n", - "strati\n", - "stratification\n", - "stratifications\n", - "stratified\n", - "stratifies\n", - "stratify\n", - "stratifying\n", - "stratosphere\n", - "stratospheres\n", - "stratous\n", - "stratum\n", - "stratums\n", - "stratus\n", - "stravage\n", - "stravaged\n", - "stravages\n", - "stravaging\n", - "stravaig\n", - "stravaiged\n", - "stravaiging\n", - "stravaigs\n", - "straw\n", - "strawberries\n", - "strawberry\n", - "strawed\n", - "strawhat\n", - "strawier\n", - "strawiest\n", - "strawing\n", - "straws\n", - "strawy\n", - "stray\n", - "strayed\n", - "strayer\n", - "strayers\n", - "straying\n", - "strays\n", - "streak\n", - "streaked\n", - "streaker\n", - "streakers\n", - "streakier\n", - "streakiest\n", - "streaking\n", - "streaks\n", - "streaky\n", - "stream\n", - "streamed\n", - "streamer\n", - "streamers\n", - "streamier\n", - "streamiest\n", - "streaming\n", - "streamline\n", - "streamlines\n", - "streams\n", - "streamy\n", - "streek\n", - "streeked\n", - "streeker\n", - "streekers\n", - "streeking\n", - "streeks\n", - "street\n", - "streetcar\n", - "streetcars\n", - "streets\n", - "strength\n", - "strengthen\n", - "strengthened\n", - "strengthener\n", - "strengtheners\n", - "strengthening\n", - "strengthens\n", - "strengths\n", - "strenuous\n", - "strenuously\n", - "strep\n", - "streps\n", - "stress\n", - "stressed\n", - "stresses\n", - "stressing\n", - "stressor\n", - "stressors\n", - "stretch\n", - "stretched\n", - "stretcher\n", - "stretchers\n", - "stretches\n", - "stretchier\n", - "stretchiest\n", - "stretching\n", - "stretchy\n", - "stretta\n", - "strettas\n", - "strette\n", - "stretti\n", - "stretto\n", - "strettos\n", - "streusel\n", - "streusels\n", - "strew\n", - "strewed\n", - "strewer\n", - "strewers\n", - "strewing\n", - "strewn\n", - "strews\n", - "stria\n", - "striae\n", - "striate\n", - "striated\n", - "striates\n", - "striating\n", - "strick\n", - "stricken\n", - "strickle\n", - "strickled\n", - "strickles\n", - "strickling\n", - "stricks\n", - "strict\n", - "stricter\n", - "strictest\n", - "strictly\n", - "strictness\n", - "strictnesses\n", - "stricture\n", - "strictures\n", - "strid\n", - "stridden\n", - "stride\n", - "strident\n", - "strider\n", - "striders\n", - "strides\n", - "striding\n", - "stridor\n", - "stridors\n", - "strife\n", - "strifes\n", - "strigil\n", - "strigils\n", - "strigose\n", - "strike\n", - "striker\n", - "strikers\n", - "strikes\n", - "striking\n", - "strikingly\n", - "string\n", - "stringed\n", - "stringent\n", - "stringer\n", - "stringers\n", - "stringier\n", - "stringiest\n", - "stringing\n", - "strings\n", - "stringy\n", - "strip\n", - "stripe\n", - "striped\n", - "striper\n", - "stripers\n", - "stripes\n", - "stripier\n", - "stripiest\n", - "striping\n", - "stripings\n", - "stripped\n", - "stripper\n", - "strippers\n", - "stripping\n", - "strips\n", - "stript\n", - "stripy\n", - "strive\n", - "strived\n", - "striven\n", - "striver\n", - "strivers\n", - "strives\n", - "striving\n", - "strobe\n", - "strobes\n", - "strobic\n", - "strobil\n", - "strobila\n", - "strobilae\n", - "strobile\n", - "strobiles\n", - "strobili\n", - "strobils\n", - "strode\n", - "stroke\n", - "stroked\n", - "stroker\n", - "strokers\n", - "strokes\n", - "stroking\n", - "stroll\n", - "strolled\n", - "stroller\n", - "strollers\n", - "strolling\n", - "strolls\n", - "stroma\n", - "stromal\n", - "stromata\n", - "strong\n", - "stronger\n", - "strongest\n", - "stronghold\n", - "strongholds\n", - "strongly\n", - "strongyl\n", - "strongyls\n", - "strontia\n", - "strontias\n", - "strontic\n", - "strontium\n", - "strontiums\n", - "strook\n", - "strop\n", - "strophe\n", - "strophes\n", - "strophic\n", - "stropped\n", - "stropping\n", - "strops\n", - "stroud\n", - "strouds\n", - "strove\n", - "strow\n", - "strowed\n", - "strowing\n", - "strown\n", - "strows\n", - "stroy\n", - "stroyed\n", - "stroyer\n", - "stroyers\n", - "stroying\n", - "stroys\n", - "struck\n", - "strucken\n", - "structural\n", - "structure\n", - "structures\n", - "strudel\n", - "strudels\n", - "struggle\n", - "struggled\n", - "struggles\n", - "struggling\n", - "strum\n", - "struma\n", - "strumae\n", - "strumas\n", - "strummed\n", - "strummer\n", - "strummers\n", - "strumming\n", - "strumose\n", - "strumous\n", - "strumpet\n", - "strumpets\n", - "strums\n", - "strung\n", - "strunt\n", - "strunted\n", - "strunting\n", - "strunts\n", - "strut\n", - "struts\n", - "strutted\n", - "strutter\n", - "strutters\n", - "strutting\n", - "strychnine\n", - "strychnines\n", - "stub\n", - "stubbed\n", - "stubbier\n", - "stubbiest\n", - "stubbily\n", - "stubbing\n", - "stubble\n", - "stubbled\n", - "stubbles\n", - "stubblier\n", - "stubbliest\n", - "stubbly\n", - "stubborn\n", - "stubbornly\n", - "stubbornness\n", - "stubbornnesses\n", - "stubby\n", - "stubiest\n", - "stubs\n", - "stucco\n", - "stuccoed\n", - "stuccoer\n", - "stuccoers\n", - "stuccoes\n", - "stuccoing\n", - "stuccos\n", - "stuck\n", - "stud\n", - "studbook\n", - "studbooks\n", - "studded\n", - "studdie\n", - "studdies\n", - "studding\n", - "studdings\n", - "student\n", - "students\n", - "studfish\n", - "studfishes\n", - "studied\n", - "studier\n", - "studiers\n", - "studies\n", - "studio\n", - "studios\n", - "studious\n", - "studiously\n", - "studs\n", - "studwork\n", - "studworks\n", - "study\n", - "studying\n", - "stuff\n", - "stuffed\n", - "stuffer\n", - "stuffers\n", - "stuffier\n", - "stuffiest\n", - "stuffily\n", - "stuffing\n", - "stuffings\n", - "stuffs\n", - "stuffy\n", - "stuiver\n", - "stuivers\n", - "stull\n", - "stulls\n", - "stultification\n", - "stultifications\n", - "stultified\n", - "stultifies\n", - "stultify\n", - "stultifying\n", - "stum\n", - "stumble\n", - "stumbled\n", - "stumbler\n", - "stumblers\n", - "stumbles\n", - "stumbling\n", - "stummed\n", - "stumming\n", - "stump\n", - "stumpage\n", - "stumpages\n", - "stumped\n", - "stumper\n", - "stumpers\n", - "stumpier\n", - "stumpiest\n", - "stumping\n", - "stumps\n", - "stumpy\n", - "stums\n", - "stun\n", - "stung\n", - "stunk\n", - "stunned\n", - "stunner\n", - "stunners\n", - "stunning\n", - "stunningly\n", - "stuns\n", - "stunsail\n", - "stunsails\n", - "stunt\n", - "stunted\n", - "stunting\n", - "stunts\n", - "stupa\n", - "stupas\n", - "stupe\n", - "stupefaction\n", - "stupefactions\n", - "stupefied\n", - "stupefies\n", - "stupefy\n", - "stupefying\n", - "stupendous\n", - "stupendously\n", - "stupes\n", - "stupid\n", - "stupider\n", - "stupidest\n", - "stupidity\n", - "stupidly\n", - "stupids\n", - "stupor\n", - "stuporous\n", - "stupors\n", - "sturdied\n", - "sturdier\n", - "sturdies\n", - "sturdiest\n", - "sturdily\n", - "sturdiness\n", - "sturdinesses\n", - "sturdy\n", - "sturgeon\n", - "sturgeons\n", - "sturt\n", - "sturts\n", - "stutter\n", - "stuttered\n", - "stuttering\n", - "stutters\n", - "sty\n", - "stye\n", - "styed\n", - "styes\n", - "stygian\n", - "stying\n", - "stylar\n", - "stylate\n", - "style\n", - "styled\n", - "styler\n", - "stylers\n", - "styles\n", - "stylet\n", - "stylets\n", - "styli\n", - "styling\n", - "stylings\n", - "stylise\n", - "stylised\n", - "styliser\n", - "stylisers\n", - "stylises\n", - "stylish\n", - "stylishly\n", - "stylishness\n", - "stylishnesses\n", - "stylising\n", - "stylist\n", - "stylists\n", - "stylite\n", - "stylites\n", - "stylitic\n", - "stylize\n", - "stylized\n", - "stylizer\n", - "stylizers\n", - "stylizes\n", - "stylizing\n", - "styloid\n", - "stylus\n", - "styluses\n", - "stymie\n", - "stymied\n", - "stymieing\n", - "stymies\n", - "stymy\n", - "stymying\n", - "stypsis\n", - "stypsises\n", - "styptic\n", - "styptics\n", - "styrax\n", - "styraxes\n", - "styrene\n", - "styrenes\n", - "suable\n", - "suably\n", - "suasion\n", - "suasions\n", - "suasive\n", - "suasory\n", - "suave\n", - "suavely\n", - "suaver\n", - "suavest\n", - "suavities\n", - "suavity\n", - "sub\n", - "suba\n", - "subabbot\n", - "subabbots\n", - "subacid\n", - "subacrid\n", - "subacute\n", - "subadar\n", - "subadars\n", - "subadult\n", - "subadults\n", - "subagencies\n", - "subagency\n", - "subagent\n", - "subagents\n", - "subah\n", - "subahdar\n", - "subahdars\n", - "subahs\n", - "subalar\n", - "subarctic\n", - "subarea\n", - "subareas\n", - "subarid\n", - "subas\n", - "subatmospheric\n", - "subatom\n", - "subatoms\n", - "subaverage\n", - "subaxial\n", - "subbase\n", - "subbasement\n", - "subbasements\n", - "subbases\n", - "subbass\n", - "subbasses\n", - "subbed\n", - "subbing\n", - "subbings\n", - "subbranch\n", - "subbranches\n", - "subbreed\n", - "subbreeds\n", - "subcabinet\n", - "subcabinets\n", - "subcategories\n", - "subcategory\n", - "subcause\n", - "subcauses\n", - "subcell\n", - "subcells\n", - "subchief\n", - "subchiefs\n", - "subclan\n", - "subclans\n", - "subclass\n", - "subclassed\n", - "subclasses\n", - "subclassification\n", - "subclassifications\n", - "subclassified\n", - "subclassifies\n", - "subclassify\n", - "subclassifying\n", - "subclassing\n", - "subclerk\n", - "subclerks\n", - "subcommand\n", - "subcommands\n", - "subcommission\n", - "subcommissions\n", - "subcommunities\n", - "subcommunity\n", - "subcomponent\n", - "subcomponents\n", - "subconcept\n", - "subconcepts\n", - "subconscious\n", - "subconsciouses\n", - "subconsciously\n", - "subconsciousness\n", - "subconsciousnesses\n", - "subcontract\n", - "subcontracted\n", - "subcontracting\n", - "subcontractor\n", - "subcontractors\n", - "subcontracts\n", - "subcool\n", - "subcooled\n", - "subcooling\n", - "subcools\n", - "subculture\n", - "subcultures\n", - "subcutaneous\n", - "subcutes\n", - "subcutis\n", - "subcutises\n", - "subdean\n", - "subdeans\n", - "subdeb\n", - "subdebs\n", - "subdepartment\n", - "subdepartments\n", - "subdepot\n", - "subdepots\n", - "subdistrict\n", - "subdistricts\n", - "subdivide\n", - "subdivided\n", - "subdivides\n", - "subdividing\n", - "subdivision\n", - "subdivisions\n", - "subdual\n", - "subduals\n", - "subduce\n", - "subduced\n", - "subduces\n", - "subducing\n", - "subduct\n", - "subducted\n", - "subducting\n", - "subducts\n", - "subdue\n", - "subdued\n", - "subduer\n", - "subduers\n", - "subdues\n", - "subduing\n", - "subecho\n", - "subechoes\n", - "subedit\n", - "subedited\n", - "subediting\n", - "subedits\n", - "subentries\n", - "subentry\n", - "subepoch\n", - "subepochs\n", - "subequatorial\n", - "suber\n", - "suberect\n", - "suberic\n", - "suberin\n", - "suberins\n", - "suberise\n", - "suberised\n", - "suberises\n", - "suberising\n", - "suberize\n", - "suberized\n", - "suberizes\n", - "suberizing\n", - "suberose\n", - "suberous\n", - "subers\n", - "subfamilies\n", - "subfamily\n", - "subfield\n", - "subfields\n", - "subfix\n", - "subfixes\n", - "subfloor\n", - "subfloors\n", - "subfluid\n", - "subfreezing\n", - "subfusc\n", - "subgenera\n", - "subgenus\n", - "subgenuses\n", - "subgrade\n", - "subgrades\n", - "subgroup\n", - "subgroups\n", - "subgum\n", - "subhead\n", - "subheading\n", - "subheadings\n", - "subheads\n", - "subhuman\n", - "subhumans\n", - "subhumid\n", - "subidea\n", - "subideas\n", - "subindex\n", - "subindexes\n", - "subindices\n", - "subindustries\n", - "subindustry\n", - "subitem\n", - "subitems\n", - "subito\n", - "subject\n", - "subjected\n", - "subjecting\n", - "subjection\n", - "subjections\n", - "subjective\n", - "subjectively\n", - "subjectivities\n", - "subjectivity\n", - "subjects\n", - "subjoin\n", - "subjoined\n", - "subjoining\n", - "subjoins\n", - "subjugate\n", - "subjugated\n", - "subjugates\n", - "subjugating\n", - "subjugation\n", - "subjugations\n", - "subjunctive\n", - "subjunctives\n", - "sublate\n", - "sublated\n", - "sublates\n", - "sublating\n", - "sublease\n", - "subleased\n", - "subleases\n", - "subleasing\n", - "sublet\n", - "sublethal\n", - "sublets\n", - "subletting\n", - "sublevel\n", - "sublevels\n", - "sublime\n", - "sublimed\n", - "sublimer\n", - "sublimers\n", - "sublimes\n", - "sublimest\n", - "subliming\n", - "sublimities\n", - "sublimity\n", - "subliterate\n", - "submarine\n", - "submarines\n", - "submerge\n", - "submerged\n", - "submergence\n", - "submergences\n", - "submerges\n", - "submerging\n", - "submerse\n", - "submersed\n", - "submerses\n", - "submersible\n", - "submersing\n", - "submersion\n", - "submersions\n", - "submiss\n", - "submission\n", - "submissions\n", - "submissive\n", - "submit\n", - "submits\n", - "submitted\n", - "submitting\n", - "subnasal\n", - "subnetwork\n", - "subnetworks\n", - "subnodal\n", - "subnormal\n", - "suboceanic\n", - "suboptic\n", - "suboral\n", - "suborder\n", - "suborders\n", - "subordinate\n", - "subordinated\n", - "subordinates\n", - "subordinating\n", - "subordination\n", - "subordinations\n", - "suborn\n", - "suborned\n", - "suborner\n", - "suborners\n", - "suborning\n", - "suborns\n", - "suboval\n", - "subovate\n", - "suboxide\n", - "suboxides\n", - "subpar\n", - "subpart\n", - "subparts\n", - "subpena\n", - "subpenaed\n", - "subpenaing\n", - "subpenas\n", - "subphyla\n", - "subplot\n", - "subplots\n", - "subpoena\n", - "subpoenaed\n", - "subpoenaing\n", - "subpoenas\n", - "subpolar\n", - "subprincipal\n", - "subprincipals\n", - "subprocess\n", - "subprocesses\n", - "subprogram\n", - "subprograms\n", - "subproject\n", - "subprojects\n", - "subpubic\n", - "subrace\n", - "subraces\n", - "subregion\n", - "subregions\n", - "subrent\n", - "subrents\n", - "subring\n", - "subrings\n", - "subroutine\n", - "subroutines\n", - "subrule\n", - "subrules\n", - "subs\n", - "subsale\n", - "subsales\n", - "subscribe\n", - "subscribed\n", - "subscriber\n", - "subscribers\n", - "subscribes\n", - "subscribing\n", - "subscript\n", - "subscription\n", - "subscriptions\n", - "subscripts\n", - "subsect\n", - "subsection\n", - "subsections\n", - "subsects\n", - "subsequent\n", - "subsequently\n", - "subsere\n", - "subseres\n", - "subserve\n", - "subserved\n", - "subserves\n", - "subserving\n", - "subset\n", - "subsets\n", - "subshaft\n", - "subshafts\n", - "subshrub\n", - "subshrubs\n", - "subside\n", - "subsided\n", - "subsider\n", - "subsiders\n", - "subsides\n", - "subsidiaries\n", - "subsidiary\n", - "subsidies\n", - "subsiding\n", - "subsidize\n", - "subsidized\n", - "subsidizes\n", - "subsidizing\n", - "subsidy\n", - "subsist\n", - "subsisted\n", - "subsistence\n", - "subsistences\n", - "subsisting\n", - "subsists\n", - "subsoil\n", - "subsoiled\n", - "subsoiling\n", - "subsoils\n", - "subsolar\n", - "subsonic\n", - "subspace\n", - "subspaces\n", - "subspecialties\n", - "subspecialty\n", - "subspecies\n", - "substage\n", - "substages\n", - "substandard\n", - "substantial\n", - "substantially\n", - "substantiate\n", - "substantiated\n", - "substantiates\n", - "substantiating\n", - "substantiation\n", - "substantiations\n", - "substitute\n", - "substituted\n", - "substitutes\n", - "substituting\n", - "substitution\n", - "substitutions\n", - "substructure\n", - "substructures\n", - "subsume\n", - "subsumed\n", - "subsumes\n", - "subsuming\n", - "subsurface\n", - "subsystem\n", - "subsystems\n", - "subteen\n", - "subteens\n", - "subtemperate\n", - "subtend\n", - "subtended\n", - "subtending\n", - "subtends\n", - "subterfuge\n", - "subterfuges\n", - "subterranean\n", - "subterraneous\n", - "subtext\n", - "subtexts\n", - "subtile\n", - "subtiler\n", - "subtilest\n", - "subtilties\n", - "subtilty\n", - "subtitle\n", - "subtitled\n", - "subtitles\n", - "subtitling\n", - "subtle\n", - "subtler\n", - "subtlest\n", - "subtleties\n", - "subtlety\n", - "subtly\n", - "subtone\n", - "subtones\n", - "subtonic\n", - "subtonics\n", - "subtopic\n", - "subtopics\n", - "subtotal\n", - "subtotaled\n", - "subtotaling\n", - "subtotalled\n", - "subtotalling\n", - "subtotals\n", - "subtract\n", - "subtracted\n", - "subtracting\n", - "subtraction\n", - "subtractions\n", - "subtracts\n", - "subtreasuries\n", - "subtreasury\n", - "subtribe\n", - "subtribes\n", - "subtunic\n", - "subtunics\n", - "subtype\n", - "subtypes\n", - "subulate\n", - "subunit\n", - "subunits\n", - "suburb\n", - "suburban\n", - "suburbans\n", - "suburbed\n", - "suburbia\n", - "suburbias\n", - "suburbs\n", - "subvene\n", - "subvened\n", - "subvenes\n", - "subvening\n", - "subvert\n", - "subverted\n", - "subverting\n", - "subverts\n", - "subvicar\n", - "subvicars\n", - "subviral\n", - "subvocal\n", - "subway\n", - "subways\n", - "subzone\n", - "subzones\n", - "succah\n", - "succahs\n", - "succeed\n", - "succeeded\n", - "succeeding\n", - "succeeds\n", - "success\n", - "successes\n", - "successful\n", - "successfully\n", - "succession\n", - "successions\n", - "successive\n", - "successively\n", - "successor\n", - "successors\n", - "succinct\n", - "succincter\n", - "succinctest\n", - "succinctly\n", - "succinctness\n", - "succinctnesses\n", - "succinic\n", - "succinyl\n", - "succinyls\n", - "succor\n", - "succored\n", - "succorer\n", - "succorers\n", - "succories\n", - "succoring\n", - "succors\n", - "succory\n", - "succotash\n", - "succotashes\n", - "succoth\n", - "succour\n", - "succoured\n", - "succouring\n", - "succours\n", - "succuba\n", - "succubae\n", - "succubi\n", - "succubus\n", - "succubuses\n", - "succulence\n", - "succulences\n", - "succulent\n", - "succulents\n", - "succumb\n", - "succumbed\n", - "succumbing\n", - "succumbs\n", - "succuss\n", - "succussed\n", - "succusses\n", - "succussing\n", - "such\n", - "suchlike\n", - "suchness\n", - "suchnesses\n", - "suck\n", - "sucked\n", - "sucker\n", - "suckered\n", - "suckering\n", - "suckers\n", - "suckfish\n", - "suckfishes\n", - "sucking\n", - "suckle\n", - "suckled\n", - "suckler\n", - "sucklers\n", - "suckles\n", - "suckless\n", - "suckling\n", - "sucklings\n", - "sucks\n", - "sucrase\n", - "sucrases\n", - "sucre\n", - "sucres\n", - "sucrose\n", - "sucroses\n", - "suction\n", - "suctions\n", - "sudaria\n", - "sudaries\n", - "sudarium\n", - "sudary\n", - "sudation\n", - "sudations\n", - "sudatories\n", - "sudatory\n", - "sudd\n", - "sudden\n", - "suddenly\n", - "suddenness\n", - "suddennesses\n", - "suddens\n", - "sudds\n", - "sudor\n", - "sudoral\n", - "sudors\n", - "suds\n", - "sudsed\n", - "sudser\n", - "sudsers\n", - "sudses\n", - "sudsier\n", - "sudsiest\n", - "sudsing\n", - "sudsless\n", - "sudsy\n", - "sue\n", - "sued\n", - "suede\n", - "sueded\n", - "suedes\n", - "sueding\n", - "suer\n", - "suers\n", - "sues\n", - "suet\n", - "suets\n", - "suety\n", - "suffari\n", - "suffaris\n", - "suffer\n", - "suffered\n", - "sufferer\n", - "sufferers\n", - "suffering\n", - "sufferings\n", - "suffers\n", - "suffice\n", - "sufficed\n", - "sufficer\n", - "sufficers\n", - "suffices\n", - "sufficiencies\n", - "sufficiency\n", - "sufficient\n", - "sufficiently\n", - "sufficing\n", - "suffix\n", - "suffixal\n", - "suffixation\n", - "suffixations\n", - "suffixed\n", - "suffixes\n", - "suffixing\n", - "sufflate\n", - "sufflated\n", - "sufflates\n", - "sufflating\n", - "suffocate\n", - "suffocated\n", - "suffocates\n", - "suffocating\n", - "suffocatingly\n", - "suffocation\n", - "suffocations\n", - "suffrage\n", - "suffrages\n", - "suffuse\n", - "suffused\n", - "suffuses\n", - "suffusing\n", - "sugar\n", - "sugarcane\n", - "sugarcanes\n", - "sugared\n", - "sugarier\n", - "sugariest\n", - "sugaring\n", - "sugars\n", - "sugary\n", - "suggest\n", - "suggested\n", - "suggestible\n", - "suggesting\n", - "suggestion\n", - "suggestions\n", - "suggestive\n", - "suggestively\n", - "suggestiveness\n", - "suggestivenesses\n", - "suggests\n", - "sugh\n", - "sughed\n", - "sughing\n", - "sughs\n", - "suicidal\n", - "suicide\n", - "suicided\n", - "suicides\n", - "suiciding\n", - "suing\n", - "suint\n", - "suints\n", - "suit\n", - "suitabilities\n", - "suitability\n", - "suitable\n", - "suitably\n", - "suitcase\n", - "suitcases\n", - "suite\n", - "suited\n", - "suites\n", - "suiting\n", - "suitings\n", - "suitlike\n", - "suitor\n", - "suitors\n", - "suits\n", - "sukiyaki\n", - "sukiyakis\n", - "sukkah\n", - "sukkahs\n", - "sukkoth\n", - "sulcate\n", - "sulcated\n", - "sulci\n", - "sulcus\n", - "suldan\n", - "suldans\n", - "sulfa\n", - "sulfas\n", - "sulfate\n", - "sulfated\n", - "sulfates\n", - "sulfating\n", - "sulfid\n", - "sulfide\n", - "sulfides\n", - "sulfids\n", - "sulfinyl\n", - "sulfinyls\n", - "sulfite\n", - "sulfites\n", - "sulfitic\n", - "sulfo\n", - "sulfonal\n", - "sulfonals\n", - "sulfone\n", - "sulfones\n", - "sulfonic\n", - "sulfonyl\n", - "sulfonyls\n", - "sulfur\n", - "sulfured\n", - "sulfureous\n", - "sulfuret\n", - "sulfureted\n", - "sulfureting\n", - "sulfurets\n", - "sulfuretted\n", - "sulfuretting\n", - "sulfuric\n", - "sulfuring\n", - "sulfurous\n", - "sulfurs\n", - "sulfury\n", - "sulfuryl\n", - "sulfuryls\n", - "sulk\n", - "sulked\n", - "sulker\n", - "sulkers\n", - "sulkier\n", - "sulkies\n", - "sulkiest\n", - "sulkily\n", - "sulkiness\n", - "sulkinesses\n", - "sulking\n", - "sulks\n", - "sulky\n", - "sullage\n", - "sullages\n", - "sullen\n", - "sullener\n", - "sullenest\n", - "sullenly\n", - "sullenness\n", - "sullennesses\n", - "sullied\n", - "sullies\n", - "sully\n", - "sullying\n", - "sulpha\n", - "sulphas\n", - "sulphate\n", - "sulphated\n", - "sulphates\n", - "sulphating\n", - "sulphid\n", - "sulphide\n", - "sulphides\n", - "sulphids\n", - "sulphite\n", - "sulphites\n", - "sulphone\n", - "sulphones\n", - "sulphur\n", - "sulphured\n", - "sulphuring\n", - "sulphurs\n", - "sulphury\n", - "sultan\n", - "sultana\n", - "sultanas\n", - "sultanate\n", - "sultanated\n", - "sultanates\n", - "sultanating\n", - "sultanic\n", - "sultans\n", - "sultrier\n", - "sultriest\n", - "sultrily\n", - "sultry\n", - "sum\n", - "sumac\n", - "sumach\n", - "sumachs\n", - "sumacs\n", - "sumless\n", - "summa\n", - "summable\n", - "summae\n", - "summand\n", - "summands\n", - "summaries\n", - "summarily\n", - "summarization\n", - "summarizations\n", - "summarize\n", - "summarized\n", - "summarizes\n", - "summarizing\n", - "summary\n", - "summas\n", - "summate\n", - "summated\n", - "summates\n", - "summating\n", - "summation\n", - "summations\n", - "summed\n", - "summer\n", - "summered\n", - "summerier\n", - "summeriest\n", - "summering\n", - "summerly\n", - "summers\n", - "summery\n", - "summing\n", - "summit\n", - "summital\n", - "summitries\n", - "summitry\n", - "summits\n", - "summon\n", - "summoned\n", - "summoner\n", - "summoners\n", - "summoning\n", - "summons\n", - "summonsed\n", - "summonses\n", - "summonsing\n", - "sumo\n", - "sumos\n", - "sump\n", - "sumps\n", - "sumpter\n", - "sumpters\n", - "sumptuous\n", - "sumpweed\n", - "sumpweeds\n", - "sums\n", - "sun\n", - "sunback\n", - "sunbaked\n", - "sunbath\n", - "sunbathe\n", - "sunbathed\n", - "sunbathes\n", - "sunbathing\n", - "sunbaths\n", - "sunbeam\n", - "sunbeams\n", - "sunbird\n", - "sunbirds\n", - "sunbow\n", - "sunbows\n", - "sunburn\n", - "sunburned\n", - "sunburning\n", - "sunburns\n", - "sunburnt\n", - "sunburst\n", - "sunbursts\n", - "sundae\n", - "sundaes\n", - "sunder\n", - "sundered\n", - "sunderer\n", - "sunderers\n", - "sundering\n", - "sunders\n", - "sundew\n", - "sundews\n", - "sundial\n", - "sundials\n", - "sundog\n", - "sundogs\n", - "sundown\n", - "sundowns\n", - "sundries\n", - "sundrops\n", - "sundry\n", - "sunfast\n", - "sunfish\n", - "sunfishes\n", - "sunflower\n", - "sunflowers\n", - "sung\n", - "sunglass\n", - "sunglasses\n", - "sunglow\n", - "sunglows\n", - "sunk\n", - "sunken\n", - "sunket\n", - "sunkets\n", - "sunlamp\n", - "sunlamps\n", - "sunland\n", - "sunlands\n", - "sunless\n", - "sunlight\n", - "sunlights\n", - "sunlike\n", - "sunlit\n", - "sunn\n", - "sunna\n", - "sunnas\n", - "sunned\n", - "sunnier\n", - "sunniest\n", - "sunnily\n", - "sunning\n", - "sunns\n", - "sunny\n", - "sunrise\n", - "sunrises\n", - "sunroof\n", - "sunroofs\n", - "sunroom\n", - "sunrooms\n", - "suns\n", - "sunscald\n", - "sunscalds\n", - "sunset\n", - "sunsets\n", - "sunshade\n", - "sunshades\n", - "sunshine\n", - "sunshines\n", - "sunshiny\n", - "sunspot\n", - "sunspots\n", - "sunstone\n", - "sunstones\n", - "sunstroke\n", - "sunsuit\n", - "sunsuits\n", - "suntan\n", - "suntans\n", - "sunup\n", - "sunups\n", - "sunward\n", - "sunwards\n", - "sunwise\n", - "sup\n", - "supe\n", - "super\n", - "superabundance\n", - "superabundances\n", - "superabundant\n", - "superadd\n", - "superadded\n", - "superadding\n", - "superadds\n", - "superambitious\n", - "superathlete\n", - "superathletes\n", - "superb\n", - "superber\n", - "superbest\n", - "superbly\n", - "superbomb\n", - "superbombs\n", - "supercilious\n", - "superclean\n", - "supercold\n", - "supercolossal\n", - "superconvenient\n", - "superdense\n", - "supered\n", - "supereffective\n", - "superefficiencies\n", - "superefficiency\n", - "superefficient\n", - "superego\n", - "superegos\n", - "superenthusiasm\n", - "superenthusiasms\n", - "superenthusiastic\n", - "superfast\n", - "superficial\n", - "superficialities\n", - "superficiality\n", - "superficially\n", - "superfix\n", - "superfixes\n", - "superfluity\n", - "superfluous\n", - "supergood\n", - "supergovernment\n", - "supergovernments\n", - "supergroup\n", - "supergroups\n", - "superhard\n", - "superhero\n", - "superheroine\n", - "superheroines\n", - "superheros\n", - "superhuman\n", - "superhumans\n", - "superimpose\n", - "superimposed\n", - "superimposes\n", - "superimposing\n", - "supering\n", - "superintellectual\n", - "superintellectuals\n", - "superintelligence\n", - "superintelligences\n", - "superintelligent\n", - "superintend\n", - "superintended\n", - "superintendence\n", - "superintendences\n", - "superintendencies\n", - "superintendency\n", - "superintendent\n", - "superintendents\n", - "superintending\n", - "superintends\n", - "superior\n", - "superiorities\n", - "superiority\n", - "superiors\n", - "superjet\n", - "superjets\n", - "superlain\n", - "superlative\n", - "superlatively\n", - "superlay\n", - "superlie\n", - "superlies\n", - "superlying\n", - "superman\n", - "supermarket\n", - "supermarkets\n", - "supermen\n", - "supermodern\n", - "supernal\n", - "supernatural\n", - "supernaturally\n", - "superpatriot\n", - "superpatriotic\n", - "superpatriotism\n", - "superpatriotisms\n", - "superpatriots\n", - "superplane\n", - "superplanes\n", - "superpolite\n", - "superport\n", - "superports\n", - "superpowerful\n", - "superrefined\n", - "superrich\n", - "supers\n", - "supersalesman\n", - "supersalesmen\n", - "superscout\n", - "superscouts\n", - "superscript\n", - "superscripts\n", - "supersecrecies\n", - "supersecrecy\n", - "supersecret\n", - "supersede\n", - "superseded\n", - "supersedes\n", - "superseding\n", - "supersensitive\n", - "supersex\n", - "supersexes\n", - "supership\n", - "superships\n", - "supersize\n", - "supersized\n", - "superslick\n", - "supersmooth\n", - "supersoft\n", - "supersonic\n", - "superspecial\n", - "superspecialist\n", - "superspecialists\n", - "superstar\n", - "superstars\n", - "superstate\n", - "superstates\n", - "superstition\n", - "superstitions\n", - "superstitious\n", - "superstrength\n", - "superstrengths\n", - "superstrong\n", - "superstructure\n", - "superstructures\n", - "supersuccessful\n", - "supersystem\n", - "supersystems\n", - "supertanker\n", - "supertankers\n", - "supertax\n", - "supertaxes\n", - "superthick\n", - "superthin\n", - "supertight\n", - "supertough\n", - "supervene\n", - "supervened\n", - "supervenes\n", - "supervenient\n", - "supervening\n", - "supervise\n", - "supervised\n", - "supervises\n", - "supervising\n", - "supervision\n", - "supervisions\n", - "supervisor\n", - "supervisors\n", - "supervisory\n", - "superweak\n", - "superweapon\n", - "superweapons\n", - "superwoman\n", - "superwomen\n", - "supes\n", - "supinate\n", - "supinated\n", - "supinates\n", - "supinating\n", - "supine\n", - "supinely\n", - "supines\n", - "supped\n", - "supper\n", - "suppers\n", - "supping\n", - "supplant\n", - "supplanted\n", - "supplanting\n", - "supplants\n", - "supple\n", - "suppled\n", - "supplely\n", - "supplement\n", - "supplemental\n", - "supplementary\n", - "supplements\n", - "suppler\n", - "supples\n", - "supplest\n", - "suppliant\n", - "suppliants\n", - "supplicant\n", - "supplicants\n", - "supplicate\n", - "supplicated\n", - "supplicates\n", - "supplicating\n", - "supplication\n", - "supplications\n", - "supplied\n", - "supplier\n", - "suppliers\n", - "supplies\n", - "suppling\n", - "supply\n", - "supplying\n", - "support\n", - "supportable\n", - "supported\n", - "supporter\n", - "supporters\n", - "supporting\n", - "supportive\n", - "supports\n", - "supposal\n", - "supposals\n", - "suppose\n", - "supposed\n", - "supposer\n", - "supposers\n", - "supposes\n", - "supposing\n", - "supposition\n", - "suppositions\n", - "suppositories\n", - "suppository\n", - "suppress\n", - "suppressed\n", - "suppresses\n", - "suppressing\n", - "suppression\n", - "suppressions\n", - "suppurate\n", - "suppurated\n", - "suppurates\n", - "suppurating\n", - "suppuration\n", - "suppurations\n", - "supra\n", - "supraclavicular\n", - "supremacies\n", - "supremacy\n", - "supreme\n", - "supremely\n", - "supremer\n", - "supremest\n", - "sups\n", - "sura\n", - "surah\n", - "surahs\n", - "sural\n", - "suras\n", - "surbase\n", - "surbased\n", - "surbases\n", - "surcease\n", - "surceased\n", - "surceases\n", - "surceasing\n", - "surcharge\n", - "surcharges\n", - "surcoat\n", - "surcoats\n", - "surd\n", - "surds\n", - "sure\n", - "surefire\n", - "surely\n", - "sureness\n", - "surenesses\n", - "surer\n", - "surest\n", - "sureties\n", - "surety\n", - "surf\n", - "surfable\n", - "surface\n", - "surfaced\n", - "surfacer\n", - "surfacers\n", - "surfaces\n", - "surfacing\n", - "surfbird\n", - "surfbirds\n", - "surfboat\n", - "surfboats\n", - "surfed\n", - "surfeit\n", - "surfeited\n", - "surfeiting\n", - "surfeits\n", - "surfer\n", - "surfers\n", - "surffish\n", - "surffishes\n", - "surfier\n", - "surfiest\n", - "surfing\n", - "surfings\n", - "surflike\n", - "surfs\n", - "surfy\n", - "surge\n", - "surged\n", - "surgeon\n", - "surgeons\n", - "surger\n", - "surgeries\n", - "surgers\n", - "surgery\n", - "surges\n", - "surgical\n", - "surgically\n", - "surging\n", - "surgy\n", - "suricate\n", - "suricates\n", - "surlier\n", - "surliest\n", - "surlily\n", - "surly\n", - "surmise\n", - "surmised\n", - "surmiser\n", - "surmisers\n", - "surmises\n", - "surmising\n", - "surmount\n", - "surmounted\n", - "surmounting\n", - "surmounts\n", - "surname\n", - "surnamed\n", - "surnamer\n", - "surnamers\n", - "surnames\n", - "surnaming\n", - "surpass\n", - "surpassed\n", - "surpasses\n", - "surpassing\n", - "surpassingly\n", - "surplice\n", - "surplices\n", - "surplus\n", - "surpluses\n", - "surprint\n", - "surprinted\n", - "surprinting\n", - "surprints\n", - "surprise\n", - "surprised\n", - "surprises\n", - "surprising\n", - "surprisingly\n", - "surprize\n", - "surprized\n", - "surprizes\n", - "surprizing\n", - "surra\n", - "surras\n", - "surreal\n", - "surrealism\n", - "surrender\n", - "surrendered\n", - "surrendering\n", - "surrenders\n", - "surreptitious\n", - "surreptitiously\n", - "surrey\n", - "surreys\n", - "surround\n", - "surrounded\n", - "surrounding\n", - "surroundings\n", - "surrounds\n", - "surroyal\n", - "surroyals\n", - "surtax\n", - "surtaxed\n", - "surtaxes\n", - "surtaxing\n", - "surtout\n", - "surtouts\n", - "surveil\n", - "surveiled\n", - "surveiling\n", - "surveillance\n", - "surveillances\n", - "surveils\n", - "survey\n", - "surveyed\n", - "surveying\n", - "surveyor\n", - "surveyors\n", - "surveys\n", - "survival\n", - "survivals\n", - "survive\n", - "survived\n", - "surviver\n", - "survivers\n", - "survives\n", - "surviving\n", - "survivor\n", - "survivors\n", - "survivorship\n", - "survivorships\n", - "susceptibilities\n", - "susceptibility\n", - "susceptible\n", - "suslik\n", - "susliks\n", - "suspect\n", - "suspected\n", - "suspecting\n", - "suspects\n", - "suspend\n", - "suspended\n", - "suspender\n", - "suspenders\n", - "suspending\n", - "suspends\n", - "suspense\n", - "suspenseful\n", - "suspenses\n", - "suspension\n", - "suspensions\n", - "suspicion\n", - "suspicions\n", - "suspicious\n", - "suspiciously\n", - "suspire\n", - "suspired\n", - "suspires\n", - "suspiring\n", - "sustain\n", - "sustained\n", - "sustaining\n", - "sustains\n", - "sustenance\n", - "sustenances\n", - "susurrus\n", - "susurruses\n", - "sutler\n", - "sutlers\n", - "sutra\n", - "sutras\n", - "sutta\n", - "suttas\n", - "suttee\n", - "suttees\n", - "sutural\n", - "suture\n", - "sutured\n", - "sutures\n", - "suturing\n", - "suzerain\n", - "suzerains\n", - "svaraj\n", - "svarajes\n", - "svedberg\n", - "svedbergs\n", - "svelte\n", - "sveltely\n", - "svelter\n", - "sveltest\n", - "swab\n", - "swabbed\n", - "swabber\n", - "swabbers\n", - "swabbie\n", - "swabbies\n", - "swabbing\n", - "swabby\n", - "swabs\n", - "swaddle\n", - "swaddled\n", - "swaddles\n", - "swaddling\n", - "swag\n", - "swage\n", - "swaged\n", - "swager\n", - "swagers\n", - "swages\n", - "swagged\n", - "swagger\n", - "swaggered\n", - "swaggering\n", - "swaggers\n", - "swagging\n", - "swaging\n", - "swagman\n", - "swagmen\n", - "swags\n", - "swail\n", - "swails\n", - "swain\n", - "swainish\n", - "swains\n", - "swale\n", - "swales\n", - "swallow\n", - "swallowed\n", - "swallowing\n", - "swallows\n", - "swam\n", - "swami\n", - "swamies\n", - "swamis\n", - "swamp\n", - "swamped\n", - "swamper\n", - "swampers\n", - "swampier\n", - "swampiest\n", - "swamping\n", - "swampish\n", - "swamps\n", - "swampy\n", - "swamy\n", - "swan\n", - "swang\n", - "swanherd\n", - "swanherds\n", - "swank\n", - "swanked\n", - "swanker\n", - "swankest\n", - "swankier\n", - "swankiest\n", - "swankily\n", - "swanking\n", - "swanks\n", - "swanky\n", - "swanlike\n", - "swanned\n", - "swanneries\n", - "swannery\n", - "swanning\n", - "swanpan\n", - "swanpans\n", - "swans\n", - "swanskin\n", - "swanskins\n", - "swap\n", - "swapped\n", - "swapper\n", - "swappers\n", - "swapping\n", - "swaps\n", - "swaraj\n", - "swarajes\n", - "sward\n", - "swarded\n", - "swarding\n", - "swards\n", - "sware\n", - "swarf\n", - "swarfs\n", - "swarm\n", - "swarmed\n", - "swarmer\n", - "swarmers\n", - "swarming\n", - "swarms\n", - "swart\n", - "swarth\n", - "swarthier\n", - "swarthiest\n", - "swarths\n", - "swarthy\n", - "swarty\n", - "swash\n", - "swashbuckler\n", - "swashbucklers\n", - "swashbuckling\n", - "swashbucklings\n", - "swashed\n", - "swasher\n", - "swashers\n", - "swashes\n", - "swashing\n", - "swastica\n", - "swasticas\n", - "swastika\n", - "swastikas\n", - "swat\n", - "swatch\n", - "swatches\n", - "swath\n", - "swathe\n", - "swathed\n", - "swather\n", - "swathers\n", - "swathes\n", - "swathing\n", - "swaths\n", - "swats\n", - "swatted\n", - "swatter\n", - "swatters\n", - "swatting\n", - "sway\n", - "swayable\n", - "swayback\n", - "swaybacks\n", - "swayed\n", - "swayer\n", - "swayers\n", - "swayful\n", - "swaying\n", - "sways\n", - "swear\n", - "swearer\n", - "swearers\n", - "swearing\n", - "swears\n", - "sweat\n", - "sweatbox\n", - "sweatboxes\n", - "sweated\n", - "sweater\n", - "sweaters\n", - "sweatier\n", - "sweatiest\n", - "sweatily\n", - "sweating\n", - "sweats\n", - "sweaty\n", - "swede\n", - "swedes\n", - "sweenies\n", - "sweeny\n", - "sweep\n", - "sweeper\n", - "sweepers\n", - "sweepier\n", - "sweepiest\n", - "sweeping\n", - "sweepings\n", - "sweeps\n", - "sweepstakes\n", - "sweepy\n", - "sweer\n", - "sweet\n", - "sweeten\n", - "sweetened\n", - "sweetener\n", - "sweeteners\n", - "sweetening\n", - "sweetens\n", - "sweeter\n", - "sweetest\n", - "sweetheart\n", - "sweethearts\n", - "sweetie\n", - "sweeties\n", - "sweeting\n", - "sweetings\n", - "sweetish\n", - "sweetly\n", - "sweetness\n", - "sweetnesses\n", - "sweets\n", - "sweetsop\n", - "sweetsops\n", - "swell\n", - "swelled\n", - "sweller\n", - "swellest\n", - "swelling\n", - "swellings\n", - "swells\n", - "swelter\n", - "sweltered\n", - "sweltering\n", - "swelters\n", - "sweltrier\n", - "sweltriest\n", - "sweltry\n", - "swept\n", - "swerve\n", - "swerved\n", - "swerver\n", - "swervers\n", - "swerves\n", - "swerving\n", - "sweven\n", - "swevens\n", - "swift\n", - "swifter\n", - "swifters\n", - "swiftest\n", - "swiftly\n", - "swiftness\n", - "swiftnesses\n", - "swifts\n", - "swig\n", - "swigged\n", - "swigger\n", - "swiggers\n", - "swigging\n", - "swigs\n", - "swill\n", - "swilled\n", - "swiller\n", - "swillers\n", - "swilling\n", - "swills\n", - "swim\n", - "swimmer\n", - "swimmers\n", - "swimmier\n", - "swimmiest\n", - "swimmily\n", - "swimming\n", - "swimmings\n", - "swimmy\n", - "swims\n", - "swimsuit\n", - "swimsuits\n", - "swindle\n", - "swindled\n", - "swindler\n", - "swindlers\n", - "swindles\n", - "swindling\n", - "swine\n", - "swinepox\n", - "swinepoxes\n", - "swing\n", - "swinge\n", - "swinged\n", - "swingeing\n", - "swinger\n", - "swingers\n", - "swinges\n", - "swingier\n", - "swingiest\n", - "swinging\n", - "swingle\n", - "swingled\n", - "swingles\n", - "swingling\n", - "swings\n", - "swingy\n", - "swinish\n", - "swink\n", - "swinked\n", - "swinking\n", - "swinks\n", - "swinney\n", - "swinneys\n", - "swipe\n", - "swiped\n", - "swipes\n", - "swiping\n", - "swiple\n", - "swiples\n", - "swipple\n", - "swipples\n", - "swirl\n", - "swirled\n", - "swirlier\n", - "swirliest\n", - "swirling\n", - "swirls\n", - "swirly\n", - "swish\n", - "swished\n", - "swisher\n", - "swishers\n", - "swishes\n", - "swishier\n", - "swishiest\n", - "swishing\n", - "swishy\n", - "swiss\n", - "swisses\n", - "switch\n", - "switchboard\n", - "switchboards\n", - "switched\n", - "switcher\n", - "switchers\n", - "switches\n", - "switching\n", - "swith\n", - "swithe\n", - "swither\n", - "swithered\n", - "swithering\n", - "swithers\n", - "swithly\n", - "swive\n", - "swived\n", - "swivel\n", - "swiveled\n", - "swiveling\n", - "swivelled\n", - "swivelling\n", - "swivels\n", - "swives\n", - "swivet\n", - "swivets\n", - "swiving\n", - "swizzle\n", - "swizzled\n", - "swizzler\n", - "swizzlers\n", - "swizzles\n", - "swizzling\n", - "swob\n", - "swobbed\n", - "swobber\n", - "swobbers\n", - "swobbing\n", - "swobs\n", - "swollen\n", - "swoon\n", - "swooned\n", - "swooner\n", - "swooners\n", - "swooning\n", - "swoons\n", - "swoop\n", - "swooped\n", - "swooper\n", - "swoopers\n", - "swooping\n", - "swoops\n", - "swoosh\n", - "swooshed\n", - "swooshes\n", - "swooshing\n", - "swop\n", - "swopped\n", - "swopping\n", - "swops\n", - "sword\n", - "swordfish\n", - "swordfishes\n", - "swordman\n", - "swordmen\n", - "swords\n", - "swore\n", - "sworn\n", - "swot\n", - "swots\n", - "swotted\n", - "swotter\n", - "swotters\n", - "swotting\n", - "swoun\n", - "swound\n", - "swounded\n", - "swounding\n", - "swounds\n", - "swouned\n", - "swouning\n", - "swouns\n", - "swum\n", - "swung\n", - "sybarite\n", - "sybarites\n", - "sybo\n", - "syboes\n", - "sycamine\n", - "sycamines\n", - "sycamore\n", - "sycamores\n", - "syce\n", - "sycee\n", - "sycees\n", - "syces\n", - "sycomore\n", - "sycomores\n", - "syconia\n", - "syconium\n", - "sycophant\n", - "sycophantic\n", - "sycophants\n", - "sycoses\n", - "sycosis\n", - "syenite\n", - "syenites\n", - "syenitic\n", - "syke\n", - "sykes\n", - "syllabi\n", - "syllabic\n", - "syllabics\n", - "syllable\n", - "syllabled\n", - "syllables\n", - "syllabling\n", - "syllabub\n", - "syllabubs\n", - "syllabus\n", - "syllabuses\n", - "sylph\n", - "sylphic\n", - "sylphid\n", - "sylphids\n", - "sylphish\n", - "sylphs\n", - "sylphy\n", - "sylva\n", - "sylvae\n", - "sylvan\n", - "sylvans\n", - "sylvas\n", - "sylvatic\n", - "sylvin\n", - "sylvine\n", - "sylvines\n", - "sylvins\n", - "sylvite\n", - "sylvites\n", - "symbion\n", - "symbions\n", - "symbiont\n", - "symbionts\n", - "symbiot\n", - "symbiote\n", - "symbiotes\n", - "symbiots\n", - "symbol\n", - "symboled\n", - "symbolic\n", - "symbolical\n", - "symbolically\n", - "symboling\n", - "symbolism\n", - "symbolisms\n", - "symbolization\n", - "symbolizations\n", - "symbolize\n", - "symbolized\n", - "symbolizes\n", - "symbolizing\n", - "symbolled\n", - "symbolling\n", - "symbols\n", - "symmetric\n", - "symmetrical\n", - "symmetrically\n", - "symmetries\n", - "symmetry\n", - "sympathetic\n", - "sympathetically\n", - "sympathies\n", - "sympathize\n", - "sympathized\n", - "sympathizes\n", - "sympathizing\n", - "sympathy\n", - "sympatries\n", - "sympatry\n", - "symphonic\n", - "symphonies\n", - "symphony\n", - "sympodia\n", - "symposia\n", - "symposium\n", - "symptom\n", - "symptomatically\n", - "symptomatology\n", - "symptoms\n", - "syn\n", - "synagog\n", - "synagogs\n", - "synagogue\n", - "synagogues\n", - "synapse\n", - "synapsed\n", - "synapses\n", - "synapsing\n", - "synapsis\n", - "synaptic\n", - "sync\n", - "syncarp\n", - "syncarpies\n", - "syncarps\n", - "syncarpy\n", - "synced\n", - "synch\n", - "synched\n", - "synching\n", - "synchro\n", - "synchronization\n", - "synchronizations\n", - "synchronize\n", - "synchronized\n", - "synchronizes\n", - "synchronizing\n", - "synchros\n", - "synchs\n", - "syncing\n", - "syncline\n", - "synclines\n", - "syncom\n", - "syncoms\n", - "syncopal\n", - "syncopate\n", - "syncopated\n", - "syncopates\n", - "syncopating\n", - "syncopation\n", - "syncopations\n", - "syncope\n", - "syncopes\n", - "syncopic\n", - "syncs\n", - "syncytia\n", - "syndeses\n", - "syndesis\n", - "syndesises\n", - "syndet\n", - "syndetic\n", - "syndets\n", - "syndic\n", - "syndical\n", - "syndicate\n", - "syndicated\n", - "syndicates\n", - "syndicating\n", - "syndication\n", - "syndics\n", - "syndrome\n", - "syndromes\n", - "syne\n", - "synectic\n", - "synergia\n", - "synergias\n", - "synergic\n", - "synergid\n", - "synergids\n", - "synergies\n", - "synergy\n", - "synesis\n", - "synesises\n", - "syngamic\n", - "syngamies\n", - "syngamy\n", - "synod\n", - "synodal\n", - "synodic\n", - "synods\n", - "synonym\n", - "synonyme\n", - "synonymes\n", - "synonymies\n", - "synonymous\n", - "synonyms\n", - "synonymy\n", - "synopses\n", - "synopsis\n", - "synoptic\n", - "synovia\n", - "synovial\n", - "synovias\n", - "syntactic\n", - "syntactical\n", - "syntax\n", - "syntaxes\n", - "syntheses\n", - "synthesis\n", - "synthesize\n", - "synthesized\n", - "synthesizer\n", - "synthesizers\n", - "synthesizes\n", - "synthesizing\n", - "synthetic\n", - "synthetically\n", - "synthetics\n", - "syntonic\n", - "syntonies\n", - "syntony\n", - "synura\n", - "synurae\n", - "sypher\n", - "syphered\n", - "syphering\n", - "syphers\n", - "syphilis\n", - "syphilises\n", - "syphilitic\n", - "syphon\n", - "syphoned\n", - "syphoning\n", - "syphons\n", - "syren\n", - "syrens\n", - "syringa\n", - "syringas\n", - "syringe\n", - "syringed\n", - "syringes\n", - "syringing\n", - "syrinx\n", - "syrinxes\n", - "syrphian\n", - "syrphians\n", - "syrphid\n", - "syrphids\n", - "syrup\n", - "syrups\n", - "syrupy\n", - "system\n", - "systematic\n", - "systematical\n", - "systematically\n", - "systematize\n", - "systematized\n", - "systematizes\n", - "systematizing\n", - "systemic\n", - "systemics\n", - "systems\n", - "systole\n", - "systoles\n", - "systolic\n", - "syzygal\n", - "syzygial\n", - "syzygies\n", - "syzygy\n", - "ta\n", - "tab\n", - "tabanid\n", - "tabanids\n", - "tabard\n", - "tabarded\n", - "tabards\n", - "tabaret\n", - "tabarets\n", - "tabbed\n", - "tabbied\n", - "tabbies\n", - "tabbing\n", - "tabbis\n", - "tabbises\n", - "tabby\n", - "tabbying\n", - "taber\n", - "tabered\n", - "tabering\n", - "tabernacle\n", - "tabernacles\n", - "tabers\n", - "tabes\n", - "tabetic\n", - "tabetics\n", - "tabid\n", - "tabla\n", - "tablas\n", - "table\n", - "tableau\n", - "tableaus\n", - "tableaux\n", - "tablecloth\n", - "tablecloths\n", - "tabled\n", - "tableful\n", - "tablefuls\n", - "tables\n", - "tablesful\n", - "tablespoon\n", - "tablespoonful\n", - "tablespoonfuls\n", - "tablespoons\n", - "tablet\n", - "tableted\n", - "tableting\n", - "tabletop\n", - "tabletops\n", - "tablets\n", - "tabletted\n", - "tabletting\n", - "tableware\n", - "tablewares\n", - "tabling\n", - "tabloid\n", - "tabloids\n", - "taboo\n", - "tabooed\n", - "tabooing\n", - "taboos\n", - "tabor\n", - "tabored\n", - "taborer\n", - "taborers\n", - "taboret\n", - "taborets\n", - "taborin\n", - "taborine\n", - "taborines\n", - "taboring\n", - "taborins\n", - "tabors\n", - "tabour\n", - "taboured\n", - "tabourer\n", - "tabourers\n", - "tabouret\n", - "tabourets\n", - "tabouring\n", - "tabours\n", - "tabs\n", - "tabu\n", - "tabued\n", - "tabuing\n", - "tabular\n", - "tabulate\n", - "tabulated\n", - "tabulates\n", - "tabulating\n", - "tabulation\n", - "tabulations\n", - "tabulator\n", - "tabulators\n", - "tabus\n", - "tace\n", - "taces\n", - "tacet\n", - "tach\n", - "tache\n", - "taches\n", - "tachinid\n", - "tachinids\n", - "tachism\n", - "tachisms\n", - "tachist\n", - "tachiste\n", - "tachistes\n", - "tachists\n", - "tachs\n", - "tacit\n", - "tacitly\n", - "tacitness\n", - "tacitnesses\n", - "taciturn\n", - "taciturnities\n", - "taciturnity\n", - "tack\n", - "tacked\n", - "tacker\n", - "tackers\n", - "tacket\n", - "tackets\n", - "tackey\n", - "tackier\n", - "tackiest\n", - "tackified\n", - "tackifies\n", - "tackify\n", - "tackifying\n", - "tackily\n", - "tacking\n", - "tackle\n", - "tackled\n", - "tackler\n", - "tacklers\n", - "tackles\n", - "tackless\n", - "tackling\n", - "tacklings\n", - "tacks\n", - "tacky\n", - "tacnode\n", - "tacnodes\n", - "taco\n", - "taconite\n", - "taconites\n", - "tacos\n", - "tact\n", - "tactful\n", - "tactfully\n", - "tactic\n", - "tactical\n", - "tactician\n", - "tacticians\n", - "tactics\n", - "tactile\n", - "taction\n", - "tactions\n", - "tactless\n", - "tactlessly\n", - "tacts\n", - "tactual\n", - "tad\n", - "tadpole\n", - "tadpoles\n", - "tads\n", - "tae\n", - "tael\n", - "taels\n", - "taenia\n", - "taeniae\n", - "taenias\n", - "taffarel\n", - "taffarels\n", - "tafferel\n", - "tafferels\n", - "taffeta\n", - "taffetas\n", - "taffia\n", - "taffias\n", - "taffies\n", - "taffrail\n", - "taffrails\n", - "taffy\n", - "tafia\n", - "tafias\n", - "tag\n", - "tagalong\n", - "tagalongs\n", - "tagboard\n", - "tagboards\n", - "tagged\n", - "tagger\n", - "taggers\n", - "tagging\n", - "taglike\n", - "tagmeme\n", - "tagmemes\n", - "tagrag\n", - "tagrags\n", - "tags\n", - "tahr\n", - "tahrs\n", - "tahsil\n", - "tahsils\n", - "taiga\n", - "taigas\n", - "taiglach\n", - "tail\n", - "tailback\n", - "tailbacks\n", - "tailbone\n", - "tailbones\n", - "tailcoat\n", - "tailcoats\n", - "tailed\n", - "tailer\n", - "tailers\n", - "tailgate\n", - "tailgated\n", - "tailgates\n", - "tailgating\n", - "tailing\n", - "tailings\n", - "taille\n", - "tailles\n", - "tailless\n", - "taillight\n", - "taillights\n", - "taillike\n", - "tailor\n", - "tailored\n", - "tailoring\n", - "tailors\n", - "tailpipe\n", - "tailpipes\n", - "tailrace\n", - "tailraces\n", - "tails\n", - "tailskid\n", - "tailskids\n", - "tailspin\n", - "tailspins\n", - "tailwind\n", - "tailwinds\n", - "tain\n", - "tains\n", - "taint\n", - "tainted\n", - "tainting\n", - "taints\n", - "taipan\n", - "taipans\n", - "taj\n", - "tajes\n", - "takable\n", - "takahe\n", - "takahes\n", - "take\n", - "takeable\n", - "takedown\n", - "takedowns\n", - "taken\n", - "takeoff\n", - "takeoffs\n", - "takeout\n", - "takeouts\n", - "takeover\n", - "takeovers\n", - "taker\n", - "takers\n", - "takes\n", - "takin\n", - "taking\n", - "takingly\n", - "takings\n", - "takins\n", - "tala\n", - "talapoin\n", - "talapoins\n", - "talar\n", - "talaria\n", - "talars\n", - "talas\n", - "talc\n", - "talced\n", - "talcing\n", - "talcked\n", - "talcking\n", - "talcky\n", - "talcose\n", - "talcous\n", - "talcs\n", - "talcum\n", - "talcums\n", - "tale\n", - "talent\n", - "talented\n", - "talents\n", - "taler\n", - "talers\n", - "tales\n", - "talesman\n", - "talesmen\n", - "taleysim\n", - "tali\n", - "talion\n", - "talions\n", - "taliped\n", - "talipeds\n", - "talipes\n", - "talipot\n", - "talipots\n", - "talisman\n", - "talismans\n", - "talk\n", - "talkable\n", - "talkative\n", - "talked\n", - "talker\n", - "talkers\n", - "talkie\n", - "talkier\n", - "talkies\n", - "talkiest\n", - "talking\n", - "talkings\n", - "talks\n", - "talky\n", - "tall\n", - "tallage\n", - "tallaged\n", - "tallages\n", - "tallaging\n", - "tallaism\n", - "tallboy\n", - "tallboys\n", - "taller\n", - "tallest\n", - "tallied\n", - "tallier\n", - "tallies\n", - "tallish\n", - "tallith\n", - "tallithes\n", - "tallithim\n", - "tallitoth\n", - "tallness\n", - "tallnesses\n", - "tallol\n", - "tallols\n", - "tallow\n", - "tallowed\n", - "tallowing\n", - "tallows\n", - "tallowy\n", - "tally\n", - "tallyho\n", - "tallyhoed\n", - "tallyhoing\n", - "tallyhos\n", - "tallying\n", - "tallyman\n", - "tallymen\n", - "talmudic\n", - "talon\n", - "taloned\n", - "talons\n", - "talooka\n", - "talookas\n", - "taluk\n", - "taluka\n", - "talukas\n", - "taluks\n", - "talus\n", - "taluses\n", - "tam\n", - "tamable\n", - "tamal\n", - "tamale\n", - "tamales\n", - "tamals\n", - "tamandu\n", - "tamandua\n", - "tamanduas\n", - "tamandus\n", - "tamarack\n", - "tamaracks\n", - "tamarao\n", - "tamaraos\n", - "tamarau\n", - "tamaraus\n", - "tamarin\n", - "tamarind\n", - "tamarinds\n", - "tamarins\n", - "tamarisk\n", - "tamarisks\n", - "tamasha\n", - "tamashas\n", - "tambac\n", - "tambacs\n", - "tambala\n", - "tambalas\n", - "tambour\n", - "tamboura\n", - "tambouras\n", - "tamboured\n", - "tambourine\n", - "tambourines\n", - "tambouring\n", - "tambours\n", - "tambur\n", - "tambura\n", - "tamburas\n", - "tamburs\n", - "tame\n", - "tameable\n", - "tamed\n", - "tamein\n", - "tameins\n", - "tameless\n", - "tamely\n", - "tameness\n", - "tamenesses\n", - "tamer\n", - "tamers\n", - "tames\n", - "tamest\n", - "taming\n", - "tamis\n", - "tamises\n", - "tammie\n", - "tammies\n", - "tammy\n", - "tamp\n", - "tampala\n", - "tampalas\n", - "tampan\n", - "tampans\n", - "tamped\n", - "tamper\n", - "tampered\n", - "tamperer\n", - "tamperers\n", - "tampering\n", - "tampers\n", - "tamping\n", - "tampion\n", - "tampions\n", - "tampon\n", - "tamponed\n", - "tamponing\n", - "tampons\n", - "tamps\n", - "tams\n", - "tan\n", - "tanager\n", - "tanagers\n", - "tanbark\n", - "tanbarks\n", - "tandem\n", - "tandems\n", - "tang\n", - "tanged\n", - "tangelo\n", - "tangelos\n", - "tangence\n", - "tangences\n", - "tangencies\n", - "tangency\n", - "tangent\n", - "tangential\n", - "tangents\n", - "tangerine\n", - "tangerines\n", - "tangibilities\n", - "tangibility\n", - "tangible\n", - "tangibles\n", - "tangibly\n", - "tangier\n", - "tangiest\n", - "tanging\n", - "tangle\n", - "tangled\n", - "tangler\n", - "tanglers\n", - "tangles\n", - "tanglier\n", - "tangliest\n", - "tangling\n", - "tangly\n", - "tango\n", - "tangoed\n", - "tangoing\n", - "tangos\n", - "tangram\n", - "tangrams\n", - "tangs\n", - "tangy\n", - "tanist\n", - "tanistries\n", - "tanistry\n", - "tanists\n", - "tank\n", - "tanka\n", - "tankage\n", - "tankages\n", - "tankard\n", - "tankards\n", - "tankas\n", - "tanked\n", - "tanker\n", - "tankers\n", - "tankful\n", - "tankfuls\n", - "tanking\n", - "tanks\n", - "tankship\n", - "tankships\n", - "tannable\n", - "tannage\n", - "tannages\n", - "tannate\n", - "tannates\n", - "tanned\n", - "tanner\n", - "tanneries\n", - "tanners\n", - "tannery\n", - "tannest\n", - "tannic\n", - "tannin\n", - "tanning\n", - "tannings\n", - "tannins\n", - "tannish\n", - "tanrec\n", - "tanrecs\n", - "tans\n", - "tansies\n", - "tansy\n", - "tantalic\n", - "tantalize\n", - "tantalized\n", - "tantalizer\n", - "tantalizers\n", - "tantalizes\n", - "tantalizing\n", - "tantalizingly\n", - "tantalum\n", - "tantalums\n", - "tantalus\n", - "tantaluses\n", - "tantamount\n", - "tantara\n", - "tantaras\n", - "tantivies\n", - "tantivy\n", - "tanto\n", - "tantra\n", - "tantras\n", - "tantric\n", - "tantrum\n", - "tantrums\n", - "tanyard\n", - "tanyards\n", - "tao\n", - "taos\n", - "tap\n", - "tapa\n", - "tapadera\n", - "tapaderas\n", - "tapadero\n", - "tapaderos\n", - "tapalo\n", - "tapalos\n", - "tapas\n", - "tape\n", - "taped\n", - "tapeless\n", - "tapelike\n", - "tapeline\n", - "tapelines\n", - "taper\n", - "tapered\n", - "taperer\n", - "taperers\n", - "tapering\n", - "tapers\n", - "tapes\n", - "tapestried\n", - "tapestries\n", - "tapestry\n", - "tapestrying\n", - "tapeta\n", - "tapetal\n", - "tapetum\n", - "tapeworm\n", - "tapeworms\n", - "taphole\n", - "tapholes\n", - "taphouse\n", - "taphouses\n", - "taping\n", - "tapioca\n", - "tapiocas\n", - "tapir\n", - "tapirs\n", - "tapis\n", - "tapises\n", - "tapped\n", - "tapper\n", - "tappers\n", - "tappet\n", - "tappets\n", - "tapping\n", - "tappings\n", - "taproom\n", - "taprooms\n", - "taproot\n", - "taproots\n", - "taps\n", - "tapster\n", - "tapsters\n", - "tar\n", - "tarantas\n", - "tarantases\n", - "tarantula\n", - "tarantulas\n", - "tarboosh\n", - "tarbooshes\n", - "tarbush\n", - "tarbushes\n", - "tardier\n", - "tardies\n", - "tardiest\n", - "tardily\n", - "tardo\n", - "tardy\n", - "tare\n", - "tared\n", - "tares\n", - "targe\n", - "targes\n", - "target\n", - "targeted\n", - "targeting\n", - "targets\n", - "tariff\n", - "tariffed\n", - "tariffing\n", - "tariffs\n", - "taring\n", - "tarlatan\n", - "tarlatans\n", - "tarletan\n", - "tarletans\n", - "tarmac\n", - "tarmacs\n", - "tarn\n", - "tarnal\n", - "tarnally\n", - "tarnish\n", - "tarnished\n", - "tarnishes\n", - "tarnishing\n", - "tarns\n", - "taro\n", - "taroc\n", - "tarocs\n", - "tarok\n", - "taroks\n", - "taros\n", - "tarot\n", - "tarots\n", - "tarp\n", - "tarpan\n", - "tarpans\n", - "tarpaper\n", - "tarpapers\n", - "tarpaulin\n", - "tarpaulins\n", - "tarpon\n", - "tarpons\n", - "tarps\n", - "tarragon\n", - "tarragons\n", - "tarre\n", - "tarred\n", - "tarres\n", - "tarried\n", - "tarrier\n", - "tarriers\n", - "tarries\n", - "tarriest\n", - "tarring\n", - "tarry\n", - "tarrying\n", - "tars\n", - "tarsal\n", - "tarsals\n", - "tarsi\n", - "tarsia\n", - "tarsias\n", - "tarsier\n", - "tarsiers\n", - "tarsus\n", - "tart\n", - "tartan\n", - "tartana\n", - "tartanas\n", - "tartans\n", - "tartar\n", - "tartaric\n", - "tartars\n", - "tarted\n", - "tarter\n", - "tartest\n", - "tarting\n", - "tartish\n", - "tartlet\n", - "tartlets\n", - "tartly\n", - "tartness\n", - "tartnesses\n", - "tartrate\n", - "tartrates\n", - "tarts\n", - "tartufe\n", - "tartufes\n", - "tartuffe\n", - "tartuffes\n", - "tarweed\n", - "tarweeds\n", - "tarzan\n", - "tarzans\n", - "tas\n", - "task\n", - "tasked\n", - "tasking\n", - "taskmaster\n", - "taskmasters\n", - "tasks\n", - "taskwork\n", - "taskworks\n", - "tass\n", - "tasse\n", - "tassel\n", - "tasseled\n", - "tasseling\n", - "tasselled\n", - "tasselling\n", - "tassels\n", - "tasses\n", - "tasset\n", - "tassets\n", - "tassie\n", - "tassies\n", - "tastable\n", - "taste\n", - "tasted\n", - "tasteful\n", - "tastefully\n", - "tasteless\n", - "tastelessly\n", - "taster\n", - "tasters\n", - "tastes\n", - "tastier\n", - "tastiest\n", - "tastily\n", - "tasting\n", - "tasty\n", - "tat\n", - "tatami\n", - "tatamis\n", - "tate\n", - "tater\n", - "taters\n", - "tates\n", - "tatouay\n", - "tatouays\n", - "tats\n", - "tatted\n", - "tatter\n", - "tattered\n", - "tattering\n", - "tatters\n", - "tattier\n", - "tattiest\n", - "tatting\n", - "tattings\n", - "tattle\n", - "tattled\n", - "tattler\n", - "tattlers\n", - "tattles\n", - "tattletale\n", - "tattletales\n", - "tattling\n", - "tattoo\n", - "tattooed\n", - "tattooer\n", - "tattooers\n", - "tattooing\n", - "tattoos\n", - "tatty\n", - "tau\n", - "taught\n", - "taunt\n", - "taunted\n", - "taunter\n", - "taunters\n", - "taunting\n", - "taunts\n", - "taupe\n", - "taupes\n", - "taurine\n", - "taurines\n", - "taus\n", - "taut\n", - "tautaug\n", - "tautaugs\n", - "tauted\n", - "tauten\n", - "tautened\n", - "tautening\n", - "tautens\n", - "tauter\n", - "tautest\n", - "tauting\n", - "tautly\n", - "tautness\n", - "tautnesses\n", - "tautog\n", - "tautogs\n", - "tautomer\n", - "tautomers\n", - "tautonym\n", - "tautonyms\n", - "tauts\n", - "tav\n", - "tavern\n", - "taverner\n", - "taverners\n", - "taverns\n", - "tavs\n", - "taw\n", - "tawdrier\n", - "tawdries\n", - "tawdriest\n", - "tawdry\n", - "tawed\n", - "tawer\n", - "tawers\n", - "tawie\n", - "tawing\n", - "tawney\n", - "tawneys\n", - "tawnier\n", - "tawnies\n", - "tawniest\n", - "tawnily\n", - "tawny\n", - "tawpie\n", - "tawpies\n", - "taws\n", - "tawse\n", - "tawsed\n", - "tawses\n", - "tawsing\n", - "tawsy\n", - "tax\n", - "taxa\n", - "taxable\n", - "taxables\n", - "taxably\n", - "taxation\n", - "taxations\n", - "taxed\n", - "taxeme\n", - "taxemes\n", - "taxemic\n", - "taxer\n", - "taxers\n", - "taxes\n", - "taxi\n", - "taxicab\n", - "taxicabs\n", - "taxidermies\n", - "taxidermist\n", - "taxidermists\n", - "taxidermy\n", - "taxied\n", - "taxies\n", - "taxiing\n", - "taximan\n", - "taximen\n", - "taxing\n", - "taxingly\n", - "taxis\n", - "taxite\n", - "taxites\n", - "taxitic\n", - "taxiway\n", - "taxiways\n", - "taxless\n", - "taxman\n", - "taxmen\n", - "taxon\n", - "taxonomies\n", - "taxonomy\n", - "taxons\n", - "taxpaid\n", - "taxpayer\n", - "taxpayers\n", - "taxpaying\n", - "taxus\n", - "taxwise\n", - "taxying\n", - "tazza\n", - "tazzas\n", - "tazze\n", - "tea\n", - "teaberries\n", - "teaberry\n", - "teaboard\n", - "teaboards\n", - "teabowl\n", - "teabowls\n", - "teabox\n", - "teaboxes\n", - "teacake\n", - "teacakes\n", - "teacart\n", - "teacarts\n", - "teach\n", - "teachable\n", - "teacher\n", - "teachers\n", - "teaches\n", - "teaching\n", - "teachings\n", - "teacup\n", - "teacups\n", - "teahouse\n", - "teahouses\n", - "teak\n", - "teakettle\n", - "teakettles\n", - "teaks\n", - "teakwood\n", - "teakwoods\n", - "teal\n", - "teals\n", - "team\n", - "teamaker\n", - "teamakers\n", - "teamed\n", - "teaming\n", - "teammate\n", - "teammates\n", - "teams\n", - "teamster\n", - "teamsters\n", - "teamwork\n", - "teamworks\n", - "teapot\n", - "teapots\n", - "teapoy\n", - "teapoys\n", - "tear\n", - "tearable\n", - "teardown\n", - "teardowns\n", - "teardrop\n", - "teardrops\n", - "teared\n", - "tearer\n", - "tearers\n", - "tearful\n", - "teargas\n", - "teargases\n", - "teargassed\n", - "teargasses\n", - "teargassing\n", - "tearier\n", - "teariest\n", - "tearily\n", - "tearing\n", - "tearless\n", - "tearoom\n", - "tearooms\n", - "tears\n", - "teary\n", - "teas\n", - "tease\n", - "teased\n", - "teasel\n", - "teaseled\n", - "teaseler\n", - "teaselers\n", - "teaseling\n", - "teaselled\n", - "teaselling\n", - "teasels\n", - "teaser\n", - "teasers\n", - "teases\n", - "teashop\n", - "teashops\n", - "teasing\n", - "teaspoon\n", - "teaspoonful\n", - "teaspoonfuls\n", - "teaspoons\n", - "teat\n", - "teated\n", - "teatime\n", - "teatimes\n", - "teats\n", - "teaware\n", - "teawares\n", - "teazel\n", - "teazeled\n", - "teazeling\n", - "teazelled\n", - "teazelling\n", - "teazels\n", - "teazle\n", - "teazled\n", - "teazles\n", - "teazling\n", - "teched\n", - "techier\n", - "techiest\n", - "techily\n", - "technic\n", - "technical\n", - "technicalities\n", - "technicality\n", - "technically\n", - "technician\n", - "technicians\n", - "technics\n", - "technique\n", - "techniques\n", - "technological\n", - "technologies\n", - "technology\n", - "techy\n", - "tecta\n", - "tectal\n", - "tectonic\n", - "tectrices\n", - "tectrix\n", - "tectum\n", - "ted\n", - "tedded\n", - "tedder\n", - "tedders\n", - "teddies\n", - "tedding\n", - "teddy\n", - "tedious\n", - "tediously\n", - "tediousness\n", - "tediousnesses\n", - "tedium\n", - "tediums\n", - "teds\n", - "tee\n", - "teed\n", - "teeing\n", - "teem\n", - "teemed\n", - "teemer\n", - "teemers\n", - "teeming\n", - "teems\n", - "teen\n", - "teenage\n", - "teenaged\n", - "teenager\n", - "teenagers\n", - "teener\n", - "teeners\n", - "teenful\n", - "teenier\n", - "teeniest\n", - "teens\n", - "teensier\n", - "teensiest\n", - "teensy\n", - "teentsier\n", - "teentsiest\n", - "teentsy\n", - "teeny\n", - "teepee\n", - "teepees\n", - "tees\n", - "teeter\n", - "teetered\n", - "teetering\n", - "teeters\n", - "teeth\n", - "teethe\n", - "teethed\n", - "teether\n", - "teethers\n", - "teethes\n", - "teething\n", - "teethings\n", - "teetotal\n", - "teetotaled\n", - "teetotaling\n", - "teetotalled\n", - "teetotalling\n", - "teetotals\n", - "teetotum\n", - "teetotums\n", - "teff\n", - "teffs\n", - "teg\n", - "tegmen\n", - "tegmenta\n", - "tegmina\n", - "tegminal\n", - "tegs\n", - "tegua\n", - "teguas\n", - "tegular\n", - "tegumen\n", - "tegument\n", - "teguments\n", - "tegumina\n", - "teiglach\n", - "teiid\n", - "teiids\n", - "teind\n", - "teinds\n", - "tektite\n", - "tektites\n", - "tektitic\n", - "tektronix\n", - "tela\n", - "telae\n", - "telamon\n", - "telamones\n", - "tele\n", - "telecast\n", - "telecasted\n", - "telecasting\n", - "telecasts\n", - "teledu\n", - "teledus\n", - "telefilm\n", - "telefilms\n", - "telega\n", - "telegas\n", - "telegonies\n", - "telegony\n", - "telegram\n", - "telegrammed\n", - "telegramming\n", - "telegrams\n", - "telegraph\n", - "telegraphed\n", - "telegrapher\n", - "telegraphers\n", - "telegraphing\n", - "telegraphist\n", - "telegraphists\n", - "telegraphs\n", - "teleman\n", - "telemark\n", - "telemarks\n", - "telemen\n", - "teleost\n", - "teleosts\n", - "telepathic\n", - "telepathically\n", - "telepathies\n", - "telepathy\n", - "telephone\n", - "telephoned\n", - "telephoner\n", - "telephoners\n", - "telephones\n", - "telephoning\n", - "telephoto\n", - "teleplay\n", - "teleplays\n", - "teleport\n", - "teleported\n", - "teleporting\n", - "teleports\n", - "teleran\n", - "telerans\n", - "teles\n", - "telescope\n", - "telescoped\n", - "telescopes\n", - "telescopic\n", - "telescoping\n", - "teleses\n", - "telesis\n", - "telethon\n", - "telethons\n", - "teleview\n", - "televiewed\n", - "televiewing\n", - "televiews\n", - "televise\n", - "televised\n", - "televises\n", - "televising\n", - "television\n", - "televisions\n", - "telex\n", - "telexed\n", - "telexes\n", - "telexing\n", - "telfer\n", - "telfered\n", - "telfering\n", - "telfers\n", - "telford\n", - "telfords\n", - "telia\n", - "telial\n", - "telic\n", - "telium\n", - "tell\n", - "tellable\n", - "teller\n", - "tellers\n", - "tellies\n", - "telling\n", - "tells\n", - "telltale\n", - "telltales\n", - "telluric\n", - "telly\n", - "teloi\n", - "telome\n", - "telomes\n", - "telomic\n", - "telos\n", - "telpher\n", - "telphered\n", - "telphering\n", - "telphers\n", - "telson\n", - "telsonic\n", - "telsons\n", - "temblor\n", - "temblores\n", - "temblors\n", - "temerities\n", - "temerity\n", - "tempeh\n", - "tempehs\n", - "temper\n", - "tempera\n", - "temperament\n", - "temperamental\n", - "temperaments\n", - "temperance\n", - "temperances\n", - "temperas\n", - "temperate\n", - "temperature\n", - "temperatures\n", - "tempered\n", - "temperer\n", - "temperers\n", - "tempering\n", - "tempers\n", - "tempest\n", - "tempested\n", - "tempesting\n", - "tempests\n", - "tempestuous\n", - "tempi\n", - "templar\n", - "templars\n", - "template\n", - "templates\n", - "temple\n", - "templed\n", - "temples\n", - "templet\n", - "templets\n", - "tempo\n", - "temporal\n", - "temporals\n", - "temporaries\n", - "temporarily\n", - "temporary\n", - "tempos\n", - "tempt\n", - "temptation\n", - "temptations\n", - "tempted\n", - "tempter\n", - "tempters\n", - "tempting\n", - "temptingly\n", - "temptress\n", - "tempts\n", - "tempura\n", - "tempuras\n", - "ten\n", - "tenabilities\n", - "tenability\n", - "tenable\n", - "tenably\n", - "tenace\n", - "tenaces\n", - "tenacious\n", - "tenaciously\n", - "tenacities\n", - "tenacity\n", - "tenacula\n", - "tenail\n", - "tenaille\n", - "tenailles\n", - "tenails\n", - "tenancies\n", - "tenancy\n", - "tenant\n", - "tenanted\n", - "tenanting\n", - "tenantries\n", - "tenantry\n", - "tenants\n", - "tench\n", - "tenches\n", - "tend\n", - "tendance\n", - "tendances\n", - "tended\n", - "tendence\n", - "tendences\n", - "tendencies\n", - "tendency\n", - "tender\n", - "tendered\n", - "tenderer\n", - "tenderers\n", - "tenderest\n", - "tendering\n", - "tenderize\n", - "tenderized\n", - "tenderizer\n", - "tenderizers\n", - "tenderizes\n", - "tenderizing\n", - "tenderloin\n", - "tenderloins\n", - "tenderly\n", - "tenderness\n", - "tendernesses\n", - "tenders\n", - "tending\n", - "tendon\n", - "tendons\n", - "tendril\n", - "tendrils\n", - "tends\n", - "tenebrae\n", - "tenement\n", - "tenements\n", - "tenesmus\n", - "tenesmuses\n", - "tenet\n", - "tenets\n", - "tenfold\n", - "tenfolds\n", - "tenia\n", - "teniae\n", - "tenias\n", - "teniasis\n", - "teniasises\n", - "tenner\n", - "tenners\n", - "tennis\n", - "tennises\n", - "tennist\n", - "tennists\n", - "tenon\n", - "tenoned\n", - "tenoner\n", - "tenoners\n", - "tenoning\n", - "tenons\n", - "tenor\n", - "tenorite\n", - "tenorites\n", - "tenors\n", - "tenotomies\n", - "tenotomy\n", - "tenour\n", - "tenours\n", - "tenpence\n", - "tenpences\n", - "tenpenny\n", - "tenpin\n", - "tenpins\n", - "tenrec\n", - "tenrecs\n", - "tens\n", - "tense\n", - "tensed\n", - "tensely\n", - "tenser\n", - "tenses\n", - "tensest\n", - "tensible\n", - "tensibly\n", - "tensile\n", - "tensing\n", - "tension\n", - "tensioned\n", - "tensioning\n", - "tensions\n", - "tensities\n", - "tensity\n", - "tensive\n", - "tensor\n", - "tensors\n", - "tent\n", - "tentacle\n", - "tentacles\n", - "tentacular\n", - "tentage\n", - "tentages\n", - "tentative\n", - "tentatively\n", - "tented\n", - "tenter\n", - "tentered\n", - "tenterhooks\n", - "tentering\n", - "tenters\n", - "tenth\n", - "tenthly\n", - "tenths\n", - "tentie\n", - "tentier\n", - "tentiest\n", - "tenting\n", - "tentless\n", - "tentlike\n", - "tents\n", - "tenty\n", - "tenues\n", - "tenuis\n", - "tenuities\n", - "tenuity\n", - "tenuous\n", - "tenuously\n", - "tenuousness\n", - "tenuousnesses\n", - "tenure\n", - "tenured\n", - "tenures\n", - "tenurial\n", - "tenuti\n", - "tenuto\n", - "tenutos\n", - "teocalli\n", - "teocallis\n", - "teopan\n", - "teopans\n", - "teosinte\n", - "teosintes\n", - "tepa\n", - "tepas\n", - "tepee\n", - "tepees\n", - "tepefied\n", - "tepefies\n", - "tepefy\n", - "tepefying\n", - "tephra\n", - "tephras\n", - "tephrite\n", - "tephrites\n", - "tepid\n", - "tepidities\n", - "tepidity\n", - "tepidly\n", - "tequila\n", - "tequilas\n", - "terai\n", - "terais\n", - "teraohm\n", - "teraohms\n", - "teraph\n", - "teraphim\n", - "teratism\n", - "teratisms\n", - "teratoid\n", - "teratoma\n", - "teratomas\n", - "teratomata\n", - "terbia\n", - "terbias\n", - "terbic\n", - "terbium\n", - "terbiums\n", - "terce\n", - "tercel\n", - "tercelet\n", - "tercelets\n", - "tercels\n", - "terces\n", - "tercet\n", - "tercets\n", - "terebene\n", - "terebenes\n", - "terebic\n", - "teredines\n", - "teredo\n", - "teredos\n", - "terefah\n", - "terete\n", - "terga\n", - "tergal\n", - "tergite\n", - "tergites\n", - "tergum\n", - "teriyaki\n", - "teriyakis\n", - "term\n", - "termed\n", - "termer\n", - "termers\n", - "terminable\n", - "terminal\n", - "terminals\n", - "terminate\n", - "terminated\n", - "terminates\n", - "terminating\n", - "termination\n", - "terming\n", - "termini\n", - "terminologies\n", - "terminology\n", - "terminus\n", - "terminuses\n", - "termite\n", - "termites\n", - "termitic\n", - "termless\n", - "termly\n", - "termor\n", - "termors\n", - "terms\n", - "termtime\n", - "termtimes\n", - "tern\n", - "ternaries\n", - "ternary\n", - "ternate\n", - "terne\n", - "ternes\n", - "ternion\n", - "ternions\n", - "terns\n", - "terpene\n", - "terpenes\n", - "terpenic\n", - "terpinol\n", - "terpinols\n", - "terra\n", - "terrace\n", - "terraced\n", - "terraces\n", - "terracing\n", - "terrae\n", - "terrain\n", - "terrains\n", - "terrane\n", - "terranes\n", - "terrapin\n", - "terrapins\n", - "terraria\n", - "terrarium\n", - "terras\n", - "terrases\n", - "terrazzo\n", - "terrazzos\n", - "terreen\n", - "terreens\n", - "terrella\n", - "terrellas\n", - "terrene\n", - "terrenes\n", - "terrestrial\n", - "terret\n", - "terrets\n", - "terrible\n", - "terribly\n", - "terrier\n", - "terriers\n", - "terries\n", - "terrific\n", - "terrified\n", - "terrifies\n", - "terrify\n", - "terrifying\n", - "terrifyingly\n", - "terrine\n", - "terrines\n", - "territ\n", - "territorial\n", - "territories\n", - "territory\n", - "territs\n", - "terror\n", - "terrorism\n", - "terrorisms\n", - "terrorize\n", - "terrorized\n", - "terrorizes\n", - "terrorizing\n", - "terrors\n", - "terry\n", - "terse\n", - "tersely\n", - "terseness\n", - "tersenesses\n", - "terser\n", - "tersest\n", - "tertial\n", - "tertials\n", - "tertian\n", - "tertians\n", - "tertiaries\n", - "tertiary\n", - "tesla\n", - "teslas\n", - "tessera\n", - "tesserae\n", - "test\n", - "testa\n", - "testable\n", - "testacies\n", - "testacy\n", - "testae\n", - "testament\n", - "testamentary\n", - "testaments\n", - "testate\n", - "testator\n", - "testators\n", - "tested\n", - "testee\n", - "testees\n", - "tester\n", - "testers\n", - "testes\n", - "testicle\n", - "testicles\n", - "testicular\n", - "testier\n", - "testiest\n", - "testified\n", - "testifies\n", - "testify\n", - "testifying\n", - "testily\n", - "testimonial\n", - "testimonials\n", - "testimonies\n", - "testimony\n", - "testing\n", - "testis\n", - "teston\n", - "testons\n", - "testoon\n", - "testoons\n", - "testosterone\n", - "testpatient\n", - "tests\n", - "testudines\n", - "testudo\n", - "testudos\n", - "testy\n", - "tetanal\n", - "tetanic\n", - "tetanics\n", - "tetanies\n", - "tetanise\n", - "tetanised\n", - "tetanises\n", - "tetanising\n", - "tetanize\n", - "tetanized\n", - "tetanizes\n", - "tetanizing\n", - "tetanoid\n", - "tetanus\n", - "tetanuses\n", - "tetany\n", - "tetched\n", - "tetchier\n", - "tetchiest\n", - "tetchily\n", - "tetchy\n", - "teth\n", - "tether\n", - "tethered\n", - "tethering\n", - "tethers\n", - "teths\n", - "tetotum\n", - "tetotums\n", - "tetra\n", - "tetracid\n", - "tetracids\n", - "tetrad\n", - "tetradic\n", - "tetrads\n", - "tetragon\n", - "tetragons\n", - "tetramer\n", - "tetramers\n", - "tetrapod\n", - "tetrapods\n", - "tetrarch\n", - "tetrarchs\n", - "tetras\n", - "tetrode\n", - "tetrodes\n", - "tetroxid\n", - "tetroxids\n", - "tetryl\n", - "tetryls\n", - "tetter\n", - "tetters\n", - "teuch\n", - "teugh\n", - "teughly\n", - "tew\n", - "tewed\n", - "tewing\n", - "tews\n", - "texas\n", - "texases\n", - "text\n", - "textbook\n", - "textbooks\n", - "textile\n", - "textiles\n", - "textless\n", - "texts\n", - "textual\n", - "textuaries\n", - "textuary\n", - "textural\n", - "texture\n", - "textured\n", - "textures\n", - "texturing\n", - "thack\n", - "thacked\n", - "thacking\n", - "thacks\n", - "thae\n", - "thairm\n", - "thairms\n", - "thalami\n", - "thalamic\n", - "thalamus\n", - "thaler\n", - "thalers\n", - "thalli\n", - "thallic\n", - "thallium\n", - "thalliums\n", - "thalloid\n", - "thallous\n", - "thallus\n", - "thalluses\n", - "than\n", - "thanage\n", - "thanages\n", - "thanatos\n", - "thanatoses\n", - "thane\n", - "thanes\n", - "thank\n", - "thanked\n", - "thanker\n", - "thankful\n", - "thankfuller\n", - "thankfullest\n", - "thankfully\n", - "thankfulness\n", - "thankfulnesses\n", - "thanking\n", - "thanks\n", - "thanksgiving\n", - "tharm\n", - "tharms\n", - "that\n", - "thataway\n", - "thatch\n", - "thatched\n", - "thatcher\n", - "thatchers\n", - "thatches\n", - "thatching\n", - "thatchy\n", - "thaw\n", - "thawed\n", - "thawer\n", - "thawers\n", - "thawing\n", - "thawless\n", - "thaws\n", - "the\n", - "thearchies\n", - "thearchy\n", - "theater\n", - "theaters\n", - "theatre\n", - "theatres\n", - "theatric\n", - "theatrical\n", - "thebaine\n", - "thebaines\n", - "theca\n", - "thecae\n", - "thecal\n", - "thecate\n", - "thee\n", - "theelin\n", - "theelins\n", - "theelol\n", - "theelols\n", - "theft\n", - "thefts\n", - "thegn\n", - "thegnly\n", - "thegns\n", - "thein\n", - "theine\n", - "theines\n", - "theins\n", - "their\n", - "theirs\n", - "theism\n", - "theisms\n", - "theist\n", - "theistic\n", - "theists\n", - "thelitis\n", - "thelitises\n", - "them\n", - "thematic\n", - "theme\n", - "themes\n", - "themselves\n", - "then\n", - "thenage\n", - "thenages\n", - "thenal\n", - "thenar\n", - "thenars\n", - "thence\n", - "thens\n", - "theocracy\n", - "theocrat\n", - "theocratic\n", - "theocrats\n", - "theodicies\n", - "theodicy\n", - "theogonies\n", - "theogony\n", - "theolog\n", - "theologian\n", - "theologians\n", - "theological\n", - "theologies\n", - "theologs\n", - "theology\n", - "theonomies\n", - "theonomy\n", - "theorbo\n", - "theorbos\n", - "theorem\n", - "theorems\n", - "theoretical\n", - "theoretically\n", - "theories\n", - "theorise\n", - "theorised\n", - "theorises\n", - "theorising\n", - "theorist\n", - "theorists\n", - "theorize\n", - "theorized\n", - "theorizes\n", - "theorizing\n", - "theory\n", - "therapeutic\n", - "therapeutically\n", - "therapies\n", - "therapist\n", - "therapists\n", - "therapy\n", - "there\n", - "thereabout\n", - "thereabouts\n", - "thereafter\n", - "thereat\n", - "thereby\n", - "therefor\n", - "therefore\n", - "therein\n", - "theremin\n", - "theremins\n", - "thereof\n", - "thereon\n", - "theres\n", - "thereto\n", - "thereupon\n", - "therewith\n", - "theriac\n", - "theriaca\n", - "theriacas\n", - "theriacs\n", - "therm\n", - "thermae\n", - "thermal\n", - "thermals\n", - "therme\n", - "thermel\n", - "thermels\n", - "thermes\n", - "thermic\n", - "thermion\n", - "thermions\n", - "thermit\n", - "thermite\n", - "thermites\n", - "thermits\n", - "thermodynamics\n", - "thermometer\n", - "thermometers\n", - "thermometric\n", - "thermometrically\n", - "thermos\n", - "thermoses\n", - "thermostat\n", - "thermostatic\n", - "thermostatically\n", - "thermostats\n", - "therms\n", - "theroid\n", - "theropod\n", - "theropods\n", - "thesauri\n", - "thesaurus\n", - "these\n", - "theses\n", - "thesis\n", - "thespian\n", - "thespians\n", - "theta\n", - "thetas\n", - "thetic\n", - "thetical\n", - "theurgic\n", - "theurgies\n", - "theurgy\n", - "thew\n", - "thewless\n", - "thews\n", - "thewy\n", - "they\n", - "thiamin\n", - "thiamine\n", - "thiamines\n", - "thiamins\n", - "thiazide\n", - "thiazides\n", - "thiazin\n", - "thiazine\n", - "thiazines\n", - "thiazins\n", - "thiazol\n", - "thiazole\n", - "thiazoles\n", - "thiazols\n", - "thick\n", - "thicken\n", - "thickened\n", - "thickener\n", - "thickeners\n", - "thickening\n", - "thickens\n", - "thicker\n", - "thickest\n", - "thicket\n", - "thickets\n", - "thickety\n", - "thickish\n", - "thickly\n", - "thickness\n", - "thicknesses\n", - "thicks\n", - "thickset\n", - "thicksets\n", - "thief\n", - "thieve\n", - "thieved\n", - "thieveries\n", - "thievery\n", - "thieves\n", - "thieving\n", - "thievish\n", - "thigh\n", - "thighbone\n", - "thighbones\n", - "thighed\n", - "thighs\n", - "thill\n", - "thills\n", - "thimble\n", - "thimbleful\n", - "thimblefuls\n", - "thimbles\n", - "thin\n", - "thinclad\n", - "thinclads\n", - "thindown\n", - "thindowns\n", - "thine\n", - "thing\n", - "things\n", - "think\n", - "thinker\n", - "thinkers\n", - "thinking\n", - "thinkings\n", - "thinks\n", - "thinly\n", - "thinned\n", - "thinner\n", - "thinness\n", - "thinnesses\n", - "thinnest\n", - "thinning\n", - "thinnish\n", - "thins\n", - "thio\n", - "thiol\n", - "thiolic\n", - "thiols\n", - "thionate\n", - "thionates\n", - "thionic\n", - "thionin\n", - "thionine\n", - "thionines\n", - "thionins\n", - "thionyl\n", - "thionyls\n", - "thiophen\n", - "thiophens\n", - "thiotepa\n", - "thiotepas\n", - "thiourea\n", - "thioureas\n", - "thir\n", - "thiram\n", - "thirams\n", - "third\n", - "thirdly\n", - "thirds\n", - "thirl\n", - "thirlage\n", - "thirlages\n", - "thirled\n", - "thirling\n", - "thirls\n", - "thirst\n", - "thirsted\n", - "thirster\n", - "thirsters\n", - "thirstier\n", - "thirstiest\n", - "thirsting\n", - "thirsts\n", - "thirsty\n", - "thirteen\n", - "thirteens\n", - "thirteenth\n", - "thirteenths\n", - "thirties\n", - "thirtieth\n", - "thirtieths\n", - "thirty\n", - "this\n", - "thistle\n", - "thistles\n", - "thistly\n", - "thither\n", - "tho\n", - "thole\n", - "tholed\n", - "tholepin\n", - "tholepins\n", - "tholes\n", - "tholing\n", - "tholoi\n", - "tholos\n", - "thong\n", - "thonged\n", - "thongs\n", - "thoracal\n", - "thoraces\n", - "thoracic\n", - "thorax\n", - "thoraxes\n", - "thoria\n", - "thorias\n", - "thoric\n", - "thorite\n", - "thorites\n", - "thorium\n", - "thoriums\n", - "thorn\n", - "thorned\n", - "thornier\n", - "thorniest\n", - "thornily\n", - "thorning\n", - "thorns\n", - "thorny\n", - "thoro\n", - "thoron\n", - "thorons\n", - "thorough\n", - "thoroughbred\n", - "thoroughbreds\n", - "thorougher\n", - "thoroughest\n", - "thoroughfare\n", - "thoroughfares\n", - "thoroughly\n", - "thoroughness\n", - "thoroughnesses\n", - "thorp\n", - "thorpe\n", - "thorpes\n", - "thorps\n", - "those\n", - "thou\n", - "thoued\n", - "though\n", - "thought\n", - "thoughtful\n", - "thoughtfully\n", - "thoughtfulness\n", - "thoughtfulnesses\n", - "thoughtless\n", - "thoughtlessly\n", - "thoughtlessness\n", - "thoughtlessnesses\n", - "thoughts\n", - "thouing\n", - "thous\n", - "thousand\n", - "thousands\n", - "thousandth\n", - "thousandths\n", - "thowless\n", - "thraldom\n", - "thraldoms\n", - "thrall\n", - "thralled\n", - "thralling\n", - "thralls\n", - "thrash\n", - "thrashed\n", - "thrasher\n", - "thrashers\n", - "thrashes\n", - "thrashing\n", - "thrave\n", - "thraves\n", - "thraw\n", - "thrawart\n", - "thrawed\n", - "thrawing\n", - "thrawn\n", - "thrawnly\n", - "thraws\n", - "thread\n", - "threadbare\n", - "threaded\n", - "threader\n", - "threaders\n", - "threadier\n", - "threadiest\n", - "threading\n", - "threads\n", - "thready\n", - "threap\n", - "threaped\n", - "threaper\n", - "threapers\n", - "threaping\n", - "threaps\n", - "threat\n", - "threated\n", - "threaten\n", - "threatened\n", - "threatening\n", - "threateningly\n", - "threatens\n", - "threating\n", - "threats\n", - "three\n", - "threefold\n", - "threep\n", - "threeped\n", - "threeping\n", - "threeps\n", - "threes\n", - "threescore\n", - "threnode\n", - "threnodes\n", - "threnodies\n", - "threnody\n", - "thresh\n", - "threshed\n", - "thresher\n", - "threshers\n", - "threshes\n", - "threshing\n", - "threshold\n", - "thresholds\n", - "threw\n", - "thrice\n", - "thrift\n", - "thriftier\n", - "thriftiest\n", - "thriftily\n", - "thriftless\n", - "thrifts\n", - "thrifty\n", - "thrill\n", - "thrilled\n", - "thriller\n", - "thrillers\n", - "thrilling\n", - "thrillingly\n", - "thrills\n", - "thrip\n", - "thrips\n", - "thrive\n", - "thrived\n", - "thriven\n", - "thriver\n", - "thrivers\n", - "thrives\n", - "thriving\n", - "thro\n", - "throat\n", - "throated\n", - "throatier\n", - "throatiest\n", - "throating\n", - "throats\n", - "throaty\n", - "throb\n", - "throbbed\n", - "throbber\n", - "throbbers\n", - "throbbing\n", - "throbs\n", - "throe\n", - "throes\n", - "thrombi\n", - "thrombin\n", - "thrombins\n", - "thrombocyte\n", - "thrombocytes\n", - "thrombocytopenia\n", - "thrombocytosis\n", - "thrombophlebitis\n", - "thromboplastin\n", - "thrombus\n", - "throne\n", - "throned\n", - "thrones\n", - "throng\n", - "thronged\n", - "thronging\n", - "throngs\n", - "throning\n", - "throstle\n", - "throstles\n", - "throttle\n", - "throttled\n", - "throttles\n", - "throttling\n", - "through\n", - "throughout\n", - "throve\n", - "throw\n", - "thrower\n", - "throwers\n", - "throwing\n", - "thrown\n", - "throws\n", - "thru\n", - "thrum\n", - "thrummed\n", - "thrummer\n", - "thrummers\n", - "thrummier\n", - "thrummiest\n", - "thrumming\n", - "thrummy\n", - "thrums\n", - "thruput\n", - "thruputs\n", - "thrush\n", - "thrushes\n", - "thrust\n", - "thrusted\n", - "thruster\n", - "thrusters\n", - "thrusting\n", - "thrustor\n", - "thrustors\n", - "thrusts\n", - "thruway\n", - "thruways\n", - "thud\n", - "thudded\n", - "thudding\n", - "thuds\n", - "thug\n", - "thuggee\n", - "thuggees\n", - "thuggeries\n", - "thuggery\n", - "thuggish\n", - "thugs\n", - "thuja\n", - "thujas\n", - "thulia\n", - "thulias\n", - "thulium\n", - "thuliums\n", - "thumb\n", - "thumbed\n", - "thumbing\n", - "thumbkin\n", - "thumbkins\n", - "thumbnail\n", - "thumbnails\n", - "thumbnut\n", - "thumbnuts\n", - "thumbs\n", - "thumbtack\n", - "thumbtacks\n", - "thump\n", - "thumped\n", - "thumper\n", - "thumpers\n", - "thumping\n", - "thumps\n", - "thunder\n", - "thunderbolt\n", - "thunderbolts\n", - "thunderclap\n", - "thunderclaps\n", - "thundered\n", - "thundering\n", - "thunderous\n", - "thunderously\n", - "thunders\n", - "thundershower\n", - "thundershowers\n", - "thunderstorm\n", - "thunderstorms\n", - "thundery\n", - "thurible\n", - "thuribles\n", - "thurifer\n", - "thurifers\n", - "thurl\n", - "thurls\n", - "thus\n", - "thusly\n", - "thuya\n", - "thuyas\n", - "thwack\n", - "thwacked\n", - "thwacker\n", - "thwackers\n", - "thwacking\n", - "thwacks\n", - "thwart\n", - "thwarted\n", - "thwarter\n", - "thwarters\n", - "thwarting\n", - "thwartly\n", - "thwarts\n", - "thy\n", - "thyme\n", - "thymes\n", - "thymey\n", - "thymi\n", - "thymic\n", - "thymier\n", - "thymiest\n", - "thymine\n", - "thymines\n", - "thymol\n", - "thymols\n", - "thymus\n", - "thymuses\n", - "thymy\n", - "thyreoid\n", - "thyroid\n", - "thyroidal\n", - "thyroids\n", - "thyroxin\n", - "thyroxins\n", - "thyrse\n", - "thyrses\n", - "thyrsi\n", - "thyrsoid\n", - "thyrsus\n", - "thyself\n", - "ti\n", - "tiara\n", - "tiaraed\n", - "tiaras\n", - "tibia\n", - "tibiae\n", - "tibial\n", - "tibias\n", - "tic\n", - "tical\n", - "ticals\n", - "tick\n", - "ticked\n", - "ticker\n", - "tickers\n", - "ticket\n", - "ticketed\n", - "ticketing\n", - "tickets\n", - "ticking\n", - "tickings\n", - "tickle\n", - "tickled\n", - "tickler\n", - "ticklers\n", - "tickles\n", - "tickling\n", - "ticklish\n", - "ticklishly\n", - "ticklishness\n", - "ticklishnesses\n", - "ticks\n", - "tickseed\n", - "tickseeds\n", - "ticktack\n", - "ticktacked\n", - "ticktacking\n", - "ticktacks\n", - "ticktock\n", - "ticktocked\n", - "ticktocking\n", - "ticktocks\n", - "tics\n", - "tictac\n", - "tictacked\n", - "tictacking\n", - "tictacs\n", - "tictoc\n", - "tictocked\n", - "tictocking\n", - "tictocs\n", - "tidal\n", - "tidally\n", - "tidbit\n", - "tidbits\n", - "tiddly\n", - "tide\n", - "tided\n", - "tideland\n", - "tidelands\n", - "tideless\n", - "tidelike\n", - "tidemark\n", - "tidemarks\n", - "tiderip\n", - "tiderips\n", - "tides\n", - "tidewater\n", - "tidewaters\n", - "tideway\n", - "tideways\n", - "tidied\n", - "tidier\n", - "tidies\n", - "tidiest\n", - "tidily\n", - "tidiness\n", - "tidinesses\n", - "tiding\n", - "tidings\n", - "tidy\n", - "tidying\n", - "tidytips\n", - "tie\n", - "tieback\n", - "tiebacks\n", - "tieclasp\n", - "tieclasps\n", - "tied\n", - "tieing\n", - "tiepin\n", - "tiepins\n", - "tier\n", - "tierce\n", - "tierced\n", - "tiercel\n", - "tiercels\n", - "tierces\n", - "tiered\n", - "tiering\n", - "tiers\n", - "ties\n", - "tiff\n", - "tiffanies\n", - "tiffany\n", - "tiffed\n", - "tiffin\n", - "tiffined\n", - "tiffing\n", - "tiffining\n", - "tiffins\n", - "tiffs\n", - "tiger\n", - "tigereye\n", - "tigereyes\n", - "tigerish\n", - "tigers\n", - "tight\n", - "tighten\n", - "tightened\n", - "tightening\n", - "tightens\n", - "tighter\n", - "tightest\n", - "tightly\n", - "tightness\n", - "tightnesses\n", - "tights\n", - "tightwad\n", - "tightwads\n", - "tiglon\n", - "tiglons\n", - "tigon\n", - "tigons\n", - "tigress\n", - "tigresses\n", - "tigrish\n", - "tike\n", - "tikes\n", - "tiki\n", - "tikis\n", - "til\n", - "tilapia\n", - "tilapias\n", - "tilburies\n", - "tilbury\n", - "tilde\n", - "tildes\n", - "tile\n", - "tiled\n", - "tilefish\n", - "tilefishes\n", - "tilelike\n", - "tiler\n", - "tilers\n", - "tiles\n", - "tiling\n", - "till\n", - "tillable\n", - "tillage\n", - "tillages\n", - "tilled\n", - "tiller\n", - "tillered\n", - "tillering\n", - "tillers\n", - "tilling\n", - "tills\n", - "tils\n", - "tilt\n", - "tiltable\n", - "tilted\n", - "tilter\n", - "tilters\n", - "tilth\n", - "tilths\n", - "tilting\n", - "tilts\n", - "tiltyard\n", - "tiltyards\n", - "timarau\n", - "timaraus\n", - "timbal\n", - "timbale\n", - "timbales\n", - "timbals\n", - "timber\n", - "timbered\n", - "timbering\n", - "timberland\n", - "timberlands\n", - "timbers\n", - "timbre\n", - "timbrel\n", - "timbrels\n", - "timbres\n", - "time\n", - "timecard\n", - "timecards\n", - "timed\n", - "timekeeper\n", - "timekeepers\n", - "timeless\n", - "timelessness\n", - "timelessnesses\n", - "timelier\n", - "timeliest\n", - "timeliness\n", - "timelinesses\n", - "timely\n", - "timeous\n", - "timeout\n", - "timeouts\n", - "timepiece\n", - "timepieces\n", - "timer\n", - "timers\n", - "times\n", - "timetable\n", - "timetables\n", - "timework\n", - "timeworks\n", - "timeworn\n", - "timid\n", - "timider\n", - "timidest\n", - "timidities\n", - "timidity\n", - "timidly\n", - "timing\n", - "timings\n", - "timorous\n", - "timorously\n", - "timorousness\n", - "timorousnesses\n", - "timothies\n", - "timothy\n", - "timpana\n", - "timpani\n", - "timpanist\n", - "timpanists\n", - "timpano\n", - "timpanum\n", - "timpanums\n", - "tin\n", - "tinamou\n", - "tinamous\n", - "tincal\n", - "tincals\n", - "tinct\n", - "tincted\n", - "tincting\n", - "tincts\n", - "tincture\n", - "tinctured\n", - "tinctures\n", - "tincturing\n", - "tinder\n", - "tinders\n", - "tindery\n", - "tine\n", - "tinea\n", - "tineal\n", - "tineas\n", - "tined\n", - "tineid\n", - "tineids\n", - "tines\n", - "tinfoil\n", - "tinfoils\n", - "tinful\n", - "tinfuls\n", - "ting\n", - "tinge\n", - "tinged\n", - "tingeing\n", - "tinges\n", - "tinging\n", - "tingle\n", - "tingled\n", - "tingler\n", - "tinglers\n", - "tingles\n", - "tinglier\n", - "tingliest\n", - "tingling\n", - "tingly\n", - "tings\n", - "tinhorn\n", - "tinhorns\n", - "tinier\n", - "tiniest\n", - "tinily\n", - "tininess\n", - "tininesses\n", - "tining\n", - "tinker\n", - "tinkered\n", - "tinkerer\n", - "tinkerers\n", - "tinkering\n", - "tinkers\n", - "tinkle\n", - "tinkled\n", - "tinkles\n", - "tinklier\n", - "tinkliest\n", - "tinkling\n", - "tinklings\n", - "tinkly\n", - "tinlike\n", - "tinman\n", - "tinmen\n", - "tinned\n", - "tinner\n", - "tinners\n", - "tinnier\n", - "tinniest\n", - "tinnily\n", - "tinning\n", - "tinnitus\n", - "tinnituses\n", - "tinny\n", - "tinplate\n", - "tinplates\n", - "tins\n", - "tinsel\n", - "tinseled\n", - "tinseling\n", - "tinselled\n", - "tinselling\n", - "tinselly\n", - "tinsels\n", - "tinsmith\n", - "tinsmiths\n", - "tinstone\n", - "tinstones\n", - "tint\n", - "tinted\n", - "tinter\n", - "tinters\n", - "tinting\n", - "tintings\n", - "tintless\n", - "tints\n", - "tintype\n", - "tintypes\n", - "tinware\n", - "tinwares\n", - "tinwork\n", - "tinworks\n", - "tiny\n", - "tip\n", - "tipcart\n", - "tipcarts\n", - "tipcat\n", - "tipcats\n", - "tipi\n", - "tipis\n", - "tipless\n", - "tipoff\n", - "tipoffs\n", - "tippable\n", - "tipped\n", - "tipper\n", - "tippers\n", - "tippet\n", - "tippets\n", - "tippier\n", - "tippiest\n", - "tipping\n", - "tipple\n", - "tippled\n", - "tippler\n", - "tipplers\n", - "tipples\n", - "tippling\n", - "tippy\n", - "tips\n", - "tipsier\n", - "tipsiest\n", - "tipsily\n", - "tipstaff\n", - "tipstaffs\n", - "tipstaves\n", - "tipster\n", - "tipsters\n", - "tipstock\n", - "tipstocks\n", - "tipsy\n", - "tiptoe\n", - "tiptoed\n", - "tiptoes\n", - "tiptoing\n", - "tiptop\n", - "tiptops\n", - "tirade\n", - "tirades\n", - "tire\n", - "tired\n", - "tireder\n", - "tiredest\n", - "tiredly\n", - "tireless\n", - "tirelessly\n", - "tirelessness\n", - "tires\n", - "tiresome\n", - "tiresomely\n", - "tiresomeness\n", - "tiresomenesses\n", - "tiring\n", - "tirl\n", - "tirled\n", - "tirling\n", - "tirls\n", - "tiro\n", - "tiros\n", - "tirrivee\n", - "tirrivees\n", - "tis\n", - "tisane\n", - "tisanes\n", - "tissual\n", - "tissue\n", - "tissued\n", - "tissues\n", - "tissuey\n", - "tissuing\n", - "tit\n", - "titan\n", - "titanate\n", - "titanates\n", - "titaness\n", - "titanesses\n", - "titania\n", - "titanias\n", - "titanic\n", - "titanism\n", - "titanisms\n", - "titanite\n", - "titanites\n", - "titanium\n", - "titaniums\n", - "titanous\n", - "titans\n", - "titbit\n", - "titbits\n", - "titer\n", - "titers\n", - "tithable\n", - "tithe\n", - "tithed\n", - "tither\n", - "tithers\n", - "tithes\n", - "tithing\n", - "tithings\n", - "tithonia\n", - "tithonias\n", - "titi\n", - "titian\n", - "titians\n", - "titillate\n", - "titillated\n", - "titillates\n", - "titillating\n", - "titillation\n", - "titillations\n", - "titis\n", - "titivate\n", - "titivated\n", - "titivates\n", - "titivating\n", - "titlark\n", - "titlarks\n", - "title\n", - "titled\n", - "titles\n", - "titling\n", - "titlist\n", - "titlists\n", - "titman\n", - "titmen\n", - "titmice\n", - "titmouse\n", - "titrable\n", - "titrant\n", - "titrants\n", - "titrate\n", - "titrated\n", - "titrates\n", - "titrating\n", - "titrator\n", - "titrators\n", - "titre\n", - "titres\n", - "tits\n", - "titter\n", - "tittered\n", - "titterer\n", - "titterers\n", - "tittering\n", - "titters\n", - "tittie\n", - "titties\n", - "tittle\n", - "tittles\n", - "tittup\n", - "tittuped\n", - "tittuping\n", - "tittupped\n", - "tittupping\n", - "tittuppy\n", - "tittups\n", - "titty\n", - "titular\n", - "titularies\n", - "titulars\n", - "titulary\n", - "tivy\n", - "tizzies\n", - "tizzy\n", - "tmeses\n", - "tmesis\n", - "to\n", - "toad\n", - "toadfish\n", - "toadfishes\n", - "toadflax\n", - "toadflaxes\n", - "toadied\n", - "toadies\n", - "toadish\n", - "toadless\n", - "toadlike\n", - "toads\n", - "toadstool\n", - "toadstools\n", - "toady\n", - "toadying\n", - "toadyish\n", - "toadyism\n", - "toadyisms\n", - "toast\n", - "toasted\n", - "toaster\n", - "toasters\n", - "toastier\n", - "toastiest\n", - "toasting\n", - "toasts\n", - "toasty\n", - "tobacco\n", - "tobaccoes\n", - "tobaccos\n", - "tobies\n", - "toboggan\n", - "tobogganed\n", - "tobogganing\n", - "toboggans\n", - "toby\n", - "tobys\n", - "toccata\n", - "toccatas\n", - "toccate\n", - "tocher\n", - "tochered\n", - "tochering\n", - "tochers\n", - "tocologies\n", - "tocology\n", - "tocsin\n", - "tocsins\n", - "tod\n", - "today\n", - "todays\n", - "toddies\n", - "toddle\n", - "toddled\n", - "toddler\n", - "toddlers\n", - "toddles\n", - "toddling\n", - "toddy\n", - "todies\n", - "tods\n", - "tody\n", - "toe\n", - "toecap\n", - "toecaps\n", - "toed\n", - "toehold\n", - "toeholds\n", - "toeing\n", - "toeless\n", - "toelike\n", - "toenail\n", - "toenailed\n", - "toenailing\n", - "toenails\n", - "toepiece\n", - "toepieces\n", - "toeplate\n", - "toeplates\n", - "toes\n", - "toeshoe\n", - "toeshoes\n", - "toff\n", - "toffee\n", - "toffees\n", - "toffies\n", - "toffs\n", - "toffy\n", - "toft\n", - "tofts\n", - "tofu\n", - "tofus\n", - "tog\n", - "toga\n", - "togae\n", - "togaed\n", - "togas\n", - "togate\n", - "togated\n", - "together\n", - "togetherness\n", - "togethernesses\n", - "togged\n", - "toggeries\n", - "toggery\n", - "togging\n", - "toggle\n", - "toggled\n", - "toggler\n", - "togglers\n", - "toggles\n", - "toggling\n", - "togs\n", - "togue\n", - "togues\n", - "toil\n", - "toile\n", - "toiled\n", - "toiler\n", - "toilers\n", - "toiles\n", - "toilet\n", - "toileted\n", - "toileting\n", - "toiletries\n", - "toiletry\n", - "toilets\n", - "toilette\n", - "toilettes\n", - "toilful\n", - "toiling\n", - "toils\n", - "toilsome\n", - "toilworn\n", - "toit\n", - "toited\n", - "toiting\n", - "toits\n", - "tokay\n", - "tokays\n", - "toke\n", - "token\n", - "tokened\n", - "tokening\n", - "tokenism\n", - "tokenisms\n", - "tokens\n", - "tokes\n", - "tokologies\n", - "tokology\n", - "tokonoma\n", - "tokonomas\n", - "tola\n", - "tolan\n", - "tolane\n", - "tolanes\n", - "tolans\n", - "tolas\n", - "tolbooth\n", - "tolbooths\n", - "told\n", - "tole\n", - "toled\n", - "toledo\n", - "toledos\n", - "tolerable\n", - "tolerably\n", - "tolerance\n", - "tolerances\n", - "tolerant\n", - "tolerate\n", - "tolerated\n", - "tolerates\n", - "tolerating\n", - "toleration\n", - "tolerations\n", - "toles\n", - "tolidin\n", - "tolidine\n", - "tolidines\n", - "tolidins\n", - "toling\n", - "toll\n", - "tollage\n", - "tollages\n", - "tollbar\n", - "tollbars\n", - "tollbooth\n", - "tollbooths\n", - "tolled\n", - "toller\n", - "tollers\n", - "tollgate\n", - "tollgates\n", - "tolling\n", - "tollman\n", - "tollmen\n", - "tolls\n", - "tollway\n", - "tollways\n", - "tolu\n", - "toluate\n", - "toluates\n", - "toluene\n", - "toluenes\n", - "toluic\n", - "toluid\n", - "toluide\n", - "toluides\n", - "toluidin\n", - "toluidins\n", - "toluids\n", - "toluol\n", - "toluole\n", - "toluoles\n", - "toluols\n", - "tolus\n", - "toluyl\n", - "toluyls\n", - "tolyl\n", - "tolyls\n", - "tom\n", - "tomahawk\n", - "tomahawked\n", - "tomahawking\n", - "tomahawks\n", - "tomalley\n", - "tomalleys\n", - "toman\n", - "tomans\n", - "tomato\n", - "tomatoes\n", - "tomb\n", - "tombac\n", - "tomback\n", - "tombacks\n", - "tombacs\n", - "tombak\n", - "tombaks\n", - "tombal\n", - "tombed\n", - "tombing\n", - "tombless\n", - "tomblike\n", - "tombolo\n", - "tombolos\n", - "tomboy\n", - "tomboys\n", - "tombs\n", - "tombstone\n", - "tombstones\n", - "tomcat\n", - "tomcats\n", - "tomcod\n", - "tomcods\n", - "tome\n", - "tomenta\n", - "tomentum\n", - "tomes\n", - "tomfool\n", - "tomfools\n", - "tommies\n", - "tommy\n", - "tommyrot\n", - "tommyrots\n", - "tomogram\n", - "tomograms\n", - "tomorrow\n", - "tomorrows\n", - "tompion\n", - "tompions\n", - "toms\n", - "tomtit\n", - "tomtits\n", - "ton\n", - "tonal\n", - "tonalities\n", - "tonality\n", - "tonally\n", - "tondi\n", - "tondo\n", - "tone\n", - "toned\n", - "toneless\n", - "toneme\n", - "tonemes\n", - "tonemic\n", - "toner\n", - "toners\n", - "tones\n", - "tonetic\n", - "tonetics\n", - "tonette\n", - "tonettes\n", - "tong\n", - "tonga\n", - "tongas\n", - "tonged\n", - "tonger\n", - "tongers\n", - "tonging\n", - "tongman\n", - "tongmen\n", - "tongs\n", - "tongue\n", - "tongued\n", - "tongueless\n", - "tongues\n", - "tonguing\n", - "tonguings\n", - "tonic\n", - "tonicities\n", - "tonicity\n", - "tonics\n", - "tonier\n", - "toniest\n", - "tonight\n", - "tonights\n", - "toning\n", - "tonish\n", - "tonishly\n", - "tonka\n", - "tonlet\n", - "tonlets\n", - "tonnage\n", - "tonnages\n", - "tonne\n", - "tonneau\n", - "tonneaus\n", - "tonneaux\n", - "tonner\n", - "tonners\n", - "tonnes\n", - "tonnish\n", - "tons\n", - "tonsil\n", - "tonsilar\n", - "tonsillectomies\n", - "tonsillectomy\n", - "tonsillitis\n", - "tonsillitises\n", - "tonsils\n", - "tonsure\n", - "tonsured\n", - "tonsures\n", - "tonsuring\n", - "tontine\n", - "tontines\n", - "tonus\n", - "tonuses\n", - "tony\n", - "too\n", - "took\n", - "tool\n", - "toolbox\n", - "toolboxes\n", - "tooled\n", - "tooler\n", - "toolers\n", - "toolhead\n", - "toolheads\n", - "tooling\n", - "toolings\n", - "toolless\n", - "toolroom\n", - "toolrooms\n", - "tools\n", - "toolshed\n", - "toolsheds\n", - "toom\n", - "toon\n", - "toons\n", - "toot\n", - "tooted\n", - "tooter\n", - "tooters\n", - "tooth\n", - "toothache\n", - "toothaches\n", - "toothbrush\n", - "toothbrushes\n", - "toothed\n", - "toothier\n", - "toothiest\n", - "toothily\n", - "toothing\n", - "toothless\n", - "toothpaste\n", - "toothpastes\n", - "toothpick\n", - "toothpicks\n", - "tooths\n", - "toothsome\n", - "toothy\n", - "tooting\n", - "tootle\n", - "tootled\n", - "tootler\n", - "tootlers\n", - "tootles\n", - "tootling\n", - "toots\n", - "tootses\n", - "tootsie\n", - "tootsies\n", - "tootsy\n", - "top\n", - "topaz\n", - "topazes\n", - "topazine\n", - "topcoat\n", - "topcoats\n", - "topcross\n", - "topcrosses\n", - "tope\n", - "toped\n", - "topee\n", - "topees\n", - "toper\n", - "topers\n", - "topes\n", - "topful\n", - "topfull\n", - "toph\n", - "tophe\n", - "tophes\n", - "tophi\n", - "tophs\n", - "tophus\n", - "topi\n", - "topiaries\n", - "topiary\n", - "topic\n", - "topical\n", - "topically\n", - "topics\n", - "toping\n", - "topis\n", - "topkick\n", - "topkicks\n", - "topknot\n", - "topknots\n", - "topless\n", - "toploftier\n", - "toploftiest\n", - "toplofty\n", - "topmast\n", - "topmasts\n", - "topmost\n", - "topnotch\n", - "topographer\n", - "topographers\n", - "topographic\n", - "topographical\n", - "topographies\n", - "topography\n", - "topoi\n", - "topologic\n", - "topologies\n", - "topology\n", - "toponym\n", - "toponymies\n", - "toponyms\n", - "toponymy\n", - "topos\n", - "topotype\n", - "topotypes\n", - "topped\n", - "topper\n", - "toppers\n", - "topping\n", - "toppings\n", - "topple\n", - "toppled\n", - "topples\n", - "toppling\n", - "tops\n", - "topsail\n", - "topsails\n", - "topside\n", - "topsides\n", - "topsoil\n", - "topsoiled\n", - "topsoiling\n", - "topsoils\n", - "topstone\n", - "topstones\n", - "topwork\n", - "topworked\n", - "topworking\n", - "topworks\n", - "toque\n", - "toques\n", - "toquet\n", - "toquets\n", - "tor\n", - "tora\n", - "torah\n", - "torahs\n", - "toras\n", - "torc\n", - "torch\n", - "torchbearer\n", - "torchbearers\n", - "torched\n", - "torchere\n", - "torcheres\n", - "torches\n", - "torchier\n", - "torchiers\n", - "torching\n", - "torchlight\n", - "torchlights\n", - "torchon\n", - "torchons\n", - "torcs\n", - "tore\n", - "toreador\n", - "toreadors\n", - "torero\n", - "toreros\n", - "tores\n", - "toreutic\n", - "tori\n", - "toric\n", - "tories\n", - "torii\n", - "torment\n", - "tormented\n", - "tormenting\n", - "tormentor\n", - "tormentors\n", - "torments\n", - "torn\n", - "tornadic\n", - "tornado\n", - "tornadoes\n", - "tornados\n", - "tornillo\n", - "tornillos\n", - "toro\n", - "toroid\n", - "toroidal\n", - "toroids\n", - "toros\n", - "torose\n", - "torosities\n", - "torosity\n", - "torous\n", - "torpedo\n", - "torpedoed\n", - "torpedoes\n", - "torpedoing\n", - "torpedos\n", - "torpid\n", - "torpidities\n", - "torpidity\n", - "torpidly\n", - "torpids\n", - "torpor\n", - "torpors\n", - "torquate\n", - "torque\n", - "torqued\n", - "torquer\n", - "torquers\n", - "torques\n", - "torqueses\n", - "torquing\n", - "torr\n", - "torrefied\n", - "torrefies\n", - "torrefy\n", - "torrefying\n", - "torrent\n", - "torrential\n", - "torrents\n", - "torrid\n", - "torrider\n", - "torridest\n", - "torridly\n", - "torrified\n", - "torrifies\n", - "torrify\n", - "torrifying\n", - "tors\n", - "torsade\n", - "torsades\n", - "torse\n", - "torses\n", - "torsi\n", - "torsion\n", - "torsional\n", - "torsionally\n", - "torsions\n", - "torsk\n", - "torsks\n", - "torso\n", - "torsos\n", - "tort\n", - "torte\n", - "torten\n", - "tortes\n", - "tortile\n", - "tortilla\n", - "tortillas\n", - "tortious\n", - "tortoise\n", - "tortoises\n", - "tortoni\n", - "tortonis\n", - "tortrix\n", - "tortrixes\n", - "torts\n", - "tortuous\n", - "torture\n", - "tortured\n", - "torturer\n", - "torturers\n", - "tortures\n", - "torturing\n", - "torula\n", - "torulae\n", - "torulas\n", - "torus\n", - "tory\n", - "tosh\n", - "toshes\n", - "toss\n", - "tossed\n", - "tosser\n", - "tossers\n", - "tosses\n", - "tossing\n", - "tosspot\n", - "tosspots\n", - "tossup\n", - "tossups\n", - "tost\n", - "tot\n", - "totable\n", - "total\n", - "totaled\n", - "totaling\n", - "totalise\n", - "totalised\n", - "totalises\n", - "totalising\n", - "totalism\n", - "totalisms\n", - "totalitarian\n", - "totalitarianism\n", - "totalitarianisms\n", - "totalitarians\n", - "totalities\n", - "totality\n", - "totalize\n", - "totalized\n", - "totalizes\n", - "totalizing\n", - "totalled\n", - "totalling\n", - "totally\n", - "totals\n", - "tote\n", - "toted\n", - "totem\n", - "totemic\n", - "totemism\n", - "totemisms\n", - "totemist\n", - "totemists\n", - "totemite\n", - "totemites\n", - "totems\n", - "toter\n", - "toters\n", - "totes\n", - "tother\n", - "toting\n", - "tots\n", - "totted\n", - "totter\n", - "tottered\n", - "totterer\n", - "totterers\n", - "tottering\n", - "totters\n", - "tottery\n", - "totting\n", - "totty\n", - "toucan\n", - "toucans\n", - "touch\n", - "touchback\n", - "touchbacks\n", - "touchdown\n", - "touchdowns\n", - "touche\n", - "touched\n", - "toucher\n", - "touchers\n", - "touches\n", - "touchier\n", - "touchiest\n", - "touchily\n", - "touching\n", - "touchstone\n", - "touchstones\n", - "touchup\n", - "touchups\n", - "touchy\n", - "tough\n", - "toughen\n", - "toughened\n", - "toughening\n", - "toughens\n", - "tougher\n", - "toughest\n", - "toughie\n", - "toughies\n", - "toughish\n", - "toughly\n", - "toughness\n", - "toughnesses\n", - "toughs\n", - "toughy\n", - "toupee\n", - "toupees\n", - "tour\n", - "touraco\n", - "touracos\n", - "toured\n", - "tourer\n", - "tourers\n", - "touring\n", - "tourings\n", - "tourism\n", - "tourisms\n", - "tourist\n", - "tourists\n", - "touristy\n", - "tournament\n", - "tournaments\n", - "tourney\n", - "tourneyed\n", - "tourneying\n", - "tourneys\n", - "tourniquet\n", - "tourniquets\n", - "tours\n", - "touse\n", - "toused\n", - "touses\n", - "tousing\n", - "tousle\n", - "tousled\n", - "tousles\n", - "tousling\n", - "tout\n", - "touted\n", - "touter\n", - "touters\n", - "touting\n", - "touts\n", - "touzle\n", - "touzled\n", - "touzles\n", - "touzling\n", - "tovarich\n", - "tovariches\n", - "tovarish\n", - "tovarishes\n", - "tow\n", - "towage\n", - "towages\n", - "toward\n", - "towardly\n", - "towards\n", - "towaway\n", - "towaways\n", - "towboat\n", - "towboats\n", - "towed\n", - "towel\n", - "toweled\n", - "toweling\n", - "towelings\n", - "towelled\n", - "towelling\n", - "towels\n", - "tower\n", - "towered\n", - "towerier\n", - "toweriest\n", - "towering\n", - "towers\n", - "towery\n", - "towhead\n", - "towheaded\n", - "towheads\n", - "towhee\n", - "towhees\n", - "towie\n", - "towies\n", - "towing\n", - "towline\n", - "towlines\n", - "towmond\n", - "towmonds\n", - "towmont\n", - "towmonts\n", - "town\n", - "townee\n", - "townees\n", - "townfolk\n", - "townie\n", - "townies\n", - "townish\n", - "townless\n", - "townlet\n", - "townlets\n", - "towns\n", - "township\n", - "townships\n", - "townsman\n", - "townsmen\n", - "townspeople\n", - "townwear\n", - "townwears\n", - "towny\n", - "towpath\n", - "towpaths\n", - "towrope\n", - "towropes\n", - "tows\n", - "towy\n", - "toxaemia\n", - "toxaemias\n", - "toxaemic\n", - "toxemia\n", - "toxemias\n", - "toxemic\n", - "toxic\n", - "toxical\n", - "toxicant\n", - "toxicants\n", - "toxicities\n", - "toxicity\n", - "toxin\n", - "toxine\n", - "toxines\n", - "toxins\n", - "toxoid\n", - "toxoids\n", - "toy\n", - "toyed\n", - "toyer\n", - "toyers\n", - "toying\n", - "toyish\n", - "toyless\n", - "toylike\n", - "toyo\n", - "toyon\n", - "toyons\n", - "toyos\n", - "toys\n", - "trabeate\n", - "trace\n", - "traceable\n", - "traced\n", - "tracer\n", - "traceries\n", - "tracers\n", - "tracery\n", - "traces\n", - "trachea\n", - "tracheae\n", - "tracheal\n", - "tracheas\n", - "tracheid\n", - "tracheids\n", - "tracherous\n", - "tracherously\n", - "trachle\n", - "trachled\n", - "trachles\n", - "trachling\n", - "trachoma\n", - "trachomas\n", - "trachyte\n", - "trachytes\n", - "tracing\n", - "tracings\n", - "track\n", - "trackage\n", - "trackages\n", - "tracked\n", - "tracker\n", - "trackers\n", - "tracking\n", - "trackings\n", - "trackman\n", - "trackmen\n", - "tracks\n", - "tract\n", - "tractable\n", - "tractate\n", - "tractates\n", - "tractile\n", - "traction\n", - "tractional\n", - "tractions\n", - "tractive\n", - "tractor\n", - "tractors\n", - "tracts\n", - "trad\n", - "tradable\n", - "trade\n", - "traded\n", - "trademark\n", - "trademarked\n", - "trademarking\n", - "trademarks\n", - "trader\n", - "traders\n", - "trades\n", - "tradesman\n", - "tradesmen\n", - "tradespeople\n", - "trading\n", - "tradition\n", - "traditional\n", - "traditionally\n", - "traditions\n", - "traditor\n", - "traditores\n", - "traduce\n", - "traduced\n", - "traducer\n", - "traducers\n", - "traduces\n", - "traducing\n", - "traffic\n", - "trafficked\n", - "trafficker\n", - "traffickers\n", - "trafficking\n", - "traffics\n", - "tragedies\n", - "tragedy\n", - "tragi\n", - "tragic\n", - "tragical\n", - "tragically\n", - "tragopan\n", - "tragopans\n", - "tragus\n", - "traik\n", - "traiked\n", - "traiking\n", - "traiks\n", - "trail\n", - "trailed\n", - "trailer\n", - "trailered\n", - "trailering\n", - "trailers\n", - "trailing\n", - "trails\n", - "train\n", - "trained\n", - "trainee\n", - "trainees\n", - "trainer\n", - "trainers\n", - "trainful\n", - "trainfuls\n", - "training\n", - "trainings\n", - "trainload\n", - "trainloads\n", - "trainman\n", - "trainmen\n", - "trains\n", - "trainway\n", - "trainways\n", - "traipse\n", - "traipsed\n", - "traipses\n", - "traipsing\n", - "trait\n", - "traitor\n", - "traitors\n", - "traits\n", - "traject\n", - "trajected\n", - "trajecting\n", - "trajects\n", - "tram\n", - "tramcar\n", - "tramcars\n", - "tramel\n", - "trameled\n", - "trameling\n", - "tramell\n", - "tramelled\n", - "tramelling\n", - "tramells\n", - "tramels\n", - "tramless\n", - "tramline\n", - "trammed\n", - "trammel\n", - "trammeled\n", - "trammeling\n", - "trammelled\n", - "trammelling\n", - "trammels\n", - "tramming\n", - "tramp\n", - "tramped\n", - "tramper\n", - "trampers\n", - "tramping\n", - "trampish\n", - "trample\n", - "trampled\n", - "trampler\n", - "tramplers\n", - "tramples\n", - "trampling\n", - "trampoline\n", - "trampoliner\n", - "trampoliners\n", - "trampolines\n", - "trampolinist\n", - "trampolinists\n", - "tramps\n", - "tramroad\n", - "tramroads\n", - "trams\n", - "tramway\n", - "tramways\n", - "trance\n", - "tranced\n", - "trances\n", - "trancing\n", - "trangam\n", - "trangams\n", - "tranquil\n", - "tranquiler\n", - "tranquilest\n", - "tranquilities\n", - "tranquility\n", - "tranquilize\n", - "tranquilized\n", - "tranquilizer\n", - "tranquilizers\n", - "tranquilizes\n", - "tranquilizing\n", - "tranquiller\n", - "tranquillest\n", - "tranquillities\n", - "tranquillity\n", - "tranquillize\n", - "tranquillized\n", - "tranquillizer\n", - "tranquillizers\n", - "tranquillizes\n", - "tranquillizing\n", - "tranquilly\n", - "trans\n", - "transact\n", - "transacted\n", - "transacting\n", - "transaction\n", - "transactions\n", - "transacts\n", - "transcend\n", - "transcended\n", - "transcendent\n", - "transcendental\n", - "transcending\n", - "transcends\n", - "transcribe\n", - "transcribes\n", - "transcript\n", - "transcription\n", - "transcriptions\n", - "transcripts\n", - "transect\n", - "transected\n", - "transecting\n", - "transects\n", - "transept\n", - "transepts\n", - "transfer\n", - "transferability\n", - "transferable\n", - "transferal\n", - "transferals\n", - "transference\n", - "transferences\n", - "transferred\n", - "transferring\n", - "transfers\n", - "transfiguration\n", - "transfigurations\n", - "transfigure\n", - "transfigured\n", - "transfigures\n", - "transfiguring\n", - "transfix\n", - "transfixed\n", - "transfixes\n", - "transfixing\n", - "transfixt\n", - "transform\n", - "transformation\n", - "transformations\n", - "transformed\n", - "transformer\n", - "transformers\n", - "transforming\n", - "transforms\n", - "transfuse\n", - "transfused\n", - "transfuses\n", - "transfusing\n", - "transfusion\n", - "transfusions\n", - "transgress\n", - "transgressed\n", - "transgresses\n", - "transgressing\n", - "transgression\n", - "transgressions\n", - "transgressor\n", - "transgressors\n", - "tranship\n", - "transhipped\n", - "transhipping\n", - "tranships\n", - "transistor\n", - "transistorize\n", - "transistorized\n", - "transistorizes\n", - "transistorizing\n", - "transistors\n", - "transit\n", - "transited\n", - "transiting\n", - "transition\n", - "transitional\n", - "transitions\n", - "transitory\n", - "transits\n", - "translatable\n", - "translate\n", - "translated\n", - "translates\n", - "translating\n", - "translation\n", - "translations\n", - "translator\n", - "translators\n", - "translucence\n", - "translucences\n", - "translucencies\n", - "translucency\n", - "translucent\n", - "translucently\n", - "transmissible\n", - "transmission\n", - "transmissions\n", - "transmit\n", - "transmits\n", - "transmittable\n", - "transmittal\n", - "transmittals\n", - "transmitted\n", - "transmitter\n", - "transmitters\n", - "transmitting\n", - "transom\n", - "transoms\n", - "transparencies\n", - "transparency\n", - "transparent\n", - "transparently\n", - "transpiration\n", - "transpirations\n", - "transpire\n", - "transpired\n", - "transpires\n", - "transpiring\n", - "transplant\n", - "transplantation\n", - "transplantations\n", - "transplanted\n", - "transplanting\n", - "transplants\n", - "transport\n", - "transportation\n", - "transported\n", - "transporter\n", - "transporters\n", - "transporting\n", - "transports\n", - "transpose\n", - "transposed\n", - "transposes\n", - "transposing\n", - "transposition\n", - "transpositions\n", - "transship\n", - "transshiped\n", - "transshiping\n", - "transshipment\n", - "transshipments\n", - "transships\n", - "transude\n", - "transuded\n", - "transudes\n", - "transuding\n", - "transverse\n", - "transversely\n", - "transverses\n", - "trap\n", - "trapan\n", - "trapanned\n", - "trapanning\n", - "trapans\n", - "trapball\n", - "trapballs\n", - "trapdoor\n", - "trapdoors\n", - "trapes\n", - "trapesed\n", - "trapeses\n", - "trapesing\n", - "trapeze\n", - "trapezes\n", - "trapezia\n", - "trapezoid\n", - "trapezoidal\n", - "trapezoids\n", - "traplike\n", - "trapnest\n", - "trapnested\n", - "trapnesting\n", - "trapnests\n", - "trappean\n", - "trapped\n", - "trapper\n", - "trappers\n", - "trapping\n", - "trappings\n", - "trappose\n", - "trappous\n", - "traprock\n", - "traprocks\n", - "traps\n", - "trapt\n", - "trapunto\n", - "trapuntos\n", - "trash\n", - "trashed\n", - "trashes\n", - "trashier\n", - "trashiest\n", - "trashily\n", - "trashing\n", - "trashman\n", - "trashmen\n", - "trashy\n", - "trass\n", - "trasses\n", - "trauchle\n", - "trauchled\n", - "trauchles\n", - "trauchling\n", - "trauma\n", - "traumas\n", - "traumata\n", - "traumatic\n", - "travail\n", - "travailed\n", - "travailing\n", - "travails\n", - "trave\n", - "travel\n", - "traveled\n", - "traveler\n", - "travelers\n", - "traveling\n", - "travelled\n", - "traveller\n", - "travellers\n", - "travelling\n", - "travelog\n", - "travelogs\n", - "travels\n", - "traverse\n", - "traversed\n", - "traverses\n", - "traversing\n", - "traves\n", - "travestied\n", - "travesties\n", - "travesty\n", - "travestying\n", - "travois\n", - "travoise\n", - "travoises\n", - "trawl\n", - "trawled\n", - "trawler\n", - "trawlers\n", - "trawley\n", - "trawleys\n", - "trawling\n", - "trawls\n", - "tray\n", - "trayful\n", - "trayfuls\n", - "trays\n", - "treacle\n", - "treacles\n", - "treacly\n", - "tread\n", - "treaded\n", - "treader\n", - "treaders\n", - "treading\n", - "treadle\n", - "treadled\n", - "treadler\n", - "treadlers\n", - "treadles\n", - "treadling\n", - "treadmill\n", - "treadmills\n", - "treads\n", - "treason\n", - "treasonable\n", - "treasonous\n", - "treasons\n", - "treasure\n", - "treasured\n", - "treasurer\n", - "treasurers\n", - "treasures\n", - "treasuries\n", - "treasuring\n", - "treasury\n", - "treat\n", - "treated\n", - "treater\n", - "treaters\n", - "treaties\n", - "treating\n", - "treatise\n", - "treatises\n", - "treatment\n", - "treatments\n", - "treats\n", - "treaty\n", - "treble\n", - "trebled\n", - "trebles\n", - "trebling\n", - "trebly\n", - "trecento\n", - "trecentos\n", - "treddle\n", - "treddled\n", - "treddles\n", - "treddling\n", - "tree\n", - "treed\n", - "treeing\n", - "treeless\n", - "treelike\n", - "treenail\n", - "treenails\n", - "trees\n", - "treetop\n", - "treetops\n", - "tref\n", - "trefah\n", - "trefoil\n", - "trefoils\n", - "trehala\n", - "trehalas\n", - "trek\n", - "trekked\n", - "trekker\n", - "trekkers\n", - "trekking\n", - "treks\n", - "trellis\n", - "trellised\n", - "trellises\n", - "trellising\n", - "tremble\n", - "trembled\n", - "trembler\n", - "tremblers\n", - "trembles\n", - "tremblier\n", - "trembliest\n", - "trembling\n", - "trembly\n", - "tremendous\n", - "tremendously\n", - "tremolo\n", - "tremolos\n", - "tremor\n", - "tremors\n", - "tremulous\n", - "tremulously\n", - "trenail\n", - "trenails\n", - "trench\n", - "trenchant\n", - "trenched\n", - "trencher\n", - "trenchers\n", - "trenches\n", - "trenching\n", - "trend\n", - "trended\n", - "trendier\n", - "trendiest\n", - "trendily\n", - "trending\n", - "trends\n", - "trendy\n", - "trepan\n", - "trepang\n", - "trepangs\n", - "trepanned\n", - "trepanning\n", - "trepans\n", - "trephine\n", - "trephined\n", - "trephines\n", - "trephining\n", - "trepid\n", - "trepidation\n", - "trepidations\n", - "trespass\n", - "trespassed\n", - "trespasser\n", - "trespassers\n", - "trespasses\n", - "trespassing\n", - "tress\n", - "tressed\n", - "tressel\n", - "tressels\n", - "tresses\n", - "tressier\n", - "tressiest\n", - "tressour\n", - "tressours\n", - "tressure\n", - "tressures\n", - "tressy\n", - "trestle\n", - "trestles\n", - "tret\n", - "trets\n", - "trevet\n", - "trevets\n", - "trews\n", - "trey\n", - "treys\n", - "triable\n", - "triacid\n", - "triacids\n", - "triad\n", - "triadic\n", - "triadics\n", - "triadism\n", - "triadisms\n", - "triads\n", - "triage\n", - "triages\n", - "trial\n", - "trials\n", - "triangle\n", - "triangles\n", - "triangular\n", - "triangularly\n", - "triarchies\n", - "triarchy\n", - "triaxial\n", - "triazin\n", - "triazine\n", - "triazines\n", - "triazins\n", - "triazole\n", - "triazoles\n", - "tribade\n", - "tribades\n", - "tribadic\n", - "tribal\n", - "tribally\n", - "tribasic\n", - "tribe\n", - "tribes\n", - "tribesman\n", - "tribesmen\n", - "tribrach\n", - "tribrachs\n", - "tribulation\n", - "tribulations\n", - "tribunal\n", - "tribunals\n", - "tribune\n", - "tribunes\n", - "tributaries\n", - "tributary\n", - "tribute\n", - "tributes\n", - "trice\n", - "triced\n", - "triceps\n", - "tricepses\n", - "trices\n", - "trichina\n", - "trichinae\n", - "trichinas\n", - "trichite\n", - "trichites\n", - "trichoid\n", - "trichome\n", - "trichomes\n", - "tricing\n", - "trick\n", - "tricked\n", - "tricker\n", - "trickeries\n", - "trickers\n", - "trickery\n", - "trickie\n", - "trickier\n", - "trickiest\n", - "trickily\n", - "tricking\n", - "trickish\n", - "trickle\n", - "trickled\n", - "trickles\n", - "tricklier\n", - "trickliest\n", - "trickling\n", - "trickly\n", - "tricks\n", - "tricksier\n", - "tricksiest\n", - "trickster\n", - "tricksters\n", - "tricksy\n", - "tricky\n", - "triclad\n", - "triclads\n", - "tricolor\n", - "tricolors\n", - "tricorn\n", - "tricorne\n", - "tricornes\n", - "tricorns\n", - "tricot\n", - "tricots\n", - "trictrac\n", - "trictracs\n", - "tricycle\n", - "tricycles\n", - "trident\n", - "tridents\n", - "triduum\n", - "triduums\n", - "tried\n", - "triene\n", - "trienes\n", - "triennia\n", - "triennial\n", - "triennials\n", - "triens\n", - "trientes\n", - "trier\n", - "triers\n", - "tries\n", - "triethyl\n", - "trifid\n", - "trifle\n", - "trifled\n", - "trifler\n", - "triflers\n", - "trifles\n", - "trifling\n", - "triflings\n", - "trifocal\n", - "trifocals\n", - "trifold\n", - "triforia\n", - "triform\n", - "trig\n", - "trigged\n", - "trigger\n", - "triggered\n", - "triggering\n", - "triggers\n", - "triggest\n", - "trigging\n", - "trigly\n", - "triglyph\n", - "triglyphs\n", - "trigness\n", - "trignesses\n", - "trigo\n", - "trigon\n", - "trigonal\n", - "trigonometric\n", - "trigonometrical\n", - "trigonometries\n", - "trigonometry\n", - "trigons\n", - "trigos\n", - "trigraph\n", - "trigraphs\n", - "trigs\n", - "trihedra\n", - "trijet\n", - "trijets\n", - "trilbies\n", - "trilby\n", - "trill\n", - "trilled\n", - "triller\n", - "trillers\n", - "trilling\n", - "trillion\n", - "trillions\n", - "trillionth\n", - "trillionths\n", - "trillium\n", - "trilliums\n", - "trills\n", - "trilobal\n", - "trilobed\n", - "trilogies\n", - "trilogy\n", - "trim\n", - "trimaran\n", - "trimarans\n", - "trimer\n", - "trimers\n", - "trimester\n", - "trimeter\n", - "trimeters\n", - "trimly\n", - "trimmed\n", - "trimmer\n", - "trimmers\n", - "trimmest\n", - "trimming\n", - "trimmings\n", - "trimness\n", - "trimnesses\n", - "trimorph\n", - "trimorphs\n", - "trimotor\n", - "trimotors\n", - "trims\n", - "trinal\n", - "trinary\n", - "trindle\n", - "trindled\n", - "trindles\n", - "trindling\n", - "trine\n", - "trined\n", - "trines\n", - "trining\n", - "trinities\n", - "trinity\n", - "trinket\n", - "trinketed\n", - "trinketing\n", - "trinkets\n", - "trinkums\n", - "trinodal\n", - "trio\n", - "triode\n", - "triodes\n", - "triol\n", - "triolet\n", - "triolets\n", - "triols\n", - "trios\n", - "triose\n", - "trioses\n", - "trioxid\n", - "trioxide\n", - "trioxides\n", - "trioxids\n", - "trip\n", - "tripack\n", - "tripacks\n", - "tripart\n", - "tripartite\n", - "tripe\n", - "tripedal\n", - "tripes\n", - "triphase\n", - "triplane\n", - "triplanes\n", - "triple\n", - "tripled\n", - "triples\n", - "triplet\n", - "triplets\n", - "triplex\n", - "triplexes\n", - "triplicate\n", - "triplicates\n", - "tripling\n", - "triplite\n", - "triplites\n", - "triploid\n", - "triploids\n", - "triply\n", - "tripod\n", - "tripodal\n", - "tripodic\n", - "tripodies\n", - "tripody\n", - "tripoli\n", - "tripolis\n", - "tripos\n", - "triposes\n", - "tripped\n", - "tripper\n", - "trippers\n", - "trippet\n", - "trippets\n", - "tripping\n", - "trippings\n", - "trips\n", - "triptane\n", - "triptanes\n", - "triptyca\n", - "triptycas\n", - "triptych\n", - "triptychs\n", - "trireme\n", - "triremes\n", - "triscele\n", - "trisceles\n", - "trisect\n", - "trisected\n", - "trisecting\n", - "trisection\n", - "trisections\n", - "trisects\n", - "triseme\n", - "trisemes\n", - "trisemic\n", - "triskele\n", - "triskeles\n", - "trismic\n", - "trismus\n", - "trismuses\n", - "trisome\n", - "trisomes\n", - "trisomic\n", - "trisomics\n", - "trisomies\n", - "trisomy\n", - "tristate\n", - "triste\n", - "tristeza\n", - "tristezas\n", - "tristful\n", - "tristich\n", - "tristichs\n", - "trite\n", - "tritely\n", - "triter\n", - "tritest\n", - "trithing\n", - "trithings\n", - "triticum\n", - "triticums\n", - "tritium\n", - "tritiums\n", - "tritoma\n", - "tritomas\n", - "triton\n", - "tritone\n", - "tritones\n", - "tritons\n", - "triumph\n", - "triumphal\n", - "triumphant\n", - "triumphantly\n", - "triumphed\n", - "triumphing\n", - "triumphs\n", - "triumvir\n", - "triumvirate\n", - "triumvirates\n", - "triumviri\n", - "triumvirs\n", - "triune\n", - "triunes\n", - "triunities\n", - "triunity\n", - "trivalve\n", - "trivalves\n", - "trivet\n", - "trivets\n", - "trivia\n", - "trivial\n", - "trivialities\n", - "triviality\n", - "trivium\n", - "troak\n", - "troaked\n", - "troaking\n", - "troaks\n", - "trocar\n", - "trocars\n", - "trochaic\n", - "trochaics\n", - "trochal\n", - "trochar\n", - "trochars\n", - "troche\n", - "trochee\n", - "trochees\n", - "troches\n", - "trochil\n", - "trochili\n", - "trochils\n", - "trochlea\n", - "trochleae\n", - "trochleas\n", - "trochoid\n", - "trochoids\n", - "trock\n", - "trocked\n", - "trocking\n", - "trocks\n", - "trod\n", - "trodden\n", - "trode\n", - "troffer\n", - "troffers\n", - "trogon\n", - "trogons\n", - "troika\n", - "troikas\n", - "troilite\n", - "troilites\n", - "troilus\n", - "troiluses\n", - "trois\n", - "troke\n", - "troked\n", - "trokes\n", - "troking\n", - "troland\n", - "trolands\n", - "troll\n", - "trolled\n", - "troller\n", - "trollers\n", - "trolley\n", - "trolleyed\n", - "trolleying\n", - "trolleys\n", - "trollied\n", - "trollies\n", - "trolling\n", - "trollings\n", - "trollop\n", - "trollops\n", - "trollopy\n", - "trolls\n", - "trolly\n", - "trollying\n", - "trombone\n", - "trombones\n", - "trombonist\n", - "trombonists\n", - "trommel\n", - "trommels\n", - "tromp\n", - "trompe\n", - "tromped\n", - "trompes\n", - "tromping\n", - "tromps\n", - "trona\n", - "tronas\n", - "trone\n", - "trones\n", - "troop\n", - "trooped\n", - "trooper\n", - "troopers\n", - "troopial\n", - "troopials\n", - "trooping\n", - "troops\n", - "trooz\n", - "trop\n", - "trope\n", - "tropes\n", - "trophic\n", - "trophied\n", - "trophies\n", - "trophy\n", - "trophying\n", - "tropic\n", - "tropical\n", - "tropics\n", - "tropin\n", - "tropine\n", - "tropines\n", - "tropins\n", - "tropism\n", - "tropisms\n", - "trot\n", - "troth\n", - "trothed\n", - "trothing\n", - "troths\n", - "trotline\n", - "trotlines\n", - "trots\n", - "trotted\n", - "trotter\n", - "trotters\n", - "trotting\n", - "trotyl\n", - "trotyls\n", - "troubadour\n", - "troubadours\n", - "trouble\n", - "troubled\n", - "troublemaker\n", - "troublemakers\n", - "troubler\n", - "troublers\n", - "troubles\n", - "troubleshoot\n", - "troubleshooted\n", - "troubleshooting\n", - "troubleshoots\n", - "troublesome\n", - "troublesomely\n", - "troubling\n", - "trough\n", - "troughs\n", - "trounce\n", - "trounced\n", - "trounces\n", - "trouncing\n", - "troupe\n", - "trouped\n", - "trouper\n", - "troupers\n", - "troupes\n", - "troupial\n", - "troupials\n", - "trouping\n", - "trouser\n", - "trousers\n", - "trousseau\n", - "trousseaus\n", - "trousseaux\n", - "trout\n", - "troutier\n", - "troutiest\n", - "trouts\n", - "trouty\n", - "trouvere\n", - "trouveres\n", - "trouveur\n", - "trouveurs\n", - "trove\n", - "trover\n", - "trovers\n", - "troves\n", - "trow\n", - "trowed\n", - "trowel\n", - "troweled\n", - "troweler\n", - "trowelers\n", - "troweling\n", - "trowelled\n", - "trowelling\n", - "trowels\n", - "trowing\n", - "trows\n", - "trowsers\n", - "trowth\n", - "trowths\n", - "troy\n", - "troys\n", - "truancies\n", - "truancy\n", - "truant\n", - "truanted\n", - "truanting\n", - "truantries\n", - "truantry\n", - "truants\n", - "truce\n", - "truced\n", - "truces\n", - "trucing\n", - "truck\n", - "truckage\n", - "truckages\n", - "trucked\n", - "trucker\n", - "truckers\n", - "trucking\n", - "truckings\n", - "truckle\n", - "truckled\n", - "truckler\n", - "trucklers\n", - "truckles\n", - "truckling\n", - "truckload\n", - "truckloads\n", - "truckman\n", - "truckmen\n", - "trucks\n", - "truculencies\n", - "truculency\n", - "truculent\n", - "truculently\n", - "trudge\n", - "trudged\n", - "trudgen\n", - "trudgens\n", - "trudgeon\n", - "trudgeons\n", - "trudger\n", - "trudgers\n", - "trudges\n", - "trudging\n", - "true\n", - "trueblue\n", - "trueblues\n", - "trueborn\n", - "trued\n", - "trueing\n", - "truelove\n", - "trueloves\n", - "trueness\n", - "truenesses\n", - "truer\n", - "trues\n", - "truest\n", - "truffe\n", - "truffes\n", - "truffle\n", - "truffled\n", - "truffles\n", - "truing\n", - "truism\n", - "truisms\n", - "truistic\n", - "trull\n", - "trulls\n", - "truly\n", - "trumeau\n", - "trumeaux\n", - "trump\n", - "trumped\n", - "trumperies\n", - "trumpery\n", - "trumpet\n", - "trumpeted\n", - "trumpeter\n", - "trumpeters\n", - "trumpeting\n", - "trumpets\n", - "trumping\n", - "trumps\n", - "truncate\n", - "truncated\n", - "truncates\n", - "truncating\n", - "truncation\n", - "truncations\n", - "trundle\n", - "trundled\n", - "trundler\n", - "trundlers\n", - "trundles\n", - "trundling\n", - "trunk\n", - "trunked\n", - "trunks\n", - "trunnel\n", - "trunnels\n", - "trunnion\n", - "trunnions\n", - "truss\n", - "trussed\n", - "trusser\n", - "trussers\n", - "trusses\n", - "trussing\n", - "trussings\n", - "trust\n", - "trusted\n", - "trustee\n", - "trusteed\n", - "trusteeing\n", - "trustees\n", - "trusteeship\n", - "trusteeships\n", - "truster\n", - "trusters\n", - "trustful\n", - "trustfully\n", - "trustier\n", - "trusties\n", - "trustiest\n", - "trustily\n", - "trusting\n", - "trusts\n", - "trustworthiness\n", - "trustworthinesses\n", - "trustworthy\n", - "trusty\n", - "truth\n", - "truthful\n", - "truthfully\n", - "truthfulness\n", - "truthfulnesses\n", - "truths\n", - "try\n", - "trying\n", - "tryingly\n", - "tryma\n", - "trymata\n", - "tryout\n", - "tryouts\n", - "trypsin\n", - "trypsins\n", - "tryptic\n", - "trysail\n", - "trysails\n", - "tryst\n", - "tryste\n", - "trysted\n", - "tryster\n", - "trysters\n", - "trystes\n", - "trysting\n", - "trysts\n", - "tryworks\n", - "tsade\n", - "tsades\n", - "tsadi\n", - "tsadis\n", - "tsar\n", - "tsardom\n", - "tsardoms\n", - "tsarevna\n", - "tsarevnas\n", - "tsarina\n", - "tsarinas\n", - "tsarism\n", - "tsarisms\n", - "tsarist\n", - "tsarists\n", - "tsaritza\n", - "tsaritzas\n", - "tsars\n", - "tsetse\n", - "tsetses\n", - "tsimmes\n", - "tsk\n", - "tsked\n", - "tsking\n", - "tsks\n", - "tsktsk\n", - "tsktsked\n", - "tsktsking\n", - "tsktsks\n", - "tsuba\n", - "tsunami\n", - "tsunamic\n", - "tsunamis\n", - "tsuris\n", - "tuatara\n", - "tuataras\n", - "tuatera\n", - "tuateras\n", - "tub\n", - "tuba\n", - "tubae\n", - "tubal\n", - "tubas\n", - "tubate\n", - "tubbable\n", - "tubbed\n", - "tubber\n", - "tubbers\n", - "tubbier\n", - "tubbiest\n", - "tubbing\n", - "tubby\n", - "tube\n", - "tubed\n", - "tubeless\n", - "tubelike\n", - "tuber\n", - "tubercle\n", - "tubercles\n", - "tubercular\n", - "tuberculoses\n", - "tuberculosis\n", - "tuberculous\n", - "tuberoid\n", - "tuberose\n", - "tuberoses\n", - "tuberous\n", - "tubers\n", - "tubes\n", - "tubework\n", - "tubeworks\n", - "tubful\n", - "tubfuls\n", - "tubifex\n", - "tubifexes\n", - "tubiform\n", - "tubing\n", - "tubings\n", - "tublike\n", - "tubs\n", - "tubular\n", - "tubulate\n", - "tubulated\n", - "tubulates\n", - "tubulating\n", - "tubule\n", - "tubules\n", - "tubulose\n", - "tubulous\n", - "tubulure\n", - "tubulures\n", - "tuchun\n", - "tuchuns\n", - "tuck\n", - "tuckahoe\n", - "tuckahoes\n", - "tucked\n", - "tucker\n", - "tuckered\n", - "tuckering\n", - "tuckers\n", - "tucket\n", - "tuckets\n", - "tucking\n", - "tucks\n", - "tufa\n", - "tufas\n", - "tuff\n", - "tuffet\n", - "tuffets\n", - "tuffs\n", - "tuft\n", - "tufted\n", - "tufter\n", - "tufters\n", - "tuftier\n", - "tuftiest\n", - "tuftily\n", - "tufting\n", - "tufts\n", - "tufty\n", - "tug\n", - "tugboat\n", - "tugboats\n", - "tugged\n", - "tugger\n", - "tuggers\n", - "tugging\n", - "tugless\n", - "tugrik\n", - "tugriks\n", - "tugs\n", - "tui\n", - "tuille\n", - "tuilles\n", - "tuis\n", - "tuition\n", - "tuitions\n", - "tuladi\n", - "tuladis\n", - "tule\n", - "tules\n", - "tulip\n", - "tulips\n", - "tulle\n", - "tulles\n", - "tullibee\n", - "tullibees\n", - "tumble\n", - "tumbled\n", - "tumbler\n", - "tumblers\n", - "tumbles\n", - "tumbling\n", - "tumblings\n", - "tumbrel\n", - "tumbrels\n", - "tumbril\n", - "tumbrils\n", - "tumefied\n", - "tumefies\n", - "tumefy\n", - "tumefying\n", - "tumid\n", - "tumidily\n", - "tumidities\n", - "tumidity\n", - "tummies\n", - "tummy\n", - "tumor\n", - "tumoral\n", - "tumorous\n", - "tumors\n", - "tumour\n", - "tumours\n", - "tump\n", - "tumpline\n", - "tumplines\n", - "tumps\n", - "tumular\n", - "tumuli\n", - "tumulose\n", - "tumulous\n", - "tumult\n", - "tumults\n", - "tumultuous\n", - "tumulus\n", - "tumuluses\n", - "tun\n", - "tuna\n", - "tunable\n", - "tunably\n", - "tunas\n", - "tundish\n", - "tundishes\n", - "tundra\n", - "tundras\n", - "tune\n", - "tuneable\n", - "tuneably\n", - "tuned\n", - "tuneful\n", - "tuneless\n", - "tuner\n", - "tuners\n", - "tunes\n", - "tung\n", - "tungs\n", - "tungsten\n", - "tungstens\n", - "tungstic\n", - "tunic\n", - "tunica\n", - "tunicae\n", - "tunicate\n", - "tunicates\n", - "tunicle\n", - "tunicles\n", - "tunics\n", - "tuning\n", - "tunnage\n", - "tunnages\n", - "tunned\n", - "tunnel\n", - "tunneled\n", - "tunneler\n", - "tunnelers\n", - "tunneling\n", - "tunnelled\n", - "tunnelling\n", - "tunnels\n", - "tunnies\n", - "tunning\n", - "tunny\n", - "tuns\n", - "tup\n", - "tupelo\n", - "tupelos\n", - "tupik\n", - "tupiks\n", - "tupped\n", - "tuppence\n", - "tuppences\n", - "tuppeny\n", - "tupping\n", - "tups\n", - "tuque\n", - "tuques\n", - "turaco\n", - "turacos\n", - "turacou\n", - "turacous\n", - "turban\n", - "turbaned\n", - "turbans\n", - "turbaries\n", - "turbary\n", - "turbeth\n", - "turbeths\n", - "turbid\n", - "turbidities\n", - "turbidity\n", - "turbidly\n", - "turbidness\n", - "turbidnesses\n", - "turbinal\n", - "turbinals\n", - "turbine\n", - "turbines\n", - "turbit\n", - "turbith\n", - "turbiths\n", - "turbits\n", - "turbo\n", - "turbocar\n", - "turbocars\n", - "turbofan\n", - "turbofans\n", - "turbojet\n", - "turbojets\n", - "turboprop\n", - "turboprops\n", - "turbos\n", - "turbot\n", - "turbots\n", - "turbulence\n", - "turbulences\n", - "turbulently\n", - "turd\n", - "turdine\n", - "turds\n", - "tureen\n", - "tureens\n", - "turf\n", - "turfed\n", - "turfier\n", - "turfiest\n", - "turfing\n", - "turfless\n", - "turflike\n", - "turfman\n", - "turfmen\n", - "turfs\n", - "turfski\n", - "turfskis\n", - "turfy\n", - "turgencies\n", - "turgency\n", - "turgent\n", - "turgid\n", - "turgidities\n", - "turgidity\n", - "turgidly\n", - "turgite\n", - "turgites\n", - "turgor\n", - "turgors\n", - "turkey\n", - "turkeys\n", - "turkois\n", - "turkoises\n", - "turmeric\n", - "turmerics\n", - "turmoil\n", - "turmoiled\n", - "turmoiling\n", - "turmoils\n", - "turn\n", - "turnable\n", - "turnaround\n", - "turncoat\n", - "turncoats\n", - "turndown\n", - "turndowns\n", - "turned\n", - "turner\n", - "turneries\n", - "turners\n", - "turnery\n", - "turnhall\n", - "turnhalls\n", - "turning\n", - "turnings\n", - "turnip\n", - "turnips\n", - "turnkey\n", - "turnkeys\n", - "turnoff\n", - "turnoffs\n", - "turnout\n", - "turnouts\n", - "turnover\n", - "turnovers\n", - "turnpike\n", - "turnpikes\n", - "turns\n", - "turnsole\n", - "turnsoles\n", - "turnspit\n", - "turnspits\n", - "turnstile\n", - "turnstiles\n", - "turntable\n", - "turntables\n", - "turnup\n", - "turnups\n", - "turpentine\n", - "turpentines\n", - "turpeth\n", - "turpeths\n", - "turpitude\n", - "turpitudes\n", - "turps\n", - "turquois\n", - "turquoise\n", - "turquoises\n", - "turret\n", - "turreted\n", - "turrets\n", - "turrical\n", - "turtle\n", - "turtled\n", - "turtledove\n", - "turtledoves\n", - "turtleneck\n", - "turtlenecks\n", - "turtler\n", - "turtlers\n", - "turtles\n", - "turtling\n", - "turtlings\n", - "turves\n", - "tusche\n", - "tusches\n", - "tush\n", - "tushed\n", - "tushes\n", - "tushing\n", - "tusk\n", - "tusked\n", - "tusker\n", - "tuskers\n", - "tusking\n", - "tuskless\n", - "tusklike\n", - "tusks\n", - "tussah\n", - "tussahs\n", - "tussal\n", - "tussar\n", - "tussars\n", - "tusseh\n", - "tussehs\n", - "tusser\n", - "tussers\n", - "tussis\n", - "tussises\n", - "tussive\n", - "tussle\n", - "tussled\n", - "tussles\n", - "tussling\n", - "tussock\n", - "tussocks\n", - "tussocky\n", - "tussor\n", - "tussore\n", - "tussores\n", - "tussors\n", - "tussuck\n", - "tussucks\n", - "tussur\n", - "tussurs\n", - "tut\n", - "tutee\n", - "tutees\n", - "tutelage\n", - "tutelages\n", - "tutelar\n", - "tutelaries\n", - "tutelars\n", - "tutelary\n", - "tutor\n", - "tutorage\n", - "tutorages\n", - "tutored\n", - "tutoress\n", - "tutoresses\n", - "tutorial\n", - "tutorials\n", - "tutoring\n", - "tutors\n", - "tutoyed\n", - "tutoyer\n", - "tutoyered\n", - "tutoyering\n", - "tutoyers\n", - "tuts\n", - "tutted\n", - "tutti\n", - "tutties\n", - "tutting\n", - "tuttis\n", - "tutty\n", - "tutu\n", - "tutus\n", - "tux\n", - "tuxedo\n", - "tuxedoes\n", - "tuxedos\n", - "tuxes\n", - "tuyer\n", - "tuyere\n", - "tuyeres\n", - "tuyers\n", - "twa\n", - "twaddle\n", - "twaddled\n", - "twaddler\n", - "twaddlers\n", - "twaddles\n", - "twaddling\n", - "twae\n", - "twaes\n", - "twain\n", - "twains\n", - "twang\n", - "twanged\n", - "twangier\n", - "twangiest\n", - "twanging\n", - "twangle\n", - "twangled\n", - "twangler\n", - "twanglers\n", - "twangles\n", - "twangling\n", - "twangs\n", - "twangy\n", - "twankies\n", - "twanky\n", - "twas\n", - "twasome\n", - "twasomes\n", - "twattle\n", - "twattled\n", - "twattles\n", - "twattling\n", - "tweak\n", - "tweaked\n", - "tweakier\n", - "tweakiest\n", - "tweaking\n", - "tweaks\n", - "tweaky\n", - "tweed\n", - "tweedier\n", - "tweediest\n", - "tweedle\n", - "tweedled\n", - "tweedles\n", - "tweedling\n", - "tweeds\n", - "tweedy\n", - "tween\n", - "tweet\n", - "tweeted\n", - "tweeter\n", - "tweeters\n", - "tweeting\n", - "tweets\n", - "tweeze\n", - "tweezed\n", - "tweezer\n", - "tweezers\n", - "tweezes\n", - "tweezing\n", - "twelfth\n", - "twelfths\n", - "twelve\n", - "twelvemo\n", - "twelvemos\n", - "twelves\n", - "twenties\n", - "twentieth\n", - "twentieths\n", - "twenty\n", - "twerp\n", - "twerps\n", - "twibil\n", - "twibill\n", - "twibills\n", - "twibils\n", - "twice\n", - "twiddle\n", - "twiddled\n", - "twiddler\n", - "twiddlers\n", - "twiddles\n", - "twiddling\n", - "twier\n", - "twiers\n", - "twig\n", - "twigged\n", - "twiggen\n", - "twiggier\n", - "twiggiest\n", - "twigging\n", - "twiggy\n", - "twigless\n", - "twiglike\n", - "twigs\n", - "twilight\n", - "twilights\n", - "twilit\n", - "twill\n", - "twilled\n", - "twilling\n", - "twillings\n", - "twills\n", - "twin\n", - "twinborn\n", - "twine\n", - "twined\n", - "twiner\n", - "twiners\n", - "twines\n", - "twinge\n", - "twinged\n", - "twinges\n", - "twinging\n", - "twinier\n", - "twiniest\n", - "twinight\n", - "twining\n", - "twinkle\n", - "twinkled\n", - "twinkler\n", - "twinklers\n", - "twinkles\n", - "twinkling\n", - "twinkly\n", - "twinned\n", - "twinning\n", - "twinnings\n", - "twins\n", - "twinship\n", - "twinships\n", - "twiny\n", - "twirl\n", - "twirled\n", - "twirler\n", - "twirlers\n", - "twirlier\n", - "twirliest\n", - "twirling\n", - "twirls\n", - "twirly\n", - "twirp\n", - "twirps\n", - "twist\n", - "twisted\n", - "twister\n", - "twisters\n", - "twisting\n", - "twistings\n", - "twists\n", - "twit\n", - "twitch\n", - "twitched\n", - "twitcher\n", - "twitchers\n", - "twitches\n", - "twitchier\n", - "twitchiest\n", - "twitching\n", - "twitchy\n", - "twits\n", - "twitted\n", - "twitter\n", - "twittered\n", - "twittering\n", - "twitters\n", - "twittery\n", - "twitting\n", - "twixt\n", - "two\n", - "twofer\n", - "twofers\n", - "twofold\n", - "twofolds\n", - "twopence\n", - "twopences\n", - "twopenny\n", - "twos\n", - "twosome\n", - "twosomes\n", - "twyer\n", - "twyers\n", - "tycoon\n", - "tycoons\n", - "tye\n", - "tyee\n", - "tyees\n", - "tyes\n", - "tying\n", - "tyke\n", - "tykes\n", - "tymbal\n", - "tymbals\n", - "tympan\n", - "tympana\n", - "tympanal\n", - "tympani\n", - "tympanic\n", - "tympanies\n", - "tympans\n", - "tympanum\n", - "tympanums\n", - "tympany\n", - "tyne\n", - "tyned\n", - "tynes\n", - "tyning\n", - "typal\n", - "type\n", - "typeable\n", - "typebar\n", - "typebars\n", - "typecase\n", - "typecases\n", - "typecast\n", - "typecasting\n", - "typecasts\n", - "typed\n", - "typeface\n", - "typefaces\n", - "types\n", - "typeset\n", - "typeseting\n", - "typesets\n", - "typewrite\n", - "typewrited\n", - "typewriter\n", - "typewriters\n", - "typewrites\n", - "typewriting\n", - "typey\n", - "typhoid\n", - "typhoids\n", - "typhon\n", - "typhonic\n", - "typhons\n", - "typhoon\n", - "typhoons\n", - "typhose\n", - "typhous\n", - "typhus\n", - "typhuses\n", - "typic\n", - "typical\n", - "typically\n", - "typicalness\n", - "typicalnesses\n", - "typier\n", - "typiest\n", - "typified\n", - "typifier\n", - "typifiers\n", - "typifies\n", - "typify\n", - "typifying\n", - "typing\n", - "typist\n", - "typists\n", - "typo\n", - "typographic\n", - "typographical\n", - "typographically\n", - "typographies\n", - "typography\n", - "typologies\n", - "typology\n", - "typos\n", - "typp\n", - "typps\n", - "typy\n", - "tyramine\n", - "tyramines\n", - "tyrannic\n", - "tyrannies\n", - "tyranny\n", - "tyrant\n", - "tyrants\n", - "tyre\n", - "tyred\n", - "tyres\n", - "tyring\n", - "tyro\n", - "tyronic\n", - "tyros\n", - "tyrosine\n", - "tyrosines\n", - "tythe\n", - "tythed\n", - "tythes\n", - "tything\n", - "tzaddik\n", - "tzaddikim\n", - "tzar\n", - "tzardom\n", - "tzardoms\n", - "tzarevna\n", - "tzarevnas\n", - "tzarina\n", - "tzarinas\n", - "tzarism\n", - "tzarisms\n", - "tzarist\n", - "tzarists\n", - "tzaritza\n", - "tzaritzas\n", - "tzars\n", - "tzetze\n", - "tzetzes\n", - "tzigane\n", - "tziganes\n", - "tzimmes\n", - "tzitzis\n", - "tzitzith\n", - "tzuris\n", - "ubieties\n", - "ubiety\n", - "ubique\n", - "ubiquities\n", - "ubiquitities\n", - "ubiquitity\n", - "ubiquitous\n", - "ubiquitously\n", - "ubiquity\n", - "udder\n", - "udders\n", - "udo\n", - "udometer\n", - "udometers\n", - "udometries\n", - "udometry\n", - "udos\n", - "ugh\n", - "ughs\n", - "uglier\n", - "ugliest\n", - "uglified\n", - "uglifier\n", - "uglifiers\n", - "uglifies\n", - "uglify\n", - "uglifying\n", - "uglily\n", - "ugliness\n", - "uglinesses\n", - "ugly\n", - "ugsome\n", - "uhlan\n", - "uhlans\n", - "uintaite\n", - "uintaites\n", - "uit\n", - "ukase\n", - "ukases\n", - "uke\n", - "ukelele\n", - "ukeleles\n", - "ukes\n", - "ukulele\n", - "ukuleles\n", - "ulama\n", - "ulamas\n", - "ulan\n", - "ulans\n", - "ulcer\n", - "ulcerate\n", - "ulcerated\n", - "ulcerates\n", - "ulcerating\n", - "ulceration\n", - "ulcerations\n", - "ulcerative\n", - "ulcered\n", - "ulcering\n", - "ulcerous\n", - "ulcers\n", - "ulema\n", - "ulemas\n", - "ulexite\n", - "ulexites\n", - "ullage\n", - "ullaged\n", - "ullages\n", - "ulna\n", - "ulnad\n", - "ulnae\n", - "ulnar\n", - "ulnas\n", - "ulster\n", - "ulsters\n", - "ulterior\n", - "ultima\n", - "ultimacies\n", - "ultimacy\n", - "ultimas\n", - "ultimata\n", - "ultimate\n", - "ultimately\n", - "ultimates\n", - "ultimatum\n", - "ultimo\n", - "ultra\n", - "ultraism\n", - "ultraisms\n", - "ultraist\n", - "ultraists\n", - "ultrared\n", - "ultrareds\n", - "ultras\n", - "ultraviolet\n", - "ululant\n", - "ululate\n", - "ululated\n", - "ululates\n", - "ululating\n", - "ulva\n", - "ulvas\n", - "umbel\n", - "umbeled\n", - "umbellar\n", - "umbelled\n", - "umbellet\n", - "umbellets\n", - "umbels\n", - "umber\n", - "umbered\n", - "umbering\n", - "umbers\n", - "umbilical\n", - "umbilici\n", - "umbilicus\n", - "umbles\n", - "umbo\n", - "umbonal\n", - "umbonate\n", - "umbones\n", - "umbonic\n", - "umbos\n", - "umbra\n", - "umbrae\n", - "umbrage\n", - "umbrages\n", - "umbral\n", - "umbras\n", - "umbrella\n", - "umbrellaed\n", - "umbrellaing\n", - "umbrellas\n", - "umbrette\n", - "umbrettes\n", - "umiac\n", - "umiack\n", - "umiacks\n", - "umiacs\n", - "umiak\n", - "umiaks\n", - "umlaut\n", - "umlauted\n", - "umlauting\n", - "umlauts\n", - "ump\n", - "umped\n", - "umping\n", - "umpirage\n", - "umpirages\n", - "umpire\n", - "umpired\n", - "umpires\n", - "umpiring\n", - "umps\n", - "umpteen\n", - "umpteenth\n", - "umteenth\n", - "un\n", - "unabated\n", - "unable\n", - "unabridged\n", - "unabused\n", - "unacceptable\n", - "unaccompanied\n", - "unaccounted\n", - "unaccustomed\n", - "unacted\n", - "unaddressed\n", - "unadorned\n", - "unadulterated\n", - "unaffected\n", - "unaffectedly\n", - "unafraid\n", - "unaged\n", - "unageing\n", - "unagile\n", - "unaging\n", - "unai\n", - "unaided\n", - "unaimed\n", - "unaired\n", - "unais\n", - "unalike\n", - "unallied\n", - "unambiguous\n", - "unambiguously\n", - "unambitious\n", - "unamused\n", - "unanchor\n", - "unanchored\n", - "unanchoring\n", - "unanchors\n", - "unaneled\n", - "unanimities\n", - "unanimity\n", - "unanimous\n", - "unanimously\n", - "unannounced\n", - "unanswerable\n", - "unanswered\n", - "unanticipated\n", - "unappetizing\n", - "unappreciated\n", - "unapproved\n", - "unapt\n", - "unaptly\n", - "unare\n", - "unargued\n", - "unarm\n", - "unarmed\n", - "unarming\n", - "unarms\n", - "unartful\n", - "unary\n", - "unasked\n", - "unassisted\n", - "unassuming\n", - "unatoned\n", - "unattached\n", - "unattended\n", - "unattractive\n", - "unau\n", - "unaus\n", - "unauthorized\n", - "unavailable\n", - "unavoidable\n", - "unavowed\n", - "unawaked\n", - "unaware\n", - "unawares\n", - "unawed\n", - "unbacked\n", - "unbaked\n", - "unbalanced\n", - "unbar\n", - "unbarbed\n", - "unbarred\n", - "unbarring\n", - "unbars\n", - "unbased\n", - "unbated\n", - "unbe\n", - "unbear\n", - "unbearable\n", - "unbeared\n", - "unbearing\n", - "unbears\n", - "unbeaten\n", - "unbecoming\n", - "unbecomingly\n", - "unbed\n", - "unbelief\n", - "unbeliefs\n", - "unbelievable\n", - "unbelievably\n", - "unbelt\n", - "unbelted\n", - "unbelting\n", - "unbelts\n", - "unbend\n", - "unbended\n", - "unbending\n", - "unbends\n", - "unbenign\n", - "unbent\n", - "unbiased\n", - "unbid\n", - "unbidden\n", - "unbind\n", - "unbinding\n", - "unbinds\n", - "unbitted\n", - "unblamed\n", - "unblest\n", - "unblock\n", - "unblocked\n", - "unblocking\n", - "unblocks\n", - "unbloody\n", - "unbodied\n", - "unbolt\n", - "unbolted\n", - "unbolting\n", - "unbolts\n", - "unboned\n", - "unbonnet\n", - "unbonneted\n", - "unbonneting\n", - "unbonnets\n", - "unborn\n", - "unbosom\n", - "unbosomed\n", - "unbosoming\n", - "unbosoms\n", - "unbought\n", - "unbound\n", - "unbowed\n", - "unbox\n", - "unboxed\n", - "unboxes\n", - "unboxing\n", - "unbrace\n", - "unbraced\n", - "unbraces\n", - "unbracing\n", - "unbraid\n", - "unbraided\n", - "unbraiding\n", - "unbraids\n", - "unbranded\n", - "unbreakable\n", - "unbred\n", - "unbreech\n", - "unbreeched\n", - "unbreeches\n", - "unbreeching\n", - "unbridle\n", - "unbridled\n", - "unbridles\n", - "unbridling\n", - "unbroke\n", - "unbroken\n", - "unbuckle\n", - "unbuckled\n", - "unbuckles\n", - "unbuckling\n", - "unbuild\n", - "unbuilding\n", - "unbuilds\n", - "unbuilt\n", - "unbundle\n", - "unbundled\n", - "unbundles\n", - "unbundling\n", - "unburden\n", - "unburdened\n", - "unburdening\n", - "unburdens\n", - "unburied\n", - "unburned\n", - "unburnt\n", - "unbutton\n", - "unbuttoned\n", - "unbuttoning\n", - "unbuttons\n", - "uncage\n", - "uncaged\n", - "uncages\n", - "uncaging\n", - "uncake\n", - "uncaked\n", - "uncakes\n", - "uncaking\n", - "uncalled\n", - "uncandid\n", - "uncannier\n", - "uncanniest\n", - "uncannily\n", - "uncanny\n", - "uncap\n", - "uncapped\n", - "uncapping\n", - "uncaps\n", - "uncaring\n", - "uncase\n", - "uncased\n", - "uncases\n", - "uncashed\n", - "uncasing\n", - "uncaught\n", - "uncaused\n", - "unceasing\n", - "unceasingly\n", - "uncensored\n", - "unceremonious\n", - "unceremoniously\n", - "uncertain\n", - "uncertainly\n", - "uncertainties\n", - "uncertainty\n", - "unchain\n", - "unchained\n", - "unchaining\n", - "unchains\n", - "unchallenged\n", - "unchancy\n", - "unchanged\n", - "unchanging\n", - "uncharacteristic\n", - "uncharge\n", - "uncharged\n", - "uncharges\n", - "uncharging\n", - "unchary\n", - "unchaste\n", - "unchecked\n", - "unchewed\n", - "unchic\n", - "unchoke\n", - "unchoked\n", - "unchokes\n", - "unchoking\n", - "unchosen\n", - "unchristian\n", - "unchurch\n", - "unchurched\n", - "unchurches\n", - "unchurching\n", - "unci\n", - "uncia\n", - "unciae\n", - "uncial\n", - "uncially\n", - "uncials\n", - "unciform\n", - "unciforms\n", - "uncinal\n", - "uncinate\n", - "uncini\n", - "uncinus\n", - "uncivil\n", - "uncivilized\n", - "unclad\n", - "unclaimed\n", - "unclamp\n", - "unclamped\n", - "unclamping\n", - "unclamps\n", - "unclasp\n", - "unclasped\n", - "unclasping\n", - "unclasps\n", - "uncle\n", - "unclean\n", - "uncleaner\n", - "uncleanest\n", - "uncleanness\n", - "uncleannesses\n", - "unclear\n", - "uncleared\n", - "unclearer\n", - "unclearest\n", - "unclench\n", - "unclenched\n", - "unclenches\n", - "unclenching\n", - "uncles\n", - "unclinch\n", - "unclinched\n", - "unclinches\n", - "unclinching\n", - "uncloak\n", - "uncloaked\n", - "uncloaking\n", - "uncloaks\n", - "unclog\n", - "unclogged\n", - "unclogging\n", - "unclogs\n", - "unclose\n", - "unclosed\n", - "uncloses\n", - "unclosing\n", - "unclothe\n", - "unclothed\n", - "unclothes\n", - "unclothing\n", - "uncloud\n", - "unclouded\n", - "unclouding\n", - "unclouds\n", - "uncloyed\n", - "uncluttered\n", - "unco\n", - "uncoated\n", - "uncock\n", - "uncocked\n", - "uncocking\n", - "uncocks\n", - "uncoffin\n", - "uncoffined\n", - "uncoffining\n", - "uncoffins\n", - "uncoil\n", - "uncoiled\n", - "uncoiling\n", - "uncoils\n", - "uncoined\n", - "uncombed\n", - "uncomely\n", - "uncomfortable\n", - "uncomfortably\n", - "uncomic\n", - "uncommitted\n", - "uncommon\n", - "uncommoner\n", - "uncommonest\n", - "uncommonly\n", - "uncomplimentary\n", - "uncompromising\n", - "unconcerned\n", - "unconcernedlies\n", - "unconcernedly\n", - "unconditional\n", - "unconditionally\n", - "unconfirmed\n", - "unconscionable\n", - "unconscionably\n", - "unconscious\n", - "unconsciously\n", - "unconsciousness\n", - "unconsciousnesses\n", - "unconstitutional\n", - "uncontested\n", - "uncontrollable\n", - "uncontrollably\n", - "uncontrolled\n", - "unconventional\n", - "unconventionally\n", - "unconverted\n", - "uncooked\n", - "uncool\n", - "uncooperative\n", - "uncoordinated\n", - "uncork\n", - "uncorked\n", - "uncorking\n", - "uncorks\n", - "uncos\n", - "uncounted\n", - "uncouple\n", - "uncoupled\n", - "uncouples\n", - "uncoupling\n", - "uncouth\n", - "uncover\n", - "uncovered\n", - "uncovering\n", - "uncovers\n", - "uncrate\n", - "uncrated\n", - "uncrates\n", - "uncrating\n", - "uncreate\n", - "uncreated\n", - "uncreates\n", - "uncreating\n", - "uncross\n", - "uncrossed\n", - "uncrosses\n", - "uncrossing\n", - "uncrown\n", - "uncrowned\n", - "uncrowning\n", - "uncrowns\n", - "unction\n", - "unctions\n", - "unctuous\n", - "unctuously\n", - "uncultivated\n", - "uncurb\n", - "uncurbed\n", - "uncurbing\n", - "uncurbs\n", - "uncured\n", - "uncurl\n", - "uncurled\n", - "uncurling\n", - "uncurls\n", - "uncursed\n", - "uncus\n", - "uncut\n", - "undamaged\n", - "undamped\n", - "undaring\n", - "undated\n", - "undaunted\n", - "undauntedly\n", - "unde\n", - "undecided\n", - "undecked\n", - "undeclared\n", - "undee\n", - "undefeated\n", - "undefined\n", - "undemocratic\n", - "undeniable\n", - "undeniably\n", - "undenied\n", - "undependable\n", - "under\n", - "underact\n", - "underacted\n", - "underacting\n", - "underacts\n", - "underage\n", - "underages\n", - "underarm\n", - "underarms\n", - "underate\n", - "underbid\n", - "underbidding\n", - "underbids\n", - "underbought\n", - "underbrush\n", - "underbrushes\n", - "underbud\n", - "underbudded\n", - "underbudding\n", - "underbuds\n", - "underbuy\n", - "underbuying\n", - "underbuys\n", - "underclothes\n", - "underclothing\n", - "underclothings\n", - "undercover\n", - "undercurrent\n", - "undercurrents\n", - "undercut\n", - "undercuts\n", - "undercutting\n", - "underdeveloped\n", - "underdid\n", - "underdo\n", - "underdoes\n", - "underdog\n", - "underdogs\n", - "underdoing\n", - "underdone\n", - "undereat\n", - "undereaten\n", - "undereating\n", - "undereats\n", - "underestimate\n", - "underestimated\n", - "underestimates\n", - "underestimating\n", - "underexpose\n", - "underexposed\n", - "underexposes\n", - "underexposing\n", - "underexposure\n", - "underexposures\n", - "underfed\n", - "underfeed\n", - "underfeeding\n", - "underfeeds\n", - "underfoot\n", - "underfur\n", - "underfurs\n", - "undergarment\n", - "undergarments\n", - "undergo\n", - "undergod\n", - "undergods\n", - "undergoes\n", - "undergoing\n", - "undergone\n", - "undergraduate\n", - "undergraduates\n", - "underground\n", - "undergrounds\n", - "undergrowth\n", - "undergrowths\n", - "underhand\n", - "underhanded\n", - "underhandedly\n", - "underhandedness\n", - "underhandednesses\n", - "underjaw\n", - "underjaws\n", - "underlaid\n", - "underlain\n", - "underlap\n", - "underlapped\n", - "underlapping\n", - "underlaps\n", - "underlay\n", - "underlaying\n", - "underlays\n", - "underlet\n", - "underlets\n", - "underletting\n", - "underlie\n", - "underlies\n", - "underline\n", - "underlined\n", - "underlines\n", - "underling\n", - "underlings\n", - "underlining\n", - "underlip\n", - "underlips\n", - "underlit\n", - "underlying\n", - "undermine\n", - "undermined\n", - "undermines\n", - "undermining\n", - "underneath\n", - "undernourished\n", - "undernourishment\n", - "undernourishments\n", - "underpaid\n", - "underpants\n", - "underpass\n", - "underpasses\n", - "underpay\n", - "underpaying\n", - "underpays\n", - "underpin\n", - "underpinned\n", - "underpinning\n", - "underpinnings\n", - "underpins\n", - "underprivileged\n", - "underran\n", - "underrate\n", - "underrated\n", - "underrates\n", - "underrating\n", - "underrun\n", - "underrunning\n", - "underruns\n", - "underscore\n", - "underscored\n", - "underscores\n", - "underscoring\n", - "undersea\n", - "underseas\n", - "undersecretaries\n", - "undersecretary\n", - "undersell\n", - "underselling\n", - "undersells\n", - "underset\n", - "undersets\n", - "undershirt\n", - "undershirts\n", - "undershorts\n", - "underside\n", - "undersides\n", - "undersized\n", - "undersold\n", - "understand\n", - "understandable\n", - "understandably\n", - "understanded\n", - "understanding\n", - "understandings\n", - "understands\n", - "understate\n", - "understated\n", - "understatement\n", - "understatements\n", - "understates\n", - "understating\n", - "understood\n", - "understudied\n", - "understudies\n", - "understudy\n", - "understudying\n", - "undertake\n", - "undertaken\n", - "undertaker\n", - "undertakes\n", - "undertaking\n", - "undertakings\n", - "undertax\n", - "undertaxed\n", - "undertaxes\n", - "undertaxing\n", - "undertone\n", - "undertones\n", - "undertook\n", - "undertow\n", - "undertows\n", - "undervalue\n", - "undervalued\n", - "undervalues\n", - "undervaluing\n", - "underwater\n", - "underway\n", - "underwear\n", - "underwears\n", - "underwent\n", - "underworld\n", - "underworlds\n", - "underwrite\n", - "underwriter\n", - "underwriters\n", - "underwrites\n", - "underwriting\n", - "underwrote\n", - "undeserving\n", - "undesirable\n", - "undesired\n", - "undetailed\n", - "undetected\n", - "undetermined\n", - "undeveloped\n", - "undeviating\n", - "undevout\n", - "undid\n", - "undies\n", - "undignified\n", - "undimmed\n", - "undine\n", - "undines\n", - "undivided\n", - "undo\n", - "undock\n", - "undocked\n", - "undocking\n", - "undocks\n", - "undoer\n", - "undoers\n", - "undoes\n", - "undoing\n", - "undoings\n", - "undomesticated\n", - "undone\n", - "undouble\n", - "undoubled\n", - "undoubles\n", - "undoubling\n", - "undoubted\n", - "undoubtedly\n", - "undrape\n", - "undraped\n", - "undrapes\n", - "undraping\n", - "undraw\n", - "undrawing\n", - "undrawn\n", - "undraws\n", - "undreamt\n", - "undress\n", - "undressed\n", - "undresses\n", - "undressing\n", - "undrest\n", - "undrew\n", - "undried\n", - "undrinkable\n", - "undrunk\n", - "undue\n", - "undulant\n", - "undulate\n", - "undulated\n", - "undulates\n", - "undulating\n", - "undulled\n", - "unduly\n", - "undy\n", - "undyed\n", - "undying\n", - "uneager\n", - "unearned\n", - "unearth\n", - "unearthed\n", - "unearthing\n", - "unearthly\n", - "unearths\n", - "unease\n", - "uneases\n", - "uneasier\n", - "uneasiest\n", - "uneasily\n", - "uneasiness\n", - "uneasinesses\n", - "uneasy\n", - "uneaten\n", - "unedible\n", - "unedited\n", - "uneducated\n", - "unemotional\n", - "unemployed\n", - "unemployment\n", - "unemployments\n", - "unended\n", - "unending\n", - "unendurable\n", - "unenforceable\n", - "unenlightened\n", - "unenvied\n", - "unequal\n", - "unequaled\n", - "unequally\n", - "unequals\n", - "unequivocal\n", - "unequivocally\n", - "unerased\n", - "unerring\n", - "unerringly\n", - "unethical\n", - "unevaded\n", - "uneven\n", - "unevener\n", - "unevenest\n", - "unevenly\n", - "unevenness\n", - "unevennesses\n", - "uneventful\n", - "unexcitable\n", - "unexciting\n", - "unexotic\n", - "unexpected\n", - "unexpectedly\n", - "unexpert\n", - "unexplainable\n", - "unexplained\n", - "unexplored\n", - "unfaded\n", - "unfading\n", - "unfailing\n", - "unfailingly\n", - "unfair\n", - "unfairer\n", - "unfairest\n", - "unfairly\n", - "unfairness\n", - "unfairnesses\n", - "unfaith\n", - "unfaithful\n", - "unfaithfully\n", - "unfaithfulness\n", - "unfaithfulnesses\n", - "unfaiths\n", - "unfallen\n", - "unfamiliar\n", - "unfamiliarities\n", - "unfamiliarity\n", - "unfancy\n", - "unfasten\n", - "unfastened\n", - "unfastening\n", - "unfastens\n", - "unfavorable\n", - "unfavorably\n", - "unfazed\n", - "unfeared\n", - "unfed\n", - "unfeeling\n", - "unfeelingly\n", - "unfeigned\n", - "unfelt\n", - "unfence\n", - "unfenced\n", - "unfences\n", - "unfencing\n", - "unfetter\n", - "unfettered\n", - "unfettering\n", - "unfetters\n", - "unfilial\n", - "unfilled\n", - "unfilmed\n", - "unfinalized\n", - "unfinished\n", - "unfired\n", - "unfished\n", - "unfit\n", - "unfitly\n", - "unfitness\n", - "unfitnesses\n", - "unfits\n", - "unfitted\n", - "unfitting\n", - "unfix\n", - "unfixed\n", - "unfixes\n", - "unfixing\n", - "unfixt\n", - "unflappable\n", - "unflattering\n", - "unflexed\n", - "unfoiled\n", - "unfold\n", - "unfolded\n", - "unfolder\n", - "unfolders\n", - "unfolding\n", - "unfolds\n", - "unfond\n", - "unforced\n", - "unforeseeable\n", - "unforeseen\n", - "unforged\n", - "unforgettable\n", - "unforgettably\n", - "unforgivable\n", - "unforgiving\n", - "unforgot\n", - "unforked\n", - "unformed\n", - "unfortunate\n", - "unfortunately\n", - "unfortunates\n", - "unfought\n", - "unfound\n", - "unfounded\n", - "unframed\n", - "unfree\n", - "unfreed\n", - "unfreeing\n", - "unfrees\n", - "unfreeze\n", - "unfreezes\n", - "unfreezing\n", - "unfriendly\n", - "unfrock\n", - "unfrocked\n", - "unfrocking\n", - "unfrocks\n", - "unfroze\n", - "unfrozen\n", - "unfulfilled\n", - "unfunded\n", - "unfunny\n", - "unfurl\n", - "unfurled\n", - "unfurling\n", - "unfurls\n", - "unfurnished\n", - "unfused\n", - "unfussy\n", - "ungainlier\n", - "ungainliest\n", - "ungainliness\n", - "ungainlinesses\n", - "ungainly\n", - "ungalled\n", - "ungenerous\n", - "ungenial\n", - "ungentle\n", - "ungentlemanly\n", - "ungently\n", - "ungifted\n", - "ungird\n", - "ungirded\n", - "ungirding\n", - "ungirds\n", - "ungirt\n", - "unglazed\n", - "unglove\n", - "ungloved\n", - "ungloves\n", - "ungloving\n", - "unglue\n", - "unglued\n", - "unglues\n", - "ungluing\n", - "ungodlier\n", - "ungodliest\n", - "ungodliness\n", - "ungodlinesses\n", - "ungodly\n", - "ungot\n", - "ungotten\n", - "ungowned\n", - "ungraced\n", - "ungraceful\n", - "ungraded\n", - "ungrammatical\n", - "ungrateful\n", - "ungratefully\n", - "ungratefulness\n", - "ungratefulnesses\n", - "ungreedy\n", - "ungual\n", - "unguard\n", - "unguarded\n", - "unguarding\n", - "unguards\n", - "unguent\n", - "unguents\n", - "ungues\n", - "unguided\n", - "unguis\n", - "ungula\n", - "ungulae\n", - "ungular\n", - "ungulate\n", - "ungulates\n", - "unhailed\n", - "unhair\n", - "unhaired\n", - "unhairing\n", - "unhairs\n", - "unhallow\n", - "unhallowed\n", - "unhallowing\n", - "unhallows\n", - "unhalved\n", - "unhand\n", - "unhanded\n", - "unhandier\n", - "unhandiest\n", - "unhanding\n", - "unhands\n", - "unhandy\n", - "unhang\n", - "unhanged\n", - "unhanging\n", - "unhangs\n", - "unhappier\n", - "unhappiest\n", - "unhappily\n", - "unhappiness\n", - "unhappinesses\n", - "unhappy\n", - "unharmed\n", - "unhasty\n", - "unhat\n", - "unhats\n", - "unhatted\n", - "unhatting\n", - "unhealed\n", - "unhealthful\n", - "unhealthy\n", - "unheard\n", - "unheated\n", - "unheeded\n", - "unhelm\n", - "unhelmed\n", - "unhelming\n", - "unhelms\n", - "unhelped\n", - "unheroic\n", - "unhewn\n", - "unhinge\n", - "unhinged\n", - "unhinges\n", - "unhinging\n", - "unhip\n", - "unhired\n", - "unhitch\n", - "unhitched\n", - "unhitches\n", - "unhitching\n", - "unholier\n", - "unholiest\n", - "unholily\n", - "unholiness\n", - "unholinesses\n", - "unholy\n", - "unhood\n", - "unhooded\n", - "unhooding\n", - "unhoods\n", - "unhook\n", - "unhooked\n", - "unhooking\n", - "unhooks\n", - "unhoped\n", - "unhorse\n", - "unhorsed\n", - "unhorses\n", - "unhorsing\n", - "unhouse\n", - "unhoused\n", - "unhouses\n", - "unhousing\n", - "unhuman\n", - "unhung\n", - "unhurt\n", - "unhusk\n", - "unhusked\n", - "unhusking\n", - "unhusks\n", - "unialgal\n", - "uniaxial\n", - "unicellular\n", - "unicolor\n", - "unicorn\n", - "unicorns\n", - "unicycle\n", - "unicycles\n", - "unideaed\n", - "unideal\n", - "unidentified\n", - "unidirectional\n", - "uniface\n", - "unifaces\n", - "unific\n", - "unification\n", - "unifications\n", - "unified\n", - "unifier\n", - "unifiers\n", - "unifies\n", - "unifilar\n", - "uniform\n", - "uniformed\n", - "uniformer\n", - "uniformest\n", - "uniforming\n", - "uniformity\n", - "uniformly\n", - "uniforms\n", - "unify\n", - "unifying\n", - "unilateral\n", - "unilaterally\n", - "unilobed\n", - "unimaginable\n", - "unimaginative\n", - "unimbued\n", - "unimpeachable\n", - "unimportant\n", - "unimpressed\n", - "uninformed\n", - "uninhabited\n", - "uninhibited\n", - "uninhibitedly\n", - "uninjured\n", - "uninsured\n", - "unintelligent\n", - "unintelligible\n", - "unintelligibly\n", - "unintended\n", - "unintentional\n", - "unintentionally\n", - "uninterested\n", - "uninteresting\n", - "uninterrupted\n", - "uninvited\n", - "union\n", - "unionise\n", - "unionised\n", - "unionises\n", - "unionising\n", - "unionism\n", - "unionisms\n", - "unionist\n", - "unionists\n", - "unionization\n", - "unionizations\n", - "unionize\n", - "unionized\n", - "unionizes\n", - "unionizing\n", - "unions\n", - "unipod\n", - "unipods\n", - "unipolar\n", - "unique\n", - "uniquely\n", - "uniqueness\n", - "uniquer\n", - "uniques\n", - "uniquest\n", - "unironed\n", - "unisex\n", - "unisexes\n", - "unison\n", - "unisonal\n", - "unisons\n", - "unissued\n", - "unit\n", - "unitage\n", - "unitages\n", - "unitary\n", - "unite\n", - "united\n", - "unitedly\n", - "uniter\n", - "uniters\n", - "unites\n", - "unities\n", - "uniting\n", - "unitive\n", - "unitize\n", - "unitized\n", - "unitizes\n", - "unitizing\n", - "units\n", - "unity\n", - "univalve\n", - "univalves\n", - "universal\n", - "universally\n", - "universe\n", - "universes\n", - "universities\n", - "university\n", - "univocal\n", - "univocals\n", - "unjaded\n", - "unjoined\n", - "unjoyful\n", - "unjudged\n", - "unjust\n", - "unjustifiable\n", - "unjustified\n", - "unjustly\n", - "unkempt\n", - "unkend\n", - "unkenned\n", - "unkennel\n", - "unkenneled\n", - "unkenneling\n", - "unkennelled\n", - "unkennelling\n", - "unkennels\n", - "unkent\n", - "unkept\n", - "unkind\n", - "unkinder\n", - "unkindest\n", - "unkindlier\n", - "unkindliest\n", - "unkindly\n", - "unkindness\n", - "unkindnesses\n", - "unkingly\n", - "unkissed\n", - "unknit\n", - "unknits\n", - "unknitted\n", - "unknitting\n", - "unknot\n", - "unknots\n", - "unknotted\n", - "unknotting\n", - "unknowing\n", - "unknowingly\n", - "unknown\n", - "unknowns\n", - "unkosher\n", - "unlabeled\n", - "unlabelled\n", - "unlace\n", - "unlaced\n", - "unlaces\n", - "unlacing\n", - "unlade\n", - "unladed\n", - "unladen\n", - "unlades\n", - "unlading\n", - "unlaid\n", - "unlash\n", - "unlashed\n", - "unlashes\n", - "unlashing\n", - "unlatch\n", - "unlatched\n", - "unlatches\n", - "unlatching\n", - "unlawful\n", - "unlawfully\n", - "unlay\n", - "unlaying\n", - "unlays\n", - "unlead\n", - "unleaded\n", - "unleading\n", - "unleads\n", - "unlearn\n", - "unlearned\n", - "unlearning\n", - "unlearns\n", - "unlearnt\n", - "unleased\n", - "unleash\n", - "unleashed\n", - "unleashes\n", - "unleashing\n", - "unleavened\n", - "unled\n", - "unless\n", - "unlet\n", - "unlethal\n", - "unletted\n", - "unlevel\n", - "unleveled\n", - "unleveling\n", - "unlevelled\n", - "unlevelling\n", - "unlevels\n", - "unlevied\n", - "unlicensed\n", - "unlicked\n", - "unlikable\n", - "unlike\n", - "unlikelier\n", - "unlikeliest\n", - "unlikelihood\n", - "unlikely\n", - "unlikeness\n", - "unlikenesses\n", - "unlimber\n", - "unlimbered\n", - "unlimbering\n", - "unlimbers\n", - "unlimited\n", - "unlined\n", - "unlink\n", - "unlinked\n", - "unlinking\n", - "unlinks\n", - "unlisted\n", - "unlit\n", - "unlive\n", - "unlived\n", - "unlively\n", - "unlives\n", - "unliving\n", - "unload\n", - "unloaded\n", - "unloader\n", - "unloaders\n", - "unloading\n", - "unloads\n", - "unlobed\n", - "unlock\n", - "unlocked\n", - "unlocking\n", - "unlocks\n", - "unloose\n", - "unloosed\n", - "unloosen\n", - "unloosened\n", - "unloosening\n", - "unloosens\n", - "unlooses\n", - "unloosing\n", - "unlovable\n", - "unloved\n", - "unlovelier\n", - "unloveliest\n", - "unlovely\n", - "unloving\n", - "unluckier\n", - "unluckiest\n", - "unluckily\n", - "unlucky\n", - "unmade\n", - "unmake\n", - "unmaker\n", - "unmakers\n", - "unmakes\n", - "unmaking\n", - "unman\n", - "unmanageable\n", - "unmanful\n", - "unmanly\n", - "unmanned\n", - "unmanning\n", - "unmans\n", - "unmapped\n", - "unmarked\n", - "unmarred\n", - "unmarried\n", - "unmask\n", - "unmasked\n", - "unmasker\n", - "unmaskers\n", - "unmasking\n", - "unmasks\n", - "unmated\n", - "unmatted\n", - "unmeant\n", - "unmeet\n", - "unmeetly\n", - "unmellow\n", - "unmelted\n", - "unmended\n", - "unmerciful\n", - "unmercifully\n", - "unmerited\n", - "unmet\n", - "unmew\n", - "unmewed\n", - "unmewing\n", - "unmews\n", - "unmilled\n", - "unmingle\n", - "unmingled\n", - "unmingles\n", - "unmingling\n", - "unmistakable\n", - "unmistakably\n", - "unmiter\n", - "unmitered\n", - "unmitering\n", - "unmiters\n", - "unmitre\n", - "unmitred\n", - "unmitres\n", - "unmitring\n", - "unmixed\n", - "unmixt\n", - "unmodish\n", - "unmold\n", - "unmolded\n", - "unmolding\n", - "unmolds\n", - "unmolested\n", - "unmolten\n", - "unmoor\n", - "unmoored\n", - "unmooring\n", - "unmoors\n", - "unmoral\n", - "unmotivated\n", - "unmoved\n", - "unmoving\n", - "unmown\n", - "unmuffle\n", - "unmuffled\n", - "unmuffles\n", - "unmuffling\n", - "unmuzzle\n", - "unmuzzled\n", - "unmuzzles\n", - "unmuzzling\n", - "unnail\n", - "unnailed\n", - "unnailing\n", - "unnails\n", - "unnamed\n", - "unnatural\n", - "unnaturally\n", - "unnaturalness\n", - "unnaturalnesses\n", - "unnavigable\n", - "unnecessarily\n", - "unnecessary\n", - "unneeded\n", - "unneighborly\n", - "unnerve\n", - "unnerved\n", - "unnerves\n", - "unnerving\n", - "unnoisy\n", - "unnojectionable\n", - "unnoted\n", - "unnoticeable\n", - "unnoticed\n", - "unobservable\n", - "unobservant\n", - "unobtainable\n", - "unobtrusive\n", - "unobtrusively\n", - "unoccupied\n", - "unofficial\n", - "unoiled\n", - "unopen\n", - "unopened\n", - "unopposed\n", - "unorganized\n", - "unoriginal\n", - "unornate\n", - "unorthodox\n", - "unowned\n", - "unpack\n", - "unpacked\n", - "unpacker\n", - "unpackers\n", - "unpacking\n", - "unpacks\n", - "unpaged\n", - "unpaid\n", - "unpaired\n", - "unparalleled\n", - "unpardonable\n", - "unparted\n", - "unpatriotic\n", - "unpaved\n", - "unpaying\n", - "unpeg\n", - "unpegged\n", - "unpegging\n", - "unpegs\n", - "unpen\n", - "unpenned\n", - "unpenning\n", - "unpens\n", - "unpent\n", - "unpeople\n", - "unpeopled\n", - "unpeoples\n", - "unpeopling\n", - "unperson\n", - "unpersons\n", - "unpick\n", - "unpicked\n", - "unpicking\n", - "unpicks\n", - "unpile\n", - "unpiled\n", - "unpiles\n", - "unpiling\n", - "unpin\n", - "unpinned\n", - "unpinning\n", - "unpins\n", - "unpitied\n", - "unplaced\n", - "unplait\n", - "unplaited\n", - "unplaiting\n", - "unplaits\n", - "unplayed\n", - "unpleasant\n", - "unpleasantly\n", - "unpleasantness\n", - "unpleasantnesses\n", - "unpliant\n", - "unplowed\n", - "unplug\n", - "unplugged\n", - "unplugging\n", - "unplugs\n", - "unpoetic\n", - "unpoised\n", - "unpolite\n", - "unpolled\n", - "unpopular\n", - "unpopularities\n", - "unpopularity\n", - "unposed\n", - "unposted\n", - "unprecedented\n", - "unpredictable\n", - "unpredictably\n", - "unprejudiced\n", - "unprepared\n", - "unpretentious\n", - "unpretty\n", - "unpriced\n", - "unprimed\n", - "unprincipled\n", - "unprinted\n", - "unprized\n", - "unprobed\n", - "unproductive\n", - "unprofessional\n", - "unprofitable\n", - "unprotected\n", - "unproved\n", - "unproven\n", - "unprovoked\n", - "unpruned\n", - "unpucker\n", - "unpuckered\n", - "unpuckering\n", - "unpuckers\n", - "unpunished\n", - "unpure\n", - "unpurged\n", - "unpuzzle\n", - "unpuzzled\n", - "unpuzzles\n", - "unpuzzling\n", - "unqualified\n", - "unquantifiable\n", - "unquenchable\n", - "unquestionable\n", - "unquestionably\n", - "unquestioning\n", - "unquiet\n", - "unquieter\n", - "unquietest\n", - "unquiets\n", - "unquote\n", - "unquoted\n", - "unquotes\n", - "unquoting\n", - "unraised\n", - "unraked\n", - "unranked\n", - "unrated\n", - "unravel\n", - "unraveled\n", - "unraveling\n", - "unravelled\n", - "unravelling\n", - "unravels\n", - "unrazed\n", - "unreachable\n", - "unread\n", - "unreadable\n", - "unreadier\n", - "unreadiest\n", - "unready\n", - "unreal\n", - "unrealistic\n", - "unrealities\n", - "unreality\n", - "unreally\n", - "unreason\n", - "unreasonable\n", - "unreasonably\n", - "unreasoned\n", - "unreasoning\n", - "unreasons\n", - "unreel\n", - "unreeled\n", - "unreeler\n", - "unreelers\n", - "unreeling\n", - "unreels\n", - "unreeve\n", - "unreeved\n", - "unreeves\n", - "unreeving\n", - "unrefined\n", - "unrelated\n", - "unrelenting\n", - "unrelentingly\n", - "unreliable\n", - "unremembered\n", - "unrent\n", - "unrented\n", - "unrepaid\n", - "unrepair\n", - "unrepairs\n", - "unrepentant\n", - "unrequited\n", - "unresolved\n", - "unresponsive\n", - "unrest\n", - "unrested\n", - "unrestrained\n", - "unrestricted\n", - "unrests\n", - "unrewarding\n", - "unrhymed\n", - "unriddle\n", - "unriddled\n", - "unriddles\n", - "unriddling\n", - "unrifled\n", - "unrig\n", - "unrigged\n", - "unrigging\n", - "unrigs\n", - "unrimed\n", - "unrinsed\n", - "unrip\n", - "unripe\n", - "unripely\n", - "unriper\n", - "unripest\n", - "unripped\n", - "unripping\n", - "unrips\n", - "unrisen\n", - "unrivaled\n", - "unrivalled\n", - "unrobe\n", - "unrobed\n", - "unrobes\n", - "unrobing\n", - "unroll\n", - "unrolled\n", - "unrolling\n", - "unrolls\n", - "unroof\n", - "unroofed\n", - "unroofing\n", - "unroofs\n", - "unroot\n", - "unrooted\n", - "unrooting\n", - "unroots\n", - "unrough\n", - "unround\n", - "unrounded\n", - "unrounding\n", - "unrounds\n", - "unrove\n", - "unroven\n", - "unruffled\n", - "unruled\n", - "unrulier\n", - "unruliest\n", - "unruliness\n", - "unrulinesses\n", - "unruly\n", - "unrushed\n", - "uns\n", - "unsaddle\n", - "unsaddled\n", - "unsaddles\n", - "unsaddling\n", - "unsafe\n", - "unsafely\n", - "unsafeties\n", - "unsafety\n", - "unsaid\n", - "unsalted\n", - "unsanitary\n", - "unsated\n", - "unsatisfactory\n", - "unsatisfied\n", - "unsatisfying\n", - "unsaved\n", - "unsavory\n", - "unsawed\n", - "unsawn\n", - "unsay\n", - "unsaying\n", - "unsays\n", - "unscaled\n", - "unscathed\n", - "unscented\n", - "unscheduled\n", - "unscientific\n", - "unscramble\n", - "unscrambled\n", - "unscrambles\n", - "unscrambling\n", - "unscrew\n", - "unscrewed\n", - "unscrewing\n", - "unscrews\n", - "unscrupulous\n", - "unscrupulously\n", - "unscrupulousness\n", - "unscrupulousnesses\n", - "unseal\n", - "unsealed\n", - "unsealing\n", - "unseals\n", - "unseam\n", - "unseamed\n", - "unseaming\n", - "unseams\n", - "unseared\n", - "unseasonable\n", - "unseasonably\n", - "unseasoned\n", - "unseat\n", - "unseated\n", - "unseating\n", - "unseats\n", - "unseeded\n", - "unseeing\n", - "unseemlier\n", - "unseemliest\n", - "unseemly\n", - "unseen\n", - "unseized\n", - "unselfish\n", - "unselfishly\n", - "unselfishness\n", - "unselfishnesses\n", - "unsent\n", - "unserved\n", - "unset\n", - "unsets\n", - "unsetting\n", - "unsettle\n", - "unsettled\n", - "unsettles\n", - "unsettling\n", - "unsew\n", - "unsewed\n", - "unsewing\n", - "unsewn\n", - "unsews\n", - "unsex\n", - "unsexed\n", - "unsexes\n", - "unsexing\n", - "unsexual\n", - "unshaded\n", - "unshaken\n", - "unshamed\n", - "unshaped\n", - "unshapen\n", - "unshared\n", - "unsharp\n", - "unshaved\n", - "unshaven\n", - "unshed\n", - "unshell\n", - "unshelled\n", - "unshelling\n", - "unshells\n", - "unshift\n", - "unshifted\n", - "unshifting\n", - "unshifts\n", - "unship\n", - "unshipped\n", - "unshipping\n", - "unships\n", - "unshod\n", - "unshorn\n", - "unshrunk\n", - "unshut\n", - "unsicker\n", - "unsifted\n", - "unsight\n", - "unsighted\n", - "unsighting\n", - "unsights\n", - "unsigned\n", - "unsilent\n", - "unsinful\n", - "unsized\n", - "unskilled\n", - "unskillful\n", - "unskillfully\n", - "unslaked\n", - "unsling\n", - "unslinging\n", - "unslings\n", - "unslung\n", - "unsmoked\n", - "unsnap\n", - "unsnapped\n", - "unsnapping\n", - "unsnaps\n", - "unsnarl\n", - "unsnarled\n", - "unsnarling\n", - "unsnarls\n", - "unsoaked\n", - "unsober\n", - "unsocial\n", - "unsoiled\n", - "unsold\n", - "unsolder\n", - "unsoldered\n", - "unsoldering\n", - "unsolders\n", - "unsolicited\n", - "unsolid\n", - "unsolved\n", - "unsoncy\n", - "unsonsie\n", - "unsonsy\n", - "unsophisticated\n", - "unsorted\n", - "unsought\n", - "unsound\n", - "unsounder\n", - "unsoundest\n", - "unsoundly\n", - "unsoundness\n", - "unsoundnesses\n", - "unsoured\n", - "unsowed\n", - "unsown\n", - "unspeak\n", - "unspeakable\n", - "unspeakably\n", - "unspeaking\n", - "unspeaks\n", - "unspecified\n", - "unspent\n", - "unsphere\n", - "unsphered\n", - "unspheres\n", - "unsphering\n", - "unspilt\n", - "unsplit\n", - "unspoiled\n", - "unspoilt\n", - "unspoke\n", - "unspoken\n", - "unsprung\n", - "unspun\n", - "unstable\n", - "unstabler\n", - "unstablest\n", - "unstably\n", - "unstack\n", - "unstacked\n", - "unstacking\n", - "unstacks\n", - "unstate\n", - "unstated\n", - "unstates\n", - "unstating\n", - "unsteadied\n", - "unsteadier\n", - "unsteadies\n", - "unsteadiest\n", - "unsteadily\n", - "unsteadiness\n", - "unsteadinesses\n", - "unsteady\n", - "unsteadying\n", - "unsteel\n", - "unsteeled\n", - "unsteeling\n", - "unsteels\n", - "unstep\n", - "unstepped\n", - "unstepping\n", - "unsteps\n", - "unstick\n", - "unsticked\n", - "unsticking\n", - "unsticks\n", - "unstop\n", - "unstopped\n", - "unstopping\n", - "unstops\n", - "unstrap\n", - "unstrapped\n", - "unstrapping\n", - "unstraps\n", - "unstress\n", - "unstresses\n", - "unstring\n", - "unstringing\n", - "unstrings\n", - "unstructured\n", - "unstrung\n", - "unstung\n", - "unsubstantiated\n", - "unsubtle\n", - "unsuccessful\n", - "unsuited\n", - "unsung\n", - "unsunk\n", - "unsure\n", - "unsurely\n", - "unswathe\n", - "unswathed\n", - "unswathes\n", - "unswathing\n", - "unswayed\n", - "unswear\n", - "unswearing\n", - "unswears\n", - "unswept\n", - "unswore\n", - "unsworn\n", - "untack\n", - "untacked\n", - "untacking\n", - "untacks\n", - "untagged\n", - "untaken\n", - "untame\n", - "untamed\n", - "untangle\n", - "untangled\n", - "untangles\n", - "untangling\n", - "untanned\n", - "untapped\n", - "untasted\n", - "untaught\n", - "untaxed\n", - "unteach\n", - "unteaches\n", - "unteaching\n", - "untended\n", - "untested\n", - "untether\n", - "untethered\n", - "untethering\n", - "untethers\n", - "unthawed\n", - "unthink\n", - "unthinkable\n", - "unthinking\n", - "unthinkingly\n", - "unthinks\n", - "unthought\n", - "unthread\n", - "unthreaded\n", - "unthreading\n", - "unthreads\n", - "unthrone\n", - "unthroned\n", - "unthrones\n", - "unthroning\n", - "untidied\n", - "untidier\n", - "untidies\n", - "untidiest\n", - "untidily\n", - "untidy\n", - "untidying\n", - "untie\n", - "untied\n", - "unties\n", - "until\n", - "untilled\n", - "untilted\n", - "untimelier\n", - "untimeliest\n", - "untimely\n", - "untinged\n", - "untired\n", - "untiring\n", - "untitled\n", - "unto\n", - "untold\n", - "untoward\n", - "untraced\n", - "untrained\n", - "untread\n", - "untreading\n", - "untreads\n", - "untreated\n", - "untried\n", - "untrim\n", - "untrimmed\n", - "untrimming\n", - "untrims\n", - "untrod\n", - "untrodden\n", - "untrue\n", - "untruer\n", - "untruest\n", - "untruly\n", - "untruss\n", - "untrussed\n", - "untrusses\n", - "untrussing\n", - "untrustworthy\n", - "untrusty\n", - "untruth\n", - "untruthful\n", - "untruths\n", - "untuck\n", - "untucked\n", - "untucking\n", - "untucks\n", - "untufted\n", - "untune\n", - "untuned\n", - "untunes\n", - "untuning\n", - "unturned\n", - "untwine\n", - "untwined\n", - "untwines\n", - "untwining\n", - "untwist\n", - "untwisted\n", - "untwisting\n", - "untwists\n", - "untying\n", - "ununited\n", - "unurged\n", - "unusable\n", - "unused\n", - "unusual\n", - "unvalued\n", - "unvaried\n", - "unvarying\n", - "unveil\n", - "unveiled\n", - "unveiling\n", - "unveils\n", - "unveined\n", - "unverified\n", - "unversed\n", - "unvexed\n", - "unvext\n", - "unviable\n", - "unvocal\n", - "unvoice\n", - "unvoiced\n", - "unvoices\n", - "unvoicing\n", - "unwalled\n", - "unwanted\n", - "unwarier\n", - "unwariest\n", - "unwarily\n", - "unwarmed\n", - "unwarned\n", - "unwarped\n", - "unwarranted\n", - "unwary\n", - "unwas\n", - "unwashed\n", - "unwasheds\n", - "unwasted\n", - "unwavering\n", - "unwaxed\n", - "unweaned\n", - "unweary\n", - "unweave\n", - "unweaves\n", - "unweaving\n", - "unwed\n", - "unwedded\n", - "unweeded\n", - "unweeping\n", - "unweight\n", - "unweighted\n", - "unweighting\n", - "unweights\n", - "unwelcome\n", - "unwelded\n", - "unwell\n", - "unwept\n", - "unwetted\n", - "unwholesome\n", - "unwieldier\n", - "unwieldiest\n", - "unwieldy\n", - "unwifely\n", - "unwilled\n", - "unwilling\n", - "unwillingly\n", - "unwillingness\n", - "unwillingnesses\n", - "unwind\n", - "unwinder\n", - "unwinders\n", - "unwinding\n", - "unwinds\n", - "unwisdom\n", - "unwisdoms\n", - "unwise\n", - "unwisely\n", - "unwiser\n", - "unwisest\n", - "unwish\n", - "unwished\n", - "unwishes\n", - "unwishing\n", - "unwit\n", - "unwits\n", - "unwitted\n", - "unwitting\n", - "unwittingly\n", - "unwon\n", - "unwonted\n", - "unwooded\n", - "unwooed\n", - "unworkable\n", - "unworked\n", - "unworn\n", - "unworthier\n", - "unworthies\n", - "unworthiest\n", - "unworthily\n", - "unworthiness\n", - "unworthinesses\n", - "unworthy\n", - "unwound\n", - "unwove\n", - "unwoven\n", - "unwrap\n", - "unwrapped\n", - "unwrapping\n", - "unwraps\n", - "unwritten\n", - "unwrung\n", - "unyeaned\n", - "unyielding\n", - "unyoke\n", - "unyoked\n", - "unyokes\n", - "unyoking\n", - "unzip\n", - "unzipped\n", - "unzipping\n", - "unzips\n", - "unzoned\n", - "up\n", - "upas\n", - "upases\n", - "upbear\n", - "upbearer\n", - "upbearers\n", - "upbearing\n", - "upbears\n", - "upbeat\n", - "upbeats\n", - "upbind\n", - "upbinding\n", - "upbinds\n", - "upboil\n", - "upboiled\n", - "upboiling\n", - "upboils\n", - "upbore\n", - "upborne\n", - "upbound\n", - "upbraid\n", - "upbraided\n", - "upbraiding\n", - "upbraids\n", - "upbringing\n", - "upbringings\n", - "upbuild\n", - "upbuilding\n", - "upbuilds\n", - "upbuilt\n", - "upby\n", - "upbye\n", - "upcast\n", - "upcasting\n", - "upcasts\n", - "upchuck\n", - "upchucked\n", - "upchucking\n", - "upchucks\n", - "upclimb\n", - "upclimbed\n", - "upclimbing\n", - "upclimbs\n", - "upcoil\n", - "upcoiled\n", - "upcoiling\n", - "upcoils\n", - "upcoming\n", - "upcurl\n", - "upcurled\n", - "upcurling\n", - "upcurls\n", - "upcurve\n", - "upcurved\n", - "upcurves\n", - "upcurving\n", - "updart\n", - "updarted\n", - "updarting\n", - "updarts\n", - "update\n", - "updated\n", - "updater\n", - "updaters\n", - "updates\n", - "updating\n", - "updive\n", - "updived\n", - "updives\n", - "updiving\n", - "updo\n", - "updos\n", - "updove\n", - "updraft\n", - "updrafts\n", - "updried\n", - "updries\n", - "updry\n", - "updrying\n", - "upend\n", - "upended\n", - "upending\n", - "upends\n", - "upfield\n", - "upfling\n", - "upflinging\n", - "upflings\n", - "upflow\n", - "upflowed\n", - "upflowing\n", - "upflows\n", - "upflung\n", - "upfold\n", - "upfolded\n", - "upfolding\n", - "upfolds\n", - "upgather\n", - "upgathered\n", - "upgathering\n", - "upgathers\n", - "upgaze\n", - "upgazed\n", - "upgazes\n", - "upgazing\n", - "upgird\n", - "upgirded\n", - "upgirding\n", - "upgirds\n", - "upgirt\n", - "upgoing\n", - "upgrade\n", - "upgraded\n", - "upgrades\n", - "upgrading\n", - "upgrew\n", - "upgrow\n", - "upgrowing\n", - "upgrown\n", - "upgrows\n", - "upgrowth\n", - "upgrowths\n", - "upheap\n", - "upheaped\n", - "upheaping\n", - "upheaps\n", - "upheaval\n", - "upheavals\n", - "upheave\n", - "upheaved\n", - "upheaver\n", - "upheavers\n", - "upheaves\n", - "upheaving\n", - "upheld\n", - "uphill\n", - "uphills\n", - "uphoard\n", - "uphoarded\n", - "uphoarding\n", - "uphoards\n", - "uphold\n", - "upholder\n", - "upholders\n", - "upholding\n", - "upholds\n", - "upholster\n", - "upholstered\n", - "upholsterer\n", - "upholsterers\n", - "upholsteries\n", - "upholstering\n", - "upholsters\n", - "upholstery\n", - "uphove\n", - "uphroe\n", - "uphroes\n", - "upkeep\n", - "upkeeps\n", - "upland\n", - "uplander\n", - "uplanders\n", - "uplands\n", - "upleap\n", - "upleaped\n", - "upleaping\n", - "upleaps\n", - "upleapt\n", - "uplift\n", - "uplifted\n", - "uplifter\n", - "uplifters\n", - "uplifting\n", - "uplifts\n", - "uplight\n", - "uplighted\n", - "uplighting\n", - "uplights\n", - "uplit\n", - "upmost\n", - "upo\n", - "upon\n", - "upped\n", - "upper\n", - "uppercase\n", - "uppercut\n", - "uppercuts\n", - "uppercutting\n", - "uppermost\n", - "uppers\n", - "uppile\n", - "uppiled\n", - "uppiles\n", - "uppiling\n", - "upping\n", - "uppings\n", - "uppish\n", - "uppishly\n", - "uppity\n", - "upprop\n", - "uppropped\n", - "uppropping\n", - "upprops\n", - "upraise\n", - "upraised\n", - "upraiser\n", - "upraisers\n", - "upraises\n", - "upraising\n", - "upreach\n", - "upreached\n", - "upreaches\n", - "upreaching\n", - "uprear\n", - "upreared\n", - "uprearing\n", - "uprears\n", - "upright\n", - "uprighted\n", - "uprighting\n", - "uprightness\n", - "uprightnesses\n", - "uprights\n", - "uprise\n", - "uprisen\n", - "upriser\n", - "uprisers\n", - "uprises\n", - "uprising\n", - "uprisings\n", - "upriver\n", - "uprivers\n", - "uproar\n", - "uproarious\n", - "uproariously\n", - "uproars\n", - "uproot\n", - "uprootal\n", - "uprootals\n", - "uprooted\n", - "uprooter\n", - "uprooters\n", - "uprooting\n", - "uproots\n", - "uprose\n", - "uprouse\n", - "uproused\n", - "uprouses\n", - "uprousing\n", - "uprush\n", - "uprushed\n", - "uprushes\n", - "uprushing\n", - "ups\n", - "upsend\n", - "upsending\n", - "upsends\n", - "upsent\n", - "upset\n", - "upsets\n", - "upsetter\n", - "upsetters\n", - "upsetting\n", - "upshift\n", - "upshifted\n", - "upshifting\n", - "upshifts\n", - "upshoot\n", - "upshooting\n", - "upshoots\n", - "upshot\n", - "upshots\n", - "upside\n", - "upsidedown\n", - "upsides\n", - "upsilon\n", - "upsilons\n", - "upsoar\n", - "upsoared\n", - "upsoaring\n", - "upsoars\n", - "upsprang\n", - "upspring\n", - "upspringing\n", - "upsprings\n", - "upsprung\n", - "upstage\n", - "upstaged\n", - "upstages\n", - "upstaging\n", - "upstair\n", - "upstairs\n", - "upstand\n", - "upstanding\n", - "upstands\n", - "upstare\n", - "upstared\n", - "upstares\n", - "upstaring\n", - "upstart\n", - "upstarted\n", - "upstarting\n", - "upstarts\n", - "upstate\n", - "upstater\n", - "upstaters\n", - "upstates\n", - "upstep\n", - "upstepped\n", - "upstepping\n", - "upsteps\n", - "upstir\n", - "upstirred\n", - "upstirring\n", - "upstirs\n", - "upstood\n", - "upstream\n", - "upstroke\n", - "upstrokes\n", - "upsurge\n", - "upsurged\n", - "upsurges\n", - "upsurging\n", - "upsweep\n", - "upsweeping\n", - "upsweeps\n", - "upswell\n", - "upswelled\n", - "upswelling\n", - "upswells\n", - "upswept\n", - "upswing\n", - "upswinging\n", - "upswings\n", - "upswollen\n", - "upswung\n", - "uptake\n", - "uptakes\n", - "uptear\n", - "uptearing\n", - "uptears\n", - "upthrew\n", - "upthrow\n", - "upthrowing\n", - "upthrown\n", - "upthrows\n", - "upthrust\n", - "upthrusting\n", - "upthrusts\n", - "uptight\n", - "uptilt\n", - "uptilted\n", - "uptilting\n", - "uptilts\n", - "uptime\n", - "uptimes\n", - "uptore\n", - "uptorn\n", - "uptoss\n", - "uptossed\n", - "uptosses\n", - "uptossing\n", - "uptown\n", - "uptowner\n", - "uptowners\n", - "uptowns\n", - "uptrend\n", - "uptrends\n", - "upturn\n", - "upturned\n", - "upturning\n", - "upturns\n", - "upwaft\n", - "upwafted\n", - "upwafting\n", - "upwafts\n", - "upward\n", - "upwardly\n", - "upwards\n", - "upwell\n", - "upwelled\n", - "upwelling\n", - "upwells\n", - "upwind\n", - "upwinds\n", - "uracil\n", - "uracils\n", - "uraei\n", - "uraemia\n", - "uraemias\n", - "uraemic\n", - "uraeus\n", - "uraeuses\n", - "uralite\n", - "uralites\n", - "uralitic\n", - "uranic\n", - "uranide\n", - "uranides\n", - "uranism\n", - "uranisms\n", - "uranite\n", - "uranites\n", - "uranitic\n", - "uranium\n", - "uraniums\n", - "uranous\n", - "uranyl\n", - "uranylic\n", - "uranyls\n", - "urare\n", - "urares\n", - "urari\n", - "uraris\n", - "urase\n", - "urases\n", - "urate\n", - "urates\n", - "uratic\n", - "urban\n", - "urbane\n", - "urbanely\n", - "urbaner\n", - "urbanest\n", - "urbanise\n", - "urbanised\n", - "urbanises\n", - "urbanising\n", - "urbanism\n", - "urbanisms\n", - "urbanist\n", - "urbanists\n", - "urbanite\n", - "urbanites\n", - "urbanities\n", - "urbanity\n", - "urbanize\n", - "urbanized\n", - "urbanizes\n", - "urbanizing\n", - "urchin\n", - "urchins\n", - "urd\n", - "urds\n", - "urea\n", - "ureal\n", - "ureas\n", - "urease\n", - "ureases\n", - "uredia\n", - "uredial\n", - "uredinia\n", - "uredium\n", - "uredo\n", - "uredos\n", - "ureic\n", - "ureide\n", - "ureides\n", - "uremia\n", - "uremias\n", - "uremic\n", - "ureter\n", - "ureteral\n", - "ureteric\n", - "ureters\n", - "urethan\n", - "urethane\n", - "urethanes\n", - "urethans\n", - "urethra\n", - "urethrae\n", - "urethral\n", - "urethras\n", - "uretic\n", - "urge\n", - "urged\n", - "urgencies\n", - "urgency\n", - "urgent\n", - "urgently\n", - "urger\n", - "urgers\n", - "urges\n", - "urging\n", - "urgingly\n", - "uric\n", - "uridine\n", - "uridines\n", - "urinal\n", - "urinals\n", - "urinalysis\n", - "urinaries\n", - "urinary\n", - "urinate\n", - "urinated\n", - "urinates\n", - "urinating\n", - "urination\n", - "urinations\n", - "urine\n", - "urinemia\n", - "urinemias\n", - "urinemic\n", - "urines\n", - "urinose\n", - "urinous\n", - "urn\n", - "urnlike\n", - "urns\n", - "urochord\n", - "urochords\n", - "urodele\n", - "urodeles\n", - "urolagnia\n", - "urolagnias\n", - "urolith\n", - "uroliths\n", - "urologic\n", - "urologies\n", - "urology\n", - "uropod\n", - "uropodal\n", - "uropods\n", - "uroscopies\n", - "uroscopy\n", - "urostyle\n", - "urostyles\n", - "ursa\n", - "ursae\n", - "ursiform\n", - "ursine\n", - "urticant\n", - "urticants\n", - "urticate\n", - "urticated\n", - "urticates\n", - "urticating\n", - "urus\n", - "uruses\n", - "urushiol\n", - "urushiols\n", - "us\n", - "usability\n", - "usable\n", - "usably\n", - "usage\n", - "usages\n", - "usance\n", - "usances\n", - "usaunce\n", - "usaunces\n", - "use\n", - "useable\n", - "useably\n", - "used\n", - "useful\n", - "usefully\n", - "usefulness\n", - "useless\n", - "uselessly\n", - "uselessness\n", - "uselessnesses\n", - "user\n", - "users\n", - "uses\n", - "usher\n", - "ushered\n", - "usherette\n", - "usherettes\n", - "ushering\n", - "ushers\n", - "using\n", - "usnea\n", - "usneas\n", - "usquabae\n", - "usquabaes\n", - "usque\n", - "usquebae\n", - "usquebaes\n", - "usques\n", - "ustulate\n", - "usual\n", - "usually\n", - "usuals\n", - "usufruct\n", - "usufructs\n", - "usurer\n", - "usurers\n", - "usuries\n", - "usurious\n", - "usurp\n", - "usurped\n", - "usurper\n", - "usurpers\n", - "usurping\n", - "usurps\n", - "usury\n", - "ut\n", - "uta\n", - "utas\n", - "utensil\n", - "utensils\n", - "uteri\n", - "uterine\n", - "uterus\n", - "uteruses\n", - "utile\n", - "utilidor\n", - "utilidors\n", - "utilise\n", - "utilised\n", - "utiliser\n", - "utilisers\n", - "utilises\n", - "utilising\n", - "utilitarian\n", - "utilities\n", - "utility\n", - "utilization\n", - "utilize\n", - "utilized\n", - "utilizer\n", - "utilizers\n", - "utilizes\n", - "utilizing\n", - "utmost\n", - "utmosts\n", - "utopia\n", - "utopian\n", - "utopians\n", - "utopias\n", - "utopism\n", - "utopisms\n", - "utopist\n", - "utopists\n", - "utricle\n", - "utricles\n", - "utriculi\n", - "uts\n", - "utter\n", - "utterance\n", - "utterances\n", - "uttered\n", - "utterer\n", - "utterers\n", - "uttering\n", - "utterly\n", - "utters\n", - "uvea\n", - "uveal\n", - "uveas\n", - "uveitic\n", - "uveitis\n", - "uveitises\n", - "uveous\n", - "uvula\n", - "uvulae\n", - "uvular\n", - "uvularly\n", - "uvulars\n", - "uvulas\n", - "uvulitis\n", - "uvulitises\n", - "uxorial\n", - "uxorious\n", - "vacancies\n", - "vacancy\n", - "vacant\n", - "vacantly\n", - "vacate\n", - "vacated\n", - "vacates\n", - "vacating\n", - "vacation\n", - "vacationed\n", - "vacationer\n", - "vacationers\n", - "vacationing\n", - "vacations\n", - "vaccina\n", - "vaccinal\n", - "vaccinas\n", - "vaccinate\n", - "vaccinated\n", - "vaccinates\n", - "vaccinating\n", - "vaccination\n", - "vaccinations\n", - "vaccine\n", - "vaccines\n", - "vaccinia\n", - "vaccinias\n", - "vacillate\n", - "vacillated\n", - "vacillates\n", - "vacillating\n", - "vacillation\n", - "vacillations\n", - "vacua\n", - "vacuities\n", - "vacuity\n", - "vacuolar\n", - "vacuole\n", - "vacuoles\n", - "vacuous\n", - "vacuously\n", - "vacuousness\n", - "vacuousnesses\n", - "vacuum\n", - "vacuumed\n", - "vacuuming\n", - "vacuums\n", - "vadose\n", - "vagabond\n", - "vagabonded\n", - "vagabonding\n", - "vagabonds\n", - "vagal\n", - "vagally\n", - "vagaries\n", - "vagary\n", - "vagi\n", - "vagile\n", - "vagilities\n", - "vagility\n", - "vagina\n", - "vaginae\n", - "vaginal\n", - "vaginas\n", - "vaginate\n", - "vagotomies\n", - "vagotomy\n", - "vagrancies\n", - "vagrancy\n", - "vagrant\n", - "vagrants\n", - "vagrom\n", - "vague\n", - "vaguely\n", - "vagueness\n", - "vaguenesses\n", - "vaguer\n", - "vaguest\n", - "vagus\n", - "vahine\n", - "vahines\n", - "vail\n", - "vailed\n", - "vailing\n", - "vails\n", - "vain\n", - "vainer\n", - "vainest\n", - "vainly\n", - "vainness\n", - "vainnesses\n", - "vair\n", - "vairs\n", - "vakeel\n", - "vakeels\n", - "vakil\n", - "vakils\n", - "valance\n", - "valanced\n", - "valances\n", - "valancing\n", - "vale\n", - "valedictorian\n", - "valedictorians\n", - "valedictories\n", - "valedictory\n", - "valence\n", - "valences\n", - "valencia\n", - "valencias\n", - "valencies\n", - "valency\n", - "valentine\n", - "valentines\n", - "valerate\n", - "valerates\n", - "valerian\n", - "valerians\n", - "valeric\n", - "vales\n", - "valet\n", - "valeted\n", - "valeting\n", - "valets\n", - "valgoid\n", - "valgus\n", - "valguses\n", - "valiance\n", - "valiances\n", - "valiancies\n", - "valiancy\n", - "valiant\n", - "valiantly\n", - "valiants\n", - "valid\n", - "validate\n", - "validated\n", - "validates\n", - "validating\n", - "validation\n", - "validations\n", - "validities\n", - "validity\n", - "validly\n", - "validness\n", - "validnesses\n", - "valine\n", - "valines\n", - "valise\n", - "valises\n", - "valkyr\n", - "valkyrie\n", - "valkyries\n", - "valkyrs\n", - "vallate\n", - "valley\n", - "valleys\n", - "valonia\n", - "valonias\n", - "valor\n", - "valorise\n", - "valorised\n", - "valorises\n", - "valorising\n", - "valorize\n", - "valorized\n", - "valorizes\n", - "valorizing\n", - "valorous\n", - "valors\n", - "valour\n", - "valours\n", - "valse\n", - "valses\n", - "valuable\n", - "valuables\n", - "valuably\n", - "valuate\n", - "valuated\n", - "valuates\n", - "valuating\n", - "valuation\n", - "valuations\n", - "valuator\n", - "valuators\n", - "value\n", - "valued\n", - "valueless\n", - "valuer\n", - "valuers\n", - "values\n", - "valuing\n", - "valuta\n", - "valutas\n", - "valval\n", - "valvar\n", - "valvate\n", - "valve\n", - "valved\n", - "valveless\n", - "valvelet\n", - "valvelets\n", - "valves\n", - "valving\n", - "valvula\n", - "valvulae\n", - "valvular\n", - "valvule\n", - "valvules\n", - "vambrace\n", - "vambraces\n", - "vamoose\n", - "vamoosed\n", - "vamooses\n", - "vamoosing\n", - "vamose\n", - "vamosed\n", - "vamoses\n", - "vamosing\n", - "vamp\n", - "vamped\n", - "vamper\n", - "vampers\n", - "vamping\n", - "vampire\n", - "vampires\n", - "vampiric\n", - "vampish\n", - "vamps\n", - "van\n", - "vanadate\n", - "vanadates\n", - "vanadic\n", - "vanadium\n", - "vanadiums\n", - "vanadous\n", - "vanda\n", - "vandal\n", - "vandalic\n", - "vandalism\n", - "vandalisms\n", - "vandalize\n", - "vandalized\n", - "vandalizes\n", - "vandalizing\n", - "vandals\n", - "vandas\n", - "vandyke\n", - "vandyked\n", - "vandykes\n", - "vane\n", - "vaned\n", - "vanes\n", - "vang\n", - "vangs\n", - "vanguard\n", - "vanguards\n", - "vanilla\n", - "vanillas\n", - "vanillic\n", - "vanillin\n", - "vanillins\n", - "vanish\n", - "vanished\n", - "vanisher\n", - "vanishers\n", - "vanishes\n", - "vanishing\n", - "vanitied\n", - "vanities\n", - "vanity\n", - "vanman\n", - "vanmen\n", - "vanquish\n", - "vanquished\n", - "vanquishes\n", - "vanquishing\n", - "vans\n", - "vantage\n", - "vantages\n", - "vanward\n", - "vapid\n", - "vapidities\n", - "vapidity\n", - "vapidly\n", - "vapidness\n", - "vapidnesses\n", - "vapor\n", - "vapored\n", - "vaporer\n", - "vaporers\n", - "vaporing\n", - "vaporings\n", - "vaporise\n", - "vaporised\n", - "vaporises\n", - "vaporish\n", - "vaporising\n", - "vaporization\n", - "vaporizations\n", - "vaporize\n", - "vaporized\n", - "vaporizes\n", - "vaporizing\n", - "vaporous\n", - "vapors\n", - "vapory\n", - "vapour\n", - "vapoured\n", - "vapourer\n", - "vapourers\n", - "vapouring\n", - "vapours\n", - "vapoury\n", - "vaquero\n", - "vaqueros\n", - "vara\n", - "varas\n", - "varia\n", - "variabilities\n", - "variability\n", - "variable\n", - "variableness\n", - "variablenesses\n", - "variables\n", - "variably\n", - "variance\n", - "variances\n", - "variant\n", - "variants\n", - "variate\n", - "variated\n", - "variates\n", - "variating\n", - "variation\n", - "variations\n", - "varices\n", - "varicose\n", - "varied\n", - "variedly\n", - "variegate\n", - "variegated\n", - "variegates\n", - "variegating\n", - "variegation\n", - "variegations\n", - "varier\n", - "variers\n", - "varies\n", - "varietal\n", - "varieties\n", - "variety\n", - "variform\n", - "variola\n", - "variolar\n", - "variolas\n", - "variole\n", - "varioles\n", - "variorum\n", - "variorums\n", - "various\n", - "variously\n", - "varistor\n", - "varistors\n", - "varix\n", - "varlet\n", - "varletries\n", - "varletry\n", - "varlets\n", - "varment\n", - "varments\n", - "varmint\n", - "varmints\n", - "varna\n", - "varnas\n", - "varnish\n", - "varnished\n", - "varnishes\n", - "varnishing\n", - "varnishy\n", - "varsities\n", - "varsity\n", - "varus\n", - "varuses\n", - "varve\n", - "varved\n", - "varves\n", - "vary\n", - "varying\n", - "vas\n", - "vasa\n", - "vasal\n", - "vascula\n", - "vascular\n", - "vasculum\n", - "vasculums\n", - "vase\n", - "vaselike\n", - "vases\n", - "vasiform\n", - "vassal\n", - "vassalage\n", - "vassalages\n", - "vassals\n", - "vast\n", - "vaster\n", - "vastest\n", - "vastier\n", - "vastiest\n", - "vastities\n", - "vastity\n", - "vastly\n", - "vastness\n", - "vastnesses\n", - "vasts\n", - "vasty\n", - "vat\n", - "vatful\n", - "vatfuls\n", - "vatic\n", - "vatical\n", - "vaticide\n", - "vaticides\n", - "vats\n", - "vatted\n", - "vatting\n", - "vau\n", - "vaudeville\n", - "vaudevilles\n", - "vault\n", - "vaulted\n", - "vaulter\n", - "vaulters\n", - "vaultier\n", - "vaultiest\n", - "vaulting\n", - "vaultings\n", - "vaults\n", - "vaulty\n", - "vaunt\n", - "vaunted\n", - "vaunter\n", - "vaunters\n", - "vauntful\n", - "vauntie\n", - "vaunting\n", - "vaunts\n", - "vaunty\n", - "vaus\n", - "vav\n", - "vavasor\n", - "vavasors\n", - "vavasour\n", - "vavasours\n", - "vavassor\n", - "vavassors\n", - "vavs\n", - "vaw\n", - "vaward\n", - "vawards\n", - "vawntie\n", - "vaws\n", - "veal\n", - "vealed\n", - "vealer\n", - "vealers\n", - "vealier\n", - "vealiest\n", - "vealing\n", - "veals\n", - "vealy\n", - "vector\n", - "vectored\n", - "vectoring\n", - "vectors\n", - "vedalia\n", - "vedalias\n", - "vedette\n", - "vedettes\n", - "vee\n", - "veena\n", - "veenas\n", - "veep\n", - "veepee\n", - "veepees\n", - "veeps\n", - "veer\n", - "veered\n", - "veeries\n", - "veering\n", - "veers\n", - "veery\n", - "vees\n", - "veg\n", - "vegan\n", - "veganism\n", - "veganisms\n", - "vegans\n", - "vegetable\n", - "vegetables\n", - "vegetal\n", - "vegetant\n", - "vegetarian\n", - "vegetarianism\n", - "vegetarianisms\n", - "vegetarians\n", - "vegetate\n", - "vegetated\n", - "vegetates\n", - "vegetating\n", - "vegetation\n", - "vegetational\n", - "vegetations\n", - "vegete\n", - "vegetist\n", - "vegetists\n", - "vegetive\n", - "vehemence\n", - "vehemences\n", - "vehement\n", - "vehemently\n", - "vehicle\n", - "vehicles\n", - "vehicular\n", - "veil\n", - "veiled\n", - "veiledly\n", - "veiler\n", - "veilers\n", - "veiling\n", - "veilings\n", - "veillike\n", - "veils\n", - "vein\n", - "veinal\n", - "veined\n", - "veiner\n", - "veiners\n", - "veinier\n", - "veiniest\n", - "veining\n", - "veinings\n", - "veinless\n", - "veinlet\n", - "veinlets\n", - "veinlike\n", - "veins\n", - "veinule\n", - "veinules\n", - "veinulet\n", - "veinulets\n", - "veiny\n", - "vela\n", - "velamen\n", - "velamina\n", - "velar\n", - "velaria\n", - "velarium\n", - "velarize\n", - "velarized\n", - "velarizes\n", - "velarizing\n", - "velars\n", - "velate\n", - "veld\n", - "velds\n", - "veldt\n", - "veldts\n", - "veliger\n", - "veligers\n", - "velites\n", - "velleities\n", - "velleity\n", - "vellum\n", - "vellums\n", - "veloce\n", - "velocities\n", - "velocity\n", - "velour\n", - "velours\n", - "veloute\n", - "veloutes\n", - "velum\n", - "velure\n", - "velured\n", - "velures\n", - "veluring\n", - "velveret\n", - "velverets\n", - "velvet\n", - "velveted\n", - "velvets\n", - "velvety\n", - "vena\n", - "venae\n", - "venal\n", - "venalities\n", - "venality\n", - "venally\n", - "venatic\n", - "venation\n", - "venations\n", - "vend\n", - "vendable\n", - "vendace\n", - "vendaces\n", - "vended\n", - "vendee\n", - "vendees\n", - "vender\n", - "venders\n", - "vendetta\n", - "vendettas\n", - "vendible\n", - "vendibles\n", - "vendibly\n", - "vending\n", - "vendor\n", - "vendors\n", - "vends\n", - "vendue\n", - "vendues\n", - "veneer\n", - "veneered\n", - "veneerer\n", - "veneerers\n", - "veneering\n", - "veneers\n", - "venenate\n", - "venenated\n", - "venenates\n", - "venenating\n", - "venenose\n", - "venerable\n", - "venerate\n", - "venerated\n", - "venerates\n", - "venerating\n", - "veneration\n", - "venerations\n", - "venereal\n", - "veneries\n", - "venery\n", - "venetian\n", - "venetians\n", - "venge\n", - "vengeance\n", - "vengeances\n", - "venged\n", - "vengeful\n", - "vengefully\n", - "venges\n", - "venging\n", - "venial\n", - "venially\n", - "venin\n", - "venine\n", - "venines\n", - "venins\n", - "venire\n", - "venires\n", - "venison\n", - "venisons\n", - "venom\n", - "venomed\n", - "venomer\n", - "venomers\n", - "venoming\n", - "venomous\n", - "venoms\n", - "venose\n", - "venosities\n", - "venosity\n", - "venous\n", - "venously\n", - "vent\n", - "ventage\n", - "ventages\n", - "ventail\n", - "ventails\n", - "vented\n", - "venter\n", - "venters\n", - "ventilate\n", - "ventilated\n", - "ventilates\n", - "ventilating\n", - "ventilation\n", - "ventilations\n", - "ventilator\n", - "ventilators\n", - "venting\n", - "ventless\n", - "ventral\n", - "ventrals\n", - "ventricle\n", - "ventricles\n", - "ventriloquism\n", - "ventriloquisms\n", - "ventriloquist\n", - "ventriloquists\n", - "ventriloquy\n", - "ventriloquys\n", - "vents\n", - "venture\n", - "ventured\n", - "venturer\n", - "venturers\n", - "ventures\n", - "venturesome\n", - "venturesomely\n", - "venturesomeness\n", - "venturesomenesses\n", - "venturi\n", - "venturing\n", - "venturis\n", - "venue\n", - "venues\n", - "venular\n", - "venule\n", - "venules\n", - "venulose\n", - "venulous\n", - "vera\n", - "veracious\n", - "veracities\n", - "veracity\n", - "veranda\n", - "verandah\n", - "verandahs\n", - "verandas\n", - "veratria\n", - "veratrias\n", - "veratrin\n", - "veratrins\n", - "veratrum\n", - "veratrums\n", - "verb\n", - "verbal\n", - "verbalization\n", - "verbalizations\n", - "verbalize\n", - "verbalized\n", - "verbalizes\n", - "verbalizing\n", - "verbally\n", - "verbals\n", - "verbatim\n", - "verbena\n", - "verbenas\n", - "verbiage\n", - "verbiages\n", - "verbid\n", - "verbids\n", - "verbified\n", - "verbifies\n", - "verbify\n", - "verbifying\n", - "verbile\n", - "verbiles\n", - "verbless\n", - "verbose\n", - "verbosities\n", - "verbosity\n", - "verboten\n", - "verbs\n", - "verdancies\n", - "verdancy\n", - "verdant\n", - "verderer\n", - "verderers\n", - "verderor\n", - "verderors\n", - "verdict\n", - "verdicts\n", - "verdin\n", - "verdins\n", - "verditer\n", - "verditers\n", - "verdure\n", - "verdured\n", - "verdures\n", - "verecund\n", - "verge\n", - "verged\n", - "vergence\n", - "vergences\n", - "verger\n", - "vergers\n", - "verges\n", - "verging\n", - "verglas\n", - "verglases\n", - "veridic\n", - "verier\n", - "veriest\n", - "verifiable\n", - "verification\n", - "verifications\n", - "verified\n", - "verifier\n", - "verifiers\n", - "verifies\n", - "verify\n", - "verifying\n", - "verily\n", - "verism\n", - "verismo\n", - "verismos\n", - "verisms\n", - "verist\n", - "veristic\n", - "verists\n", - "veritable\n", - "veritably\n", - "veritas\n", - "veritates\n", - "verities\n", - "verity\n", - "verjuice\n", - "verjuices\n", - "vermeil\n", - "vermeils\n", - "vermes\n", - "vermian\n", - "vermicelli\n", - "vermicellis\n", - "vermin\n", - "vermis\n", - "vermoulu\n", - "vermouth\n", - "vermouths\n", - "vermuth\n", - "vermuths\n", - "vernacle\n", - "vernacles\n", - "vernacular\n", - "vernaculars\n", - "vernal\n", - "vernally\n", - "vernicle\n", - "vernicles\n", - "vernier\n", - "verniers\n", - "vernix\n", - "vernixes\n", - "veronica\n", - "veronicas\n", - "verruca\n", - "verrucae\n", - "versal\n", - "versant\n", - "versants\n", - "versatile\n", - "versatilities\n", - "versatility\n", - "verse\n", - "versed\n", - "verseman\n", - "versemen\n", - "verser\n", - "versers\n", - "verses\n", - "verset\n", - "versets\n", - "versicle\n", - "versicles\n", - "versified\n", - "versifies\n", - "versify\n", - "versifying\n", - "versine\n", - "versines\n", - "versing\n", - "version\n", - "versions\n", - "verso\n", - "versos\n", - "verst\n", - "verste\n", - "verstes\n", - "versts\n", - "versus\n", - "vert\n", - "vertebra\n", - "vertebrae\n", - "vertebral\n", - "vertebras\n", - "vertebrate\n", - "vertebrates\n", - "vertex\n", - "vertexes\n", - "vertical\n", - "vertically\n", - "verticalness\n", - "verticalnesses\n", - "verticals\n", - "vertices\n", - "verticil\n", - "verticils\n", - "vertigines\n", - "vertigo\n", - "vertigoes\n", - "vertigos\n", - "verts\n", - "vertu\n", - "vertus\n", - "vervain\n", - "vervains\n", - "verve\n", - "verves\n", - "vervet\n", - "vervets\n", - "very\n", - "vesica\n", - "vesicae\n", - "vesical\n", - "vesicant\n", - "vesicants\n", - "vesicate\n", - "vesicated\n", - "vesicates\n", - "vesicating\n", - "vesicle\n", - "vesicles\n", - "vesicula\n", - "vesiculae\n", - "vesicular\n", - "vesigia\n", - "vesper\n", - "vesperal\n", - "vesperals\n", - "vespers\n", - "vespiaries\n", - "vespiary\n", - "vespid\n", - "vespids\n", - "vespine\n", - "vessel\n", - "vesseled\n", - "vessels\n", - "vest\n", - "vesta\n", - "vestal\n", - "vestally\n", - "vestals\n", - "vestas\n", - "vested\n", - "vestee\n", - "vestees\n", - "vestiaries\n", - "vestiary\n", - "vestibular\n", - "vestibule\n", - "vestibules\n", - "vestige\n", - "vestiges\n", - "vestigial\n", - "vestigially\n", - "vesting\n", - "vestings\n", - "vestless\n", - "vestlike\n", - "vestment\n", - "vestments\n", - "vestral\n", - "vestries\n", - "vestry\n", - "vests\n", - "vestural\n", - "vesture\n", - "vestured\n", - "vestures\n", - "vesturing\n", - "vesuvian\n", - "vesuvians\n", - "vet\n", - "vetch\n", - "vetches\n", - "veteran\n", - "veterans\n", - "veterinarian\n", - "veterinarians\n", - "veterinary\n", - "vetiver\n", - "vetivers\n", - "veto\n", - "vetoed\n", - "vetoer\n", - "vetoers\n", - "vetoes\n", - "vetoing\n", - "vets\n", - "vetted\n", - "vetting\n", - "vex\n", - "vexation\n", - "vexations\n", - "vexatious\n", - "vexed\n", - "vexedly\n", - "vexer\n", - "vexers\n", - "vexes\n", - "vexil\n", - "vexilla\n", - "vexillar\n", - "vexillum\n", - "vexils\n", - "vexing\n", - "vexingly\n", - "vext\n", - "via\n", - "viabilities\n", - "viability\n", - "viable\n", - "viably\n", - "viaduct\n", - "viaducts\n", - "vial\n", - "vialed\n", - "vialing\n", - "vialled\n", - "vialling\n", - "vials\n", - "viand\n", - "viands\n", - "viatic\n", - "viatica\n", - "viatical\n", - "viaticum\n", - "viaticums\n", - "viator\n", - "viatores\n", - "viators\n", - "vibes\n", - "vibioid\n", - "vibist\n", - "vibists\n", - "vibrance\n", - "vibrances\n", - "vibrancies\n", - "vibrancy\n", - "vibrant\n", - "vibrants\n", - "vibrate\n", - "vibrated\n", - "vibrates\n", - "vibrating\n", - "vibration\n", - "vibrations\n", - "vibrato\n", - "vibrator\n", - "vibrators\n", - "vibratory\n", - "vibratos\n", - "vibrio\n", - "vibrion\n", - "vibrions\n", - "vibrios\n", - "vibrissa\n", - "vibrissae\n", - "viburnum\n", - "viburnums\n", - "vicar\n", - "vicarage\n", - "vicarages\n", - "vicarate\n", - "vicarates\n", - "vicarial\n", - "vicariate\n", - "vicariates\n", - "vicarious\n", - "vicariously\n", - "vicariousness\n", - "vicariousnesses\n", - "vicarly\n", - "vicars\n", - "vice\n", - "viced\n", - "viceless\n", - "vicenary\n", - "viceroy\n", - "viceroys\n", - "vices\n", - "vichies\n", - "vichy\n", - "vicinage\n", - "vicinages\n", - "vicinal\n", - "vicing\n", - "vicinities\n", - "vicinity\n", - "vicious\n", - "viciously\n", - "viciousness\n", - "viciousnesses\n", - "vicissitude\n", - "vicissitudes\n", - "vicomte\n", - "vicomtes\n", - "victim\n", - "victimization\n", - "victimizations\n", - "victimize\n", - "victimized\n", - "victimizer\n", - "victimizers\n", - "victimizes\n", - "victimizing\n", - "victims\n", - "victor\n", - "victoria\n", - "victorias\n", - "victories\n", - "victorious\n", - "victoriously\n", - "victors\n", - "victory\n", - "victress\n", - "victresses\n", - "victual\n", - "victualed\n", - "victualing\n", - "victualled\n", - "victualling\n", - "victuals\n", - "vicugna\n", - "vicugnas\n", - "vicuna\n", - "vicunas\n", - "vide\n", - "video\n", - "videos\n", - "videotape\n", - "videotaped\n", - "videotapes\n", - "videotaping\n", - "vidette\n", - "videttes\n", - "vidicon\n", - "vidicons\n", - "viduities\n", - "viduity\n", - "vie\n", - "vied\n", - "vier\n", - "viers\n", - "vies\n", - "view\n", - "viewable\n", - "viewed\n", - "viewer\n", - "viewers\n", - "viewier\n", - "viewiest\n", - "viewing\n", - "viewings\n", - "viewless\n", - "viewpoint\n", - "viewpoints\n", - "views\n", - "viewy\n", - "vigil\n", - "vigilance\n", - "vigilances\n", - "vigilant\n", - "vigilante\n", - "vigilantes\n", - "vigilantly\n", - "vigils\n", - "vignette\n", - "vignetted\n", - "vignettes\n", - "vignetting\n", - "vigor\n", - "vigorish\n", - "vigorishes\n", - "vigoroso\n", - "vigorous\n", - "vigorously\n", - "vigorousness\n", - "vigorousnesses\n", - "vigors\n", - "vigour\n", - "vigours\n", - "viking\n", - "vikings\n", - "vilayet\n", - "vilayets\n", - "vile\n", - "vilely\n", - "vileness\n", - "vilenesses\n", - "viler\n", - "vilest\n", - "vilification\n", - "vilifications\n", - "vilified\n", - "vilifier\n", - "vilifiers\n", - "vilifies\n", - "vilify\n", - "vilifying\n", - "vilipend\n", - "vilipended\n", - "vilipending\n", - "vilipends\n", - "vill\n", - "villa\n", - "villadom\n", - "villadoms\n", - "villae\n", - "village\n", - "villager\n", - "villagers\n", - "villages\n", - "villain\n", - "villainies\n", - "villains\n", - "villainy\n", - "villas\n", - "villatic\n", - "villein\n", - "villeins\n", - "villi\n", - "villianess\n", - "villianesses\n", - "villianous\n", - "villianously\n", - "villianousness\n", - "villianousnesses\n", - "villose\n", - "villous\n", - "vills\n", - "villus\n", - "vim\n", - "vimen\n", - "vimina\n", - "viminal\n", - "vimpa\n", - "vims\n", - "vin\n", - "vina\n", - "vinal\n", - "vinals\n", - "vinas\n", - "vinasse\n", - "vinasses\n", - "vinca\n", - "vincas\n", - "vincible\n", - "vincristine\n", - "vincristines\n", - "vincula\n", - "vinculum\n", - "vinculums\n", - "vindesine\n", - "vindicate\n", - "vindicated\n", - "vindicates\n", - "vindicating\n", - "vindication\n", - "vindications\n", - "vindicator\n", - "vindicators\n", - "vindictive\n", - "vindictively\n", - "vindictiveness\n", - "vindictivenesses\n", - "vine\n", - "vineal\n", - "vined\n", - "vinegar\n", - "vinegars\n", - "vinegary\n", - "vineries\n", - "vinery\n", - "vines\n", - "vineyard\n", - "vineyards\n", - "vinic\n", - "vinier\n", - "viniest\n", - "vinifera\n", - "viniferas\n", - "vining\n", - "vino\n", - "vinos\n", - "vinosities\n", - "vinosity\n", - "vinous\n", - "vinously\n", - "vins\n", - "vintage\n", - "vintager\n", - "vintagers\n", - "vintages\n", - "vintner\n", - "vintners\n", - "viny\n", - "vinyl\n", - "vinylic\n", - "vinyls\n", - "viol\n", - "viola\n", - "violable\n", - "violably\n", - "violas\n", - "violate\n", - "violated\n", - "violater\n", - "violaters\n", - "violates\n", - "violating\n", - "violation\n", - "violations\n", - "violator\n", - "violators\n", - "violence\n", - "violences\n", - "violent\n", - "violently\n", - "violet\n", - "violets\n", - "violin\n", - "violinist\n", - "violinists\n", - "violins\n", - "violist\n", - "violists\n", - "violone\n", - "violones\n", - "viols\n", - "viomycin\n", - "viomycins\n", - "viper\n", - "viperine\n", - "viperish\n", - "viperous\n", - "vipers\n", - "virago\n", - "viragoes\n", - "viragos\n", - "viral\n", - "virally\n", - "virelai\n", - "virelais\n", - "virelay\n", - "virelays\n", - "viremia\n", - "viremias\n", - "viremic\n", - "vireo\n", - "vireos\n", - "vires\n", - "virga\n", - "virgas\n", - "virgate\n", - "virgates\n", - "virgin\n", - "virginal\n", - "virginally\n", - "virginals\n", - "virgins\n", - "virgule\n", - "virgules\n", - "viricide\n", - "viricides\n", - "virid\n", - "viridian\n", - "viridians\n", - "viridities\n", - "viridity\n", - "virile\n", - "virilism\n", - "virilisms\n", - "virilities\n", - "virility\n", - "virion\n", - "virions\n", - "virl\n", - "virls\n", - "virologies\n", - "virology\n", - "viroses\n", - "virosis\n", - "virtu\n", - "virtual\n", - "virtually\n", - "virtue\n", - "virtues\n", - "virtuosa\n", - "virtuosas\n", - "virtuose\n", - "virtuosi\n", - "virtuosities\n", - "virtuosity\n", - "virtuoso\n", - "virtuosos\n", - "virtuous\n", - "virtuously\n", - "virtus\n", - "virucide\n", - "virucides\n", - "virulence\n", - "virulences\n", - "virulencies\n", - "virulency\n", - "virulent\n", - "virulently\n", - "virus\n", - "viruses\n", - "vis\n", - "visa\n", - "visaed\n", - "visage\n", - "visaged\n", - "visages\n", - "visaing\n", - "visard\n", - "visards\n", - "visas\n", - "viscacha\n", - "viscachas\n", - "viscera\n", - "visceral\n", - "viscerally\n", - "viscid\n", - "viscidities\n", - "viscidity\n", - "viscidly\n", - "viscoid\n", - "viscose\n", - "viscoses\n", - "viscount\n", - "viscountess\n", - "viscountesses\n", - "viscounts\n", - "viscous\n", - "viscus\n", - "vise\n", - "vised\n", - "viseed\n", - "viseing\n", - "viselike\n", - "vises\n", - "visibilities\n", - "visibility\n", - "visible\n", - "visibly\n", - "vising\n", - "vision\n", - "visional\n", - "visionaries\n", - "visionary\n", - "visioned\n", - "visioning\n", - "visions\n", - "visit\n", - "visitable\n", - "visitant\n", - "visitants\n", - "visitation\n", - "visitations\n", - "visited\n", - "visiter\n", - "visiters\n", - "visiting\n", - "visitor\n", - "visitors\n", - "visits\n", - "visive\n", - "visor\n", - "visored\n", - "visoring\n", - "visors\n", - "vista\n", - "vistaed\n", - "vistas\n", - "visual\n", - "visualization\n", - "visualizations\n", - "visualize\n", - "visualized\n", - "visualizer\n", - "visualizers\n", - "visualizes\n", - "visualizing\n", - "visually\n", - "vita\n", - "vitae\n", - "vital\n", - "vitalise\n", - "vitalised\n", - "vitalises\n", - "vitalising\n", - "vitalism\n", - "vitalisms\n", - "vitalist\n", - "vitalists\n", - "vitalities\n", - "vitality\n", - "vitalize\n", - "vitalized\n", - "vitalizes\n", - "vitalizing\n", - "vitally\n", - "vitals\n", - "vitamer\n", - "vitamers\n", - "vitamin\n", - "vitamine\n", - "vitamines\n", - "vitamins\n", - "vitellin\n", - "vitellins\n", - "vitellus\n", - "vitelluses\n", - "vitesse\n", - "vitesses\n", - "vitiable\n", - "vitiate\n", - "vitiated\n", - "vitiates\n", - "vitiating\n", - "vitiation\n", - "vitiations\n", - "vitiator\n", - "vitiators\n", - "vitiligo\n", - "vitiligos\n", - "vitreous\n", - "vitric\n", - "vitrification\n", - "vitrifications\n", - "vitrified\n", - "vitrifies\n", - "vitrify\n", - "vitrifying\n", - "vitrine\n", - "vitrines\n", - "vitriol\n", - "vitrioled\n", - "vitriolic\n", - "vitrioling\n", - "vitriolled\n", - "vitriolling\n", - "vitriols\n", - "vitta\n", - "vittae\n", - "vittate\n", - "vittle\n", - "vittled\n", - "vittles\n", - "vittling\n", - "vituline\n", - "vituperate\n", - "vituperated\n", - "vituperates\n", - "vituperating\n", - "vituperation\n", - "vituperations\n", - "vituperative\n", - "vituperatively\n", - "viva\n", - "vivace\n", - "vivacious\n", - "vivaciously\n", - "vivaciousness\n", - "vivaciousnesses\n", - "vivacities\n", - "vivacity\n", - "vivaria\n", - "vivaries\n", - "vivarium\n", - "vivariums\n", - "vivary\n", - "vivas\n", - "vive\n", - "viverrid\n", - "viverrids\n", - "vivers\n", - "vivid\n", - "vivider\n", - "vividest\n", - "vividly\n", - "vividness\n", - "vividnesses\n", - "vivific\n", - "vivified\n", - "vivifier\n", - "vivifiers\n", - "vivifies\n", - "vivify\n", - "vivifying\n", - "vivipara\n", - "vivisect\n", - "vivisected\n", - "vivisecting\n", - "vivisection\n", - "vivisections\n", - "vivisects\n", - "vixen\n", - "vixenish\n", - "vixenly\n", - "vixens\n", - "vizard\n", - "vizarded\n", - "vizards\n", - "vizcacha\n", - "vizcachas\n", - "vizier\n", - "viziers\n", - "vizir\n", - "vizirate\n", - "vizirates\n", - "vizirial\n", - "vizirs\n", - "vizor\n", - "vizored\n", - "vizoring\n", - "vizors\n", - "vizsla\n", - "vizslas\n", - "vocable\n", - "vocables\n", - "vocably\n", - "vocabularies\n", - "vocabulary\n", - "vocal\n", - "vocalic\n", - "vocalics\n", - "vocalise\n", - "vocalised\n", - "vocalises\n", - "vocalising\n", - "vocalism\n", - "vocalisms\n", - "vocalist\n", - "vocalists\n", - "vocalities\n", - "vocality\n", - "vocalize\n", - "vocalized\n", - "vocalizes\n", - "vocalizing\n", - "vocally\n", - "vocals\n", - "vocation\n", - "vocational\n", - "vocations\n", - "vocative\n", - "vocatives\n", - "voces\n", - "vociferous\n", - "vociferously\n", - "vocoder\n", - "vocoders\n", - "voder\n", - "vodka\n", - "vodkas\n", - "vodum\n", - "vodums\n", - "vodun\n", - "voe\n", - "voes\n", - "vogie\n", - "vogue\n", - "vogues\n", - "voguish\n", - "voice\n", - "voiced\n", - "voiceful\n", - "voicer\n", - "voicers\n", - "voices\n", - "voicing\n", - "void\n", - "voidable\n", - "voidance\n", - "voidances\n", - "voided\n", - "voider\n", - "voiders\n", - "voiding\n", - "voidness\n", - "voidnesses\n", - "voids\n", - "voile\n", - "voiles\n", - "volant\n", - "volante\n", - "volar\n", - "volatile\n", - "volatiles\n", - "volatilities\n", - "volatility\n", - "volatilize\n", - "volatilized\n", - "volatilizes\n", - "volatilizing\n", - "volcanic\n", - "volcanics\n", - "volcano\n", - "volcanoes\n", - "volcanos\n", - "vole\n", - "voled\n", - "voleries\n", - "volery\n", - "voles\n", - "voling\n", - "volitant\n", - "volition\n", - "volitional\n", - "volitions\n", - "volitive\n", - "volley\n", - "volleyball\n", - "volleyballs\n", - "volleyed\n", - "volleyer\n", - "volleyers\n", - "volleying\n", - "volleys\n", - "volost\n", - "volosts\n", - "volplane\n", - "volplaned\n", - "volplanes\n", - "volplaning\n", - "volt\n", - "volta\n", - "voltage\n", - "voltages\n", - "voltaic\n", - "voltaism\n", - "voltaisms\n", - "volte\n", - "voltes\n", - "volti\n", - "volts\n", - "volubilities\n", - "volubility\n", - "voluble\n", - "volubly\n", - "volume\n", - "volumed\n", - "volumes\n", - "voluming\n", - "voluminous\n", - "voluntarily\n", - "voluntary\n", - "volunteer\n", - "volunteered\n", - "volunteering\n", - "volunteers\n", - "voluptuous\n", - "voluptuously\n", - "voluptuousness\n", - "voluptuousnesses\n", - "volute\n", - "voluted\n", - "volutes\n", - "volutin\n", - "volutins\n", - "volution\n", - "volutions\n", - "volva\n", - "volvas\n", - "volvate\n", - "volvox\n", - "volvoxes\n", - "volvuli\n", - "volvulus\n", - "volvuluses\n", - "vomer\n", - "vomerine\n", - "vomers\n", - "vomica\n", - "vomicae\n", - "vomit\n", - "vomited\n", - "vomiter\n", - "vomiters\n", - "vomiting\n", - "vomitive\n", - "vomitives\n", - "vomito\n", - "vomitories\n", - "vomitory\n", - "vomitos\n", - "vomitous\n", - "vomits\n", - "vomitus\n", - "vomituses\n", - "von\n", - "voodoo\n", - "voodooed\n", - "voodooing\n", - "voodooism\n", - "voodooisms\n", - "voodoos\n", - "voracious\n", - "voraciously\n", - "voraciousness\n", - "voraciousnesses\n", - "voracities\n", - "voracity\n", - "vorlage\n", - "vorlages\n", - "vortex\n", - "vortexes\n", - "vortical\n", - "vortices\n", - "votable\n", - "votaress\n", - "votaresses\n", - "votaries\n", - "votarist\n", - "votarists\n", - "votary\n", - "vote\n", - "voteable\n", - "voted\n", - "voteless\n", - "voter\n", - "voters\n", - "votes\n", - "voting\n", - "votive\n", - "votively\n", - "votress\n", - "votresses\n", - "vouch\n", - "vouched\n", - "vouchee\n", - "vouchees\n", - "voucher\n", - "vouchered\n", - "vouchering\n", - "vouchers\n", - "vouches\n", - "vouching\n", - "vouchsafe\n", - "vouchsafed\n", - "vouchsafes\n", - "vouchsafing\n", - "voussoir\n", - "voussoirs\n", - "vow\n", - "vowed\n", - "vowel\n", - "vowelize\n", - "vowelized\n", - "vowelizes\n", - "vowelizing\n", - "vowels\n", - "vower\n", - "vowers\n", - "vowing\n", - "vowless\n", - "vows\n", - "vox\n", - "voyage\n", - "voyaged\n", - "voyager\n", - "voyagers\n", - "voyages\n", - "voyageur\n", - "voyageurs\n", - "voyaging\n", - "voyeur\n", - "voyeurs\n", - "vroom\n", - "vroomed\n", - "vrooming\n", - "vrooms\n", - "vrouw\n", - "vrouws\n", - "vrow\n", - "vrows\n", - "vug\n", - "vugg\n", - "vuggs\n", - "vuggy\n", - "vugh\n", - "vughs\n", - "vugs\n", - "vulcanic\n", - "vulcanization\n", - "vulcanizations\n", - "vulcanize\n", - "vulcanized\n", - "vulcanizes\n", - "vulcanizing\n", - "vulgar\n", - "vulgarer\n", - "vulgarest\n", - "vulgarism\n", - "vulgarisms\n", - "vulgarities\n", - "vulgarity\n", - "vulgarize\n", - "vulgarized\n", - "vulgarizes\n", - "vulgarizing\n", - "vulgarly\n", - "vulgars\n", - "vulgate\n", - "vulgates\n", - "vulgo\n", - "vulgus\n", - "vulguses\n", - "vulnerabilities\n", - "vulnerability\n", - "vulnerable\n", - "vulnerably\n", - "vulpine\n", - "vulture\n", - "vultures\n", - "vulva\n", - "vulvae\n", - "vulval\n", - "vulvar\n", - "vulvas\n", - "vulvate\n", - "vulvitis\n", - "vulvitises\n", - "vying\n", - "vyingly\n", - "wab\n", - "wabble\n", - "wabbled\n", - "wabbler\n", - "wabblers\n", - "wabbles\n", - "wabblier\n", - "wabbliest\n", - "wabbling\n", - "wabbly\n", - "wabs\n", - "wack\n", - "wacke\n", - "wackes\n", - "wackier\n", - "wackiest\n", - "wackily\n", - "wacks\n", - "wacky\n", - "wad\n", - "wadable\n", - "wadded\n", - "wadder\n", - "wadders\n", - "waddie\n", - "waddied\n", - "waddies\n", - "wadding\n", - "waddings\n", - "waddle\n", - "waddled\n", - "waddler\n", - "waddlers\n", - "waddles\n", - "waddling\n", - "waddly\n", - "waddy\n", - "waddying\n", - "wade\n", - "wadeable\n", - "waded\n", - "wader\n", - "waders\n", - "wades\n", - "wadi\n", - "wadies\n", - "wading\n", - "wadis\n", - "wadmaal\n", - "wadmaals\n", - "wadmal\n", - "wadmals\n", - "wadmel\n", - "wadmels\n", - "wadmol\n", - "wadmoll\n", - "wadmolls\n", - "wadmols\n", - "wads\n", - "wadset\n", - "wadsets\n", - "wadsetted\n", - "wadsetting\n", - "wady\n", - "wae\n", - "waefu\n", - "waeful\n", - "waeness\n", - "waenesses\n", - "waes\n", - "waesuck\n", - "waesucks\n", - "wafer\n", - "wafered\n", - "wafering\n", - "wafers\n", - "wafery\n", - "waff\n", - "waffed\n", - "waffie\n", - "waffies\n", - "waffing\n", - "waffle\n", - "waffled\n", - "waffles\n", - "waffling\n", - "waffs\n", - "waft\n", - "waftage\n", - "waftages\n", - "wafted\n", - "wafter\n", - "wafters\n", - "wafting\n", - "wafts\n", - "wafture\n", - "waftures\n", - "wag\n", - "wage\n", - "waged\n", - "wageless\n", - "wager\n", - "wagered\n", - "wagerer\n", - "wagerers\n", - "wagering\n", - "wagers\n", - "wages\n", - "wagged\n", - "wagger\n", - "waggeries\n", - "waggers\n", - "waggery\n", - "wagging\n", - "waggish\n", - "waggle\n", - "waggled\n", - "waggles\n", - "waggling\n", - "waggly\n", - "waggon\n", - "waggoned\n", - "waggoner\n", - "waggoners\n", - "waggoning\n", - "waggons\n", - "waging\n", - "wagon\n", - "wagonage\n", - "wagonages\n", - "wagoned\n", - "wagoner\n", - "wagoners\n", - "wagoning\n", - "wagons\n", - "wags\n", - "wagsome\n", - "wagtail\n", - "wagtails\n", - "wahconda\n", - "wahcondas\n", - "wahine\n", - "wahines\n", - "wahoo\n", - "wahoos\n", - "waif\n", - "waifed\n", - "waifing\n", - "waifs\n", - "wail\n", - "wailed\n", - "wailer\n", - "wailers\n", - "wailful\n", - "wailing\n", - "wails\n", - "wailsome\n", - "wain\n", - "wains\n", - "wainscot\n", - "wainscoted\n", - "wainscoting\n", - "wainscots\n", - "wainscotted\n", - "wainscotting\n", - "wair\n", - "waired\n", - "wairing\n", - "wairs\n", - "waist\n", - "waisted\n", - "waister\n", - "waisters\n", - "waisting\n", - "waistings\n", - "waistline\n", - "waistlines\n", - "waists\n", - "wait\n", - "waited\n", - "waiter\n", - "waiters\n", - "waiting\n", - "waitings\n", - "waitress\n", - "waitresses\n", - "waits\n", - "waive\n", - "waived\n", - "waiver\n", - "waivers\n", - "waives\n", - "waiving\n", - "wakanda\n", - "wakandas\n", - "wake\n", - "waked\n", - "wakeful\n", - "wakefulness\n", - "wakefulnesses\n", - "wakeless\n", - "waken\n", - "wakened\n", - "wakener\n", - "wakeners\n", - "wakening\n", - "wakenings\n", - "wakens\n", - "waker\n", - "wakerife\n", - "wakers\n", - "wakes\n", - "wakiki\n", - "wakikis\n", - "waking\n", - "wale\n", - "waled\n", - "waler\n", - "walers\n", - "wales\n", - "walies\n", - "waling\n", - "walk\n", - "walkable\n", - "walkaway\n", - "walkaways\n", - "walked\n", - "walker\n", - "walkers\n", - "walking\n", - "walkings\n", - "walkout\n", - "walkouts\n", - "walkover\n", - "walkovers\n", - "walks\n", - "walkup\n", - "walkups\n", - "walkway\n", - "walkways\n", - "walkyrie\n", - "walkyries\n", - "wall\n", - "walla\n", - "wallabies\n", - "wallaby\n", - "wallah\n", - "wallahs\n", - "wallaroo\n", - "wallaroos\n", - "wallas\n", - "walled\n", - "wallet\n", - "wallets\n", - "walleye\n", - "walleyed\n", - "walleyes\n", - "wallflower\n", - "wallflowers\n", - "wallie\n", - "wallies\n", - "walling\n", - "wallop\n", - "walloped\n", - "walloper\n", - "wallopers\n", - "walloping\n", - "wallops\n", - "wallow\n", - "wallowed\n", - "wallower\n", - "wallowers\n", - "wallowing\n", - "wallows\n", - "wallpaper\n", - "wallpapered\n", - "wallpapering\n", - "wallpapers\n", - "walls\n", - "wally\n", - "walnut\n", - "walnuts\n", - "walrus\n", - "walruses\n", - "waltz\n", - "waltzed\n", - "waltzer\n", - "waltzers\n", - "waltzes\n", - "waltzing\n", - "waly\n", - "wamble\n", - "wambled\n", - "wambles\n", - "wamblier\n", - "wambliest\n", - "wambling\n", - "wambly\n", - "wame\n", - "wamefou\n", - "wamefous\n", - "wameful\n", - "wamefuls\n", - "wames\n", - "wammus\n", - "wammuses\n", - "wampish\n", - "wampished\n", - "wampishes\n", - "wampishing\n", - "wampum\n", - "wampums\n", - "wampus\n", - "wampuses\n", - "wamus\n", - "wamuses\n", - "wan\n", - "wand\n", - "wander\n", - "wandered\n", - "wanderer\n", - "wanderers\n", - "wandering\n", - "wanderlust\n", - "wanderlusts\n", - "wanderoo\n", - "wanderoos\n", - "wanders\n", - "wandle\n", - "wands\n", - "wane\n", - "waned\n", - "waner\n", - "wanes\n", - "waney\n", - "wangan\n", - "wangans\n", - "wangle\n", - "wangled\n", - "wangler\n", - "wanglers\n", - "wangles\n", - "wangling\n", - "wangun\n", - "wanguns\n", - "wanier\n", - "waniest\n", - "wanigan\n", - "wanigans\n", - "waning\n", - "wanion\n", - "wanions\n", - "wanly\n", - "wanned\n", - "wanner\n", - "wanness\n", - "wannesses\n", - "wannest\n", - "wannigan\n", - "wannigans\n", - "wanning\n", - "wans\n", - "want\n", - "wantage\n", - "wantages\n", - "wanted\n", - "wanter\n", - "wanters\n", - "wanting\n", - "wanton\n", - "wantoned\n", - "wantoner\n", - "wantoners\n", - "wantoning\n", - "wantonly\n", - "wantonness\n", - "wantonnesses\n", - "wantons\n", - "wants\n", - "wany\n", - "wap\n", - "wapiti\n", - "wapitis\n", - "wapped\n", - "wapping\n", - "waps\n", - "war\n", - "warble\n", - "warbled\n", - "warbler\n", - "warblers\n", - "warbles\n", - "warbling\n", - "warcraft\n", - "warcrafts\n", - "ward\n", - "warded\n", - "warden\n", - "wardenries\n", - "wardenry\n", - "wardens\n", - "warder\n", - "warders\n", - "warding\n", - "wardress\n", - "wardresses\n", - "wardrobe\n", - "wardrobes\n", - "wardroom\n", - "wardrooms\n", - "wards\n", - "wardship\n", - "wardships\n", - "ware\n", - "wared\n", - "warehouse\n", - "warehoused\n", - "warehouseman\n", - "warehousemen\n", - "warehouser\n", - "warehousers\n", - "warehouses\n", - "warehousing\n", - "warer\n", - "wareroom\n", - "warerooms\n", - "wares\n", - "warfare\n", - "warfares\n", - "warfarin\n", - "warfarins\n", - "warhead\n", - "warheads\n", - "warier\n", - "wariest\n", - "warily\n", - "wariness\n", - "warinesses\n", - "waring\n", - "warison\n", - "warisons\n", - "wark\n", - "warked\n", - "warking\n", - "warks\n", - "warless\n", - "warlike\n", - "warlock\n", - "warlocks\n", - "warlord\n", - "warlords\n", - "warm\n", - "warmaker\n", - "warmakers\n", - "warmed\n", - "warmer\n", - "warmers\n", - "warmest\n", - "warming\n", - "warmish\n", - "warmly\n", - "warmness\n", - "warmnesses\n", - "warmonger\n", - "warmongers\n", - "warmouth\n", - "warmouths\n", - "warms\n", - "warmth\n", - "warmths\n", - "warmup\n", - "warmups\n", - "warn\n", - "warned\n", - "warner\n", - "warners\n", - "warning\n", - "warnings\n", - "warns\n", - "warp\n", - "warpage\n", - "warpages\n", - "warpath\n", - "warpaths\n", - "warped\n", - "warper\n", - "warpers\n", - "warping\n", - "warplane\n", - "warplanes\n", - "warpower\n", - "warpowers\n", - "warps\n", - "warpwise\n", - "warragal\n", - "warragals\n", - "warrant\n", - "warranted\n", - "warranties\n", - "warranting\n", - "warrants\n", - "warranty\n", - "warred\n", - "warren\n", - "warrener\n", - "warreners\n", - "warrens\n", - "warrigal\n", - "warrigals\n", - "warring\n", - "warrior\n", - "warriors\n", - "wars\n", - "warsaw\n", - "warsaws\n", - "warship\n", - "warships\n", - "warsle\n", - "warsled\n", - "warsler\n", - "warslers\n", - "warsles\n", - "warsling\n", - "warstle\n", - "warstled\n", - "warstler\n", - "warstlers\n", - "warstles\n", - "warstling\n", - "wart\n", - "warted\n", - "warthog\n", - "warthogs\n", - "wartier\n", - "wartiest\n", - "wartime\n", - "wartimes\n", - "wartlike\n", - "warts\n", - "warty\n", - "warwork\n", - "warworks\n", - "warworn\n", - "wary\n", - "was\n", - "wash\n", - "washable\n", - "washboard\n", - "washboards\n", - "washbowl\n", - "washbowls\n", - "washcloth\n", - "washcloths\n", - "washday\n", - "washdays\n", - "washed\n", - "washer\n", - "washers\n", - "washes\n", - "washier\n", - "washiest\n", - "washing\n", - "washings\n", - "washington\n", - "washout\n", - "washouts\n", - "washrag\n", - "washrags\n", - "washroom\n", - "washrooms\n", - "washtub\n", - "washtubs\n", - "washy\n", - "wasp\n", - "waspier\n", - "waspiest\n", - "waspily\n", - "waspish\n", - "wasplike\n", - "wasps\n", - "waspy\n", - "wassail\n", - "wassailed\n", - "wassailing\n", - "wassails\n", - "wast\n", - "wastable\n", - "wastage\n", - "wastages\n", - "waste\n", - "wastebasket\n", - "wastebaskets\n", - "wasted\n", - "wasteful\n", - "wastefully\n", - "wastefulness\n", - "wastefulnesses\n", - "wasteland\n", - "wastelands\n", - "wastelot\n", - "wastelots\n", - "waster\n", - "wasterie\n", - "wasteries\n", - "wasters\n", - "wastery\n", - "wastes\n", - "wasteway\n", - "wasteways\n", - "wasting\n", - "wastrel\n", - "wastrels\n", - "wastrie\n", - "wastries\n", - "wastry\n", - "wasts\n", - "wat\n", - "watap\n", - "watape\n", - "watapes\n", - "wataps\n", - "watch\n", - "watchcries\n", - "watchcry\n", - "watchdog\n", - "watchdogged\n", - "watchdogging\n", - "watchdogs\n", - "watched\n", - "watcher\n", - "watchers\n", - "watches\n", - "watcheye\n", - "watcheyes\n", - "watchful\n", - "watchfully\n", - "watchfulness\n", - "watchfulnesses\n", - "watching\n", - "watchman\n", - "watchmen\n", - "watchout\n", - "watchouts\n", - "water\n", - "waterage\n", - "waterages\n", - "waterbed\n", - "waterbeds\n", - "watercolor\n", - "watercolors\n", - "watercourse\n", - "watercourses\n", - "watercress\n", - "watercresses\n", - "waterdog\n", - "waterdogs\n", - "watered\n", - "waterer\n", - "waterers\n", - "waterfall\n", - "waterfalls\n", - "waterfowl\n", - "waterfowls\n", - "waterier\n", - "wateriest\n", - "waterily\n", - "watering\n", - "waterings\n", - "waterish\n", - "waterlog\n", - "waterlogged\n", - "waterlogging\n", - "waterlogs\n", - "waterloo\n", - "waterloos\n", - "waterman\n", - "watermark\n", - "watermarked\n", - "watermarking\n", - "watermarks\n", - "watermelon\n", - "watermelons\n", - "watermen\n", - "waterpower\n", - "waterpowers\n", - "waterproof\n", - "waterproofed\n", - "waterproofing\n", - "waterproofings\n", - "waterproofs\n", - "waters\n", - "waterspout\n", - "waterspouts\n", - "watertight\n", - "waterway\n", - "waterways\n", - "waterworks\n", - "watery\n", - "wats\n", - "watt\n", - "wattage\n", - "wattages\n", - "wattape\n", - "wattapes\n", - "watter\n", - "wattest\n", - "watthour\n", - "watthours\n", - "wattle\n", - "wattled\n", - "wattles\n", - "wattless\n", - "wattling\n", - "watts\n", - "waucht\n", - "wauchted\n", - "wauchting\n", - "wauchts\n", - "waugh\n", - "waught\n", - "waughted\n", - "waughting\n", - "waughts\n", - "wauk\n", - "wauked\n", - "wauking\n", - "wauks\n", - "waul\n", - "wauled\n", - "wauling\n", - "wauls\n", - "waur\n", - "wave\n", - "waveband\n", - "wavebands\n", - "waved\n", - "waveform\n", - "waveforms\n", - "wavelength\n", - "wavelengths\n", - "waveless\n", - "wavelet\n", - "wavelets\n", - "wavelike\n", - "waveoff\n", - "waveoffs\n", - "waver\n", - "wavered\n", - "waverer\n", - "waverers\n", - "wavering\n", - "waveringly\n", - "wavers\n", - "wavery\n", - "waves\n", - "wavey\n", - "waveys\n", - "wavier\n", - "wavies\n", - "waviest\n", - "wavily\n", - "waviness\n", - "wavinesses\n", - "waving\n", - "wavy\n", - "waw\n", - "wawl\n", - "wawled\n", - "wawling\n", - "wawls\n", - "waws\n", - "wax\n", - "waxberries\n", - "waxberry\n", - "waxbill\n", - "waxbills\n", - "waxed\n", - "waxen\n", - "waxer\n", - "waxers\n", - "waxes\n", - "waxier\n", - "waxiest\n", - "waxily\n", - "waxiness\n", - "waxinesses\n", - "waxing\n", - "waxings\n", - "waxlike\n", - "waxplant\n", - "waxplants\n", - "waxweed\n", - "waxweeds\n", - "waxwing\n", - "waxwings\n", - "waxwork\n", - "waxworks\n", - "waxworm\n", - "waxworms\n", - "waxy\n", - "way\n", - "waybill\n", - "waybills\n", - "wayfarer\n", - "wayfarers\n", - "wayfaring\n", - "waygoing\n", - "waygoings\n", - "waylaid\n", - "waylay\n", - "waylayer\n", - "waylayers\n", - "waylaying\n", - "waylays\n", - "wayless\n", - "ways\n", - "wayside\n", - "waysides\n", - "wayward\n", - "wayworn\n", - "we\n", - "weak\n", - "weaken\n", - "weakened\n", - "weakener\n", - "weakeners\n", - "weakening\n", - "weakens\n", - "weaker\n", - "weakest\n", - "weakfish\n", - "weakfishes\n", - "weakish\n", - "weaklier\n", - "weakliest\n", - "weakling\n", - "weaklings\n", - "weakly\n", - "weakness\n", - "weaknesses\n", - "weal\n", - "weald\n", - "wealds\n", - "weals\n", - "wealth\n", - "wealthier\n", - "wealthiest\n", - "wealths\n", - "wealthy\n", - "wean\n", - "weaned\n", - "weaner\n", - "weaners\n", - "weaning\n", - "weanling\n", - "weanlings\n", - "weans\n", - "weapon\n", - "weaponed\n", - "weaponing\n", - "weaponries\n", - "weaponry\n", - "weapons\n", - "wear\n", - "wearable\n", - "wearables\n", - "wearer\n", - "wearers\n", - "wearied\n", - "wearier\n", - "wearies\n", - "weariest\n", - "weariful\n", - "wearily\n", - "weariness\n", - "wearinesses\n", - "wearing\n", - "wearish\n", - "wearisome\n", - "wears\n", - "weary\n", - "wearying\n", - "weasand\n", - "weasands\n", - "weasel\n", - "weaseled\n", - "weaseling\n", - "weasels\n", - "weason\n", - "weasons\n", - "weather\n", - "weathered\n", - "weathering\n", - "weatherman\n", - "weathermen\n", - "weatherproof\n", - "weatherproofed\n", - "weatherproofing\n", - "weatherproofs\n", - "weathers\n", - "weave\n", - "weaved\n", - "weaver\n", - "weavers\n", - "weaves\n", - "weaving\n", - "weazand\n", - "weazands\n", - "web\n", - "webbed\n", - "webbier\n", - "webbiest\n", - "webbing\n", - "webbings\n", - "webby\n", - "weber\n", - "webers\n", - "webfed\n", - "webfeet\n", - "webfoot\n", - "webless\n", - "weblike\n", - "webs\n", - "webster\n", - "websters\n", - "webworm\n", - "webworms\n", - "wecht\n", - "wechts\n", - "wed\n", - "wedded\n", - "wedder\n", - "wedders\n", - "wedding\n", - "weddings\n", - "wedel\n", - "wedeled\n", - "wedeling\n", - "wedeln\n", - "wedelns\n", - "wedels\n", - "wedge\n", - "wedged\n", - "wedges\n", - "wedgie\n", - "wedgier\n", - "wedgies\n", - "wedgiest\n", - "wedging\n", - "wedgy\n", - "wedlock\n", - "wedlocks\n", - "wednesday\n", - "weds\n", - "wee\n", - "weed\n", - "weeded\n", - "weeder\n", - "weeders\n", - "weedier\n", - "weediest\n", - "weedily\n", - "weeding\n", - "weedless\n", - "weedlike\n", - "weeds\n", - "weedy\n", - "week\n", - "weekday\n", - "weekdays\n", - "weekend\n", - "weekended\n", - "weekending\n", - "weekends\n", - "weeklies\n", - "weeklong\n", - "weekly\n", - "weeks\n", - "weel\n", - "ween\n", - "weened\n", - "weenie\n", - "weenier\n", - "weenies\n", - "weeniest\n", - "weening\n", - "weens\n", - "weensier\n", - "weensiest\n", - "weensy\n", - "weeny\n", - "weep\n", - "weeper\n", - "weepers\n", - "weepier\n", - "weepiest\n", - "weeping\n", - "weeps\n", - "weepy\n", - "weer\n", - "wees\n", - "weest\n", - "weet\n", - "weeted\n", - "weeting\n", - "weets\n", - "weever\n", - "weevers\n", - "weevil\n", - "weeviled\n", - "weevilly\n", - "weevils\n", - "weevily\n", - "weewee\n", - "weeweed\n", - "weeweeing\n", - "weewees\n", - "weft\n", - "wefts\n", - "weftwise\n", - "weigela\n", - "weigelas\n", - "weigelia\n", - "weigelias\n", - "weigh\n", - "weighed\n", - "weigher\n", - "weighers\n", - "weighing\n", - "weighman\n", - "weighmen\n", - "weighs\n", - "weight\n", - "weighted\n", - "weighter\n", - "weighters\n", - "weightier\n", - "weightiest\n", - "weighting\n", - "weightless\n", - "weightlessness\n", - "weightlessnesses\n", - "weights\n", - "weighty\n", - "weiner\n", - "weiners\n", - "weir\n", - "weird\n", - "weirder\n", - "weirdest\n", - "weirdie\n", - "weirdies\n", - "weirdly\n", - "weirdness\n", - "weirdnesses\n", - "weirdo\n", - "weirdoes\n", - "weirdos\n", - "weirds\n", - "weirdy\n", - "weirs\n", - "weka\n", - "wekas\n", - "welch\n", - "welched\n", - "welcher\n", - "welchers\n", - "welches\n", - "welching\n", - "welcome\n", - "welcomed\n", - "welcomer\n", - "welcomers\n", - "welcomes\n", - "welcoming\n", - "weld\n", - "weldable\n", - "welded\n", - "welder\n", - "welders\n", - "welding\n", - "weldless\n", - "weldment\n", - "weldments\n", - "weldor\n", - "weldors\n", - "welds\n", - "welfare\n", - "welfares\n", - "welkin\n", - "welkins\n", - "well\n", - "welladay\n", - "welladays\n", - "wellaway\n", - "wellaways\n", - "wellborn\n", - "wellcurb\n", - "wellcurbs\n", - "welldoer\n", - "welldoers\n", - "welled\n", - "wellesley\n", - "wellhead\n", - "wellheads\n", - "wellhole\n", - "wellholes\n", - "welling\n", - "wellness\n", - "wellnesses\n", - "wells\n", - "wellsite\n", - "wellsites\n", - "wellspring\n", - "wellsprings\n", - "welsh\n", - "welshed\n", - "welsher\n", - "welshers\n", - "welshes\n", - "welshing\n", - "welt\n", - "welted\n", - "welter\n", - "weltered\n", - "weltering\n", - "welters\n", - "welting\n", - "welts\n", - "wen\n", - "wench\n", - "wenched\n", - "wencher\n", - "wenchers\n", - "wenches\n", - "wenching\n", - "wend\n", - "wended\n", - "wendigo\n", - "wendigos\n", - "wending\n", - "wends\n", - "wennier\n", - "wenniest\n", - "wennish\n", - "wenny\n", - "wens\n", - "went\n", - "wept\n", - "were\n", - "weregild\n", - "weregilds\n", - "werewolf\n", - "werewolves\n", - "wergeld\n", - "wergelds\n", - "wergelt\n", - "wergelts\n", - "wergild\n", - "wergilds\n", - "wert\n", - "werwolf\n", - "werwolves\n", - "weskit\n", - "weskits\n", - "wessand\n", - "wessands\n", - "west\n", - "wester\n", - "westered\n", - "westering\n", - "westerlies\n", - "westerly\n", - "western\n", - "westerns\n", - "westers\n", - "westing\n", - "westings\n", - "westmost\n", - "wests\n", - "westward\n", - "westwards\n", - "wet\n", - "wetback\n", - "wetbacks\n", - "wether\n", - "wethers\n", - "wetland\n", - "wetlands\n", - "wetly\n", - "wetness\n", - "wetnesses\n", - "wetproof\n", - "wets\n", - "wettable\n", - "wetted\n", - "wetter\n", - "wetters\n", - "wettest\n", - "wetting\n", - "wettings\n", - "wettish\n", - "wha\n", - "whack\n", - "whacked\n", - "whacker\n", - "whackers\n", - "whackier\n", - "whackiest\n", - "whacking\n", - "whacks\n", - "whacky\n", - "whale\n", - "whalebone\n", - "whalebones\n", - "whaled\n", - "whaleman\n", - "whalemen\n", - "whaler\n", - "whalers\n", - "whales\n", - "whaling\n", - "whalings\n", - "wham\n", - "whammed\n", - "whammies\n", - "whamming\n", - "whammy\n", - "whams\n", - "whang\n", - "whanged\n", - "whangee\n", - "whangees\n", - "whanging\n", - "whangs\n", - "whap\n", - "whapped\n", - "whapper\n", - "whappers\n", - "whapping\n", - "whaps\n", - "wharf\n", - "wharfage\n", - "wharfages\n", - "wharfed\n", - "wharfing\n", - "wharfs\n", - "wharve\n", - "wharves\n", - "what\n", - "whatever\n", - "whatnot\n", - "whatnots\n", - "whats\n", - "whatsoever\n", - "whaup\n", - "whaups\n", - "wheal\n", - "wheals\n", - "wheat\n", - "wheatear\n", - "wheatears\n", - "wheaten\n", - "wheats\n", - "whee\n", - "wheedle\n", - "wheedled\n", - "wheedler\n", - "wheedlers\n", - "wheedles\n", - "wheedling\n", - "wheel\n", - "wheelbarrow\n", - "wheelbarrows\n", - "wheelbase\n", - "wheelbases\n", - "wheelchair\n", - "wheelchairs\n", - "wheeled\n", - "wheeler\n", - "wheelers\n", - "wheelie\n", - "wheelies\n", - "wheeling\n", - "wheelings\n", - "wheelless\n", - "wheelman\n", - "wheelmen\n", - "wheels\n", - "wheen\n", - "wheens\n", - "wheep\n", - "wheeped\n", - "wheeping\n", - "wheeple\n", - "wheepled\n", - "wheeples\n", - "wheepling\n", - "wheeps\n", - "whees\n", - "wheeze\n", - "wheezed\n", - "wheezer\n", - "wheezers\n", - "wheezes\n", - "wheezier\n", - "wheeziest\n", - "wheezily\n", - "wheezing\n", - "wheezy\n", - "whelk\n", - "whelkier\n", - "whelkiest\n", - "whelks\n", - "whelky\n", - "whelm\n", - "whelmed\n", - "whelming\n", - "whelms\n", - "whelp\n", - "whelped\n", - "whelping\n", - "whelps\n", - "when\n", - "whenas\n", - "whence\n", - "whenever\n", - "whens\n", - "where\n", - "whereabouts\n", - "whereas\n", - "whereases\n", - "whereat\n", - "whereby\n", - "wherefore\n", - "wherein\n", - "whereof\n", - "whereon\n", - "wheres\n", - "whereto\n", - "whereupon\n", - "wherever\n", - "wherewithal\n", - "wherried\n", - "wherries\n", - "wherry\n", - "wherrying\n", - "wherve\n", - "wherves\n", - "whet\n", - "whether\n", - "whets\n", - "whetstone\n", - "whetstones\n", - "whetted\n", - "whetter\n", - "whetters\n", - "whetting\n", - "whew\n", - "whews\n", - "whey\n", - "wheyey\n", - "wheyface\n", - "wheyfaces\n", - "wheyish\n", - "wheys\n", - "which\n", - "whichever\n", - "whicker\n", - "whickered\n", - "whickering\n", - "whickers\n", - "whid\n", - "whidah\n", - "whidahs\n", - "whidded\n", - "whidding\n", - "whids\n", - "whiff\n", - "whiffed\n", - "whiffer\n", - "whiffers\n", - "whiffet\n", - "whiffets\n", - "whiffing\n", - "whiffle\n", - "whiffled\n", - "whiffler\n", - "whifflers\n", - "whiffles\n", - "whiffling\n", - "whiffs\n", - "while\n", - "whiled\n", - "whiles\n", - "whiling\n", - "whilom\n", - "whilst\n", - "whim\n", - "whimbrel\n", - "whimbrels\n", - "whimper\n", - "whimpered\n", - "whimpering\n", - "whimpers\n", - "whims\n", - "whimsey\n", - "whimseys\n", - "whimsical\n", - "whimsicalities\n", - "whimsicality\n", - "whimsically\n", - "whimsied\n", - "whimsies\n", - "whimsy\n", - "whin\n", - "whinchat\n", - "whinchats\n", - "whine\n", - "whined\n", - "whiner\n", - "whiners\n", - "whines\n", - "whiney\n", - "whinier\n", - "whiniest\n", - "whining\n", - "whinnied\n", - "whinnier\n", - "whinnies\n", - "whinniest\n", - "whinny\n", - "whinnying\n", - "whins\n", - "whiny\n", - "whip\n", - "whipcord\n", - "whipcords\n", - "whiplash\n", - "whiplashes\n", - "whiplike\n", - "whipped\n", - "whipper\n", - "whippers\n", - "whippersnapper\n", - "whippersnappers\n", - "whippet\n", - "whippets\n", - "whippier\n", - "whippiest\n", - "whipping\n", - "whippings\n", - "whippoorwill\n", - "whippoorwills\n", - "whippy\n", - "whipray\n", - "whiprays\n", - "whips\n", - "whipsaw\n", - "whipsawed\n", - "whipsawing\n", - "whipsawn\n", - "whipsaws\n", - "whipt\n", - "whiptail\n", - "whiptails\n", - "whipworm\n", - "whipworms\n", - "whir\n", - "whirl\n", - "whirled\n", - "whirler\n", - "whirlers\n", - "whirlier\n", - "whirlies\n", - "whirliest\n", - "whirling\n", - "whirlpool\n", - "whirlpools\n", - "whirls\n", - "whirlwind\n", - "whirlwinds\n", - "whirly\n", - "whirr\n", - "whirred\n", - "whirried\n", - "whirries\n", - "whirring\n", - "whirrs\n", - "whirry\n", - "whirrying\n", - "whirs\n", - "whish\n", - "whished\n", - "whishes\n", - "whishing\n", - "whisht\n", - "whishted\n", - "whishting\n", - "whishts\n", - "whisk\n", - "whisked\n", - "whisker\n", - "whiskered\n", - "whiskers\n", - "whiskery\n", - "whiskey\n", - "whiskeys\n", - "whiskies\n", - "whisking\n", - "whisks\n", - "whisky\n", - "whisper\n", - "whispered\n", - "whispering\n", - "whispers\n", - "whispery\n", - "whist\n", - "whisted\n", - "whisting\n", - "whistle\n", - "whistled\n", - "whistler\n", - "whistlers\n", - "whistles\n", - "whistling\n", - "whists\n", - "whit\n", - "white\n", - "whitebait\n", - "whitebaits\n", - "whitecap\n", - "whitecaps\n", - "whited\n", - "whitefish\n", - "whitefishes\n", - "whiteflies\n", - "whitefly\n", - "whitely\n", - "whiten\n", - "whitened\n", - "whitener\n", - "whiteners\n", - "whiteness\n", - "whitenesses\n", - "whitening\n", - "whitens\n", - "whiteout\n", - "whiteouts\n", - "whiter\n", - "whites\n", - "whitest\n", - "whitetail\n", - "whitetails\n", - "whitewash\n", - "whitewashed\n", - "whitewashes\n", - "whitewashing\n", - "whitey\n", - "whiteys\n", - "whither\n", - "whities\n", - "whiting\n", - "whitings\n", - "whitish\n", - "whitlow\n", - "whitlows\n", - "whitrack\n", - "whitracks\n", - "whits\n", - "whitter\n", - "whitters\n", - "whittle\n", - "whittled\n", - "whittler\n", - "whittlers\n", - "whittles\n", - "whittling\n", - "whittret\n", - "whittrets\n", - "whity\n", - "whiz\n", - "whizbang\n", - "whizbangs\n", - "whizz\n", - "whizzed\n", - "whizzer\n", - "whizzers\n", - "whizzes\n", - "whizzing\n", - "who\n", - "whoa\n", - "whoas\n", - "whodunit\n", - "whodunits\n", - "whoever\n", - "whole\n", - "wholehearted\n", - "wholeness\n", - "wholenesses\n", - "wholes\n", - "wholesale\n", - "wholesaled\n", - "wholesaler\n", - "wholesalers\n", - "wholesales\n", - "wholesaling\n", - "wholesome\n", - "wholesomeness\n", - "wholesomenesses\n", - "wholism\n", - "wholisms\n", - "wholly\n", - "whom\n", - "whomever\n", - "whomp\n", - "whomped\n", - "whomping\n", - "whomps\n", - "whomso\n", - "whoop\n", - "whooped\n", - "whoopee\n", - "whoopees\n", - "whooper\n", - "whoopers\n", - "whooping\n", - "whoopla\n", - "whooplas\n", - "whoops\n", - "whoosh\n", - "whooshed\n", - "whooshes\n", - "whooshing\n", - "whoosis\n", - "whoosises\n", - "whop\n", - "whopped\n", - "whopper\n", - "whoppers\n", - "whopping\n", - "whops\n", - "whore\n", - "whored\n", - "whoredom\n", - "whoredoms\n", - "whores\n", - "whoreson\n", - "whoresons\n", - "whoring\n", - "whorish\n", - "whorl\n", - "whorled\n", - "whorls\n", - "whort\n", - "whortle\n", - "whortles\n", - "whorts\n", - "whose\n", - "whosever\n", - "whosis\n", - "whosises\n", - "whoso\n", - "whosoever\n", - "whump\n", - "whumped\n", - "whumping\n", - "whumps\n", - "why\n", - "whydah\n", - "whydahs\n", - "whys\n", - "wich\n", - "wiches\n", - "wick\n", - "wickape\n", - "wickapes\n", - "wicked\n", - "wickeder\n", - "wickedest\n", - "wickedly\n", - "wickedness\n", - "wickednesses\n", - "wicker\n", - "wickers\n", - "wickerwork\n", - "wickerworks\n", - "wicket\n", - "wickets\n", - "wicking\n", - "wickings\n", - "wickiup\n", - "wickiups\n", - "wicks\n", - "wickyup\n", - "wickyups\n", - "wicopies\n", - "wicopy\n", - "widder\n", - "widders\n", - "widdie\n", - "widdies\n", - "widdle\n", - "widdled\n", - "widdles\n", - "widdling\n", - "widdy\n", - "wide\n", - "widely\n", - "widen\n", - "widened\n", - "widener\n", - "wideners\n", - "wideness\n", - "widenesses\n", - "widening\n", - "widens\n", - "wider\n", - "wides\n", - "widespread\n", - "widest\n", - "widgeon\n", - "widgeons\n", - "widget\n", - "widgets\n", - "widish\n", - "widow\n", - "widowed\n", - "widower\n", - "widowers\n", - "widowhood\n", - "widowhoods\n", - "widowing\n", - "widows\n", - "width\n", - "widths\n", - "widthway\n", - "wield\n", - "wielded\n", - "wielder\n", - "wielders\n", - "wieldier\n", - "wieldiest\n", - "wielding\n", - "wields\n", - "wieldy\n", - "wiener\n", - "wieners\n", - "wienie\n", - "wienies\n", - "wife\n", - "wifed\n", - "wifedom\n", - "wifedoms\n", - "wifehood\n", - "wifehoods\n", - "wifeless\n", - "wifelier\n", - "wifeliest\n", - "wifelike\n", - "wifely\n", - "wifes\n", - "wifing\n", - "wig\n", - "wigan\n", - "wigans\n", - "wigeon\n", - "wigeons\n", - "wigged\n", - "wiggeries\n", - "wiggery\n", - "wigging\n", - "wiggings\n", - "wiggle\n", - "wiggled\n", - "wiggler\n", - "wigglers\n", - "wiggles\n", - "wigglier\n", - "wiggliest\n", - "wiggling\n", - "wiggly\n", - "wight\n", - "wights\n", - "wigless\n", - "wiglet\n", - "wiglets\n", - "wiglike\n", - "wigmaker\n", - "wigmakers\n", - "wigs\n", - "wigwag\n", - "wigwagged\n", - "wigwagging\n", - "wigwags\n", - "wigwam\n", - "wigwams\n", - "wikiup\n", - "wikiups\n", - "wilco\n", - "wild\n", - "wildcat\n", - "wildcats\n", - "wildcatted\n", - "wildcatting\n", - "wilder\n", - "wildered\n", - "wildering\n", - "wilderness\n", - "wildernesses\n", - "wilders\n", - "wildest\n", - "wildfire\n", - "wildfires\n", - "wildfowl\n", - "wildfowls\n", - "wilding\n", - "wildings\n", - "wildish\n", - "wildlife\n", - "wildling\n", - "wildlings\n", - "wildly\n", - "wildness\n", - "wildnesses\n", - "wilds\n", - "wildwood\n", - "wildwoods\n", - "wile\n", - "wiled\n", - "wiles\n", - "wilful\n", - "wilfully\n", - "wilier\n", - "wiliest\n", - "wilily\n", - "wiliness\n", - "wilinesses\n", - "wiling\n", - "will\n", - "willable\n", - "willed\n", - "willer\n", - "willers\n", - "willet\n", - "willets\n", - "willful\n", - "willfully\n", - "willied\n", - "willies\n", - "willing\n", - "willinger\n", - "willingest\n", - "willingly\n", - "willingness\n", - "williwau\n", - "williwaus\n", - "williwaw\n", - "williwaws\n", - "willow\n", - "willowed\n", - "willower\n", - "willowers\n", - "willowier\n", - "willowiest\n", - "willowing\n", - "willows\n", - "willowy\n", - "willpower\n", - "willpowers\n", - "wills\n", - "willy\n", - "willyard\n", - "willyart\n", - "willying\n", - "willywaw\n", - "willywaws\n", - "wilt\n", - "wilted\n", - "wilting\n", - "wilts\n", - "wily\n", - "wimble\n", - "wimbled\n", - "wimbles\n", - "wimbling\n", - "wimple\n", - "wimpled\n", - "wimples\n", - "wimpling\n", - "win\n", - "wince\n", - "winced\n", - "wincer\n", - "wincers\n", - "winces\n", - "wincey\n", - "winceys\n", - "winch\n", - "winched\n", - "wincher\n", - "winchers\n", - "winches\n", - "winching\n", - "wincing\n", - "wind\n", - "windable\n", - "windage\n", - "windages\n", - "windbag\n", - "windbags\n", - "windbreak\n", - "windbreaks\n", - "windburn\n", - "windburned\n", - "windburning\n", - "windburns\n", - "windburnt\n", - "winded\n", - "winder\n", - "winders\n", - "windfall\n", - "windfalls\n", - "windflaw\n", - "windflaws\n", - "windgall\n", - "windgalls\n", - "windier\n", - "windiest\n", - "windigo\n", - "windigos\n", - "windily\n", - "winding\n", - "windings\n", - "windlass\n", - "windlassed\n", - "windlasses\n", - "windlassing\n", - "windle\n", - "windled\n", - "windles\n", - "windless\n", - "windling\n", - "windlings\n", - "windmill\n", - "windmilled\n", - "windmilling\n", - "windmills\n", - "window\n", - "windowed\n", - "windowing\n", - "windowless\n", - "windows\n", - "windpipe\n", - "windpipes\n", - "windrow\n", - "windrowed\n", - "windrowing\n", - "windrows\n", - "winds\n", - "windshield\n", - "windshields\n", - "windsock\n", - "windsocks\n", - "windup\n", - "windups\n", - "windward\n", - "windwards\n", - "windway\n", - "windways\n", - "windy\n", - "wine\n", - "wined\n", - "wineless\n", - "wineries\n", - "winery\n", - "wines\n", - "wineshop\n", - "wineshops\n", - "wineskin\n", - "wineskins\n", - "winesop\n", - "winesops\n", - "winey\n", - "wing\n", - "wingback\n", - "wingbacks\n", - "wingbow\n", - "wingbows\n", - "wingding\n", - "wingdings\n", - "winged\n", - "wingedly\n", - "winger\n", - "wingers\n", - "wingier\n", - "wingiest\n", - "winging\n", - "wingless\n", - "winglet\n", - "winglets\n", - "winglike\n", - "wingman\n", - "wingmen\n", - "wingover\n", - "wingovers\n", - "wings\n", - "wingspan\n", - "wingspans\n", - "wingy\n", - "winier\n", - "winiest\n", - "wining\n", - "winish\n", - "wink\n", - "winked\n", - "winker\n", - "winkers\n", - "winking\n", - "winkle\n", - "winkled\n", - "winkles\n", - "winkling\n", - "winks\n", - "winnable\n", - "winned\n", - "winner\n", - "winners\n", - "winning\n", - "winnings\n", - "winnock\n", - "winnocks\n", - "winnow\n", - "winnowed\n", - "winnower\n", - "winnowers\n", - "winnowing\n", - "winnows\n", - "wino\n", - "winoes\n", - "winos\n", - "wins\n", - "winsome\n", - "winsomely\n", - "winsomeness\n", - "winsomenesses\n", - "winsomer\n", - "winsomest\n", - "winter\n", - "wintered\n", - "winterer\n", - "winterers\n", - "wintergreen\n", - "wintergreens\n", - "winterier\n", - "winteriest\n", - "wintering\n", - "winterly\n", - "winters\n", - "wintertime\n", - "wintertimes\n", - "wintery\n", - "wintle\n", - "wintled\n", - "wintles\n", - "wintling\n", - "wintrier\n", - "wintriest\n", - "wintrily\n", - "wintry\n", - "winy\n", - "winze\n", - "winzes\n", - "wipe\n", - "wiped\n", - "wipeout\n", - "wipeouts\n", - "wiper\n", - "wipers\n", - "wipes\n", - "wiping\n", - "wirable\n", - "wire\n", - "wired\n", - "wiredraw\n", - "wiredrawing\n", - "wiredrawn\n", - "wiredraws\n", - "wiredrew\n", - "wirehair\n", - "wirehairs\n", - "wireless\n", - "wirelessed\n", - "wirelesses\n", - "wirelessing\n", - "wirelike\n", - "wireman\n", - "wiremen\n", - "wirer\n", - "wirers\n", - "wires\n", - "wiretap\n", - "wiretapped\n", - "wiretapper\n", - "wiretappers\n", - "wiretapping\n", - "wiretaps\n", - "wireway\n", - "wireways\n", - "wirework\n", - "wireworks\n", - "wireworm\n", - "wireworms\n", - "wirier\n", - "wiriest\n", - "wirily\n", - "wiriness\n", - "wirinesses\n", - "wiring\n", - "wirings\n", - "wirra\n", - "wiry\n", - "wis\n", - "wisdom\n", - "wisdoms\n", - "wise\n", - "wiseacre\n", - "wiseacres\n", - "wisecrack\n", - "wisecracked\n", - "wisecracking\n", - "wisecracks\n", - "wised\n", - "wiselier\n", - "wiseliest\n", - "wisely\n", - "wiseness\n", - "wisenesses\n", - "wisent\n", - "wisents\n", - "wiser\n", - "wises\n", - "wisest\n", - "wish\n", - "wisha\n", - "wishbone\n", - "wishbones\n", - "wished\n", - "wisher\n", - "wishers\n", - "wishes\n", - "wishful\n", - "wishing\n", - "wishless\n", - "wising\n", - "wisp\n", - "wisped\n", - "wispier\n", - "wispiest\n", - "wispily\n", - "wisping\n", - "wispish\n", - "wisplike\n", - "wisps\n", - "wispy\n", - "wiss\n", - "wissed\n", - "wisses\n", - "wissing\n", - "wist\n", - "wistaria\n", - "wistarias\n", - "wisted\n", - "wisteria\n", - "wisterias\n", - "wistful\n", - "wistfully\n", - "wistfulness\n", - "wistfulnesses\n", - "wisting\n", - "wists\n", - "wit\n", - "witan\n", - "witch\n", - "witchcraft\n", - "witchcrafts\n", - "witched\n", - "witcheries\n", - "witchery\n", - "witches\n", - "witchier\n", - "witchiest\n", - "witching\n", - "witchings\n", - "witchy\n", - "wite\n", - "wited\n", - "witen\n", - "wites\n", - "with\n", - "withal\n", - "withdraw\n", - "withdrawal\n", - "withdrawals\n", - "withdrawing\n", - "withdrawn\n", - "withdraws\n", - "withdrew\n", - "withe\n", - "withed\n", - "wither\n", - "withered\n", - "witherer\n", - "witherers\n", - "withering\n", - "withers\n", - "withes\n", - "withheld\n", - "withhold\n", - "withholding\n", - "withholds\n", - "withier\n", - "withies\n", - "withiest\n", - "within\n", - "withing\n", - "withins\n", - "without\n", - "withouts\n", - "withstand\n", - "withstanding\n", - "withstands\n", - "withstood\n", - "withy\n", - "witing\n", - "witless\n", - "witlessly\n", - "witlessness\n", - "witlessnesses\n", - "witling\n", - "witlings\n", - "witloof\n", - "witloofs\n", - "witness\n", - "witnessed\n", - "witnesses\n", - "witnessing\n", - "witney\n", - "witneys\n", - "wits\n", - "witted\n", - "witticism\n", - "witticisms\n", - "wittier\n", - "wittiest\n", - "wittily\n", - "wittiness\n", - "wittinesses\n", - "witting\n", - "wittingly\n", - "wittings\n", - "wittol\n", - "wittols\n", - "witty\n", - "wive\n", - "wived\n", - "wiver\n", - "wivern\n", - "wiverns\n", - "wivers\n", - "wives\n", - "wiving\n", - "wiz\n", - "wizard\n", - "wizardly\n", - "wizardries\n", - "wizardry\n", - "wizards\n", - "wizen\n", - "wizened\n", - "wizening\n", - "wizens\n", - "wizes\n", - "wizzen\n", - "wizzens\n", - "wo\n", - "woad\n", - "woaded\n", - "woads\n", - "woadwax\n", - "woadwaxes\n", - "woald\n", - "woalds\n", - "wobble\n", - "wobbled\n", - "wobbler\n", - "wobblers\n", - "wobbles\n", - "wobblier\n", - "wobblies\n", - "wobbliest\n", - "wobbling\n", - "wobbly\n", - "wobegone\n", - "woe\n", - "woebegone\n", - "woeful\n", - "woefuller\n", - "woefullest\n", - "woefully\n", - "woeness\n", - "woenesses\n", - "woes\n", - "woesome\n", - "woful\n", - "wofully\n", - "wok\n", - "woke\n", - "woken\n", - "woks\n", - "wold\n", - "wolds\n", - "wolf\n", - "wolfed\n", - "wolfer\n", - "wolfers\n", - "wolffish\n", - "wolffishes\n", - "wolfing\n", - "wolfish\n", - "wolflike\n", - "wolfram\n", - "wolframs\n", - "wolfs\n", - "wolver\n", - "wolverine\n", - "wolverines\n", - "wolvers\n", - "wolves\n", - "woman\n", - "womaned\n", - "womanhood\n", - "womanhoods\n", - "womaning\n", - "womanise\n", - "womanised\n", - "womanises\n", - "womanish\n", - "womanising\n", - "womanize\n", - "womanized\n", - "womanizes\n", - "womanizing\n", - "womankind\n", - "womankinds\n", - "womanlier\n", - "womanliest\n", - "womanliness\n", - "womanlinesses\n", - "womanly\n", - "womans\n", - "womb\n", - "wombat\n", - "wombats\n", - "wombed\n", - "wombier\n", - "wombiest\n", - "wombs\n", - "womby\n", - "women\n", - "womera\n", - "womeras\n", - "wommera\n", - "wommeras\n", - "womps\n", - "won\n", - "wonder\n", - "wondered\n", - "wonderer\n", - "wonderers\n", - "wonderful\n", - "wonderfully\n", - "wonderfulness\n", - "wonderfulnesses\n", - "wondering\n", - "wonderland\n", - "wonderlands\n", - "wonderment\n", - "wonderments\n", - "wonders\n", - "wonderwoman\n", - "wondrous\n", - "wondrously\n", - "wondrousness\n", - "wondrousnesses\n", - "wonkier\n", - "wonkiest\n", - "wonky\n", - "wonned\n", - "wonner\n", - "wonners\n", - "wonning\n", - "wons\n", - "wont\n", - "wonted\n", - "wontedly\n", - "wonting\n", - "wonton\n", - "wontons\n", - "wonts\n", - "woo\n", - "wood\n", - "woodbin\n", - "woodbind\n", - "woodbinds\n", - "woodbine\n", - "woodbines\n", - "woodbins\n", - "woodbox\n", - "woodboxes\n", - "woodchat\n", - "woodchats\n", - "woodchopper\n", - "woodchoppers\n", - "woodchuck\n", - "woodchucks\n", - "woodcock\n", - "woodcocks\n", - "woodcraft\n", - "woodcrafts\n", - "woodcut\n", - "woodcuts\n", - "wooded\n", - "wooden\n", - "woodener\n", - "woodenest\n", - "woodenly\n", - "woodenness\n", - "woodennesses\n", - "woodhen\n", - "woodhens\n", - "woodier\n", - "woodiest\n", - "woodiness\n", - "woodinesses\n", - "wooding\n", - "woodland\n", - "woodlands\n", - "woodlark\n", - "woodlarks\n", - "woodless\n", - "woodlore\n", - "woodlores\n", - "woodlot\n", - "woodlots\n", - "woodman\n", - "woodmen\n", - "woodnote\n", - "woodnotes\n", - "woodpecker\n", - "woodpeckers\n", - "woodpile\n", - "woodpiles\n", - "woodruff\n", - "woodruffs\n", - "woods\n", - "woodshed\n", - "woodshedded\n", - "woodshedding\n", - "woodsheds\n", - "woodsia\n", - "woodsias\n", - "woodsier\n", - "woodsiest\n", - "woodsman\n", - "woodsmen\n", - "woodsy\n", - "woodwax\n", - "woodwaxes\n", - "woodwind\n", - "woodwinds\n", - "woodwork\n", - "woodworks\n", - "woodworm\n", - "woodworms\n", - "woody\n", - "wooed\n", - "wooer\n", - "wooers\n", - "woof\n", - "woofed\n", - "woofer\n", - "woofers\n", - "woofing\n", - "woofs\n", - "wooing\n", - "wooingly\n", - "wool\n", - "wooled\n", - "woolen\n", - "woolens\n", - "wooler\n", - "woolers\n", - "woolfell\n", - "woolfells\n", - "woolgathering\n", - "woolgatherings\n", - "woolie\n", - "woolier\n", - "woolies\n", - "wooliest\n", - "woollen\n", - "woollens\n", - "woollier\n", - "woollies\n", - "woolliest\n", - "woollike\n", - "woolly\n", - "woolman\n", - "woolmen\n", - "woolpack\n", - "woolpacks\n", - "wools\n", - "woolsack\n", - "woolsacks\n", - "woolshed\n", - "woolsheds\n", - "woolskin\n", - "woolskins\n", - "wooly\n", - "woomera\n", - "woomeras\n", - "woops\n", - "woorali\n", - "wooralis\n", - "woorari\n", - "wooraris\n", - "woos\n", - "woosh\n", - "wooshed\n", - "wooshes\n", - "wooshing\n", - "woozier\n", - "wooziest\n", - "woozily\n", - "wooziness\n", - "woozinesses\n", - "woozy\n", - "wop\n", - "wops\n", - "worcester\n", - "word\n", - "wordage\n", - "wordages\n", - "wordbook\n", - "wordbooks\n", - "worded\n", - "wordier\n", - "wordiest\n", - "wordily\n", - "wordiness\n", - "wordinesses\n", - "wording\n", - "wordings\n", - "wordless\n", - "wordplay\n", - "wordplays\n", - "words\n", - "wordy\n", - "wore\n", - "work\n", - "workability\n", - "workable\n", - "workableness\n", - "workablenesses\n", - "workaday\n", - "workbag\n", - "workbags\n", - "workbasket\n", - "workbaskets\n", - "workbench\n", - "workbenches\n", - "workboat\n", - "workboats\n", - "workbook\n", - "workbooks\n", - "workbox\n", - "workboxes\n", - "workday\n", - "workdays\n", - "worked\n", - "worker\n", - "workers\n", - "workfolk\n", - "workhorse\n", - "workhorses\n", - "workhouse\n", - "workhouses\n", - "working\n", - "workingman\n", - "workingmen\n", - "workings\n", - "workless\n", - "workload\n", - "workloads\n", - "workman\n", - "workmanlike\n", - "workmanship\n", - "workmanships\n", - "workmen\n", - "workout\n", - "workouts\n", - "workroom\n", - "workrooms\n", - "works\n", - "worksheet\n", - "worksheets\n", - "workshop\n", - "workshops\n", - "workup\n", - "workups\n", - "workweek\n", - "workweeks\n", - "world\n", - "worldlier\n", - "worldliest\n", - "worldliness\n", - "worldlinesses\n", - "worldly\n", - "worlds\n", - "worldwide\n", - "worm\n", - "wormed\n", - "wormer\n", - "wormers\n", - "wormhole\n", - "wormholes\n", - "wormier\n", - "wormiest\n", - "wormil\n", - "wormils\n", - "worming\n", - "wormish\n", - "wormlike\n", - "wormroot\n", - "wormroots\n", - "worms\n", - "wormseed\n", - "wormseeds\n", - "wormwood\n", - "wormwoods\n", - "wormy\n", - "worn\n", - "wornness\n", - "wornnesses\n", - "worried\n", - "worrier\n", - "worriers\n", - "worries\n", - "worrisome\n", - "worrit\n", - "worrited\n", - "worriting\n", - "worrits\n", - "worry\n", - "worrying\n", - "worse\n", - "worsen\n", - "worsened\n", - "worsening\n", - "worsens\n", - "worser\n", - "worses\n", - "worset\n", - "worsets\n", - "worship\n", - "worshiped\n", - "worshiper\n", - "worshipers\n", - "worshiping\n", - "worshipped\n", - "worshipper\n", - "worshippers\n", - "worshipping\n", - "worships\n", - "worst\n", - "worsted\n", - "worsteds\n", - "worsting\n", - "worsts\n", - "wort\n", - "worth\n", - "worthed\n", - "worthful\n", - "worthier\n", - "worthies\n", - "worthiest\n", - "worthily\n", - "worthiness\n", - "worthinesses\n", - "worthing\n", - "worthless\n", - "worthlessness\n", - "worthlessnesses\n", - "worths\n", - "worthwhile\n", - "worthy\n", - "worts\n", - "wos\n", - "wost\n", - "wostteth\n", - "wot\n", - "wots\n", - "wotted\n", - "wotteth\n", - "wotting\n", - "would\n", - "wouldest\n", - "wouldst\n", - "wound\n", - "wounded\n", - "wounding\n", - "wounds\n", - "wove\n", - "woven\n", - "wow\n", - "wowed\n", - "wowing\n", - "wows\n", - "wowser\n", - "wowsers\n", - "wrack\n", - "wracked\n", - "wrackful\n", - "wracking\n", - "wracks\n", - "wraith\n", - "wraiths\n", - "wrang\n", - "wrangle\n", - "wrangled\n", - "wrangler\n", - "wranglers\n", - "wrangles\n", - "wrangling\n", - "wrangs\n", - "wrap\n", - "wrapped\n", - "wrapper\n", - "wrappers\n", - "wrapping\n", - "wrappings\n", - "wraps\n", - "wrapt\n", - "wrasse\n", - "wrasses\n", - "wrastle\n", - "wrastled\n", - "wrastles\n", - "wrastling\n", - "wrath\n", - "wrathed\n", - "wrathful\n", - "wrathier\n", - "wrathiest\n", - "wrathily\n", - "wrathing\n", - "wraths\n", - "wrathy\n", - "wreak\n", - "wreaked\n", - "wreaker\n", - "wreakers\n", - "wreaking\n", - "wreaks\n", - "wreath\n", - "wreathe\n", - "wreathed\n", - "wreathen\n", - "wreathes\n", - "wreathing\n", - "wreaths\n", - "wreathy\n", - "wreck\n", - "wreckage\n", - "wreckages\n", - "wrecked\n", - "wrecker\n", - "wreckers\n", - "wreckful\n", - "wrecking\n", - "wreckings\n", - "wrecks\n", - "wren\n", - "wrench\n", - "wrenched\n", - "wrenches\n", - "wrenching\n", - "wrens\n", - "wrest\n", - "wrested\n", - "wrester\n", - "wresters\n", - "wresting\n", - "wrestle\n", - "wrestled\n", - "wrestler\n", - "wrestlers\n", - "wrestles\n", - "wrestling\n", - "wrests\n", - "wretch\n", - "wretched\n", - "wretcheder\n", - "wretchedest\n", - "wretchedness\n", - "wretchednesses\n", - "wretches\n", - "wried\n", - "wrier\n", - "wries\n", - "wriest\n", - "wriggle\n", - "wriggled\n", - "wriggler\n", - "wrigglers\n", - "wriggles\n", - "wrigglier\n", - "wriggliest\n", - "wriggling\n", - "wriggly\n", - "wright\n", - "wrights\n", - "wring\n", - "wringed\n", - "wringer\n", - "wringers\n", - "wringing\n", - "wrings\n", - "wrinkle\n", - "wrinkled\n", - "wrinkles\n", - "wrinklier\n", - "wrinkliest\n", - "wrinkling\n", - "wrinkly\n", - "wrist\n", - "wristier\n", - "wristiest\n", - "wristlet\n", - "wristlets\n", - "wrists\n", - "wristy\n", - "writ\n", - "writable\n", - "write\n", - "writer\n", - "writers\n", - "writes\n", - "writhe\n", - "writhed\n", - "writhen\n", - "writher\n", - "writhers\n", - "writhes\n", - "writhing\n", - "writing\n", - "writings\n", - "writs\n", - "written\n", - "wrong\n", - "wrongdoer\n", - "wrongdoers\n", - "wrongdoing\n", - "wrongdoings\n", - "wronged\n", - "wronger\n", - "wrongers\n", - "wrongest\n", - "wrongful\n", - "wrongfully\n", - "wrongfulness\n", - "wrongfulnesses\n", - "wrongheaded\n", - "wrongheadedly\n", - "wrongheadedness\n", - "wrongheadednesses\n", - "wronging\n", - "wrongly\n", - "wrongs\n", - "wrote\n", - "wroth\n", - "wrothful\n", - "wrought\n", - "wrung\n", - "wry\n", - "wryer\n", - "wryest\n", - "wrying\n", - "wryly\n", - "wryneck\n", - "wrynecks\n", - "wryness\n", - "wrynesses\n", - "wud\n", - "wurst\n", - "wursts\n", - "wurzel\n", - "wurzels\n", - "wych\n", - "wyches\n", - "wye\n", - "wyes\n", - "wyle\n", - "wyled\n", - "wyles\n", - "wyling\n", - "wynd\n", - "wynds\n", - "wynn\n", - "wynns\n", - "wyte\n", - "wyted\n", - "wytes\n", - "wyting\n", - "wyvern\n", - "wyverns\n", - "xanthate\n", - "xanthates\n", - "xanthein\n", - "xantheins\n", - "xanthene\n", - "xanthenes\n", - "xanthic\n", - "xanthin\n", - "xanthine\n", - "xanthines\n", - "xanthins\n", - "xanthoma\n", - "xanthomas\n", - "xanthomata\n", - "xanthone\n", - "xanthones\n", - "xanthous\n", - "xebec\n", - "xebecs\n", - "xenia\n", - "xenial\n", - "xenias\n", - "xenic\n", - "xenogamies\n", - "xenogamy\n", - "xenogenies\n", - "xenogeny\n", - "xenolith\n", - "xenoliths\n", - "xenon\n", - "xenons\n", - "xenophobe\n", - "xenophobes\n", - "xenophobia\n", - "xerarch\n", - "xeric\n", - "xerosere\n", - "xeroseres\n", - "xeroses\n", - "xerosis\n", - "xerotic\n", - "xerus\n", - "xeruses\n", - "xi\n", - "xiphoid\n", - "xiphoids\n", - "xis\n", - "xu\n", - "xylan\n", - "xylans\n", - "xylem\n", - "xylems\n", - "xylene\n", - "xylenes\n", - "xylic\n", - "xylidin\n", - "xylidine\n", - "xylidines\n", - "xylidins\n", - "xylocarp\n", - "xylocarps\n", - "xyloid\n", - "xylol\n", - "xylols\n", - "xylophone\n", - "xylophones\n", - "xylophonist\n", - "xylophonists\n", - "xylose\n", - "xyloses\n", - "xylotomies\n", - "xylotomy\n", - "xylyl\n", - "xylyls\n", - "xyst\n", - "xyster\n", - "xysters\n", - "xysti\n", - "xystoi\n", - "xystos\n", - "xysts\n", - "xystus\n", - "ya\n", - "yabber\n", - "yabbered\n", - "yabbering\n", - "yabbers\n", - "yacht\n", - "yachted\n", - "yachter\n", - "yachters\n", - "yachting\n", - "yachtings\n", - "yachtman\n", - "yachtmen\n", - "yachts\n", - "yack\n", - "yacked\n", - "yacking\n", - "yacks\n", - "yaff\n", - "yaffed\n", - "yaffing\n", - "yaffs\n", - "yager\n", - "yagers\n", - "yagi\n", - "yagis\n", - "yah\n", - "yahoo\n", - "yahooism\n", - "yahooisms\n", - "yahoos\n", - "yaird\n", - "yairds\n", - "yak\n", - "yakked\n", - "yakking\n", - "yaks\n", - "yald\n", - "yam\n", - "yamen\n", - "yamens\n", - "yammer\n", - "yammered\n", - "yammerer\n", - "yammerers\n", - "yammering\n", - "yammers\n", - "yams\n", - "yamun\n", - "yamuns\n", - "yang\n", - "yangs\n", - "yank\n", - "yanked\n", - "yanking\n", - "yanks\n", - "yanqui\n", - "yanquis\n", - "yap\n", - "yapock\n", - "yapocks\n", - "yapok\n", - "yapoks\n", - "yapon\n", - "yapons\n", - "yapped\n", - "yapper\n", - "yappers\n", - "yapping\n", - "yappy\n", - "yaps\n", - "yar\n", - "yard\n", - "yardage\n", - "yardages\n", - "yardarm\n", - "yardarms\n", - "yardbird\n", - "yardbirds\n", - "yarded\n", - "yarding\n", - "yardman\n", - "yardmen\n", - "yards\n", - "yardstick\n", - "yardsticks\n", - "yardwand\n", - "yardwands\n", - "yare\n", - "yarely\n", - "yarer\n", - "yarest\n", - "yarmelke\n", - "yarmelkes\n", - "yarmulke\n", - "yarmulkes\n", - "yarn\n", - "yarned\n", - "yarning\n", - "yarns\n", - "yarrow\n", - "yarrows\n", - "yashmac\n", - "yashmacs\n", - "yashmak\n", - "yashmaks\n", - "yasmak\n", - "yasmaks\n", - "yatagan\n", - "yatagans\n", - "yataghan\n", - "yataghans\n", - "yaud\n", - "yauds\n", - "yauld\n", - "yaup\n", - "yauped\n", - "yauper\n", - "yaupers\n", - "yauping\n", - "yaupon\n", - "yaupons\n", - "yaups\n", - "yaw\n", - "yawed\n", - "yawing\n", - "yawl\n", - "yawled\n", - "yawling\n", - "yawls\n", - "yawmeter\n", - "yawmeters\n", - "yawn\n", - "yawned\n", - "yawner\n", - "yawners\n", - "yawning\n", - "yawns\n", - "yawp\n", - "yawped\n", - "yawper\n", - "yawpers\n", - "yawping\n", - "yawpings\n", - "yawps\n", - "yaws\n", - "yay\n", - "ycleped\n", - "yclept\n", - "ye\n", - "yea\n", - "yeah\n", - "yealing\n", - "yealings\n", - "yean\n", - "yeaned\n", - "yeaning\n", - "yeanling\n", - "yeanlings\n", - "yeans\n", - "year\n", - "yearbook\n", - "yearbooks\n", - "yearlies\n", - "yearling\n", - "yearlings\n", - "yearlong\n", - "yearly\n", - "yearn\n", - "yearned\n", - "yearner\n", - "yearners\n", - "yearning\n", - "yearnings\n", - "yearns\n", - "years\n", - "yeas\n", - "yeast\n", - "yeasted\n", - "yeastier\n", - "yeastiest\n", - "yeastily\n", - "yeasting\n", - "yeasts\n", - "yeasty\n", - "yeelin\n", - "yeelins\n", - "yegg\n", - "yeggman\n", - "yeggmen\n", - "yeggs\n", - "yeh\n", - "yeld\n", - "yelk\n", - "yelks\n", - "yell\n", - "yelled\n", - "yeller\n", - "yellers\n", - "yelling\n", - "yellow\n", - "yellowed\n", - "yellower\n", - "yellowest\n", - "yellowing\n", - "yellowly\n", - "yellows\n", - "yellowy\n", - "yells\n", - "yelp\n", - "yelped\n", - "yelper\n", - "yelpers\n", - "yelping\n", - "yelps\n", - "yen\n", - "yenned\n", - "yenning\n", - "yens\n", - "yenta\n", - "yentas\n", - "yeoman\n", - "yeomanly\n", - "yeomanries\n", - "yeomanry\n", - "yeomen\n", - "yep\n", - "yerba\n", - "yerbas\n", - "yerk\n", - "yerked\n", - "yerking\n", - "yerks\n", - "yes\n", - "yeses\n", - "yeshiva\n", - "yeshivah\n", - "yeshivahs\n", - "yeshivas\n", - "yeshivoth\n", - "yessed\n", - "yesses\n", - "yessing\n", - "yester\n", - "yesterday\n", - "yesterdays\n", - "yestern\n", - "yestreen\n", - "yestreens\n", - "yet\n", - "yeti\n", - "yetis\n", - "yett\n", - "yetts\n", - "yeuk\n", - "yeuked\n", - "yeuking\n", - "yeuks\n", - "yeuky\n", - "yew\n", - "yews\n", - "yid\n", - "yids\n", - "yield\n", - "yielded\n", - "yielder\n", - "yielders\n", - "yielding\n", - "yields\n", - "yill\n", - "yills\n", - "yin\n", - "yince\n", - "yins\n", - "yip\n", - "yipe\n", - "yipes\n", - "yipped\n", - "yippee\n", - "yippie\n", - "yippies\n", - "yipping\n", - "yips\n", - "yird\n", - "yirds\n", - "yirr\n", - "yirred\n", - "yirring\n", - "yirrs\n", - "yirth\n", - "yirths\n", - "yod\n", - "yodel\n", - "yodeled\n", - "yodeler\n", - "yodelers\n", - "yodeling\n", - "yodelled\n", - "yodeller\n", - "yodellers\n", - "yodelling\n", - "yodels\n", - "yodh\n", - "yodhs\n", - "yodle\n", - "yodled\n", - "yodler\n", - "yodlers\n", - "yodles\n", - "yodling\n", - "yods\n", - "yoga\n", - "yogas\n", - "yogee\n", - "yogees\n", - "yogh\n", - "yoghourt\n", - "yoghourts\n", - "yoghs\n", - "yoghurt\n", - "yoghurts\n", - "yogi\n", - "yogic\n", - "yogin\n", - "yogini\n", - "yoginis\n", - "yogins\n", - "yogis\n", - "yogurt\n", - "yogurts\n", - "yoicks\n", - "yoke\n", - "yoked\n", - "yokel\n", - "yokeless\n", - "yokelish\n", - "yokels\n", - "yokemate\n", - "yokemates\n", - "yokes\n", - "yoking\n", - "yolk\n", - "yolked\n", - "yolkier\n", - "yolkiest\n", - "yolks\n", - "yolky\n", - "yom\n", - "yomim\n", - "yon\n", - "yond\n", - "yonder\n", - "yoni\n", - "yonis\n", - "yonker\n", - "yonkers\n", - "yore\n", - "yores\n", - "you\n", - "young\n", - "younger\n", - "youngers\n", - "youngest\n", - "youngish\n", - "youngs\n", - "youngster\n", - "youngsters\n", - "younker\n", - "younkers\n", - "youpon\n", - "youpons\n", - "your\n", - "yourn\n", - "yours\n", - "yourself\n", - "yourselves\n", - "youse\n", - "youth\n", - "youthen\n", - "youthened\n", - "youthening\n", - "youthens\n", - "youthful\n", - "youthfully\n", - "youthfulness\n", - "youthfulnesses\n", - "youths\n", - "yow\n", - "yowe\n", - "yowed\n", - "yowes\n", - "yowie\n", - "yowies\n", - "yowing\n", - "yowl\n", - "yowled\n", - "yowler\n", - "yowlers\n", - "yowling\n", - "yowls\n", - "yows\n", - "yperite\n", - "yperites\n", - "ytterbia\n", - "ytterbias\n", - "ytterbic\n", - "yttria\n", - "yttrias\n", - "yttric\n", - "yttrium\n", - "yttriums\n", - "yuan\n", - "yuans\n", - "yucca\n", - "yuccas\n", - "yuga\n", - "yugas\n", - "yuk\n", - "yukked\n", - "yukking\n", - "yuks\n", - "yulan\n", - "yulans\n", - "yule\n", - "yules\n", - "yuletide\n", - "yuletides\n", - "yummier\n", - "yummies\n", - "yummiest\n", - "yummy\n", - "yup\n", - "yupon\n", - "yupons\n", - "yurt\n", - "yurta\n", - "yurts\n", - "ywis\n", - "zabaione\n", - "zabaiones\n", - "zabajone\n", - "zabajones\n", - "zacaton\n", - "zacatons\n", - "zaddik\n", - "zaddikim\n", - "zaffar\n", - "zaffars\n", - "zaffer\n", - "zaffers\n", - "zaffir\n", - "zaffirs\n", - "zaffre\n", - "zaffres\n", - "zaftig\n", - "zag\n", - "zagged\n", - "zagging\n", - "zags\n", - "zaibatsu\n", - "zaire\n", - "zaires\n", - "zamarra\n", - "zamarras\n", - "zamarro\n", - "zamarros\n", - "zamia\n", - "zamias\n", - "zamindar\n", - "zamindars\n", - "zanana\n", - "zananas\n", - "zander\n", - "zanders\n", - "zanier\n", - "zanies\n", - "zaniest\n", - "zanily\n", - "zaniness\n", - "zaninesses\n", - "zany\n", - "zanyish\n", - "zanza\n", - "zanzas\n", - "zap\n", - "zapateo\n", - "zapateos\n", - "zapped\n", - "zapping\n", - "zaps\n", - "zaptiah\n", - "zaptiahs\n", - "zaptieh\n", - "zaptiehs\n", - "zaratite\n", - "zaratites\n", - "zareba\n", - "zarebas\n", - "zareeba\n", - "zareebas\n", - "zarf\n", - "zarfs\n", - "zariba\n", - "zaribas\n", - "zarzuela\n", - "zarzuelas\n", - "zastruga\n", - "zastrugi\n", - "zax\n", - "zaxes\n", - "zayin\n", - "zayins\n", - "zeal\n", - "zealot\n", - "zealotries\n", - "zealotry\n", - "zealots\n", - "zealous\n", - "zealously\n", - "zealousness\n", - "zealousnesses\n", - "zeals\n", - "zeatin\n", - "zeatins\n", - "zebec\n", - "zebeck\n", - "zebecks\n", - "zebecs\n", - "zebra\n", - "zebraic\n", - "zebras\n", - "zebrass\n", - "zebrasses\n", - "zebrine\n", - "zebroid\n", - "zebu\n", - "zebus\n", - "zecchin\n", - "zecchini\n", - "zecchino\n", - "zecchinos\n", - "zecchins\n", - "zechin\n", - "zechins\n", - "zed\n", - "zedoaries\n", - "zedoary\n", - "zeds\n", - "zee\n", - "zees\n", - "zein\n", - "zeins\n", - "zeitgeist\n", - "zeitgeists\n", - "zelkova\n", - "zelkovas\n", - "zemindar\n", - "zemindars\n", - "zemstvo\n", - "zemstvos\n", - "zenana\n", - "zenanas\n", - "zenith\n", - "zenithal\n", - "zeniths\n", - "zeolite\n", - "zeolites\n", - "zeolitic\n", - "zephyr\n", - "zephyrs\n", - "zeppelin\n", - "zeppelins\n", - "zero\n", - "zeroed\n", - "zeroes\n", - "zeroing\n", - "zeros\n", - "zest\n", - "zested\n", - "zestful\n", - "zestfully\n", - "zestfulness\n", - "zestfulnesses\n", - "zestier\n", - "zestiest\n", - "zesting\n", - "zests\n", - "zesty\n", - "zeta\n", - "zetas\n", - "zeugma\n", - "zeugmas\n", - "zibeline\n", - "zibelines\n", - "zibet\n", - "zibeth\n", - "zibeths\n", - "zibets\n", - "zig\n", - "zigged\n", - "zigging\n", - "ziggurat\n", - "ziggurats\n", - "zigs\n", - "zigzag\n", - "zigzagged\n", - "zigzagging\n", - "zigzags\n", - "zikkurat\n", - "zikkurats\n", - "zikurat\n", - "zikurats\n", - "zilch\n", - "zilches\n", - "zillah\n", - "zillahs\n", - "zillion\n", - "zillions\n", - "zinc\n", - "zincate\n", - "zincates\n", - "zinced\n", - "zincic\n", - "zincified\n", - "zincifies\n", - "zincify\n", - "zincifying\n", - "zincing\n", - "zincite\n", - "zincites\n", - "zincked\n", - "zincking\n", - "zincky\n", - "zincoid\n", - "zincous\n", - "zincs\n", - "zincy\n", - "zing\n", - "zingani\n", - "zingano\n", - "zingara\n", - "zingare\n", - "zingari\n", - "zingaro\n", - "zinged\n", - "zingier\n", - "zingiest\n", - "zinging\n", - "zings\n", - "zingy\n", - "zinkified\n", - "zinkifies\n", - "zinkify\n", - "zinkifying\n", - "zinky\n", - "zinnia\n", - "zinnias\n", - "zip\n", - "zipped\n", - "zipper\n", - "zippered\n", - "zippering\n", - "zippers\n", - "zippier\n", - "zippiest\n", - "zipping\n", - "zippy\n", - "zips\n", - "ziram\n", - "zirams\n", - "zircon\n", - "zirconia\n", - "zirconias\n", - "zirconic\n", - "zirconium\n", - "zirconiums\n", - "zircons\n", - "zither\n", - "zithern\n", - "zitherns\n", - "zithers\n", - "ziti\n", - "zitis\n", - "zizith\n", - "zizzle\n", - "zizzled\n", - "zizzles\n", - "zizzling\n", - "zloty\n", - "zlotys\n", - "zoa\n", - "zoaria\n", - "zoarial\n", - "zoarium\n", - "zodiac\n", - "zodiacal\n", - "zodiacs\n", - "zoea\n", - "zoeae\n", - "zoeal\n", - "zoeas\n", - "zoftig\n", - "zoic\n", - "zoisite\n", - "zoisites\n", - "zombi\n", - "zombie\n", - "zombies\n", - "zombiism\n", - "zombiisms\n", - "zombis\n", - "zonal\n", - "zonally\n", - "zonary\n", - "zonate\n", - "zonated\n", - "zonation\n", - "zonations\n", - "zone\n", - "zoned\n", - "zoneless\n", - "zoner\n", - "zoners\n", - "zones\n", - "zonetime\n", - "zonetimes\n", - "zoning\n", - "zonked\n", - "zonula\n", - "zonulae\n", - "zonular\n", - "zonulas\n", - "zonule\n", - "zonules\n", - "zoo\n", - "zoochore\n", - "zoochores\n", - "zoogenic\n", - "zooglea\n", - "zoogleae\n", - "zoogleal\n", - "zoogleas\n", - "zoogloea\n", - "zoogloeae\n", - "zoogloeas\n", - "zooid\n", - "zooidal\n", - "zooids\n", - "zooks\n", - "zoolater\n", - "zoolaters\n", - "zoolatries\n", - "zoolatry\n", - "zoologic\n", - "zoological\n", - "zoologies\n", - "zoologist\n", - "zoologists\n", - "zoology\n", - "zoom\n", - "zoomania\n", - "zoomanias\n", - "zoomed\n", - "zoometries\n", - "zoometry\n", - "zooming\n", - "zoomorph\n", - "zoomorphs\n", - "zooms\n", - "zoon\n", - "zoonal\n", - "zoonoses\n", - "zoonosis\n", - "zoonotic\n", - "zoons\n", - "zoophile\n", - "zoophiles\n", - "zoophyte\n", - "zoophytes\n", - "zoos\n", - "zoosperm\n", - "zoosperms\n", - "zoospore\n", - "zoospores\n", - "zootomic\n", - "zootomies\n", - "zootomy\n", - "zori\n", - "zoril\n", - "zorilla\n", - "zorillas\n", - "zorille\n", - "zorilles\n", - "zorillo\n", - "zorillos\n", - "zorils\n", - "zoster\n", - "zosters\n", - "zouave\n", - "zouaves\n", - "zounds\n", - "zowie\n", - "zoysia\n", - "zoysias\n", - "zucchini\n", - "zucchinis\n", - "zwieback\n", - "zwiebacks\n", - "zygoma\n", - "zygomas\n", - "zygomata\n", - "zygose\n", - "zygoses\n", - "zygosis\n", - "zygosities\n", - "zygosity\n", - "zygote\n", - "zygotene\n", - "zygotenes\n", - "zygotes\n", - "zygotic\n", - "zymase\n", - "zymases\n", - "zyme\n", - "zymes\n", - "zymogen\n", - "zymogene\n", - "zymogenes\n", - "zymogens\n", - "zymologies\n", - "zymology\n", - "zymoses\n", - "zymosis\n", - "zymotic\n", - "zymurgies\n", - "zymurgy\n" - ] - } - ], - "source": [ - "for line in open('words.txt'):\n", - " word = line.strip()\n", - " print(word)" - ] - }, - { - "cell_type": "markdown", - "id": "93e320a5-4827-487e-a8ce-216392f398a8", - "metadata": {}, - "source": [ - "Now that we can read the word list, the next step is to count them.\n", - "For that, we will need the ability to update variables." - ] - }, - { - "cell_type": "markdown", - "id": "b63a6877", - "metadata": {}, - "source": [ - "## Updating variables\n", - "\n", - "As you may have discovered, it is legal to make more than one assignment\n", - "to the same variable.\n", - "A new assignment makes an existing variable refer to a new value (and stop referring to the old value).\n", - "\n", - "For example, here is an initial assignment that creates a variable." - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "6bf8a104", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "5" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "x = 5\n", - "x" - ] - }, - { - "cell_type": "markdown", - "id": "c9735982", - "metadata": {}, - "source": [ - "And here is an assignment that changes the value of a variable." - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "0fe7ae60", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "7" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "x = 7\n", - "x" - ] - }, - { - "cell_type": "markdown", - "id": "fbcd1092-ce06-47fc-9204-fce1c9a100a5", - "metadata": {}, - "source": [ - "The following figure shows what these assignments looks like in a state diagram." - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "8a09bc24", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "from diagram import make_rebind, draw_bindings\n", - "\n", - "bindings = make_rebind('x', [5, 7])" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "36a45674-7f41-4850-98f1-2548574ce958", - "metadata": { - "tags": [ - "remove-input" - ] - }, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEoAAABRCAYAAAB1wTApAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAFjElEQVR4nO2aX0hTURzHP9ZcZeDDgkiTtQhXYdJd0l9W9BChZv8s5kMQUtCz0GsPPRS92Fv0EEl/Hoo7pChtRH+opBURidAtqDVb2UIXuSzdXOlOD6FkYZ073D88n7dxz7nf3z6ce3bv765ACCFQ/JcZ2S4gX1CiJFGiJFGiJFGiJFGiJFGiJFGiJFGiJFGiJFGiJFGiJFGiJFGiJFGiJFGiJFGiJFGiJFGiJFGiJJlWohwOB0uXLkXTNDRNQ9d16bmWNNaVk+i6jqZppueZWlGvXr2irKyM7u5uAJqbm6muriaZTJoOngqCwSBnz57FMIz0hwmTXLp0SVRVVYl79+4Jh8MhIpGI2VNMGd++fROXL18Wx44dE4lEQkQiETE6Ojrp+EWLFonKykqxYsUKceDAAVO1Fwhh/gXooUOHuHDhAnfv3sXtdv91/OHDh/T09LB48WJcLhc+n49EIoHb7UYIgd/vZ9asWdTW1tLZ2UkoFMJut7NmzRpu3LhBPB5nw4YNFBYW0tHRgdVqpaamBsMwePPmDaWlpbjdbtrb24nFYqxevRqr1cq5c+fG6yspKfmrrvfv32O32/nx4wdHjhzh+fPn+Hw+qe9seo8aGRnBMAxsNhvhcNjs9LQQjUbp7e3FbrcTiUQmHWe32wEoLCykqakJp9MpH2J2uR8+fFg0NjaKQCAgysrKRCAQmHD85cuX4syZM6Kvr8/sqVMiFAqJo0ePilOnTol4PD7puMHBQRGNRsc/nzx5UmzcuFE6x5SotrY2UVFRIYaGhoQQQni9XuFyuSYUODAwIE6fPi2OHz8uDMMwc/qUSCQSIhgM/nNvEkKIYDAoNE0b36N27Ngh3r59K52T0h71P75//05bWxuGYbB+/Xq2bNnCjBn5fcuWFlEAQgiePHnCrVu3cDgc7Nmzh7lz56YjKiOkTdQYoVCI1tZWZs6cicfjYeHChemMSxtpFwXw9etXvF4vvb291NbWsmrVqnRHTjkZEQW/bitu3rzJs2fPqKqqorq6Goslf56gMiZqjM7OTnw+HwsWLMDj8VBcXJzJ+JTJuCiAcDiM1+tldHSUvXv34nA4Ml2CabIiCmBoaIjW1lbevXvH1q1bWbt2LQUFBdkoRYqsiQJIJpPcuXOHx48fU1lZSV1dHVarNVvl/JOsihrjxYsXXLt2DZvNhsfjwWazZbukv8gJUQCRSARd14nFYtTX11NeXp7tkiaQM6IAhoeHuXr1Kq9fv2bz5s1s2rQpZ/atnBIFvx59Ojo6uH//Pk6nk927dzN79uxsl5V7osYIBAJcuXKFoqIiGhoamD9/flbryVlRAP39/ei6TjQaZefOnVRUVGStlpwWBbnTssl5UZAbLZu8EDXG7y2bhoYGSktLM5adV6JgYstm27ZtuFyujOTmXX+2uLiYxsZGNE3j+vXrtLe3MzIywvDwMBcvXmRgYCAtuXknCsBisVBXV8f27dvp6uri/PnzxGIx+vr68Pv9acnMu0vvT35v2ZSXl2MYBk1NTVO+2eflivqdZDJJTU0N8+bNo6ura/wX8k8+f/48/i8WTdNwOp1YLBb6+/ulcvKnFzsJt2/fpqenB4A5c+YQj8fx+/2sW7eOoqKi8XFjIsdobm7mwYMH0p2KvL/0kskknz594uPHj4TDYbq7u/ny5Qv79u1jyZIlk85bvnw5J06cYNeuXVI5eS8qFR49ekR9fT0fPnyQfsGR93tUKrS0tLB//35Tb4Gm3YoaHBykpKSEp0+fsmzZMul5025F6brOypUrTUmCaSiqpaWFgwcPmp437S69VJl2KypVlChJlChJlChJlChJlChJlChJlChJlChJlChJlChJlChJlChJlChJlChJlChJlChJlChJlChJlChJlChJfgK8UCelXuNBgAAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from diagram import diagram, adjust\n", - "\n", - "width, height, x, y = [0.54, 0.61, 0.07, 0.45]\n", - "ax = diagram(width, height)\n", - "bbox = draw_bindings(bindings, ax, x, y)\n", - "# adjust(x, y, bbox)" - ] - }, - { - "cell_type": "markdown", - "id": "42b7b044-f83b-4483-9a24-64980c688c94", - "metadata": {}, - "source": [ - "The dotted arrow indicates that `x` no longer refers to `5`.\n", - "The solid arrow indicates that it now refers to `7`.\n", - "\n", - "A common kind of assignment is an **update**, where the new value of\n", - "the variable depends on the old." - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "ba2ab90b", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "x = 7" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "88496dc4", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "8" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "x = x + 1\n", - "x" - ] - }, - { - "cell_type": "markdown", - "id": "d3025706", - "metadata": {}, - "source": [ - "This statement means \"get the current value of `x`, add one, and assign the result back to `x`.\"\n", - "\n", - "If you try to update a variable that doesn't exist, you get an error, because Python evaluates the expression on the right before it assigns a value to the variable on the left." - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "4a0c46b9", - "metadata": { - "tags": [ - "raises-exception" - ] - }, - "outputs": [ - { - "ename": "NameError", - "evalue": "name 'z' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[0;31mNameError\u001b[0m\u001b[0;31m:\u001b[0m name 'z' is not defined\n" - ] - } - ], - "source": [ - "%%expect NameError\n", - "\n", - "z = z + 1" - ] - }, - { - "cell_type": "markdown", - "id": "03d3959f", - "metadata": {}, - "source": [ - "Before you can update a variable, you have to **initialize** it, usually\n", - "with a simple assignment:" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "2220d826", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "1" - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "z = 0\n", - "z = z + 1\n", - "z" - ] - }, - { - "cell_type": "markdown", - "id": "374fb3d5", - "metadata": {}, - "source": [ - "Increasing the value of a variable is called an **increment**; decreasing the value is called a **decrement**.\n", - "Because these operations are so common, Python provides **augmented assignment operators** that update a variable more concisely.\n", - "For example, the `+=` operator increments a variable by the given amount." - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "d8e1ac5a", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "3" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "z += 2\n", - "z" - ] - }, - { - "cell_type": "markdown", - "id": "3f4eedf1", - "metadata": {}, - "source": [ - "There are augmented assignment operators for the other arithmetic operators, including `-=` and `*=`." - ] - }, - { - "cell_type": "markdown", - "id": "70eeef60-6a34-403a-96bb-aa5c4574a5fe", - "metadata": {}, - "source": [ - "## Looping and counting\n", - "\n", - "The following program counts the number of words in the word list." - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "0afd8f88", - "metadata": {}, - "outputs": [], - "source": [ - "total = 0\n", - "\n", - "for line in open('words.txt'):\n", - " word = line.strip()\n", - " total += 1" - ] - }, - { - "cell_type": "markdown", - "id": "9bd83ddd", - "metadata": {}, - "source": [ - "It starts by initializing `total` to `0`.\n", - "Each time through the loop, it increments `total` by `1`.\n", - "So when the loop exits, `total` refers to the total number of words." - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "8686b2eb-c610-4d29-a942-2ef8f53e5e36", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "113783" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "total" - ] - }, - { - "cell_type": "markdown", - "id": "54904394", - "metadata": {}, - "source": [ - "A variable like this, used to count the number of times something happens, is called a **counter**.\n", - "\n", - "We can add a second counter to the program to keep track of the number of words that contain an \"e\"." - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "89a05280", - "metadata": {}, - "outputs": [], - "source": [ - "total = 0\n", - "count = 0\n", - "\n", - "for line in open('words.txt'):\n", - " word = line.strip()\n", - " total = total + 1\n", - " if has_e(word):\n", - " count += 1" - ] - }, - { - "cell_type": "markdown", - "id": "ab73c1e3", - "metadata": {}, - "source": [ - "Let's see how many words contain an \"e\"." - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "9d29b5e9", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "76162" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "count" - ] - }, - { - "cell_type": "markdown", - "id": "d2262e64", - "metadata": {}, - "source": [ - "As a percentage of `total`, about two-thirds of the words use the letter \"e\"." - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "304dfd86", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "66.93618554617122" - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "count / total * 100" - ] - }, - { - "cell_type": "markdown", - "id": "fe002dde", - "metadata": {}, - "source": [ - "So you can understand why it's difficult to craft a book without using any such words." - ] - }, - { - "cell_type": "markdown", - "id": "632a992f", - "metadata": {}, - "source": [ - "## The in operator\n", - "\n", - "The version of `has_e` we wrote in this chapter is more complicated than it needs to be.\n", - "Python provides an operator, `in`, that checks whether a character appears in a string." - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "id": "fe6431b7", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 30, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "word = 'Gadsby'\n", - "'e' in word" - ] - }, - { - "cell_type": "markdown", - "id": "ede36fe9", - "metadata": {}, - "source": [ - "So we can rewrite `has_e` like this." - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "id": "85d3fba6", - "metadata": {}, - "outputs": [], - "source": [ - "def has_e(word):\n", - " if 'E' in word or 'e' in word:\n", - " return True\n", - " else:\n", - " return False" - ] - }, - { - "cell_type": "markdown", - "id": "f86f6fc7", - "metadata": {}, - "source": [ - "And because the conditional of the `if` statement has a boolean value, we can eliminate the `if` statement and return the boolean directly." - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "id": "2d653847", - "metadata": {}, - "outputs": [], - "source": [ - "def has_e(word):\n", - " return 'E' in word or 'e' in word" - ] - }, - { - "cell_type": "markdown", - "id": "f2a05319", - "metadata": {}, - "source": [ - "We can simplify this function even more using the method `lower`, which converts the letters in a string to lowercase.\n", - "Here's an example." - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "id": "a92a81bc", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'gadsby'" - ] - }, - "execution_count": 33, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "word.lower()" - ] - }, - { - "cell_type": "markdown", - "id": "57aa625a", - "metadata": {}, - "source": [ - "`lower` makes a new string -- it does not modify the existing string -- so the value of `word` is unchanged. " - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "id": "d15f83a4", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'Gadsby'" - ] - }, - "execution_count": 34, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "word" - ] - }, - { - "cell_type": "markdown", - "id": "9f0bd075", - "metadata": {}, - "source": [ - "Here's how we can use `lower` in `has_e`." - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "id": "e7958af4", - "metadata": {}, - "outputs": [], - "source": [ - "def has_e(word):\n", - " return 'e' in word.lower()" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "id": "020a57a7", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 36, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "has_e('Gadsby')" - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "id": "0b979b20", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 37, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "has_e('Emma')" - ] - }, - { - "cell_type": "markdown", - "id": "1c39cb6b", - "metadata": {}, - "source": [ - "## Search\n", - "\n", - "Based on this simpler version of `has_e`, let's write a more general function called `uses_any` that takes a second parameter that is a string of letters.\n", - "It returns `True` if the word uses any of the letters and `False` otherwise." - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "id": "bd29ff63", - "metadata": {}, - "outputs": [], - "source": [ - "def uses_any(word, letters):\n", - " for letter in word.lower():\n", - " if letter in letters.lower():\n", - " return True\n", - " return False" - ] - }, - { - "cell_type": "markdown", - "id": "dc2d6290", - "metadata": {}, - "source": [ - "Here's an example where the result is `True`." - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "id": "9369fb05", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 39, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "uses_any('banana', 'aeiou')" - ] - }, - { - "cell_type": "markdown", - "id": "2c3c1553", - "metadata": {}, - "source": [ - "And another where it is `False`." - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "id": "eb32713a", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 40, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "uses_any('apple', 'xyz')" - ] - }, - { - "cell_type": "markdown", - "id": "b2acc611", - "metadata": {}, - "source": [ - "`uses_any` converts `word` and `letters` to lowercase, so it works with any combination of cases. " - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "id": "7e65a9fb", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 41, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "uses_any('Banana', 'AEIOU')" - ] - }, - { - "cell_type": "markdown", - "id": "673786a5", - "metadata": {}, - "source": [ - "The structure of `uses_any` is similar to `has_e`.\n", - "It loops through the letters in `word` and checks them one at a time.\n", - "If it finds one that appears in `letters`, it returns `True` immediately.\n", - "If it gets all the way through the loop without finding any, it returns `False`.\n", - "\n", - "This pattern is called a **linear search**.\n", - "In the exercises at the end of this chapter, you'll write more functions that use this pattern." - ] - }, - { - "cell_type": "markdown", - "id": "62cdb3fc", - "metadata": {}, - "source": [ - "## Doctest\n", - "\n", - "In [Chapter 4](section_docstring) we used a docstring to document a function -- that is, to explain what it does.\n", - "It is also possible to use a docstring to *test* a function.\n", - "Here's a version of `uses_any` with a docstring that includes tests." - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "id": "3982e7d3", - "metadata": {}, - "outputs": [], - "source": [ - "def uses_any(word, letters):\n", - " \"\"\"Checks if a word uses any of a list of letters.\n", - " \n", - " >>> uses_any('banana', 'aeiou')\n", - " True\n", - " >>> uses_any('apple', 'xyz')\n", - " False\n", - " \"\"\"\n", - " for letter in word.lower():\n", - " if letter in letters.lower():\n", - " return True\n", - " return False" - ] - }, - { - "cell_type": "markdown", - "id": "2871d018", - "metadata": {}, - "source": [ - "Each test begins with `>>>`, which is used as a prompt in some Python environments to indicate where the user can type code.\n", - "In a doctest, the prompt is followed by an expression, usually a function call.\n", - "The following line indicates the value the expression should have if the function works correctly.\n", - "\n", - "In the first example, `'banana'` uses `'a'`, so the result should be `True`.\n", - "In the second example, `'apple'` does not use any of `'xyz'`, so the result should be `False`.\n", - "\n", - "To run these tests, we have to import the `doctest` module and run a function called `run_docstring_examples`.\n", - "To make this function easier to use, I wrote the following function, which takes a function object as an argument." - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "id": "40ef00d3", - "metadata": {}, - "outputs": [], - "source": [ - "from doctest import run_docstring_examples\n", - "\n", - "def run_doctests(func):\n", - " run_docstring_examples(func, globals(), name=func.__name__)" - ] - }, - { - "cell_type": "markdown", - "id": "79e3de21", - "metadata": {}, - "source": [ - "We haven't learned about `globals` and `__name__` yet -- you can ignore them.\n", - "Now we can test `uses_any` like this." - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "id": "f37cfd36", - "metadata": {}, - "outputs": [], - "source": [ - "run_doctests(uses_any)" - ] - }, - { - "cell_type": "markdown", - "id": "432d8c31", - "metadata": {}, - "source": [ - "`run_doctests` finds the expressions in the docstring and evaluates them.\n", - "If the result is the expected value, the test **passes**.\n", - "Otherwise it **fails**.\n", - "\n", - "If all tests pass, `run_doctests` displays no output -- in that case, no news is good news.\n", - "To see what happens when a test fails, here's an incorrect version of `uses_any`." - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "id": "58c916cc", - "metadata": {}, - "outputs": [], - "source": [ - "def uses_any_incorrect(word, letters):\n", - " \"\"\"Checks if a word uses any of a list of letters.\n", - " \n", - " >>> uses_any_incorrect('banana', 'aeiou')\n", - " True\n", - " >>> uses_any_incorrect('apple', 'xyz')\n", - " False\n", - " \"\"\"\n", - " for letter in word.lower():\n", - " if letter in letters.lower():\n", - " return True\n", - " else:\n", - " return False # INCORRECT!" - ] - }, - { - "cell_type": "markdown", - "id": "34b78be4", - "metadata": {}, - "source": [ - "And here's what happens when we test it." - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "id": "7a325745", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "**********************************************************************\n", - "File \"__main__\", line 4, in uses_any_incorrect\n", - "Failed example:\n", - " uses_any_incorrect('banana', 'aeiou')\n", - "Expected:\n", - " True\n", - "Got:\n", - " False\n" - ] - } - ], - "source": [ - "run_doctests(uses_any_incorrect)" - ] - }, - { - "cell_type": "markdown", - "id": "473aa6ec", - "metadata": {}, - "source": [ - "The output includes the example that failed, the value the function was expected to produce, and the value the function actually produced.\n", - "\n", - "If you are not sure why this test failed, you'll have a chance to debug it as an exercise." - ] - }, - { - "cell_type": "markdown", - "id": "382c134e", - "metadata": {}, - "source": [ - "## Glossary\n", - "\n", - "**loop variable:**\n", - "A variable defined in the header of a `for` loop.\n", - "\n", - "**file object:**\n", - "An object that represents an open file and keeps track of which parts of the file have been read or written.\n", - "\n", - "**method:**\n", - " A function that is associated with an object and called using the dot operator.\n", - "\n", - "**update:**\n", - "An assignment statement that give a new value to a variable that already exists, rather than creating a new variables.\n", - "\n", - "**initialize:**\n", - "Create a new variable and give it a value.\n", - "\n", - "**increment:**\n", - "Increase the value of a variable.\n", - "\n", - "**decrement:**\n", - "Decrease the value of a variable.\n", - "\n", - "**counter:**\n", - " A variable used to count something, usually initialized to zero and then incremented.\n", - "\n", - "**linear search:**\n", - "A computational pattern that searches through a sequence of elements and stops when it finds what it is looking for.\n", - "\n", - "**pass:**\n", - "If a test runs and the result is as expected, the test passes.\n", - "\n", - "**fail:**\n", - "If a test runs and the result is not as expected, the test fails." - ] - }, - { - "cell_type": "markdown", - "id": "0a2b3510-e8d3-439b-a771-a4a58db6ac59", - "metadata": {}, - "source": [ - "## Exercises" - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "id": "bc58db59", - "metadata": { - "tags": [ - "remove-print" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Exception reporting mode: Verbose\n" - ] - } - ], - "source": [ - "# This cell tells Jupyter to provide detailed debugging information\n", - "# when a runtime error occurs. Run it before working on the exercises.\n", - "\n", - "%xmode Verbose" - ] - }, - { - "cell_type": "markdown", - "id": "8e8606b8-9a48-4cbd-a0b0-ea848666c77d", - "metadata": {}, - "source": [ - "### Ask a virtual assistant\n", - "\n", - "In `uses_any`, you might have noticed that the first `return` statement is inside the loop and the second is outside." - ] - }, - { - "cell_type": "code", - "execution_count": 48, - "id": "6b3cdf6a-0e90-4a98-b0f1-ab95dd195ca7", - "metadata": {}, - "outputs": [], - "source": [ - "def uses_any(word, letters):\n", - " for letter in word.lower():\n", - " if letter in letters.lower():\n", - " return True\n", - " return False" - ] - }, - { - "cell_type": "markdown", - "id": "e1920737-b485-4823-ac20-c1e35aa93e7f", - "metadata": {}, - "source": [ - "When people first write functions like this, it is a common error to put both `return` statements inside the loop, like this." - ] - }, - { - "cell_type": "code", - "execution_count": 49, - "id": "7cbb72b1", - "metadata": {}, - "outputs": [], - "source": [ - "def uses_any_incorrect(word, letters):\n", - " for letter in word.lower():\n", - " if letter in letters.lower():\n", - " return True\n", - " else:\n", - " return False # INCORRECT!" - ] - }, - { - "cell_type": "markdown", - "id": "d9b46591-6c80-4ff8-9378-e9318ce5e429", - "metadata": {}, - "source": [ - "Ask a virtual assistant what's wrong with this version." - ] - }, - { - "cell_type": "markdown", - "id": "99eff99e", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "Write a function named `uses_none` that takes a word and a string of forbidden letters, and returns `True` if the word does not use any of the forbidden letters.\n", - "\n", - "Here's an outline of the function that includes two doctests.\n", - "Fill in the function so it passes these tests, and add at least one more doctest." - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "id": "6c825b80", - "metadata": {}, - "outputs": [], - "source": [ - "def uses_none(word, forbidden):\n", - " \"\"\"Checks whether a word avoid forbidden letters.\n", - " \n", - " >>> uses_none('banana', 'xyz')\n", - " True\n", - " >>> uses_none('apple', 'efg')\n", - " False\n", - " \"\"\"\n", - " return None" - ] - }, - { - "cell_type": "code", - "execution_count": 51, - "id": "86a6c2c8", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def uses_none(word, forbidden):\n", - " \"\"\"Checks whether a word avoid forbidden letters.\n", - " \n", - " >>> uses_none('banana', 'xyz')\n", - " True\n", - " >>> uses_none('apple', 'efg')\n", - " False\n", - " >>> uses_none('', 'abc')\n", - " True\n", - " \"\"\"\n", - " for letter in word.lower():\n", - " if letter in forbidden.lower():\n", - " return False\n", - " return True" - ] - }, - { - "cell_type": "code", - "execution_count": 52, - "id": "2bed91e7", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "run_doctests(uses_none)" - ] - }, - { - "cell_type": "markdown", - "id": "9465b09f-0c62-49f6-bbe2-365ecf1717ef", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "Write a function called `uses_only` that takes a word and a string of letters, and that returns `True` if the word contains only letters in the string.\n", - "\n", - "Here's an outline of the function that includes two doctests.\n", - "Fill in the function so it passes these tests, and add at least one more doctest." - ] - }, - { - "cell_type": "code", - "execution_count": 53, - "id": "d0d8c6d6", - "metadata": {}, - "outputs": [], - "source": [ - "def uses_only(word, available):\n", - " \"\"\"Checks whether a word uses only the available letters.\n", - " \n", - " >>> uses_only('banana', 'ban')\n", - " True\n", - " >>> uses_only('apple', 'apl')\n", - " False\n", - " \"\"\"\n", - " return None" - ] - }, - { - "cell_type": "code", - "execution_count": 54, - "id": "31de091e", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def uses_only(word, available):\n", - " \"\"\"Checks whether a word uses only the available letters.\n", - " \n", - " >>> uses_only('banana', 'ban')\n", - " True\n", - " >>> uses_only('ratatat', 'rate')\n", - " True\n", - " >>> uses_only('apple', 'apl')\n", - " False\n", - " \"\"\"\n", - " for letter in word.lower(): \n", - " if letter not in available.lower():\n", - " return False\n", - " return True" - ] - }, - { - "cell_type": "code", - "execution_count": 55, - "id": "8c5133d4", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "run_doctests(uses_only)" - ] - }, - { - "cell_type": "markdown", - "id": "74259f36", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "Write a function called `uses_all` that takes a word and a string of letters, and that returns `True` if the word contains all of the letters in the string at least once.\n", - "\n", - "Here's an outline of the function that includes two doctests.\n", - "Fill in the function so it passes these tests, and add at least one more doctest." - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "id": "18b73bc0", - "metadata": {}, - "outputs": [], - "source": [ - "def uses_all(word, required):\n", - " \"\"\"Checks whether a word uses all required letters.\n", - " \n", - " >>> uses_all('banana', 'ban')\n", - " True\n", - " >>> uses_all('apple', 'api')\n", - " False\n", - " \"\"\"\n", - " return None" - ] - }, - { - "cell_type": "code", - "execution_count": 57, - "id": "5c8be876", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def uses_all(word, required):\n", - " \"\"\"Checks whether a word uses all required letters.\n", - " \n", - " >>> uses_all('banana', 'ban')\n", - " True\n", - " >>> uses_all('ratatat', 'rat')\n", - " True\n", - " >>> uses_all('apple', 'api')\n", - " False\n", - " \"\"\"\n", - " for letter in required.lower(): \n", - " if letter not in word.lower():\n", - " return False\n", - " return True" - ] - }, - { - "cell_type": "code", - "execution_count": 58, - "id": "ad1fd6b9", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "run_doctests(uses_all)" - ] - }, - { - "cell_type": "markdown", - "id": "7210adfa", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "*The New York Times* publishes a daily puzzle called \"Spelling Bee\" that challenges readers to spell as many words as possible using only seven letters, where one of the letters is required.\n", - "The words must have at least four letters.\n", - "\n", - "For example, on the day I wrote this, the letters were `ACDLORT`, with `R` as the required letter.\n", - "So \"color\" is an acceptable word, but \"told\" is not, because it does not use `R`, and \"rat\" is not because it has only three letters.\n", - "Letters can be repeated, so \"ratatat\" is acceptable.\n", - "\n", - "Write a function called `check_word` that checks whether a given word is acceptable.\n", - "It should take as parameters the word to check, a string of seven available letters, and a string containing the single required letter.\n", - "You can use the functions you wrote in previous exercises.\n", - "\n", - "Here's an outline of the function that includes doctests.\n", - "Fill in the function and then check that all tests pass." - ] - }, - { - "cell_type": "code", - "execution_count": 59, - "id": "576ee509", - "metadata": {}, - "outputs": [], - "source": [ - "def check_word(word, available, required):\n", - " \"\"\"Check whether a word is acceptable.\n", - " \n", - " >>> check_word('color', 'ACDLORT', 'R')\n", - " True\n", - " >>> check_word('ratatat', 'ACDLORT', 'R')\n", - " True\n", - " >>> check_word('rat', 'ACDLORT', 'R')\n", - " False\n", - " >>> check_word('told', 'ACDLORT', 'R')\n", - " False\n", - " >>> check_word('bee', 'ACDLORT', 'R')\n", - " False\n", - " \"\"\"\n", - " return False" - ] - }, - { - "cell_type": "code", - "execution_count": 60, - "id": "a4d623b7", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def check_word(word, available, required):\n", - " \"\"\"Check whether a word is acceptable.\n", - " \n", - " >>> check_word('color', 'ACDLORT', 'R')\n", - " True\n", - " >>> check_word('ratatat', 'ACDLORT', 'R')\n", - " True\n", - " >>> check_word('rat', 'ACDLORT', 'R')\n", - " False\n", - " >>> check_word('told', 'ACDLORT', 'R')\n", - " False\n", - " >>> check_word('bee', 'ACDLORT', 'R')\n", - " False\n", - " \"\"\"\n", - " if len(word) < 4:\n", - " return False\n", - " \n", - " if not uses_all(word, required):\n", - " return False\n", - " \n", - " return uses_only(word, available)" - ] - }, - { - "cell_type": "code", - "execution_count": 61, - "id": "23ed7f79", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "run_doctests(check_word)" - ] - }, - { - "cell_type": "markdown", - "id": "0b9589fc", - "metadata": {}, - "source": [ - "According to the \"Spelling Bee\" rules,\n", - "\n", - "* Four-letter words are worth 1 point each.\n", - "\n", - "* Longer words earn 1 point per letter.\n", - "\n", - "* Each puzzle includes at least one \"pangram\" which uses every letter. These are worth 7 extra points!\n", - "\n", - "Write a function called `score_word` that takes a word and a string of available letters and returns its score.\n", - "You can assume that the word is acceptable.\n", - "\n", - "Again, here's an outline of the function with doctests." - ] - }, - { - "cell_type": "code", - "execution_count": 62, - "id": "11b69de0", - "metadata": {}, - "outputs": [], - "source": [ - "def word_score(word, available):\n", - " \"\"\"Compute the score for an acceptable word.\n", - " \n", - " >>> word_score('card', 'ACDLORT')\n", - " 1\n", - " >>> word_score('color', 'ACDLORT')\n", - " 5\n", - " >>> word_score('cartload', 'ACDLORT')\n", - " 15\n", - " \"\"\"\n", - " return 0" - ] - }, - { - "cell_type": "code", - "execution_count": 63, - "id": "eff4ac37", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def word_score(word, available):\n", - " \"\"\"Compute the score for an acceptable word.\n", - " \n", - " >>> word_score('card', 'ACDLORT')\n", - " 1\n", - " >>> word_score('color', 'ACDLORT')\n", - " 5\n", - " >>> word_score('cartload', 'ACDLORT')\n", - " 15\n", - " \"\"\"\n", - " n = len(word)\n", - " if n == 4:\n", - " return 1\n", - " \n", - " if uses_all(word, available):\n", - " return n + 7\n", - " else:\n", - " return n" - ] - }, - { - "cell_type": "code", - "execution_count": 64, - "id": "eb8e8745", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "run_doctests(word_score)" - ] - }, - { - "cell_type": "markdown", - "id": "82e5283b", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "When all of your functions pass their tests, use the following loop to search the word list for acceptable words and add up their scores." - ] - }, - { - "cell_type": "code", - "execution_count": 65, - "id": "6965f673", - "metadata": { - "tags": [ - "remove-output", - "remove-cell" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "accord 6\n", - "actor 5\n", - "alar 1\n", - "altar 5\n", - "aorta 5\n", - "aortal 6\n", - "arco 1\n", - "ardor 5\n", - "artal 5\n", - "attar 5\n", - "attract 7\n", - "calcar 6\n", - "caracal 7\n", - "caracara 8\n", - "caracol 7\n", - "carat 5\n", - "card 1\n", - "carl 1\n", - "carload 7\n", - "carol 5\n", - "carrot 6\n", - "cart 1\n", - "cartload 15\n", - "cataract 8\n", - "claro 5\n", - "collar 6\n", - "collard 7\n", - "collator 8\n", - "color 5\n", - "colorado 8\n", - "coral 5\n", - "cord 1\n", - "corolla 7\n", - "corral 6\n", - "cottar 6\n", - "craal 5\n", - "dart 1\n", - "doctor 6\n", - "doctoral 15\n", - "dollar 6\n", - "dolor 5\n", - "door 1\n", - "dorado 6\n", - "dorr 1\n", - "dotard 6\n", - "drat 1\n", - "droll 5\n", - "drool 5\n", - "lard 1\n", - "locator 7\n", - "loral 5\n", - "lord 1\n", - "odor 1\n", - "oral 1\n", - "orator 6\n", - "orca 1\n", - "ordo 1\n", - "orra 1\n", - "ottar 5\n", - "radar 5\n", - "ratal 5\n", - "ratatat 7\n", - "rato 1\n", - "road 1\n", - "roar 1\n", - "rococo 6\n", - "roll 1\n", - "rood 1\n", - "root 1\n", - "rota 1\n", - "rotator 7\n", - "rotl 1\n", - "roto 1\n", - "rotor 5\n", - "talar 5\n", - "tardo 5\n", - "taro 1\n", - "taroc 5\n", - "tarot 5\n", - "tart 1\n", - "tartar 6\n", - "tora 1\n", - "torc 1\n", - "toro 1\n", - "torr 1\n", - "tort 1\n", - "tract 5\n", - "tractor 7\n", - "trad 1\n", - "trocar 6\n", - "trod 1\n", - "troll 5\n", - "trot 1\n", - "Total score 388\n" - ] - } - ], - "source": [ - "available = 'ACDLORT'\n", - "required = 'R'\n", - "\n", - "total = 0\n", - "\n", - "file_object = open('words.txt')\n", - "for line in file_object:\n", - " word = line.strip() \n", - " if check_word(word, available, required):\n", - " score = word_score(word, available)\n", - " total = total + score\n", - " print(word, score)\n", - " \n", - "print(\"Total score\", total)" - ] - }, - { - "cell_type": "markdown", - "id": "dcc7d983", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "Visit the \"Spelling Bee\" page at and type in the available letters for the day. The letter in the middle is required.\n", - "\n", - "I found a set of letters that spells words with a total score of 5820. Can you beat that? Finding the best set of letters might be too hard -- you have to be a realist." - ] - }, - { - "cell_type": "markdown", - "id": "9ae466ed", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "You might have noticed that the functions you wrote in the previous exercises had a lot in common.\n", - "In fact, they are so similar you can often use one function to write another.\n", - "\n", - "For example, if a word uses none of a set forbidden letters, that means it doesn't use any. So we can write a version of `uses_none` like this." - ] - }, - { - "cell_type": "code", - "execution_count": 66, - "id": "d3aac2dd", - "metadata": {}, - "outputs": [], - "source": [ - "def uses_none(word, forbidden):\n", - " \"\"\"Checks whether a word avoids forbidden letters.\n", - " \n", - " >>> uses_none('banana', 'xyz')\n", - " True\n", - " >>> uses_none('apple', 'efg')\n", - " False\n", - " >>> uses_none('', 'abc')\n", - " True\n", - " \"\"\"\n", - " return not uses_any(word, forbidden)" - ] - }, - { - "cell_type": "code", - "execution_count": 67, - "id": "307c07e6", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "run_doctests(uses_none)" - ] - }, - { - "cell_type": "markdown", - "id": "32aa2c09", - "metadata": {}, - "source": [ - "There is also a similarity between `uses_only` and `uses_all` that you can take advantage of.\n", - "If you have a working version of `uses_only`, see if you can write a version of `uses_all` that calls `uses_only`." - ] - }, - { - "cell_type": "markdown", - "id": "fa758462", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "If you got stuck on the previous question, try asking a virtual assistant, \"Given a function, `uses_only`, which takes two strings and checks that the first uses only the letters in the second, use it to write `uses_all`, which takes two strings and checks whether the first uses all the letters in the second, allowing repeats.\"\n", - "\n", - "Use `run_doctests` to check the answer." - ] - }, - { - "cell_type": "code", - "execution_count": 68, - "id": "83c9d33c", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "# If A uses all of the letters in B, then B uses only the letters in A.\n", - "\n", - "def uses_all(word, required):\n", - " \"\"\"Checks whether a word uses all required letters.\n", - " \n", - " >>> uses_all('banana', 'ban')\n", - " True\n", - " >>> uses_all('ratatat', 'rat')\n", - " True\n", - " >>> uses_all('apple', 'api')\n", - " False\n", - " \"\"\"\n", - " return uses_only(required, word)" - ] - }, - { - "cell_type": "code", - "execution_count": 69, - "id": "ab66c777", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "run_doctests(uses_all)" - ] - }, - { - "cell_type": "markdown", - "id": "18f407b3", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "Now let's see if we can write `uses_all` based on `uses_any`.\n", - "\n", - "Ask a virtual assistant, \"Given a function, `uses_any`, which takes two strings and checks whether the first uses any of the letters in the second, can you use it to write `uses_all`, which takes two strings and checks whether the first uses all the letters in the second, allowing repeats.\"\n", - "\n", - "If it says it can, be sure to test the result!" - ] - }, - { - "cell_type": "code", - "execution_count": 70, - "id": "bfd6070c", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "# Here's what I got from ChatGPT May 24 version\n", - "# https://help.openai.com/en/articles/6825453-chatgpt-release-notes\n", - "\n", - "# It is not correct\n", - "\n", - "def uses_all(word, letters):\n", - " \"\"\"Checks whether a word uses all required letters.\n", - " \n", - " >>> uses_all('banana', 'ban')\n", - " True\n", - " >>> uses_all('ratatat', 'rat')\n", - " True\n", - " >>> uses_all('apple', 'api')\n", - " False\n", - " \"\"\"\n", - " return not uses_any(letters, word)" - ] - }, - { - "cell_type": "code", - "execution_count": 71, - "id": "a3ea747d", - "metadata": {}, - "outputs": [], - "source": [ - "# Here's what I got from ChatGPT 4o December 26, 2024\n", - "# It's correct, but it makes multiple calls to uses_any \n", - "\n", - "def uses_all(s1, s2):\n", - " \"\"\"Checks if all characters in s2 are in s1, allowing repeats.\"\"\"\n", - " for char in s2:\n", - " if not uses_any(s1, char):\n", - " return False\n", - " return True\n" - ] - }, - { - "cell_type": "code", - "execution_count": 72, - "id": "6980de57", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "run_doctests(uses_all)" - ] - }, - { - "cell_type": "markdown", - "id": "a7f4edf8", - "metadata": { - "tags": [] - }, - "source": [ - "[Think Python: 3rd Edition](https://allendowney.github.io/ThinkPython/index.html)\n", - "\n", - "Copyright 2024 [Allen B. Downey](https://allendowney.com)\n", - "\n", - "Code license: [MIT License](https://mit-license.org/)\n", - "\n", - "Text license: [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-nc-sa/4.0/)" - ] - } - ], - "metadata": { - "celltoolbar": "Tags", - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.11" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/soln/chap08.ipynb b/soln/chap08.ipynb deleted file mode 100644 index 7a34473..0000000 --- a/soln/chap08.ipynb +++ /dev/null @@ -1,7748 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "1331faa1", - "metadata": {}, - "source": [ - "You can order print and ebook versions of *Think Python 3e* from\n", - "[Bookshop.org](https://bookshop.org/a/98697/9781098155438) and\n", - "[Amazon](https://www.amazon.com/_/dp/1098155432?smid=ATVPDKIKX0DER&_encoding=UTF8&tag=oreilly20-20&_encoding=UTF8&tag=greenteapre01-20&linkCode=ur2&linkId=e2a529f94920295d27ec8a06e757dc7c&camp=1789&creative=9325)." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "361d390a", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "from os.path import basename, exists\n", - "\n", - "def download(url):\n", - " filename = basename(url)\n", - " if not exists(filename):\n", - " from urllib.request import urlretrieve\n", - "\n", - " local, _ = urlretrieve(url, filename)\n", - " print(\"Downloaded \" + str(local))\n", - " return filename\n", - "\n", - "download('https://github.com/AllenDowney/ThinkPython/raw/v3/thinkpython.py');\n", - "download('https://github.com/AllenDowney/ThinkPython/raw/v3/diagram.py');\n", - "\n", - "import thinkpython" - ] - }, - { - "cell_type": "markdown", - "id": "9d97603b", - "metadata": {}, - "source": [ - "# Strings and Regular Expressions\n", - "\n", - "Strings are not like integers, floats, and booleans. A string is a **sequence**, which means it contains multiple values in a particular order.\n", - "In this chapter we'll see how to access the values that make up a string, and we'll use functions that process strings.\n", - "\n", - "We'll also use regular expressions, which are a powerful tool for finding patterns in a string and performing operations like search and replace.\n", - "\n", - "As an exercise, you'll have a chance to apply these tools to a word game called Wordle." - ] - }, - { - "cell_type": "markdown", - "id": "1280dd83", - "metadata": {}, - "source": [ - "## A string is a sequence\n", - "\n", - "A string is a sequence of characters. A **character** can be a letter (in almost any alphabet), a digit, a punctuation mark, or white space.\n", - "\n", - "You can select a character from a string with the bracket operator.\n", - "This example statement selects character number 1 from `fruit` and\n", - "assigns it to `letter`:" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "9b53c1fe", - "metadata": {}, - "outputs": [], - "source": [ - "fruit = 'banana'\n", - "letter = fruit[1]" - ] - }, - { - "cell_type": "markdown", - "id": "a307e429", - "metadata": {}, - "source": [ - "The expression in brackets is an **index**, so called because it *indicates* which character in the sequence to select.\n", - "But the result might not be what you expect." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "2cb1d58c", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'a'" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "letter" - ] - }, - { - "cell_type": "markdown", - "id": "57c13319", - "metadata": {}, - "source": [ - "The letter with index `1` is actually the second letter of the string.\n", - "An index is an offset from the beginning of the string, so the offset of the first letter is `0`." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "4ce1eb16", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'b'" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "fruit[0]" - ] - }, - { - "cell_type": "markdown", - "id": "57d8e54c", - "metadata": {}, - "source": [ - "You can think of `'b'` as the 0th letter of `'banana'` -- pronounced \"zero-eth\".\n", - "\n", - "The index in brackets can be a variable." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "11201ba9", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'a'" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "i = 1\n", - "fruit[i]" - ] - }, - { - "cell_type": "markdown", - "id": "9630e2e7", - "metadata": {}, - "source": [ - "Or an expression that contains variables and operators." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "fc4383d0", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'n'" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "fruit[i+1]" - ] - }, - { - "cell_type": "markdown", - "id": "939b602d", - "metadata": {}, - "source": [ - "But the value of the index has to be an integer -- otherwise you get a `TypeError`." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "aec20975", - "metadata": { - "tags": [ - "raises-exception" - ] - }, - "outputs": [ - { - "ename": "TypeError", - "evalue": "string indices must be integers", - "output_type": "error", - "traceback": [ - "\u001b[0;31mTypeError\u001b[0m\u001b[0;31m:\u001b[0m string indices must be integers\n" - ] - } - ], - "source": [ - "%%expect TypeError\n", - "\n", - "fruit[1.5]" - ] - }, - { - "cell_type": "markdown", - "id": "3f0f7e3a", - "metadata": {}, - "source": [ - "As we saw in Chapter 1, we can use the built-in function `len` to get the length of a string." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "796ce317", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "6" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "n = len(fruit)\n", - "n" - ] - }, - { - "cell_type": "markdown", - "id": "29013c47", - "metadata": {}, - "source": [ - "To get the last letter of a string, you might be tempted to write this:" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "3ccb4a64", - "metadata": { - "tags": [ - "raises-exception" - ] - }, - "outputs": [ - { - "ename": "IndexError", - "evalue": "string index out of range", - "output_type": "error", - "traceback": [ - "\u001b[0;31mIndexError\u001b[0m\u001b[0;31m:\u001b[0m string index out of range\n" - ] - } - ], - "source": [ - "%%expect IndexError\n", - "\n", - "fruit[n]" - ] - }, - { - "cell_type": "markdown", - "id": "b87e09bd", - "metadata": {}, - "source": [ - "But that causes an `IndexError` because there is no letter in `'banana'` with the index 6. Because we started counting at `0`, the six letters are numbered `0` to `5`. To get the last character, you have to subtract `1` from `n`:" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "2cf99de6", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'a'" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "fruit[n-1]" - ] - }, - { - "cell_type": "markdown", - "id": "3c79dcec", - "metadata": {}, - "source": [ - "But there's an easier way.\n", - "To get the last letter in a string, you can use a negative index, which counts backward from the end. " - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "3dedf6fa", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'a'" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "fruit[-1]" - ] - }, - { - "cell_type": "markdown", - "id": "5677b727", - "metadata": {}, - "source": [ - "The index `-1` selects the last letter, `-2` selects the second to last, and so on." - ] - }, - { - "cell_type": "markdown", - "id": "8392a12a", - "metadata": {}, - "source": [ - "## String slices\n", - "\n", - "A segment of a string is called a **slice**.\n", - "Selecting a slice is similar to selecting a character." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "386b9df2", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'ban'" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "fruit = 'banana'\n", - "fruit[0:3]" - ] - }, - { - "cell_type": "markdown", - "id": "5cc12531", - "metadata": {}, - "source": [ - "The operator `[n:m]` returns the part of the string from the `n`th\n", - "character to the `m`th character, including the first but excluding the second.\n", - "This behavior is counterintuitive, but it might help to imagine the indices pointing *between* the characters, as in this figure:" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "05f9743d", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "from diagram import make_binding, Element, Value\n", - "\n", - "binding = make_binding(\"fruit\", ' b a n a n a ')\n", - "elements = [Element(Value(i), None) for i in range(7)]" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "b09d8356", - "metadata": { - "tags": [ - "remove-input" - ] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "from diagram import diagram, adjust\n", - "from matplotlib.transforms import Bbox\n", - "\n", - "width, height, x, y = [1.35, 0.54, 0.23, 0.39]\n", - "\n", - "ax = diagram(width, height)\n", - "bbox = binding.draw(ax, x, y)\n", - "bboxes = [bbox]\n", - "\n", - "def draw_elts(x, y, elements):\n", - " for elt in elements:\n", - " bbox = elt.draw(ax, x, y, draw_value=False)\n", - " bboxes.append(bbox)\n", - "\n", - " x1 = (bbox.xmin + bbox.xmax) / 2\n", - " y1 = bbox.ymax + 0.02\n", - " y2 = y1 + 0.14\n", - " handle = plt.plot([x1, x1], [y1, y2], ':', lw=0.5, color='gray')\n", - " x += 0.105\n", - " \n", - "draw_elts(x + 0.48, y - 0.25, elements)\n", - "bbox = Bbox.union(bboxes)\n", - "# adjust(x, y, bbox)" - ] - }, - { - "cell_type": "markdown", - "id": "c391abbf", - "metadata": {}, - "source": [ - "For example, the slice `[3:6]` selects the letters `ana`, which means that `6` is legal as part of a slice, but not legal as an index.\n", - "\n", - "\n", - "If you omit the first index, the slice starts at the beginning of the string." - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "00592313", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'ban'" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "fruit[:3]" - ] - }, - { - "cell_type": "markdown", - "id": "1bd7dcb1", - "metadata": {}, - "source": [ - "If you omit the second index, the slice goes to the end of the string:" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "01684797", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'ana'" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "fruit[3:]" - ] - }, - { - "cell_type": "markdown", - "id": "4701123b", - "metadata": {}, - "source": [ - "If the first index is greater than or equal to the second, the result is an **empty string**, represented by two quotation marks:" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "c7551ded", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "''" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "fruit[3:3]" - ] - }, - { - "cell_type": "markdown", - "id": "d12735ab", - "metadata": {}, - "source": [ - "An empty string contains no characters and has length 0.\n", - "\n", - "Continuing this example, what do you think `fruit[:]` means? Try it and\n", - "see." - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "b5c5ce3e", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "'banana'" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "fruit[:]" - ] - }, - { - "cell_type": "markdown", - "id": "918d3dd0", - "metadata": {}, - "source": [ - "## Strings are immutable\n", - "\n", - "It is tempting to use the `[]` operator on the left side of an\n", - "assignment, with the intention of changing a character in a string, like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "69ccd380", - "metadata": { - "tags": [ - "raises-exception" - ] - }, - "outputs": [ - { - "ename": "TypeError", - "evalue": "'str' object does not support item assignment", - "output_type": "error", - "traceback": [ - "\u001b[0;31mTypeError\u001b[0m\u001b[0;31m:\u001b[0m 'str' object does not support item assignment\n" - ] - } - ], - "source": [ - "%%expect TypeError\n", - "\n", - "greeting = 'Hello, world!'\n", - "greeting[0] = 'J'" - ] - }, - { - "cell_type": "markdown", - "id": "df3dd7d1", - "metadata": {}, - "source": [ - "The result is a `TypeError`.\n", - "In the error message, the \"object\" is the string and the \"item\" is the character\n", - "we tried to assign.\n", - "For now, an **object** is the same thing as a value, but we will refine that definition later.\n", - "\n", - "The reason for this error is that strings are **immutable**, which means you can't change an existing string.\n", - "The best you can do is create a new string that is a variation of the original." - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "280d27a1", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'Jello, world!'" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "new_greeting = 'J' + greeting[1:]\n", - "new_greeting" - ] - }, - { - "cell_type": "markdown", - "id": "2848546f", - "metadata": {}, - "source": [ - "This example concatenates a new first letter onto a slice of `greeting`.\n", - "It has no effect on the original string." - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "8fa4a4cf", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'Hello, world!'" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "greeting" - ] - }, - { - "cell_type": "markdown", - "id": "49e4da57", - "metadata": {}, - "source": [ - "## String comparison\n", - "\n", - "The relational operators work on strings. To see if two strings are\n", - "equal, we can use the `==` operator." - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "b754d462", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "All right, banana.\n" - ] - } - ], - "source": [ - "word = 'banana'\n", - "\n", - "if word == 'banana':\n", - " print('All right, banana.')" - ] - }, - { - "cell_type": "markdown", - "id": "e9be6097", - "metadata": {}, - "source": [ - "Other relational operations are useful for putting words in alphabetical\n", - "order:" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "44374eb8", - "metadata": {}, - "outputs": [], - "source": [ - "def compare_word(word):\n", - " if word < 'banana':\n", - " print(word, 'comes before banana.')\n", - " elif word > 'banana':\n", - " print(word, 'comes after banana.')\n", - " else:\n", - " print('All right, banana.')" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "a46f7035", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "apple comes before banana.\n" - ] - } - ], - "source": [ - "compare_word('apple')" - ] - }, - { - "cell_type": "markdown", - "id": "b66f449a", - "metadata": {}, - "source": [ - "Python does not handle uppercase and lowercase letters the same way\n", - "people do. All the uppercase letters come before all the lowercase\n", - "letters, so:" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "a691f9e2", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Pineapple comes before banana.\n" - ] - } - ], - "source": [ - "compare_word('Pineapple')" - ] - }, - { - "cell_type": "markdown", - "id": "f9b916c9", - "metadata": {}, - "source": [ - "To solve this problem, we can convert strings to a standard format, such as all lowercase, before performing the comparison.\n", - "Keep that in mind if you have to defend yourself against a man armed with a Pineapple." - ] - }, - { - "cell_type": "markdown", - "id": "531069f1", - "metadata": {}, - "source": [ - "## String methods\n", - "\n", - "Strings provide methods that perform a variety of useful operations. \n", - "A method is similar to a function -- it takes arguments and returns a value -- but the syntax is different.\n", - "For example, the method `upper` takes a string and returns a new string with all uppercase letters.\n", - "\n", - "Instead of the function syntax `upper(word)`, it uses the method syntax `word.upper()`." - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "fa6140a6", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'BANANA'" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "word = 'banana'\n", - "new_word = word.upper()\n", - "new_word" - ] - }, - { - "cell_type": "markdown", - "id": "1ac41744", - "metadata": {}, - "source": [ - "This use of the dot operator specifies the name of the method, `upper`, and the name of the string to apply the method to, `word`.\n", - "The empty parentheses indicate that this method takes no arguments.\n", - "\n", - "A method call is called an **invocation**; in this case, we would say that we are invoking `upper` on `word`." - ] - }, - { - "cell_type": "markdown", - "id": "2a13d4ef", - "metadata": { - "tags": [ - "section_writing_files" - ] - }, - "source": [ - "## Writing files\n", - "\n", - "String operators and methods are useful for reading and writing text files.\n", - "As an example, we'll work with the text of *Dracula*, a novel by Bram Stoker that is available from Project Gutenberg ()." - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "e3f1dc18", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "import os\n", - "\n", - "if not os.path.exists('pg345.txt'):\n", - " !wget https://www.gutenberg.org/cache/epub/345/pg345.txt" - ] - }, - { - "cell_type": "markdown", - "id": "963dda79", - "metadata": {}, - "source": [ - "I've downloaded the book in a plain text file called `pg345.txt`, which we can open for reading like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "bd2d5175", - "metadata": {}, - "outputs": [], - "source": [ - "reader = open('pg345.txt')" - ] - }, - { - "cell_type": "markdown", - "id": "b5d99e8c", - "metadata": {}, - "source": [ - "In addition to the text of the book, this file contains a section at the beginning with information about the book and a section at the end with information about the license.\n", - "Before we process the text, we can remove this extra material by finding the special lines at the beginning and end that begin with `'***'`.\n", - "\n", - "The following function takes a line and checks whether it is one of the special lines.\n", - "It uses the `startswith` method, which checks whether a string starts with a given sequence of characters." - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "b9c9318c", - "metadata": {}, - "outputs": [], - "source": [ - "def is_special_line(line):\n", - " return line.startswith('*** ')" - ] - }, - { - "cell_type": "markdown", - "id": "2efdfe35", - "metadata": {}, - "source": [ - "We can use this function to loop through the lines in the file and print only the special lines." - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "id": "a9417d4c", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "*** START OF THE PROJECT GUTENBERG EBOOK DRACULA ***\n", - "*** END OF THE PROJECT GUTENBERG EBOOK DRACULA ***\n" - ] - } - ], - "source": [ - "for line in reader:\n", - " if is_special_line(line):\n", - " print(line.strip())" - ] - }, - { - "cell_type": "markdown", - "id": "07fb5992", - "metadata": {}, - "source": [ - "Now let's create a new file, called `pg345_cleaned.txt`, that contains only the text of the book.\n", - "In order to loop through the book again, we have to open it again for reading.\n", - "And, to write a new file, we can open it for writing." - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "id": "f2336825", - "metadata": {}, - "outputs": [], - "source": [ - "reader = open('pg345.txt')\n", - "writer = open('pg345_cleaned.txt', 'w')" - ] - }, - { - "cell_type": "markdown", - "id": "96d881aa", - "metadata": {}, - "source": [ - "`open` takes an optional parameters that specifies the \"mode\" -- in this example, `'w'` indicates that we're opening the file for writing.\n", - "If the file doesn't exist, it will be created; if it already exists, the contents will be replaced.\n", - "\n", - "As a first step, we'll loop through the file until we find the first special line." - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "id": "d1b286ee", - "metadata": {}, - "outputs": [], - "source": [ - "for line in reader:\n", - " if is_special_line(line):\n", - " break" - ] - }, - { - "cell_type": "markdown", - "id": "1989d5a1", - "metadata": {}, - "source": [ - "The `break` statement \"breaks\" out of the loop -- that is, it causes the loop to end immediately, before we get to the end of the file.\n", - "\n", - "When the loop exits, `line` contains the special line that made the conditional true." - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "id": "b4ecf365", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'*** START OF THE PROJECT GUTENBERG EBOOK DRACULA ***\\n'" - ] - }, - "execution_count": 33, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "line" - ] - }, - { - "cell_type": "markdown", - "id": "9f28c3b4", - "metadata": {}, - "source": [ - "Because `reader` keeps track of where it is in the file, we can use a second loop to pick up where we left off.\n", - "\n", - "The following loop reads the rest of the file, one line at a time.\n", - "When it finds the special line that indicates the end of the text, it breaks out of the loop.\n", - "Otherwise, it writes the line to the output file." - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "id": "a99dc11c", - "metadata": {}, - "outputs": [], - "source": [ - "for line in reader:\n", - " if is_special_line(line):\n", - " break\n", - " writer.write(line)" - ] - }, - { - "cell_type": "markdown", - "id": "c07032a4", - "metadata": {}, - "source": [ - "When this loop exits, `line` contains the second special line." - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "id": "dfd6b264", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'*** END OF THE PROJECT GUTENBERG EBOOK DRACULA ***\\n'" - ] - }, - "execution_count": 35, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "line" - ] - }, - { - "cell_type": "markdown", - "id": "0c30b41c", - "metadata": {}, - "source": [ - "At this point `reader` and `writer` are still open, which means we could keep reading lines from `reader` or writing lines to `writer`.\n", - "To indicate that we're done, we can close both files by invoking the `close` method." - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "id": "4eda555c", - "metadata": {}, - "outputs": [], - "source": [ - "reader.close()\n", - "writer.close()" - ] - }, - { - "cell_type": "markdown", - "id": "d5084cdc", - "metadata": {}, - "source": [ - "To check whether this process was successful, we can read the first few lines from the new file we just created." - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "id": "5e1e8c74", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "DRACULA\n", - "_by_\n", - "Bram Stoker\n" - ] - } - ], - "source": [ - "for line in open('pg345_cleaned.txt'):\n", - " line = line.strip()\n", - " if len(line) > 0:\n", - " print(line)\n", - " if line.endswith('Stoker'):\n", - " break" - ] - }, - { - "cell_type": "markdown", - "id": "34c93df3", - "metadata": {}, - "source": [ - "The `endswith` method checks whether a string ends with a given sequence of characters." - ] - }, - { - "cell_type": "markdown", - "id": "fcdb4bbf", - "metadata": {}, - "source": [ - "## Find and replace\n", - "\n", - "In the Icelandic translation of *Dracula* from 1901, the name of one of the characters was changed from \"Jonathan\" to \"Thomas\".\n", - "To make this change in the English version, we can loop through the book, use the `replace` method to replace one name with another, and write the result to a new file.\n", - "\n", - "We'll start by counting the lines in the cleaned version of the file." - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "id": "63ebaafb", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "15499" - ] - }, - "execution_count": 38, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "total = 0\n", - "for line in open('pg345_cleaned.txt'):\n", - " total += 1\n", - " \n", - "total" - ] - }, - { - "cell_type": "markdown", - "id": "8ba9b9ca", - "metadata": {}, - "source": [ - "To see whether a line contains \"Jonathan\", we can use the `in` operator, which checks whether this sequence of characters appears anywhere in the line." - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "id": "9973e6e8", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "199" - ] - }, - "execution_count": 39, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "total = 0\n", - "for line in open('pg345_cleaned.txt'):\n", - " if 'Jonathan' in line:\n", - " total += 1\n", - "\n", - "total" - ] - }, - { - "cell_type": "markdown", - "id": "27805245", - "metadata": {}, - "source": [ - "There are 199 lines that contain the name, but that's not quite the total number of times it appears, because it can appear more than once in a line.\n", - "To get the total, we can use the `count` method, which returns the number of times a sequence appears in a string." - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "id": "02e06ff1", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "200" - ] - }, - "execution_count": 40, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "total = 0\n", - "for line in open('pg345_cleaned.txt'):\n", - " total += line.count('Jonathan')\n", - "\n", - "total" - ] - }, - { - "cell_type": "markdown", - "id": "68026797", - "metadata": {}, - "source": [ - "Now we can replace `'Jonathan'` with `'Thomas'` like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "id": "1450e82c", - "metadata": {}, - "outputs": [], - "source": [ - "writer = open('pg345_replaced.txt', 'w')\n", - "\n", - "for line in open('pg345_cleaned.txt'):\n", - " line = line.replace('Jonathan', 'Thomas')\n", - " writer.write(line)" - ] - }, - { - "cell_type": "markdown", - "id": "57ba56f3", - "metadata": {}, - "source": [ - "The result is a new file called `pg345_replaced.txt` that contains a version of *Dracula* where Jonathan Harker is called Thomas." - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "id": "a57b64c6", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "205" - ] - }, - "execution_count": 42, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "total = 0\n", - "for line in open('pg345_replaced.txt'):\n", - " total += line.count('Thomas')\n", - "\n", - "total" - ] - }, - { - "cell_type": "markdown", - "id": "cc9af187", - "metadata": {}, - "source": [ - "## Regular expressions\n", - "\n", - "If we know exactly what sequence of characters we're looking for, we can use the `in` operator to find it and the `replace` method to replace it.\n", - "But there is another tool, called a **regular expression** that can also perform these operations -- and a lot more.\n", - "\n", - "To demonstrate, I'll start with a simple example and we'll work our way up.\n", - "Suppose, again, that we want to find all lines that contain a particular word.\n", - "For a change, let's look for references to the titular character of the book, Count Dracula.\n", - "Here's a line that mentions him." - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "id": "a6069027", - "metadata": {}, - "outputs": [], - "source": [ - "text = \"I am Dracula; and I bid you welcome, Mr. Harker, to my house.\"" - ] - }, - { - "cell_type": "markdown", - "id": "d4fd6d11", - "metadata": {}, - "source": [ - "And here's the **pattern** we'll use to search." - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "id": "e3c19abe", - "metadata": {}, - "outputs": [], - "source": [ - "pattern = 'Dracula'" - ] - }, - { - "cell_type": "markdown", - "id": "268f647c", - "metadata": {}, - "source": [ - "A module called `re` provides functions related to regular expressions.\n", - "We can import it like this and use the `search` function to check whether the pattern appears in the text." - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "id": "db588abb", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 45, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "import re\n", - "\n", - "result = re.search(pattern, text)\n", - "result" - ] - }, - { - "cell_type": "markdown", - "id": "e17f6731", - "metadata": {}, - "source": [ - "If the pattern appears in the text, `search` returns a `Match` object that contains the results of the search.\n", - "Among other information, it has a variable named `string` that contains the text that was searched." - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "id": "924524a6", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'I am Dracula; and I bid you welcome, Mr. Harker, to my house.'" - ] - }, - "execution_count": 46, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "result.string" - ] - }, - { - "cell_type": "markdown", - "id": "a8eab0f6", - "metadata": {}, - "source": [ - "It also provides a method called `group` that returns the part of the text that matched the pattern." - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "id": "c72b860c", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'Dracula'" - ] - }, - "execution_count": 47, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "result.group()" - ] - }, - { - "cell_type": "markdown", - "id": "b6962a7d", - "metadata": {}, - "source": [ - "And it provides a method called `span` that returns the index in the text where the pattern starts and ends." - ] - }, - { - "cell_type": "code", - "execution_count": 48, - "id": "7c2f556c", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(5, 12)" - ] - }, - "execution_count": 48, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "result.span()" - ] - }, - { - "cell_type": "markdown", - "id": "8f1e5261", - "metadata": {}, - "source": [ - "If the pattern doesn't appear in the text, the return value from `search` is `None`." - ] - }, - { - "cell_type": "code", - "execution_count": 49, - "id": "d5242ef6", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "None\n" - ] - } - ], - "source": [ - "result = re.search('Count', text)\n", - "print(result)" - ] - }, - { - "cell_type": "markdown", - "id": "d5ed33ff", - "metadata": {}, - "source": [ - "So we can check whether the search was successful by checking whether the result is `None`." - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "id": "18c09b63", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 50, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "result == None" - ] - }, - { - "cell_type": "markdown", - "id": "a08e38f6", - "metadata": {}, - "source": [ - "Putting all that together, here's a function that loops through the lines in the book until it finds one that matches the given pattern, and returns the `Match` object." - ] - }, - { - "cell_type": "code", - "execution_count": 51, - "id": "fedb7d95", - "metadata": {}, - "outputs": [], - "source": [ - "def find_first(pattern):\n", - " for line in open('pg345_cleaned.txt'):\n", - " result = re.search(pattern, line)\n", - " if result != None:\n", - " return result" - ] - }, - { - "cell_type": "markdown", - "id": "96570515", - "metadata": {}, - "source": [ - "We can use it to find the first mention of a character." - ] - }, - { - "cell_type": "code", - "execution_count": 52, - "id": "d7cbe2c2", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'CHAPTER I. Jonathan Harker’s Journal\\n'" - ] - }, - "execution_count": 52, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "result = find_first('Harker')\n", - "result.string" - ] - }, - { - "cell_type": "markdown", - "id": "3f687fdc", - "metadata": {}, - "source": [ - "For this example, we didn't have to use regular expressions -- we could have done the same thing more easily with the `in` operator.\n", - "But regular expressions can do things the `in` operator cannot.\n", - "\n", - "For example, if the pattern includes the vertical bar character, `'|'`, it can match either the sequence on the left or the sequence on the right.\n", - "Suppose we want to find the first mention of Mina Murray in the book, but we are not sure whether she is referred to by first name or last.\n", - "We can use the following pattern, which matches either name." - ] - }, - { - "cell_type": "code", - "execution_count": 53, - "id": "96c64f83", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'CHAPTER V. Letters—Lucy and Mina\\n'" - ] - }, - "execution_count": 53, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "pattern = 'Mina|Murray'\n", - "result = find_first(pattern)\n", - "result.string" - ] - }, - { - "cell_type": "markdown", - "id": "8bea66a6", - "metadata": {}, - "source": [ - "We can use a pattern like this to see how many times a character is mentioned by either name.\n", - "Here's a function that loops through the book and counts the number of lines that match the given pattern." - ] - }, - { - "cell_type": "code", - "execution_count": 54, - "id": "d0d2e926", - "metadata": {}, - "outputs": [], - "source": [ - "def count_matches(pattern):\n", - " count = 0\n", - " for line in open('pg345_cleaned.txt'):\n", - " result = re.search(pattern, line)\n", - " if result != None:\n", - " count += 1\n", - " return count" - ] - }, - { - "cell_type": "markdown", - "id": "0e753a5b", - "metadata": {}, - "source": [ - "Now let's see how many times Mina is mentioned." - ] - }, - { - "cell_type": "code", - "execution_count": 55, - "id": "d7e8c5b4", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "229" - ] - }, - "execution_count": 55, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "count_matches('Mina|Murray')" - ] - }, - { - "cell_type": "markdown", - "id": "780c9fab", - "metadata": {}, - "source": [ - "The special character `'^'` matches the beginning of a string, so we can find a line that starts with a given pattern." - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "id": "be63c5b0", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'Dracula, jumping to his feet, said:--\\n'" - ] - }, - "execution_count": 56, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "result = find_first('^Dracula')\n", - "result.string" - ] - }, - { - "cell_type": "markdown", - "id": "332bad2e", - "metadata": {}, - "source": [ - "And the special character `'$'` matches the end of a string, so we can find a line that ends with a given pattern (ignoring the newline at the end)." - ] - }, - { - "cell_type": "code", - "execution_count": 57, - "id": "37595ac5", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "\"by five o'clock, we must start off; for it won't do to leave Mrs. Harker\\n\"" - ] - }, - "execution_count": 57, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "result = find_first('Harker$')\n", - "result.string" - ] - }, - { - "cell_type": "markdown", - "id": "d4b22b6e", - "metadata": {}, - "source": [ - "## String substitution\n", - "\n", - "Bram Stoker was born in Ireland, and when *Dracula* was published in 1897, he was living in England.\n", - "So we would expect him to use the British spelling of words like \"centre\" and \"colour\".\n", - "To check, we can use the following pattern, which matches either \"centre\" or the American spelling \"center\"." - ] - }, - { - "cell_type": "code", - "execution_count": 58, - "id": "18237bea", - "metadata": {}, - "outputs": [], - "source": [ - "pattern = 'cent(er|re)'" - ] - }, - { - "cell_type": "markdown", - "id": "35abfd7d", - "metadata": {}, - "source": [ - "In this pattern, the parentheses enclose the part of the pattern the vertical bar applies to.\n", - "So this pattern matches a sequence that starts with `'cent'` and ends with either `'er'` or `'re'`." - ] - }, - { - "cell_type": "code", - "execution_count": 59, - "id": "ce65805f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'horseshoe of the Carpathians, as if it were the centre of some sort of\\n'" - ] - }, - "execution_count": 59, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "result = find_first(pattern)\n", - "result.string" - ] - }, - { - "cell_type": "markdown", - "id": "e5703c18", - "metadata": {}, - "source": [ - "As expected, he used the British spelling.\n", - "\n", - "We can also check whether he used the British spelling of \"colour\".\n", - "The following pattern uses the special character `'?'`, which means that the previous character is optional." - ] - }, - { - "cell_type": "code", - "execution_count": 60, - "id": "af770664", - "metadata": {}, - "outputs": [], - "source": [ - "pattern = 'colou?r'" - ] - }, - { - "cell_type": "markdown", - "id": "beed9a7b", - "metadata": {}, - "source": [ - "This pattern matches either \"colour\" with the `'u'` or \"color\" without it." - ] - }, - { - "cell_type": "code", - "execution_count": 61, - "id": "ed67bde7", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'undergarment with long double apron, front, and back, of coloured stuff\\n'" - ] - }, - "execution_count": 61, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "result = find_first(pattern)\n", - "line = result.string\n", - "line" - ] - }, - { - "cell_type": "markdown", - "id": "1a31f179", - "metadata": {}, - "source": [ - "Again, as expected, he used the British spelling.\n", - "\n", - "Now suppose we want to produce an edition of the book with American spellings.\n", - "We can use the `sub` function in the `re` module, which does **string substitution**." - ] - }, - { - "cell_type": "code", - "execution_count": 62, - "id": "52dd938c", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'undergarment with long double apron, front, and back, of colored stuff\\n'" - ] - }, - "execution_count": 62, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "re.sub(pattern, 'color', line)" - ] - }, - { - "cell_type": "markdown", - "id": "04a80fc6", - "metadata": {}, - "source": [ - "The first argument is the pattern we want to find and replace, the second is what we want to replace it with, and the third is the string we want to search.\n", - "In the result, you can see that \"colour\" has been replaced with \"color\"." - ] - }, - { - "cell_type": "code", - "execution_count": 63, - "id": "d2e309a2", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "# I used this function to search for lines to use as examples\n", - "\n", - "def all_matches(pattern):\n", - " for line in open('pg345_cleaned.txt'):\n", - " result = re.search(pattern, line)\n", - " if result:\n", - " print(line.strip())" - ] - }, - { - "cell_type": "code", - "execution_count": 64, - "id": "3d8b2a9f", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "DRACULA\n", - "Bram Stoker\n", - "[Illustration: colophon]\n", - "NEW YORK\n", - "GROSSET & DUNLAP\n", - "_Publishers_\n", - "Copyright, 1897, in the United States of America, according\n", - "to Act of Congress, by Bram Stoker\n", - "[_All rights reserved._]\n", - "PRINTED IN THE UNITED STATES\n", - "AT\n", - "THE COUNTRY LIFE PRESS, GARDEN CITY, N.Y.\n", - "TO\n", - "MY DEAR FRIEND\n", - "HOMMY-BEG\n", - "Contents\n", - "CHAPTER I. Jonathan Harker’s Journal\n", - "CHAPTER II. Jonathan Harker’s Journal\n", - "CHAPTER III. Jonathan Harker’s Journal\n", - "CHAPTER IV. Jonathan Harker’s Journal\n", - "CHAPTER V. Letters—Lucy and Mina\n", - "CHAPTER VI. Mina Murray’s Journal\n", - "CHAPTER VII. Cutting from “The Dailygraph,” 8 August\n", - "CHAPTER VIII. Mina Murray’s Journal\n", - "CHAPTER IX. Mina Murray’s Journal\n", - "CHAPTER X. Mina Murray’s Journal\n", - "CHAPTER XI. Lucy Westenra’s Diary\n", - "CHAPTER XII. Dr. Seward’s Diary\n", - "CHAPTER XIII. Dr. Seward’s Diary\n", - "CHAPTER XIV. Mina Harker’s Journal\n", - "CHAPTER XV. Dr. Seward’s Diary\n", - "CHAPTER XVI. Dr. Seward’s Diary\n", - "CHAPTER XVII. Dr. Seward’s Diary\n", - "CHAPTER XVIII. Dr. Seward’s Diary\n", - "CHAPTER XIX. Jonathan Harker’s Journal\n", - "CHAPTER XX. Jonathan Harker’s Journal\n", - "CHAPTER XXI. Dr. Seward’s Diary\n", - "CHAPTER XXII. Jonathan Harker’s Journal\n", - "CHAPTER XXIII. Dr. Seward’s Diary\n", - "CHAPTER XXIV. Dr. Seward’s Phonograph Diary, spoken by Van Helsing\n", - "CHAPTER XXV. Dr. Seward’s Diary\n", - "CHAPTER XXVI. Dr. Seward’s Diary\n", - "CHAPTER XXVII. Mina Harker’s Journal\n", - "How these papers have been placed in sequence will be made manifest in\n", - "DRACULA\n", - "CHAPTER I\n", - "JONATHAN HARKER'S JOURNAL\n", - "(_Kept in shorthand._)\n", - "_3 May. Bistritz._--Left Munich at 8:35 P. M., on 1st May, arriving at\n", - "Vienna early next morning; should have arrived at 6:46, but train was an\n", - "hour late. Buda-Pesth seems a wonderful place, from the glimpse which I\n", - "impression I had was that we were leaving the West and entering the\n", - "East; the most western of splendid bridges over the Danube, which is\n", - "here of noble width and depth, took us among the traditions of Turkish\n", - "We left in pretty good time, and came after nightfall to Klausenburgh.\n", - "Here I stopped for the night at the Hotel Royale. I had for dinner, or\n", - "very good but thirsty. (_Mem._, get recipe for Mina.) I asked the\n", - "Carpathians. I found my smattering of German very useful here; indeed, I\n", - "Having had some time at my disposal when in London, I had visited the\n", - "British Museum, and made search among the books and maps in the library\n", - "regarding Transylvania; it had struck me that some foreknowledge of the\n", - "Transylvania, Moldavia and Bukovina, in the midst of the Carpathian\n", - "mountains; one of the wildest and least known portions of Europe. I was\n", - "Castle Dracula, as there are no maps of this country as yet to compare\n", - "with our own Ordnance Survey maps; but I found that Bistritz, the post\n", - "town named by Count Dracula, is a fairly well-known place. I shall enter\n", - "travels with Mina.\n", - "In the population of Transylvania there are four distinct nationalities:\n", - "Saxons in the South, and mixed with them the Wallachs, who are the\n", - "descendants of the Dacians; Magyars in the West, and Szekelys in the\n", - "East and North. I am going among the latter, who claim to be descended\n", - "from Attila and the Huns. This may be so, for when the Magyars conquered\n", - "the country in the eleventh century they found the Huns settled in it. I\n", - "horseshoe of the Carpathians, as if it were the centre of some sort of\n", - "imaginative whirlpool; if so my stay may be very interesting. (_Mem._, I\n", - "must ask the Count all about them.)\n", - "very excellent dish, which they call \"impletata.\" (_Mem._, get recipe\n", - "more unpunctual are the trains. What ought they to be in China?\n", - "All day long we seemed to dawdle through a country which was full of\n", - "saw coming through France and Germany, with short jackets and round hats\n", - "Slovaks, who were more barbarian than the rest, with their big cow-boy\n", - "set down at once as some old Oriental band of brigands. They are,\n", - "It was on the dark side of twilight when we got to Bistritz, which is a\n", - "Borgo Pass leads from it into Bukovina--it has had a very stormy\n", - "Count Dracula had directed me to go to the Golden Krone Hotel, which I\n", - "said, \"The Herr Englishman?\" \"Yes,\" I said, \"Jonathan Harker.\" She\n", - "\"My Friend.--Welcome to the Carpathians. I am anxiously expecting\n", - "start for Bukovina; a place on it is kept for you. At the Borgo\n", - "Pass my carriage will await you and will bring you to me. I trust\n", - "that your journey from London has been a happy one, and that you\n", - "\"Your friend,\n", - "\"DRACULA.\"\n", - "_4 May._--I found that my landlord had got a letter from the Count,\n", - "pretended that he could not understand my German. This could not be\n", - "was all he knew. When I asked him if he knew Count Dracula, and could\n", - "Just before I was leaving, the old lady came up to my room and said in a\n", - "\"Must you go? Oh! young Herr, must you go?\" She was in such an excited\n", - "state that she seemed to have lost her grip of what German she knew, and\n", - "\"Do you know what day it is?\" I answered that it was the fourth of May.\n", - "She shook her head as she said again:\n", - "\"Oh, yes! I know that! I know that, but do you know what day it is?\" On\n", - "\"It is the eve of St. George's Day. Do you not know that to-night, when\n", - "full sway? Do you know where you are going, and what you are going to?\"\n", - "She was in such evident distress that I tried to comfort her, but\n", - "did not know what to do, for, as an English Churchman, I have been\n", - "rosary round my neck, and said, \"For your mother's sake,\" and went out\n", - "ever reach Mina before I do, let it bring my good-bye. Here comes the\n", - "_5 May. The Castle._--The grey of the morning has passed, and the sun is\n", - "left Bistritz, let me put down my dinner exactly. I dined on what they\n", - "style of the London cat's meat! The wine was Golden Mediasch, which\n", - "When I got on the coach the driver had not taken his seat, and I saw him\n", - "cheering to me, for amongst them were \"Ordog\"--Satan, \"pokol\"--hell,\n", - "thing, one being Slovak and the other Servian for something that is\n", - "either were-wolf or vampire. (_Mem._, I must ask the Count about these\n", - "When we started, the crowd round the inn door, which had by this time\n", - "first, but on learning that I was English, he explained that it was a\n", - "green hills of what they call here the \"Mittel Land\" ran the road,\n", - "time in reaching Borgo Prund. I was told that this road is in summertime\n", - "the Carpathians, for it is an old tradition that they are not to be kept\n", - "in too good order. Of old the Hospadars would not repair them, lest the\n", - "Turk should think that they were preparing to bring in foreign troops,\n", - "Beyond the green swelling hills of the Mittel Land rose mighty slopes\n", - "of forest up to the lofty steeps of the Carpathians themselves. Right\n", - "\"Look! Isten szek!\"--\"God's seat!\"--and he crossed himself reverently.\n", - "As we wound on our endless way, and the sun sank lower and lower behind\n", - "we passed Cszeks and Slovaks, all in picturesque attire, but I noticed\n", - "peasants, the Cszeks with their white, and the Slovaks with their\n", - "Pass, the dark firs stood out here and there against the background of\n", - "Carpathians seem to wind ceaselessly through the valleys. Sometimes the\n", - "but the driver would not hear of it. \"No, no,\" he said; \"you must not\n", - "before you go to sleep.\" The only stop he would make was a moment's\n", - "When it grew dark there seemed to be some excitement amongst the\n", - "side and to frown down upon us; we were entering on the Borgo Pass. One\n", - "Bistritz--the sign of the cross and the guard against the evil eye.\n", - "Then, as we flew along, the driver leaned forward, and on each side the\n", - "some little time; and at last we saw before us the Pass opening out on\n", - "which was to take me to the Count. Each moment I expected to see the\n", - "The passengers drew back with a sigh of gladness, which seemed to mock\n", - "thought it was \"An hour less than the time.\" Then turning to me, he said\n", - "in German worse than my own:--\n", - "\"There is no carriage here. The Herr is not expected after all. He will\n", - "now come on to Bukovina, and return to-morrow or the next day; better\n", - "the next day.\" Whilst he was speaking the horses began to neigh and\n", - "\"You are early to-night, my friend.\" The man stammered in reply:--\n", - "\"The English Herr was in a hurry,\" to which the stranger replied:--\n", - "\"That is why, I suppose, you wished him to go on to Bukovina. You cannot\n", - "deceive me, my friend; I know too much, and my horses are swift.\" As he\n", - "companions whispered to another the line from Burger's \"Lenore\":--\n", - "\"Denn die Todten reiten schnell\"--\n", - "(\"For the dead travel fast.\")\n", - "The strange driver evidently heard the words, for he looked up with a\n", - "putting out his two fingers and crossing himself. \"Give me the Herr's\n", - "swept into the darkness of the Pass. As I looked back I saw the steam\n", - "on their way to Bukovina. As they sank into the darkness I felt a\n", - "excellent German:--\n", - "\"The night is chill, mein Herr, and my master the Count bade me take all\n", - "Then a dog began to howl somewhere in a farmhouse far down the road--a\n", - "now sighed softly through the Pass, a wild howling began, which seemed\n", - "time, after going to the far side of the Pass, he suddenly turned down a\n", - "Soon we were hemmed in with trees, which in places arched right over the\n", - "It grew colder and colder still, and fine, powdery snow began to fall,\n", - "Suddenly, away on our left, I saw a faint flickering blue flame. The\n", - "Once the flame appeared so near the road, that even in the darkness\n", - "At last there came a time when the driver went further afield than he\n", - "For myself, I felt a sort of paralysis of fear. It is only when a man\n", - "All at once the wolves began to howl as though the moonlight had had\n", - "When I could see again the driver was climbing into the calèche, and the\n", - "CHAPTER II\n", - "JONATHAN HARKER'S JOURNAL--_continued_\n", - "_5 May._--I must have been asleep, for certainly if I had been fully\n", - "When the calèche stopped, the driver jumped down and held out his hand\n", - "What sort of grim adventure was it on which I had embarked? Was this a\n", - "explain the purchase of a London estate to a foreigner? Solicitor's\n", - "clerk! Mina would not like that. Solicitor--for just before leaving\n", - "London I got word that my examination was successful; and I am now a\n", - "and among the Carpathians. All I could do now was to be patient, and to\n", - "Just as I had come to this conclusion I heard a heavy step approaching\n", - "Within, stood a tall old man, clean shaven save for a long white\n", - "gesture, saying in excellent English, but with a strange intonation:--\n", - "\"Welcome to my house! Enter freely and of your own will!\" He made no\n", - "\"Welcome to my house. Come freely. Go safely; and leave something of the\n", - "happiness you bring!\" The strength of the handshake was so much akin to\n", - "\"Count Dracula?\" He bowed in a courtly way as he replied:--\n", - "\"I am Dracula; and I bid you welcome, Mr. Harker, to my house. Come in;\n", - "the night air is chill, and you must need to eat and rest.\" As he was\n", - "\"Nay, sir, you are my guest. It is late, and my people are not\n", - "available. Let me see to your comfort myself.\" He insisted on carrying\n", - "The Count halted, putting down my bags, closed the door, and crossing\n", - "fresh--which sent a hollow roar up the wide chimney. The Count himself\n", - "\"You will need, after your journey, to refresh yourself by making your\n", - "The light and warmth and the Count's courteous welcome seemed to have\n", - "I handed to him the sealed letter which Mr. Hawkins had entrusted to me.\n", - "He opened it and read it gravely; then, with a charming smile, he handed\n", - "The Count himself came forward and took off the cover of a dish, and I\n", - "and a salad and a bottle of old Tokay, of which I had two glasses, was\n", - "my supper. During the time I was eating it the Count asked me many\n", - "By this time I had finished my supper, and by my host's desire had drawn\n", - "His face was a strong--a very strong--aquiline, with high bridge of the\n", - "Hitherto I had noticed the backs of his hands as they lay on his knees\n", - "point. As the Count leaned over me and his hands touched me, I could not\n", - "not conceal. The Count, evidently noticing it, drew back; and with a\n", - "down below in the valley the howling of many wolves. The Count's eyes\n", - "\"Listen to them--the children of the night. What music they make!\"\n", - "Seeing, I suppose, some expression in my face strange to him, he\n", - "\"Ah, sir, you dwellers in the city cannot enter into the feelings of the\n", - "hunter.\" Then he rose and said:--\n", - "\"But you must be tired. Your bedroom is all ready, and to-morrow you\n", - "so sleep well and dream well!\" With a courteous bow, he opened for me\n", - "_7 May._--It is again early morning, but I have rested and enjoyed the\n", - "There are certainly odd deficiencies in the house, considering the\n", - "The curtains and upholstery of the chairs and sofas and the hangings of\n", - "though in excellent order. I saw something like them in Hampton Court,\n", - "Some time after I had finished my meal--I do not know whether to call it\n", - "the castle until I had asked the Count's permission. There was\n", - "In the library I found, to my great delight, a vast number of English\n", - "newspapers. A table in the centre was littered with English magazines\n", - "economy, botany, geology, law--all relating to England and English life\n", - "London Directory, the \"Red\" and \"Blue\" books, Whitaker's Almanac, the\n", - "Army and Navy Lists, and--it somehow gladdened my heart to see it--the\n", - "Law List.\n", - "Whilst I was looking at the books, the door opened, and the Count\n", - "since I had the idea of going to London, have given me many, many hours\n", - "of pleasure. Through them I have come to know your great England; and to\n", - "your mighty London, to be in the midst of the whirl and rush of\n", - "To you, my friend, I look that I know it to speak.\"\n", - "\"But, Count,\" I said, \"you know and speak English thoroughly!\" He bowed\n", - "\"Indeed,\" I said, \"you speak excellently.\"\n", - "\"Not so,\" he answered. \"Well, I know that, did I move and speak in your\n", - "London, none there are who would not know me for a stranger. That is not\n", - "speaking if he hear my words, 'Ha, ha! a stranger!' I have been so long\n", - "be master of me. You come to me not alone as agent of my friend Peter\n", - "Hawkins, of Exeter, to tell me all about my new estate in London. You\n", - "learn the English intonation; and I would that you tell me when I make\n", - "Of course I said all I could about being willing, and asked if I might\n", - "come into that room when I chose. He answered: \"Yes, certainly,\" and\n", - "\"You may go anywhere you wish in the castle, except where the doors are\n", - "\"We are in Transylvania; and Transylvania is not England. Our ways are\n", - "This led to much conversation; and as it was evident that he wanted to\n", - "Sometimes he sheered off the subject, or turned the conversation by\n", - "where treasure has been concealed. \"That treasure has been hidden,\" he\n", - "Wallachian, the Saxon, and the Turk. Why, there is hardly a foot of soil\n", - "Austrian and the Hungarian came up in hordes, and the patriots went out\n", - "\"But how,\" said I, \"can it have remained so long undiscovered, when\n", - "The Count smiled, and as his lips ran back over his gums, the long,\n", - "\"Because your peasant is at heart a coward and a fool! Those flames only\n", - "\"There you are right,\" I said. \"I know no more than the dead where even\n", - "to look for them.\" Then we drifted into other matters.\n", - "\"Come,\" he said at last, \"tell me of London and of the house which you\n", - "have procured for me.\" With an apology for my remissness, I went into my\n", - "in the study or library, and I found the Count lying on the sofa,\n", - "reading, of all things in the world, an English Bradshaw's Guide. When I\n", - "\"Well, but, my friend, is it not needful that I should? When I go there\n", - "I shall be all alone, and my friend Harker Jonathan--nay, pardon me, I\n", - "Jonathan Harker will not be by my side to correct and aid me. He will be\n", - "in Exeter, miles away, probably working at papers of the law with my\n", - "other friend, Peter Hawkins. So!\"\n", - "We went thoroughly into the business of the purchase of the estate at\n", - "Purfleet. When I had told him the facts and got his signature to the\n", - "Mr. Hawkins, he began to ask me how I had come across so suitable a\n", - "\"At Purfleet, on a by-road, I came across just such a place as seemed to\n", - "\"The estate is called Carfax, no doubt a corruption of the old _Quatre\n", - "Face_, as the house is four-sided, agreeing with the cardinal points of\n", - "When I had finished, he said:--\n", - "also that there is a chapel of old times. We Transylvanian nobles love\n", - "be alone with my thoughts when I may.\" Somehow his words and his look\n", - "Presently, with an excuse, he left me, asking me to put all my papers\n", - "England, as if that map had been much used. On looking at it I found in\n", - "that one was near London on the east side, manifestly where his new\n", - "estate was situated; the other two were Exeter, and Whitby on the\n", - "Yorkshire coast.\n", - "It was the better part of an hour when the Count returned. \"Aha!\" he\n", - "said; \"still at your books? Good! But you must not work always. Come; I\n", - "am informed that your supper is ready.\" He took my arm, and we went into\n", - "Count again excused himself, as he had dined out on his being away from\n", - "After supper I smoked, as on the last evening, and the Count stayed with\n", - "They say that people who are near death die generally at the change to\n", - "with preternatural shrillness through the clear morning air; Count\n", - "Dracula, jumping to his feet, said:--\n", - "\"Why, there is the morning again! How remiss I am to let you stay up so\n", - "England less interesting, so that I may not forget how time flies by\n", - "_8 May._--I began to fear as I wrote in this book that I was getting too\n", - "me; but would that that were all! If there were any one to talk to I\n", - "could bear it, but there is no one. I have only the Count to speak with,\n", - "and heard the Count's voice saying to me, \"Good-morning.\" I started, for\n", - "but did not notice it at the moment. Having answered the Count's\n", - "This time there could be no error, for the man was close to me, and I\n", - "the mirror! The whole room behind me was displayed; but there was no\n", - "feeling of uneasiness which I always have when the Count is near; but at\n", - "round to look for some sticking plaster. When the Count saw my face, his\n", - "\"Take care,\" he said, \"take care how you cut yourself. It is more\n", - "dangerous than you think in this country.\" Then seizing the shaving\n", - "glass, he went on: \"And this is the wretched thing that has done the\n", - "When I went into the dining-room, breakfast was prepared; but I could\n", - "not find the Count anywhere. So I breakfasted alone. It is strange that\n", - "as yet I have not seen the Count eat or drink. He must be a very\n", - "peculiar man! After breakfast I did a little exploring in the castle. I\n", - "went out on the stairs, and found a room looking towards the South. The\n", - "touching anything! As far as the eye can reach is a sea of green tree\n", - "But I am not in heart to describe beauty, for when I had seen the view I\n", - "The castle is a veritable prison, and I am a prisoner!\n", - "CHAPTER III\n", - "JONATHAN HARKER'S JOURNAL--_continued_\n", - "When I found that I was a prisoner a sort of wild feeling came over me.\n", - "the Count. He knows well that I am imprisoned; and as he has done it\n", - "shut, and knew that the Count had returned. He did not come at once into\n", - "This gave me a fright, for if there is no one else in the castle, it\n", - "must have been the Count himself who was the driver of the coach that\n", - "hand in silence. How was it that all the people at Bistritz and on the\n", - "coach had some terrible fear for me? What meant the giving of the\n", - "crucifix, of the garlic, of the wild rose, of the mountain ash? Bless\n", - "a tangible help, in conveying memories of sympathy and comfort? Some\n", - "mind about it. In the meantime I must find out all I can about Count\n", - "Dracula, as it may help me to understand. To-night he may talk of\n", - "_Midnight._--I have had a long talk with the Count. I asked him a few\n", - "questions on Transylvania history, and he warmed up to the subject\n", - "\"We Szekelys have a right to be proud, for in our veins flows the blood\n", - "in the whirlpool of European races, the Ugric tribe bore down from\n", - "Iceland the fighting spirit which Thor and Wodin gave them, which their\n", - "Berserkers displayed to such fell intent on the seaboards of Europe, ay,\n", - "and of Asia and Africa too, till the peoples thought that the\n", - "the Huns, whose warlike fury had swept the earth like a living flame,\n", - "old witches, who, expelled from Scythia had mated with the devils in the\n", - "desert. Fools, fools! What devil or what witch was ever so great as\n", - "Attila, whose blood is in these veins?\" He held up his arms. \"Is it a\n", - "Magyar, the Lombard, the Avar, the Bulgar, or the Turk poured his\n", - "thousands on our frontiers, we drove them back? Is it strange that when\n", - "Arpad and his legions swept through the Hungarian fatherland he found us\n", - "here when he reached the frontier; that the Honfoglalas was completed\n", - "there? And when the Hungarian flood swept eastward, the Szekelys were\n", - "claimed as kindred by the victorious Magyars, and to us for centuries\n", - "was trusted the guarding of the frontier of Turkey-land; ay, and more\n", - "than that, endless duty of the frontier guard, for, as the Turks say,\n", - "'water sleeps, and enemy is sleepless.' Who more gladly than we\n", - "throughout the Four Nations received the 'bloody sword,' or at its\n", - "warlike call flocked quicker to the standard of the King? When was\n", - "redeemed that great shame of my nation, the shame of Cassova, when the\n", - "flags of the Wallach and the Magyar went down beneath the Crescent? Who\n", - "was it but one of my own race who as Voivode crossed the Danube and beat\n", - "the Turk on his own ground? This was a Dracula indeed! Woe was it that\n", - "Turk and brought the shame of slavery on them! Was it not this Dracula,\n", - "again brought his forces over the great river into Turkey-land; who,\n", - "slaughtered, since he knew that he alone could ultimately triumph! They\n", - "without a leader? Where ends the war without a brain and heart to\n", - "conduct it? Again, when, after the battle of Mohács, we threw off the\n", - "Hungarian yoke, we of the Dracula blood were amongst their leaders, for\n", - "Szekelys--and the Dracula as their heart's blood, their brains, and\n", - "Hapsburgs and the Romanoffs can never reach. The warlike days are over.\n", - "Blood is too precious a thing in these days of dishonourable peace; and\n", - "It was by this time close on morning, and we went to bed. (_Mem._, this\n", - "diary seems horribly like the beginning of the \"Arabian Nights,\" for\n", - "everything has to break off at cockcrow--or like the ghost of Hamlet's\n", - "_12 May._--Let me begin with facts--bare, meagre facts, verified by\n", - "observation, or my memory of them. Last evening when the Count came from\n", - "matters I had been examining at Lincoln's Inn. There was a certain\n", - "method in the Count's inquiries, so I shall try to put them down in\n", - "First, he asked if a man in England might have two solicitors or more. I\n", - "\"I shall illustrate. Your friend and mine, Mr. Peter Hawkins, from under\n", - "the shadow of your beautiful cathedral at Exeter, which is far from\n", - "London, buys for me through your good self my place at London. Good! Now\n", - "sought the services of one so far off from London instead of some one\n", - "served save my wish only; and as one of London residence might, perhaps,\n", - "I, who have much of affairs, wish to ship goods, say, to Newcastle, or\n", - "Durham, or Harwich, or Dover, might it not be that it could with more\n", - "\"But,\" said he, \"I could be at liberty to direct myself. Is it not so?\"\n", - "\"Of course,\" I replied; and \"such is often done by men of business, who\n", - "\"Good!\" he said, and then went on to ask about the means of making\n", - "\"Have you written since your first letter to our friend Mr. Peter\n", - "Hawkins, or to any other?\" It was with some bitterness in my heart that\n", - "\"Then write now, my young friend,\" he said, laying a heavy hand on my\n", - "\"Do you wish me to stay so long?\" I asked, for my heart grew cold at the\n", - "What could I do but bow acceptance? It was Mr. Hawkins's interest, not\n", - "mine, and I had to think of him, not myself; and besides, while Count\n", - "Dracula was speaking, there was that in his eyes and in his bearing\n", - "could have no choice. The Count saw his victory in my bow, and his\n", - "home to them. Is it not so?\" As he spoke he handed me three sheets of\n", - "now, but to write fully to Mr. Hawkins in secret, and also to Mina, for\n", - "to her I could write in shorthand, which would puzzle the Count, if he\n", - "book whilst the Count wrote several notes, referring as he wrote them to\n", - "One of the letters was directed to Samuel F. Billington, No. 7, The\n", - "Crescent, Whitby, another to Herr Leutner, Varna; the third was to\n", - "Coutts & Co., London, and the fourth to Herren Klopstock & Billreuth,\n", - "bankers, Buda-Pesth. The second and fourth were unsealed. I was just\n", - "to resume my book before the Count, holding still another letter in his\n", - "evening. You will, I hope, find all things as you wish.\" At the door he\n", - "\"Let me advise you, my dear young friend--nay, let me warn you with all\n", - "warned! Should sleep now or ever overcome you, or be like to do, then\n", - "safe. But if you be not careful in this respect, then\"--He finished his\n", - "_Later._--I endorse the last words written, but this time there is no\n", - "When he left me I went to my room. After a little while, not hearing any\n", - "towards the South. There was some sense of freedom in the vast expanse,\n", - "It is destroying my nerve. I start at my own shadow, and am full of all\n", - "the rooms, that the windows of the Count's own room would look out. The\n", - "What I saw was the Count's head coming out from the window. I did not\n", - "What manner of man is this, or what manner of creature is it in the\n", - "_15 May._--Once more have I seen the Count go out in his lizard fashion.\n", - "He moved downwards in a sidelong way, some hundred feet down, and a good\n", - "door was locked, and the key was gone! That key must be in the Count's\n", - "presence of the Count, and after trying a little to school my nerves, I\n", - "_Later: the Morning of 16 May._--God preserve my sanity, for to this I\n", - "Whilst I live on here there is but one thing to hope for, that I may not\n", - "hateful place the Count is the least dreadful to me; that to him alone I\n", - "purpose. Great God! merciful God! Let me be calm, for out of that way\n", - "have puzzled me. Up to now I never quite knew what Shakespeare meant\n", - "when he made Hamlet say:--\n", - "\"My tablets! quick, my tablets!\n", - "'Tis meet that I put it down,\" etc.,\n", - "The habit of entering accurately must help to soothe me.\n", - "The Count's mysterious warning frightened me at the time; it frightens\n", - "When I had written in my diary and had fortunately replaced the book and\n", - "pen in my pocket I felt sleepy. The Count's warning came into my mind,\n", - "noses, like the Count, and great dark, piercing eyes that seemed to be\n", - "day it should meet Mina's eyes and cause her pain; but it is the truth.\n", - "They whispered together, and then they all three laughed--such a\n", - "The fair girl shook her head coquettishly, and the other two urged her\n", - "\"Go on! You are first, and we shall follow; yours is the right to\n", - "begin.\" The other added:--\n", - "\"He is young and strong; there are kisses for us all.\" I lay quiet,\n", - "The fair girl advanced and bent over me till I could feel the movement\n", - "But at that instant, another sensation swept through me as quick as\n", - "lightning. I was conscious of the presence of the Count, and of his\n", - "passion. But the Count! Never did I imagine such wrath and fury, even to\n", - "\"How dare you touch him, any of you? How dare you cast eyes on him when\n", - "I had forbidden it? Back, I tell you all! This man belongs to me! Beware\n", - "how you meddle with him, or you'll have to deal with me.\" The fair girl,\n", - "\"You yourself never loved; you never love!\" On this the other women\n", - "of fiends. Then the Count turned, after looking at my face attentively,\n", - "\"Yes, I too can love; you yourselves can tell it from the past. Is it\n", - "not so? Well, now I promise you that when I am done with him you shall\n", - "\"Are we to have nothing to-night?\" said one of them, with a low laugh,\n", - "Then the horror overcame me, and I sank down unconscious.\n", - "CHAPTER IV\n", - "JONATHAN HARKER'S JOURNAL--_continued_\n", - "I awoke in my own bed. If it be that I had not dreamt, the Count must\n", - "thing I am glad: if it was that the Count carried me here and undressed\n", - "_18 May._--I have been down to look at that room again in daylight, for\n", - "_19 May._--I am surely in the toils. Last night the Count asked me in\n", - "Bistritz. I would fain have rebelled, but felt that in the present state\n", - "of things it would be madness to quarrel openly with the Count whilst I\n", - "be held over at Bistritz until due time in case chance would admit of my\n", - "\"The first should be June 12, the second June 19, and the third June\n", - "_28 May._--There is a chance of escape, or at any rate of being able to\n", - "send word home. A band of Szgany have come to the castle, and are\n", - "encamped in the courtyard. These Szgany are gipsies; I have notes of\n", - "of them in Hungary and Transylvania, who are almost outside all law.\n", - "They attach themselves as a rule to some great noble or _boyar_, and\n", - "save superstition, and they talk only their own varieties of the Romany\n", - "I have written the letters. Mina's is in shorthand, and I simply ask Mr.\n", - "Hawkins to communicate with her. To her I have explained my situation,\n", - "letters not carry, then the Count shall not yet know my secret or the\n", - "read. As the Count did not come in, I have written here....\n", - "The Count has come. He sat down beside me, and said in his smoothest\n", - "\"The Szgany has given me these, of which, though I know not whence they\n", - "it--\"one is from you, and to my friend Peter Hawkins; the other\"--here\n", - "other is a vile thing, an outrage upon friendship and hospitality! It is\n", - "not signed. Well! so it cannot matter to us.\" And he calmly held letter\n", - "\"The letter to Hawkins--that I shall, of course, send on, since it is\n", - "unknowingly I did break the seal. Will you not cover it again?\" He held\n", - "When, an hour or two after, the Count came quietly into the room, his\n", - "\"So, my friend, you are tired? Get to bed. There is the surest rest. I\n", - "_31 May._--This morning when I woke I thought I would provide myself\n", - "Every scrap of paper was gone, and with it all my notes, my memoranda,\n", - "The suit in which I had travelled was gone, and also my overcoat and\n", - "_17 June._--This morning, as I was sitting on the edge of my bed\n", - "With joy I hurried to the window, and saw drive into the yard two great\n", - "each pair a Slovak, with his wide hat, great nail-studded belt, dirty\n", - "Then I ran to the window and cried to them. They looked up at me\n", - "stupidly and pointed, but just then the \"hetman\" of the Szgany came out,\n", - "The leiter-wagons contained great, square boxes, with handles of thick\n", - "rope; these were evidently empty by the ease with which the Slovaks\n", - "yard, the Slovaks were given some money by the Szgany, and spitting on\n", - "_24 June, before morning._--Last night the Count left me early, and\n", - "thought I would watch for the Count, for there is something going on.\n", - "The Szgany are quartered somewhere in the castle and are doing work of\n", - "something coming out of the Count's window. I drew back and watched\n", - "and in my garb, too! This, then, is his new scheme of evil: that he will\n", - "It makes me rage to think that this can go on, and whilst I am shut up\n", - "I thought I would watch for the Count's return, and for a long time sat\n", - "Something made me start up, a low, piteous howling of dogs somewhere far\n", - "was becoming hypnotised! Quicker and quicker danced the dust; the\n", - "When a couple of hours had passed I heard something stirring in the\n", - "Count's room, something like a sharp wail quickly suppressed; and then\n", - "As I sat I heard a sound in the courtyard without--the agonised cry of a\n", - "\"Monster, give me my child!\"\n", - "She threw herself on her knees, and raising up her hands, cried the same\n", - "Somewhere high overhead, probably on the tower, I heard the voice of the\n", - "Count calling in his harsh, metallic whisper. His call seemed to be\n", - "There was no cry from the woman, and the howling of the wolves was but\n", - "What shall I do? what can I do? How can I escape from this dreadful\n", - "_25 June, morning._--No man knows till he has suffered from the night\n", - "Let me not think of it. Action!\n", - "It has always been at night-time that I have been molested or\n", - "Count in the daylight. Can it be that he sleeps when others wake, that\n", - "he may be awake whilst they sleep? If I could only get into his room!\n", - "But there is no possible way. The door is always locked, no way for me.\n", - "Yes, there is a way, if one dares to take it. Where his body has gone\n", - "window. Why should not I imitate him, and go in by his window? The\n", - "calf's, and the dreaded Hereafter may still be open to me. God help me\n", - "in my task! Good-bye, Mina, if I fail; good-bye, my faithful friend and\n", - "second father; good-bye, all, and last of all Mina!\n", - "_Same day, later._--I have made the effort, and God, helping me, have\n", - "well the direction and distance of the Count's window, and made for it\n", - "around for the Count, but, with surprise and gladness, made a discovery.\n", - "The room was empty! It was barely furnished with odd things, which\n", - "corner--gold of all kinds, Roman, and British, and Austrian, and\n", - "Hungarian, and Greek and Turkish money, covered with a film of dust, as\n", - "At one corner of the room was a heavy door. I tried it, for, since I\n", - "brought by the Slovaks. There was nobody about, and I made search for\n", - "There, in one of the great boxes, of which there were fifty in all, on a\n", - "pile of newly dug earth, lay the Count! He was either dead or asleep, I\n", - "By the side of the box was its cover, pierced with holes here and there.\n", - "leaving the Count's room by the window, crawled again up the castle\n", - "_29 June._--To-day is the date of my last letter, and the Count has\n", - "I was awakened by the Count, who looked at me as grimly as a man can\n", - "\"To-morrow, my friend, we must part. You return to your beautiful\n", - "England, I to some work which may have such an end that we may never\n", - "Szgany, who have some labours of their own here, and also come some\n", - "Slovaks. When they have gone, my carriage shall come for you, and shall\n", - "bear you to the Borgo Pass to meet the diligence from Bukovina to\n", - "Bistritz. But I am in hopes that I shall see more of you at Castle\n", - "Dracula.\" I suspected him, and determined to test his sincerity.\n", - "Sincerity! It seems like a profanation of the word to write it in\n", - "\"Why may I not go to-night?\"\n", - "\"Because, dear sir, my coachman and horses are away on a mission.\"\n", - "\"But I would walk with pleasure. I want to get away at once.\" He smiled,\n", - "\"And your baggage?\"\n", - "The Count stood up, and said, with a sweet courtesy which made me rub my\n", - "\"You English have a saying which is close to my heart, for its spirit is\n", - "that which rules our _boyars_: 'Welcome the coming; speed the parting\n", - "guest.' Come with me, my dear young friend. Not an hour shall you wait\n", - "you so suddenly desire it. Come!\" With a stately gravity, he, with the\n", - "\"Hark!\"\n", - "Close at hand came the howling of many wolves. It was almost as if the\n", - "To my intense astonishment I saw that it was unlocked. Suspiciously, I\n", - "As the door began to open, the howling of the wolves without grew louder\n", - "to struggle at the moment against the Count was useless. With such\n", - "continued slowly to open, and only the Count's body stood in the gap.\n", - "Suddenly it struck me that this might be the moment and means of my\n", - "was a diabolical wickedness in the idea great enough for the Count, and\n", - "\"Shut the door; I shall wait till morning!\" and covered my face with my\n", - "powerful arm, the Count threw the door shut, and the great bolts clanged\n", - "In silence we returned to the library, and after a minute or two I went\n", - "to my own room. The last I saw of Count Dracula was his kissing his hand\n", - "Judas in hell might be proud of.\n", - "When I was in my room and about to lie down, I thought I heard a\n", - "deceived me, I heard the voice of the Count:--\n", - "\"Back, back, to your own place! Your time is not yet come. Wait! Have\n", - "patience! To-night is mine. To-morrow night is yours!\" There was a low,\n", - "the end? To-morrow! to-morrow! Lord, help me, and those to whom I am\n", - "_30 June, morning._--These may be the last words I ever write in this\n", - "on my knees, for I determined that if Death came he should find me\n", - "At last I felt that subtle change in the air, and knew that the morning\n", - "With a glad heart, I opened my door and ran down to the hall. I had seen\n", - "But the door would not move. Despair seized me. I pulled, and pulled, at\n", - "Count.\n", - "Then a wild desire took me to obtain that key at any risk, and I\n", - "determined then and there to scale the wall again and gain the Count's\n", - "down the wall, as before, into the Count's room. It was empty, but that\n", - "The great box was in the same place, close against the wall, but the lid\n", - "something which filled my very soul with horror. There lay the Count,\n", - "key. Then I stopped and looked at the Count. There was a mocking smile\n", - "was helping to transfer to London, where, perhaps, for centuries to come\n", - "cracking of whips; the Szgany and the Slovaks of whom the Count had\n", - "contained the vile body, I ran from the place and gained the Count's\n", - "With strained ears, I listened, and heard downstairs the grinding of the\n", - "As I write there is in the passage below a sound of many tramping feet\n", - "The door is shut, and the chains rattle; there is a grinding of the key\n", - "Hark! in the courtyard and down the rocky way the roll of heavy wheels,\n", - "the crack of whips, and the chorus of the Szgany as they pass into the\n", - "I am alone in the castle with those awful women. Faugh! Mina is a woman,\n", - "and there is nought in common. They are devils of the Pit!\n", - "And then away for home! away to the quickest and nearest train! away\n", - "At least God's mercy is better than that of these monsters, and the\n", - "Good-bye, all! Mina!\n", - "CHAPTER V\n", - "_Letter from Miss Mina Murray to Miss Lucy Westenra._\n", - "\"_9 May._\n", - "\"My dearest Lucy,--\n", - "\"Forgive my long delay in writing, but I have been simply overwhelmed\n", - "lately, because I want to keep up with Jonathan's studies, and I have\n", - "be able to be useful to Jonathan, and if I can stenograph well enough I\n", - "two-pages-to-the-week-with-Sunday-squeezed-in-a-corner diaries, but a\n", - "intended for them. I may show it to Jonathan some day if there is in it\n", - "plans when we meet. I have just had a few hurried lines from Jonathan\n", - "from Transylvania. He is well, and will be returning in about a week. I\n", - "countries. I wonder if we--I mean Jonathan and I--shall ever see them\n", - "\"Your loving\n", - "\"MINA.\n", - "\"Tell me all the news when you write. You have not told me anything for\n", - "_Letter, Lucy Westenra to Mina Murray_.\n", - "\"_17, Chatham Street_,\n", - "\"_Wednesday_.\n", - "\"My dearest Mina,--\n", - "last Pop. Some one has evidently been telling tales. That was Mr.\n", - "Holmwood. He often comes to see us, and he and mamma get on very well\n", - "engaged to Jonathan. He is an excellent _parti_, being handsome, well\n", - "off, and of good birth. He is a doctor and really clever. Just fancy! He\n", - "bore. That is slang again, but never mind; Arthur says that every day.\n", - "There, it is all out. Mina, we have told all our secrets to each other\n", - "to speak more. Oh, Mina, couldn't you guess? I love him. I am blushing\n", - "words. But oh, Mina, I love him; I love him; I love him! There, that\n", - "prayers; and, Mina, pray for my happiness.\n", - "\"LUCY.\n", - "_Letter, Lucy Westenra to Mina Murray_.\n", - "\"_24 May_.\n", - "\"My dearest Mina,--\n", - "\"Thanks, and thanks, and thanks again for your sweet letter. It was so\n", - "\"My dear, it never rains but it pours. How true the old proverbs are.\n", - "Here am I, who shall be twenty in September, and yet I never had a\n", - "Just fancy! THREE proposals in one day! Isn't it awful! I feel sorry,\n", - "really and truly sorry, for two of the poor fellows. Oh, Mina, I am so\n", - "But, for goodness' sake, don't tell any of the girls, or they would be\n", - "least. Some girls are so vain! You and I, Mina dear, who are engaged and\n", - "it a secret, dear, from _every one_, except, of course, Jonathan. You\n", - "Arthur. A woman ought to tell her husband everything--don't you think\n", - "quite as fair as they should be. Well, my dear, number One came just\n", - "before lunch. I told you of him, Dr. John Seward, the lunatic-asylum\n", - "me, Mina, very straightforwardly. He told me how dear I was to him,\n", - "free a man might have hope. And then, Mina, I felt a sort of duty to\n", - "wanted a friend I must count him one of my best. Oh, Mina dear, I can't\n", - "\"_Evening._\n", - "\"Arthur has just gone, and I feel in better spirits than when I left\n", - "off, so I can go on telling you about the day. Well, my dear, number Two\n", - "came after lunch. He is such a nice fellow, an American from Texas, and\n", - "with poor Desdemona when she had such a dangerous stream poured in her\n", - "don't, for there was Mr. Morris telling us his stories, and Arthur never\n", - "told any, and yet---- My dear, I am somewhat previous. Mr. Quincey P.\n", - "Morris found me alone. It seems that a man always does find a girl\n", - "alone. No, he doesn't, for Arthur tried twice to _make_ a chance, and I\n", - "beforehand that Mr. Morris doesn't always speak slang--that is to say,\n", - "to hear him talk American slang, and whenever I was present, and there\n", - "ever speak slang; I do not know if Arthur likes it, as I have never\n", - "heard him use any as yet. Well, Mr. Morris sat down beside me and looked\n", - "\"'Miss Lucy, I know I ain't good enough to regulate the fixin's of your\n", - "\"Well, he did look so good-humoured and so jolly that it didn't seem\n", - "half so hard to refuse him as it did poor Dr. Seward; so I said, as\n", - "feeling a bit serious too--I know, Mina, you will think me a horrid\n", - "\"'Lucy, you are an honest-hearted girl, I know. I should not be here\n", - "to another, is there any one else that you care for? And if there is\n", - "\"My dear Mina, why are men so noble when we women are so little worthy\n", - "of them? Here was I almost making fun of this great-hearted, true\n", - "her, and save all this trouble? But this is heresy, and I must not say\n", - "Mr. Morris's brave eyes, and I told him out straight:--\n", - "\"'Yes, there is some one I love, though he has not told me yet that he\n", - "\"'That's my brave girl. It's better worth being late for a chance of\n", - "lonely walk between this and Kingdom Come. Won't you give me one kiss?\n", - "It'll be something to keep off the darkness now and then. You can, you\n", - "yet.' That quite won me, Mina, for it _was_ brave and sweet of him, and\n", - "\"'Little girl, I hold your hand, and you've kissed me, and if these\n", - "honesty to me, and good-bye.' He wrung my hand, and taking up his hat,\n", - "\"Ever your loving\n", - "\"LUCY.\n", - "\"P.S.--Oh, about number Three--I needn't tell you of number Three, need\n", - "I? Besides, it was all so confused; it seemed only a moment from his\n", - "ungrateful to God for all His goodness to me in sending to me such a\n", - "\"Good-bye.\"\n", - "_Dr. Seward's Diary._\n", - "(Kept in phonograph)\n", - "_25 May._--Ebb tide in appetite to-day. Cannot eat, cannot rest, so\n", - "(_Mem._, under what circumstances would I _not_ avoid the pit of hell?)\n", - "_Omnia Romæ venalia sunt._ Hell has its price! _verb. sap._ If there be\n", - "R. M. Renfield, ætat 59.--Sanguine temperament; great physical strength;\n", - "_Letter, Quincey P. Morris to Hon. Arthur Holmwood._\n", - "\"_25 May._\n", - "\"My dear Art,--\n", - "\"We've told yarns by the camp-fire in the prairies; and dressed one\n", - "another's wounds after trying a landing at the Marquesas; and drunk\n", - "healths on the shore of Titicaca. There are more yarns to be told, and\n", - "Korea, Jack Seward. He's coming, too, and we both want to mingle our\n", - "that God has made and the best worth winning. We promise you a hearty\n", - "\"Yours, as ever and always,\n", - "\"QUINCEY P. MORRIS.\"\n", - "_Telegram from Arthur Holmwood to Quincey P. Morris._\n", - "\"_26 May._\n", - "\"Count me in every time. I bear messages which will make both your ears\n", - "\"ART.\"\n", - "CHAPTER VI\n", - "MINA MURRAY'S JOURNAL\n", - "_24 July. Whitby._--Lucy met me at the station, looking sweeter and\n", - "lovelier than ever, and we drove up to the house at the Crescent in\n", - "Esk, runs through a deep valley, which broadens out as it comes near the\n", - "pictures we see of Nuremberg. Right over the town is the ruin of Whitby\n", - "Abbey, which was sacked by the Danes, and which is the scene of part of\n", - "\"Marmion,\" where the girl was built up in the wall. It is a most noble\n", - "Whitby, for it lies right over the town, and has a full view of the\n", - "harbour and all up the bay to where the headland called Kettleness\n", - "The harbour lies below me, with, on the far side, one long granite wall\n", - "It is nice at high water; but when the tide is out it shoals away to\n", - "nothing, and there is merely the stream of the Esk, running between\n", - "He is a funny old man. He must be awfully old, for his face is all\n", - "nearly a hundred, and that he was a sailor in the Greenland fishing\n", - "fleet when Waterloo was fought. He is, I am afraid, a very sceptical\n", - "person, for when I asked him about the bells at sea and the White Lady\n", - "Mind, I don't say that they never was, but I do say that they wasn't in\n", - "but not for a nice young lady like you. Them feet-folks from York and\n", - "Leeds that be always eatin' cured herrin's an' drinkin' tea an' lookin'\n", - "He hobbled away, and I could see him hurrying, as well as he could, down\n", - "_1 August._--I came up here an hour ago with Lucy, and we had a most\n", - "and join him. He is evidently the Sir Oracle of them, and I should think\n", - "She is so sweet with old people; I think they all fell in love with her\n", - "\"It be all fool-talk, lock, stock, and barrel; that's what it be, an'\n", - "them, 'Here lies the body' or 'Sacred to the memory' wrote on all of\n", - "sacred. Lies all of them, nothin' but lies of one kind or another! My\n", - "gog, but it'll be a quare scowderment at the Day of Judgment when they\n", - "\"Oh, Mr. Swales, you can't be serious. Surely these tombstones are not\n", - "\"Yabblins! There may be a poorish few not wrong, savin' where they make\n", - "He went on: \"And you consate that all these steans be aboon folk that be\n", - "happed here, snod an' snog?\" I assented again. \"Then that be just where\n", - "old Dun's 'bacca-box on Friday night.\" He nudged one of his companions,\n", - "and they all laughed. \"And my gog! how could they be otherwise? Look at\n", - "\"Edward Spencelagh, master mariner, murdered by pirates off the coast of\n", - "Andres, April, 1854, æt. 30.\" When I came back Mr. Swales went on:--\n", - "\"Who brought him home, I wonder, to hap him here? Murdered off the coast\n", - "of Andres! an' you consated his body lay under! Why, I could name ye a\n", - "dozen whose bones lie in the Greenland seas above\"--he pointed\n", - "the lies from here. This Braithwaite Lowrey--I knew his father, lost in\n", - "the _Lively_ off Greenland in '20; or Andrew Woodhouse, drowned in the\n", - "same seas in 1777; or John Paxton, drowned off Cape Farewell a year\n", - "later; or old John Rawlings, whose grandfather sailed with me, drowned\n", - "in the Gulf of Finland in '50. Do ye think that all these men will have\n", - "to make a rush to Whitby when the trumpet sounds? I have me antherums\n", - "tryin' to tie up our cuts by the light of the aurora borealis.\" This was\n", - "\"But,\" I said, \"surely you are not quite correct, for you start on the\n", - "take their tombstones with them on the Day of Judgment. Do you think\n", - "\"Well, what else be they tombstones for? Answer me that, miss!\"\n", - "\"To please their relatives, I suppose.\"\n", - "\"To please their relatives, you suppose!\" This he said with intense\n", - "scorn. \"How will it pleasure their relatives to know that lies is wrote\n", - "over them, and that everybody in the place knows that they be lies?\" He\n", - "which the seat was rested, close to the edge of the cliff. \"Read the\n", - "from where I sat, but Lucy was more opposite to them, so she leant over\n", - "\"Sacred to the memory of George Canon, who died, in the hope of a\n", - "glorious resurrection, on July, 29, 1873, falling from the rocks at\n", - "Kettleness. This tomb was erected by his sorrowing mother to her dearly\n", - "beloved son. 'He was the only son of his mother, and she was a widow.'\n", - "Really, Mr. Swales, I don't see anything very funny in that!\" She spoke\n", - "\"Ye don't see aught funny! Ha! ha! But that's because ye don't gawm the\n", - "they had for scarin' the crows with. 'Twarn't for crows then, for it\n", - "stick as he spoke--\"a pack of lies? and won't it make Gabriel keckle\n", - "when Geordie comes pantin' up the grees with the tombstean balanced on\n", - "I did not know what to say, but Lucy turned the conversation as she\n", - "\"Oh, why did you tell us of this? It is my favourite seat, and I cannot\n", - "\"That won't harm ye, my pretty; an' it may make poor Geordie gladsome to\n", - "there either! It'll be time for ye to be getting scart when ye see the\n", - "There's the clock, an' I must gang. My service to ye, ladies!\" And off\n", - "Lucy and I sat awhile, and it was all so beautiful before us that we\n", - "took hands as we sat; and she told me all over again about Arthur and\n", - "haven't heard from Jonathan for a whole month.\n", - "_The same day._ I came up here alone, for I am very sad. There was no\n", - "letter for me. I hope there cannot be anything the matter with Jonathan.\n", - "The clock has just struck nine. I see the lights scattered all over the\n", - "they run right up the Esk and die away in the curve of the valley. To my\n", - "The band on the pier is playing a harsh waltz in good time, and further\n", - "along the quay there is a Salvation Army meeting in a back street.\n", - "Neither of the bands hears the other, but up here I hear and see them\n", - "both. I wonder where Jonathan is and if he is thinking of me! I wish he\n", - "_Dr. Seward's Diary._\n", - "_5 June._--The case of Renfield grows more interesting the more I get to\n", - "simple seriousness. He thought for a moment, and then said: \"May I have\n", - "three days? I shall clear them away.\" Of course, I said that would do. I\n", - "_18 June._--He has turned his mind now to spiders, and has got several\n", - "_1 July._--His spiders are now becoming as great a nuisance as his\n", - "_8 July._--There is a method in his madness, and the rudimentary idea in\n", - "_19 July._--We are progressing. My friend has now a whole colony of\n", - "\"Oh, yes, I would like a cat! I only asked for a kitten lest you should\n", - "_20 July._--Visited Renfield very early, before the attendant went his\n", - "There were a few feathers about the room and on his pillow a drop of\n", - "_11 a. m._--The attendant has just been to me to say that Renfield has\n", - "been very sick and has disgorged a whole lot of feathers. \"My belief is,\n", - "_11 p. m._--I gave Renfield a strong opiate to-night, enough to make\n", - "steps? It would almost be worth while to complete the experiment. It\n", - "vivisection, and yet look at its results to-day! Why not advance science\n", - "in its most difficult and vital aspect--the knowledge of the brain? Had\n", - "compared with which Burdon-Sanderson's physiology or Ferrier's\n", - "How well the man reasoned; lunatics always do within their own scope. I\n", - "To me it seems only yesterday that my whole life ended with my new hope,\n", - "and that truly I began a new record. So it will be until the Great\n", - "Recorder sums me up and closes my ledger account with a balance to\n", - "profit or loss. Oh, Lucy, Lucy, I cannot be angry with you, nor can I be\n", - "If I only could have as strong a cause as my poor mad friend there--a\n", - "_Mina Murray's Journal._\n", - "_26 July._--I am anxious, and it soothes me to express myself here; it\n", - "different from writing. I am unhappy about Lucy and about Jonathan. I\n", - "had not heard from Jonathan for some time, and was very concerned; but\n", - "yesterday dear Mr. Hawkins, who is always so kind, sent me a letter from\n", - "had just been received. It is only a line dated from Castle Dracula,\n", - "and says that he is just starting for home. That is not like Jonathan;\n", - "I do not understand it, and it makes me uneasy. Then, too, Lucy,\n", - "naturally anxious about Lucy, and she tells me that her husband, Lucy's\n", - "to be arranged. I sympathise with her, for I do the same, only Jonathan\n", - "make both ends meet. Mr. Holmwood--he is the Hon. Arthur Holmwood, only\n", - "son of Lord Godalming--is coming up here very shortly--as soon as he can\n", - "leave town, for his father is not very well, and I think dear Lucy is\n", - "on the churchyard cliff and show him the beauty of Whitby. I daresay it\n", - "_27 July._--No news from Jonathan. I am getting quite uneasy about him,\n", - "wakeful myself. Thank God, Lucy's health keeps up. Mr. Holmwood has been\n", - "suddenly called to Ring to see his father, who has been taken seriously\n", - "_3 August._--Another week gone, and no news from Jonathan, not even to\n", - "Mr. Hawkins, from whom I have heard. Oh, I do hope he is not ill. He\n", - "_6 August._--Another three days, and no news. This suspense is getting\n", - "feel easier; but no one has heard a word of Jonathan since that last\n", - "letter. I must only pray to God for patience. Lucy is more excitable\n", - "hidden in thick clouds, high over Kettleness. Everything is grey--except\n", - "Dark figures are on the beach here and there, sometimes half shrouded in\n", - "the mist, and seem \"men like trees walking.\" The fishing-boats are\n", - "the harbour, bending to the scuppers. Here comes old Mr. Swales. He is\n", - "own heart a bit. But, Lord love ye, miss, I ain't afraid of dyin', not a\n", - "expect; and I'm so nigh it that the Aud Man is already whettin' his\n", - "once; the chafts will wag as they be used to. Some day soon the Angel of\n", - "Death will sound his trumpet for me. But don't ye dooal an' greet, my\n", - "cried suddenly. \"There's something in that wind and in the hoast beyont\n", - "comes!\" He held up his arms devoutly, and raised his hat. His mouth\n", - "\"I can't make her out,\" he said; \"she's a Russian, by the look of her;\n", - "run up north in the open, or to put in here. Look there again! She is\n", - "CHAPTER VII\n", - "CUTTING FROM \"THE DAILYGRAPH,\" 8 AUGUST\n", - "(_Pasted in Mina Murray's Journal._)\n", - "From a Correspondent.\n", - "_Whitby_.\n", - "One of the greatest and suddenest storms on record has just been\n", - "August. Saturday evening was as fine as was ever known, and the great\n", - "body of holiday-makers laid out yesterday for visits to Mulgrave Woods,\n", - "Robin Hood's Bay, Rig Mill, Runswick, Staithes, and the various trips in\n", - "the neighbourhood of Whitby. The steamers _Emma_ and _Scarborough_ made\n", - "\"tripping\" both to and from Whitby. The day was unusually fine till the\n", - "afternoon, when some of the gossips who frequent the East Cliff\n", - "language is ranked \"No. 2: light breeze.\" The coastguard on duty at once\n", - "kept watch on weather signs from the East Cliff, foretold in an emphatic\n", - "mass of Kettleness, standing boldly athwart the western sky, its\n", - "sketches of the \"Prelude to the Great Storm\" will grace the R. A. and R.\n", - "I. walls in May next. More than one captain made up his mind then and\n", - "The wind fell away entirely during the evening, and at midnight there\n", - "\"As idle as a painted ship upon a painted ocean.\"\n", - "Shortly before ten o'clock the stillness of the air grew quite\n", - "band on the pier, with its lively French air, was like a discord in the\n", - "Then without warning the tempest broke. With a rapidity which, at the\n", - "White-crested waves beat madly on the level sands and rushed up the\n", - "of Whitby Harbour. The wind roared like thunder, and blew with such\n", - "Some of the scenes thus revealed were of immeasurable grandeur and of\n", - "the white wings of a storm-tossed sea-bird. On the summit of the East\n", - "Cliff the new searchlight was ready for experiment, but had not yet been\n", - "Once or twice its service was most effective, as when a fishing-boat,\n", - "Before long the searchlight discovered some distance away a schooner\n", - "if it was only in hell.\" Then came another rush of sea-fog, greater than\n", - "mouth across the East Pier, where the shock was expected, and men waited\n", - "found the harbour, unsteered save by the hand of a dead man! However,\n", - "storms into the south-east corner of the pier jutting under the East\n", - "Cliff, known locally as Tate Hill Pier.\n", - "There was of course a considerable concussion as the vessel drove up on\n", - "hangs over the laneway to the East Pier so steeply that some of the flat\n", - "the Whitby vernacular--actually project over where the sustaining cliff\n", - "It so happened that there was no one at the moment on Tate Hill Pier, as\n", - "round from the West Cliff by the Drawbridge to Tate Hill Pier, but your\n", - "When I arrived, however, I found already assembled on the pier a crowd,\n", - "It was no wonder that the coastguard was surprised, or even awed, for\n", - "state of things, and a doctor--Surgeon J. M. Caffyn, of 33, East Elliot\n", - "Place--who came immediately after me, declared, after making\n", - "complications, later on, in the Admiralty Court; for coastguards cannot\n", - "noble as that of the young Casabianca--and placed in the mortuary to\n", - "Already the sudden storm is passing, and its fierceness is abating;\n", - "the Yorkshire wolds. I shall send, in time for your next issue, further\n", - "_Whitby_\n", - "_9 August._--The sequel to the strange arrival of the derelict in the\n", - "turns out that the schooner is a Russian from Varna, and is called the\n", - "_Demeter_. She is almost entirely in ballast of silver sand, with only a\n", - "This cargo was consigned to a Whitby solicitor, Mr. S. F. Billington, of\n", - "7, The Crescent, who this morning went aboard and formally took\n", - "possession of the goods consigned to him. The Russian consul, too,\n", - "the strange coincidence; the officials of the Board of Trade have been\n", - "S. P. C. A., which is very strong in Whitby, have tried to befriend the\n", - "mastiff belonging to a coal merchant close to Tate Hill Pier, was found\n", - "_Later._--By the kindness of the Board of Trade inspector, I have been\n", - "permitted to look over the log-book of the _Demeter_, which was in order\n", - "dictation of a clerk of the Russian consul, who kindly translated for\n", - "LOG OF THE \"DEMETER.\"\n", - "_Varna to Whitby._\n", - "_Written 18 July, things so strange happening, that I shall keep\n", - "On 6 July we finished taking in cargo, silver sand and boxes of earth.\n", - "At noon set sail. East wind, fresh. Crew, five hands ... two mates,\n", - "On 11 July at dawn entered Bosphorus. Boarded by Turkish Customs\n", - "On 12 July through Dardanelles. More Customs officers and flagboat of\n", - "quick. Want us off soon. At dark passed into Archipelago.\n", - "On 13 July passed Cape Matapan. Crew dissatisfied about something.\n", - "Seemed scared, but would not speak out.\n", - "On 14 July was somewhat anxious about crew. Men all steady fellows, who\n", - "On 16 July mate reported in the morning that one of crew, Petrofsky, was\n", - "night; was relieved by Abramoff, but did not go to bunk. Men more\n", - "On 17 July, yesterday, one of the men, Olgaren, came to my cabin, and in\n", - "He was in a panic of superstitious fear, and I am afraid the panic may\n", - "Later in the day I got together the whole crew, and told them, as they\n", - "_22 July_.--Rough weather last three days, and all hands busy with\n", - "Mate cheerful again, and all on good terms. Praised men for work in bad\n", - "weather. Passed Gibralter and out through Straits. All well.\n", - "_24 July_.--There seems some doom over this ship. Already a hand short,\n", - "and entering on the Bay of Biscay with wild weather ahead, and yet last\n", - "_28 July_.--Four days in hell, knocking about in a sort of maelstrom,\n", - "Wind abating; seas still terrific, but feel them less, as ship is\n", - "_29 July_.--Another tragedy. Had single watch to-night, as crew too\n", - "_30 July_.--Last night. Rejoiced we are nearing England. Weather fine,\n", - "_1 August_.--Two days of fog, and not a sail sighted. Had hoped when in\n", - "the English Channel to be able to signal for help or get in somewhere.\n", - "Not having power to work sails, have to run before wind. Dare not lower,\n", - "Russian, he Roumanian.\n", - "_2 August, midnight_.--Woke up from few minutes' sleep by hearing a cry,\n", - "watch. One more gone. Lord, help us! Mate says we must be past Straits\n", - "of Dover, as in a moment of fog lifting he saw North Foreland, just as\n", - "he heard the man cry out. If so we are now off in the North Sea, and\n", - "only God can guide us in the fog, which seems to move with us; and God\n", - "_3 August_.--At midnight I went to relieve the man at the wheel, and\n", - "ear, as though fearing the very air might hear: \"_It_ is here; I know\n", - "it, now. On the watch last night I saw It, like a man, tall and thin,\n", - "It, and gave It my knife; but the knife went through It, empty as the\n", - "air.\" And as he spoke he took his knife and drove it savagely into\n", - "space. Then he went on: \"But It is here, and I'll find It. It is in the\n", - "see. You work the helm.\" And, with a warning look and his finger on his\n", - "write these notes. I can only trust in God and wait till the fog clears.\n", - "Then, if I can't steer to any harbour with the wind that is, I shall cut\n", - "It is nearly all over now. Just as I was beginning to hope that the mate\n", - "his face convulsed with fear. \"Save me! save me!\" he cried, and then\n", - "a steady voice he said: \"You had better come too, captain, before it is\n", - "too late. _He_ is there. I know the secret now. The sea will save me\n", - "from Him, and it is all that is left!\" Before I could say a word, or\n", - "followed them himself. God help me! How am I to account for all these\n", - "horrors when I get to port? _When_ I get to port! Will that ever be?\n", - "_4 August._--Still fog, which the sunrise cannot pierce. I know there is\n", - "the dimness of the night I saw It--Him! God forgive me, but the mate was\n", - "them I shall tie that which He--It!--dare not touch; and then, come good\n", - "growing weaker, and the night is coming on. If He can look me in the\n", - "and the Blessed Virgin and the saints help a poor ignorant soul trying\n", - "Of course the verdict was an open one. There is no evidence to adduce;\n", - "arranged that his body is to be taken with a train of boats up the Esk\n", - "for a piece and then brought back to Tate Hill Pier and up the abbey\n", - "No trace has ever been found of the great dog; at which there is much\n", - "_Mina Murray's Journal._\n", - "_8 August._--Lucy was very restless all night, and I, too, could not\n", - "like a distant gun. Strangely enough, Lucy did not wake; but she got up\n", - "Early in the morning we both got up and went down to the harbour to see\n", - "felt glad that Jonathan was not on the sea last night, but on land. But,\n", - "oh, is he on land or sea? Where is he, and how? I am getting fearfully\n", - "_10 August._--The funeral of the poor sea-captain to-day was most\n", - "was carried by captains all the way from Tate Hill Pier up to the\n", - "the cortège of boats went up the river to the Viaduct and came down\n", - "The poor fellow was laid to rest quite near our seat so that we stood on\n", - "it when the time came and saw everything. Poor Lucy seemed much upset.\n", - "She was restless and uneasy all the time, and I cannot but think that\n", - "cause in that poor old Mr. Swales was found dead this morning on our\n", - "dear old man! Perhaps he had seen Death with his dying eyes! Lucy is so\n", - "The dog is always with him. They are both quiet persons, and I never saw\n", - "shall take her for a long walk by the cliffs to Robin Hood's Bay and\n", - "CHAPTER VIII\n", - "MINA MURRAY'S JOURNAL\n", - "_Same day, 11 o'clock p. m._--Oh, but I am tired! If it were not that I\n", - "and give us a fresh start. We had a capital \"severe tea\" at Robin Hood's\n", - "Bay in a sweet little old-fashioned inn, with a bow-window right over\n", - "shocked the \"New Woman\" with our appetites. Men are more tolerant, bless\n", - "them! Then we walked home with some, or rather many, stoppages to rest,\n", - "The young curate came in, however, and Mrs. Westenra asked him to stay\n", - "looks, oh, so sweet. If Mr. Holmwood fell in love with her seeing her\n", - "Some of the \"New Women\" writers will some day start an idea that men and\n", - "accepting. But I suppose the New Woman won't condescend in future to\n", - "of it, too! There's some consolation in that. I am so happy to-night,\n", - "because dear Lucy seems better. I really believe she has turned the\n", - "quite happy if I only knew if Jonathan.... God bless and keep him.\n", - "_11 August, 3 a. m._--Diary again. No sleep now, so I may as well write.\n", - "Suddenly I became broad awake, and sat up, with a horrible sense of fear\n", - "so I could not see Lucy's bed; I stole across and felt for her. The bed\n", - "Dressing-gown and dress were both in their places. \"Thank God,\" I said\n", - "downstairs and looked in the sitting-room. Not there! Then I looked in\n", - "Lucy must have gone out as she was. There was no time to think of what\n", - "Crescent, and there was not a soul in sight. I ran along the North\n", - "Terrace, but could see no sign of the white figure which I expected. At\n", - "the edge of the West Cliff above the pier I looked across the harbour to\n", - "the East Cliff, in the hope or fear--I don't know which--of seeing Lucy\n", - "nothing, as the shadow of a cloud obscured St. Mary's Church and all\n", - "fish-market to the bridge, which was the only way to reach the East\n", - "Cliff. The town seemed as dead, for not a soul did I see; I rejoiced\n", - "that it was so, for I wanted no witness of poor Lucy's condition. The\n", - "half-reclining white figure. I called in fright, \"Lucy! Lucy!\" and\n", - "that I could see Lucy half reclining with her head lying over the back\n", - "When I bent over her I could see that she was still asleep. Her lips\n", - "Lucy always wakes prettily, and even at such a time, when her body must\n", - "passed along, the gravel hurt my feet, and Lucy noticed me wince. She\n", - "However, when we got to the pathway outside the churchyard, where there\n", - "Fortune favoured us, and we got home without meeting a soul. Once we saw\n", - "Scotland. My heart beat so loud all the time that sometimes I thought I\n", - "should faint. I was filled with anxiety about Lucy, not only for her\n", - "_Same day, noon._--All goes well. Lucy slept till I woke her and seemed\n", - "_Same day, night._--We passed a happy day. The air was clear, and the\n", - "sun bright, and there was a cool breeze. We took our lunch to Mulgrave\n", - "Woods, Mrs. Westenra driving by the road and Lucy and I walking by the\n", - "Jonathan been with me. But there! I must only be patient. In the evening\n", - "we strolled in the Casino Terrace, and heard some good music by Spohr\n", - "and Mackenzie, and went to bed early. Lucy seems more restful than she\n", - "_12 August._--My expectations were wrong, for twice during the night I\n", - "was wakened by Lucy trying to get out. She seemed, even in her sleep, to\n", - "and told me all about Arthur. I told her how anxious I was about\n", - "Jonathan, and then she tried to comfort me. Well, she succeeded\n", - "_13 August._--Another quiet day, and to bed with the key on my wrist as\n", - "before. Again I awoke in the night, and found Lucy sitting up in bed,\n", - "from the window Lucy had lain down again, and was sleeping peacefully.\n", - "She did not stir again all night.\n", - "_14 August._--On the East Cliff, reading and writing all day. Lucy seems\n", - "dinner, and had come to the top of the steps up from the West Pier and\n", - "down in the sky, was just dropping behind Kettleness; the red light was\n", - "thrown over on the East Cliff and the old abbey, and seemed to bathe\n", - "suddenly Lucy murmured as if to herself:--\n", - "\"His red eyes again! They are just the same.\" It was such an odd\n", - "slewed round a little, so as to see Lucy well without seeming to stare\n", - "sunlight was shining on the windows of St. Mary's Church behind our\n", - "called Lucy's attention to the peculiar effect, and she became herself\n", - "sadness, for I was thinking of Jonathan. When coming home--it was then\n", - "Crescent was in shadow, everything could be well seen--I threw a glance\n", - "up at our window, and saw Lucy's head leaning out. I thought that\n", - "on the window. There distinctly was Lucy with her head lying up against\n", - "She looks so sweet as she sleeps; but she is paler than is her wont, and\n", - "_15 August._--Rose later than usual. Lucy was languid and tired, and\n", - "Arthur's father is better, and wants the marriage to come off soon. Lucy\n", - "in the day she told me the cause. She is grieved to lose Lucy as her\n", - "protect her. Poor dear, sweet lady! She confided to me that she has got\n", - "her death-warrant. She has not told Lucy, and made me promise secrecy;\n", - "the dreadful night of Lucy's sleep-walking.\n", - "_17 August._--No diary for two whole days. I have not had the heart to\n", - "No news from Jonathan, and Lucy seems to be growing weaker, whilst her\n", - "mother's hours are numbering to a close. I do not understand Lucy's\n", - "They are still open, and, if anything, larger than before, and the\n", - "_Letter, Samuel F. Billington & Son, Solicitors, Whitby, to Messrs.\n", - "Carter, Paterson & Co., London._\n", - "\"_17 August._\n", - "\"Dear Sirs,--\n", - "\"Herewith please receive invoice of goods sent by Great Northern\n", - "Railway. Same are to be delivered at Carfax, near Purfleet, immediately\n", - "on receipt at goods station King's Cross. The house is at present empty,\n", - "\"You will please deposit the boxes, fifty in number, which form the\n", - "goods leave by the train at 9:30 to-night, and will be due at King's\n", - "Cross at 4:30 to-morrow afternoon. As our client wishes the delivery\n", - "at King's Cross at the time named and forthwith conveying the goods to\n", - "Should the charge be less than this amount, you can return balance; if\n", - "\"Pray do not take us as exceeding the bounds of business courtesy in\n", - "_\"We are, dear Sirs,\n", - "\"Faithfully yours,\n", - "\"SAMUEL F. BILLINGTON & SON.\"_\n", - "_Letter, Messrs. Carter, Paterson & Co., London, to Messrs. Billington &\n", - "Son, Whitby._\n", - "\"_21 August._\n", - "\"Dear Sirs,--\n", - "\"We beg to acknowledge £10 received and to return cheque £1 17s. 9d,\n", - "\"We are, dear Sirs,\n", - "\"Yours respectfully.\n", - "\"_Pro_ CARTER, PATERSON & CO.\"\n", - "_Mina Murray's Journal._\n", - "_18 August._--I am happy to-day, and write sitting on the seat in the\n", - "\"My poor little feet didn't make much noise then! I daresay poor old Mr.\n", - "Swales would have told me that it was because I didn't want to wake up\n", - "Geordie.\" As she was in such a communicative humour, I asked her if she\n", - "look came into her forehead, which Arthur--I call him Arthur from her\n", - "I seem to remember that once the West Lighthouse was right under me,\n", - "Then she began to laugh. It seemed a little uncanny to me, and I\n", - "subjects, and Lucy was like her old self again. When we got home the\n", - "_19 August._--Joy, joy, joy! although not all joy. At last, news of\n", - "Jonathan. The dear fellow has been ill; that is why he did not write. I\n", - "morning and go over to Jonathan, and to help to nurse him if necessary,\n", - "we were to be married out there. I have cried over the good Sister's\n", - "Jonathan, and must be next my heart, for he is _in_ my heart. My journey\n", - "dress; Lucy will bring my trunk to London and keep it till I send for\n", - "to Jonathan, my husband. The letter that he has seen and touched must\n", - "_Letter, Sister Agatha, Hospital of St. Joseph and Ste. Mary,\n", - "Buda-Pesth, to Miss Wilhelmina Murray._\n", - "\"_12 August._\n", - "\"Dear Madam,--\n", - "\"I write by desire of Mr. Jonathan Harker, who is himself not strong\n", - "enough to write, though progressing well, thanks to God and St. Joseph\n", - "and Ste. Mary. He has been under our care for nearly six weeks,\n", - "and to say that by this post I write for him to Mr. Peter Hawkins,\n", - "Exeter, to say, with his dutiful respects, that he is sorry for his\n", - "\"Believe me,\n", - "\"Yours, with sympathy and all blessings,\n", - "\"SISTER AGATHA.\n", - "\"P. S.--My patient being asleep, I open this to let you know something\n", - "wife. All blessings to you both! He has had some fearful shock--so says\n", - "could understand. He came in the train from Klausenburg, and the guard\n", - "he was English, they gave him a ticket for the furthest station on the\n", - "\"Be assured that he is well cared for. He has won all hearts by his\n", - "safety's sake. There are, I pray God and St. Joseph and Ste. Mary, many,\n", - "_Dr. Seward's Diary._\n", - "_19 August._--Strange and sudden change in Renfield last night. About\n", - "\"I don't want to talk to you: you don't count now; the Master is at\n", - "The attendant thinks it is some sudden form of religious mania which has\n", - "he himself is God. These infinitesimal distinctions between man and man\n", - "are too paltry for an Omnipotent Being. How these madmen give themselves\n", - "away! The real God taketh heed lest a sparrow fall; but the God created\n", - "For half an hour or more Renfield kept getting excited in greater and\n", - "\"Bother them all! I don't care a pin about them.\"\n", - "\"What?\" I said. \"You don't mean to tell me you don't care about\n", - "spiders?\" (Spiders at present are his hobby and the note-book is filling\n", - "up with columns of small figures.) To this he answered enigmatically:--\n", - "\"The bride-maidens rejoice the eyes that wait the coming of the bride;\n", - "He would not explain himself, but remained obstinately seated on his bed\n", - "I am weary to-night and low in spirits. I cannot but think of Lucy, and\n", - "the modern Morpheus--C_{2}HCl_{3}O. H_{2}O! I must be careful not to let\n", - "Lucy, and I shall not dishonour her by mixing the two. If need be,\n", - "_Later._--Glad I made the resolution; gladder that I kept to it. I had\n", - "night-watchman came to me, sent up from the ward, to say that Renfield\n", - "He said he had seen him not ten minutes before, seemingly asleep in his\n", - "The attendant thought it would be more useful to watch where he should\n", - "immediately and follow me into the grounds of Carfax, in case our friend\n", - "dropped down on the other side. I could see Renfield's figure just\n", - "is upon him! After a few minutes, however, I could see that he did not\n", - "\"I am here to do Your bidding, Master. I am Your slave, and You will\n", - "reward me, for I shall be faithful. I have worshipped You long and afar\n", - "off. Now that You are near, I await Your commands, and You will not pass\n", - "me by, will You, dear Master, in Your distribution of good things?\"\n", - "He _is_ a selfish old beggar anyhow. He thinks of the loaves and fishes\n", - "even when he believes he is in a Real Presence. His manias make a\n", - "He is immensely strong, for he was more like a wild beast than a man. I\n", - "rate. Jack Sheppard himself couldn't get free from the strait-waistcoat\n", - "Just now he spoke coherent words for the first time:--\n", - "\"I shall be patient, Master. It is coming--coming--coming!\"\n", - "So I took the hint, and came too. I was too excited to sleep, but this\n", - "CHAPTER IX\n", - "_Letter, Mina Harker to Lucy Westenra._\n", - "\"_Buda-Pesth, 24 August._\n", - "\"My dearest Lucy,--\n", - "parted at the railway station at Whitby. Well, my dear, I got to Hull\n", - "all right, and caught the boat to Hamburg, and then the train on here. I\n", - "knew I was coming to Jonathan, and, that as I should have to do some\n", - "to recall it. Sister Agatha, who is a good creature and a born nurse,\n", - "secrets of God, and that if a nurse through her vocation should hear\n", - "_my_ being jealous about Jonathan! And yet, my dear, let me whisper, I\n", - "\"When he woke he asked me for his coat, as he wanted to get something\n", - "from the pocket; I asked Sister Agatha, and she brought all his things.\n", - "Then he called me back, and when I came he had his hand over the\n", - "\"'Wilhelmina'--I knew then that he was in deadly earnest, for he has\n", - "know it. I want to take up my life here, with our marriage.' For, my\n", - "complete. 'Are you willing, Wilhelmina, to share my ignorance? Here is\n", - "the bitter hours, asleep or awake, sane or mad, recorded here.' He fell\n", - "have asked Sister Agatha to beg the Superior to let our wedding be this\n", - "\"She has come and told me that the chaplain of the English mission\n", - "after as Jonathan awakes....\n", - "\"Lucy, the time has come and gone. I feel very solemn, but very, very\n", - "words seemed to choke me. The dear sisters were so kind. Please God, I\n", - "chaplain and the sisters had left me alone with my husband--oh, Lucy, it\n", - "Lucy, it was the first time he took _his wife's_ hand, and said that it\n", - "\"Well, my dear, what could I say? I could only tell him that I was the\n", - "\"Lucy dear, do you know why I tell you all this? It is not only because\n", - "please Almighty God, your life may be all it promises: a long day of\n", - "once, and, perhaps, write you very soon again. I must stop, for Jonathan\n", - "\"Your ever-loving\n", - "\"MINA HARKER.\"\n", - "_Letter, Lucy Westenra to Mina Harker._\n", - "\"_Whitby, 30 August._\n", - "\"My dearest Mina,--\n", - "\"Oceans of love and millions of kisses, and may you soon be in your own\n", - "stay with us here. The strong air would soon restore Jonathan; it has\n", - "fat. By the way, I forgot to tell you that Arthur is here. We have such\n", - "So no more just at present from your loving\n", - "\"LUCY.\n", - "\"P. S.--Mother sends her love. She seems better, poor dear. \"P. P.\n", - "S.--We are to be married on 28 September.\"\n", - "_Dr. Seward's Diary._\n", - "_20 August._--The case of Renfield grows even more interesting. He has\n", - "For the first week after his attack he was perpetually violent. Then one\n", - "himself: \"Now I can wait; now I can wait.\" The attendant came to tell\n", - "\"They think I could hurt you! Fancy _me_ hurting _you_! The fools!\"\n", - "It was soothing, somehow, to the feelings to find myself dissociated\n", - "After a while I left him. The attendant tells me that he was quiet\n", - "Happy thought! We shall to-night play sane wits against mad ones. He\n", - "_23 August._--\"The unexpected always happens.\" How well Disraeli knew\n", - "The unexpected again! I am called; the patient has once more escaped.\n", - "_Later._--Another night adventure. Renfield artfully waited until the\n", - "Again he went into the grounds of the deserted house, and we found him\n", - "\"You needn't tie me; I shall go quietly!\" Without trouble we came back\n", - "_Lucy Westenra's Diary_\n", - "_Hillingham, 24 August._--I must imitate Mina, and keep writing things\n", - "seemed to be dreaming again just as I was at Whitby. Perhaps it is the\n", - "weak and worn out. When Arthur came to lunch he looked quite grieved\n", - "_25 August._--Another bad night. Mother did not seem to take to my\n", - "get air enough. I shall try to cheer up when Arthur comes, or else I\n", - "_Letter, Arthur Holmwood to Dr. Seward._\n", - "\"_Albemarle Hotel, 31 August._\n", - "\"My dear Jack,--\n", - "spoken--disease of the heart--though poor Lucy does not know it yet. I\n", - "Hillingham to-morrow, two o'clock, so as not to arouse any suspicion in\n", - "Mrs. Westenra, and after lunch Lucy will take an opportunity of being\n", - "\"ARTHUR.\"\n", - "_Telegram, Arthur Holmwood to Seward._\n", - "\"_1 September._\n", - "\"Am summoned to see my father, who is worse. Am writing. Write me fully\n", - "by to-night's post to Ring. Wire me if necessary.\"\n", - "_Letter from Dr. Seward to Arthur Holmwood._\n", - "\"_2 September._\n", - "\"My dear old fellow,--\n", - "\"With regard to Miss Westenra's health I hasten to let you know at once\n", - "\"I found Miss Westenra in seemingly gay spirits. Her mother was present,\n", - "We lunched alone, and as we all exerted ourselves to be cheerful, we\n", - "amongst us. Then Mrs. Westenra went to lie down, and Lucy was left with\n", - "matter in a word. 'Tell Arthur everything you choose. I do not care for\n", - "myself, but all for him!' So I am quite free.\n", - "used to walk in her sleep, and that when in Whitby the habit came back,\n", - "and that once she walked out in the night and went to East Cliff, where\n", - "Miss Murray found her; but she assures me that of late the habit has not\n", - "have written to my old friend and master, Professor Van Helsing, of\n", - "Amsterdam, who knows as much about obscure diseases as any one in the\n", - "relations to Miss Westenra. This, my dear fellow, is in obedience to\n", - "her. Van Helsing would, I know, do anything for me for a personal\n", - "him. I have asked him to come at once. I shall see Miss Westenra\n", - "to-morrow again. She is to meet me at the Stores, so that I may not\n", - "\"Yours always,\n", - "\"JOHN SEWARD.\"\n", - "_Letter, Abraham Van Helsing, M. D., D. Ph., D. Lit., etc., etc., to Dr.\n", - "Seward._\n", - "\"_2 September._\n", - "\"My good Friend,--\n", - "\"When I have received your letter I am already coming to you. By good\n", - "Have then rooms for me at the Great Eastern Hotel, so that I may be near\n", - "if it must. Till then good-bye, my friend John.\n", - "\"VAN HELSING.\"\n", - "_Letter, Dr. Seward to Hon. Arthur Holmwood._\n", - "\"_3 September._\n", - "\"My dear Art,--\n", - "\"Van Helsing has come and gone. He came on with me to Hillingham, and\n", - "found that, by Lucy's discretion, her mother was lunching out, so that\n", - "we were alone with her. Van Helsing made a very careful examination of\n", - "trust to me in the matter, he said: 'You must tell him all you think.\n", - "Tell him what I think, if you can guess it, if you will. Nay, I am not\n", - "return to Amsterdam. He would not give me any further clue. You must not\n", - "be angry with me, Art, because his very reticence means that all his\n", - "_The Daily Telegraph_. He seemed not to notice, but remarked that the\n", - "smuts in London were not quite so bad as they used to be when he was a\n", - "\"Well, as to the visit. Lucy was more cheerful than on the day I first\n", - "struggle for it. I believe Van Helsing saw it, too, for I saw the quick\n", - "geniality that I could see poor Lucy's pretense of animation merge into\n", - "\"'My dear young miss, I have the so great pleasure because you are so\n", - "ghastly pale. To them I say: \"Pouf!\"' And he snapped his fingers at me\n", - "and went on: 'But you and I shall show them how wrong they are. How can\n", - "of a young ladies? He has his madmans to play with, and to bring them\n", - "young ladies! He has no wife nor daughter, and the young do not tell\n", - "And yet there is cause; there is always cause for everything. I must go\n", - "\"As I tell you, he would not say a word more, even when we were alone.\n", - "And so now, Art, you know all I know. I shall keep stern watch. I trust\n", - "come at once to Lucy; so do not be over-anxious unless you hear from\n", - "_Dr. Seward's Diary._\n", - "_4 September._--Zoöphagous patient still keeps up our interest in him.\n", - "He had only one outburst and that was yesterday at an unusual time. Just\n", - "_Later._--Another change in my patient. At five o'clock I looked in on\n", - "\"All over! all over! He has deserted me. No hope for me now unless I do\n", - "it for myself!\" Then suddenly turning to me in a resolute way, he said:\n", - "\"Doctor, won't you be very good to me and let me have a little more\n", - "\"And the flies?\" I said.\n", - "\"Yes! The flies like it, too, and I like the flies; therefore I like\n", - "it.\" And there are people who know so little as to think that madmen do\n", - "_Midnight._--Another change in him. I had been to see Miss Westenra,\n", - "beauty of a sunset over London, with its lurid lights and inky shadows\n", - "me, so I asked him: \"Are you not going to keep flies any more?\"\n", - "\"No,\" said he; \"I am sick of all that rubbish!\" He certainly is a\n", - "We shall see.\n", - "_Telegram, Seward, London, to Van Helsing, Amsterdam._\n", - "\"_4 September._--Patient still better to-day.\"\n", - "_Telegram, Seward, London, to Van Helsing, Amsterdam._\n", - "\"_5 September._--Patient greatly improved. Good appetite; sleeps\n", - "_Telegram, Seward, London, to Van Helsing, Amsterdam._\n", - "\"_6 September._--Terrible change for the worse. Come at once; do not\n", - "lose an hour. I hold over telegram to Holmwood till have seen you.\"\n", - "CHAPTER X\n", - "_Letter, Dr. Seward to Hon. Arthur Holmwood._\n", - "\"_6 September._\n", - "\"My dear Art,--\n", - "\"My news to-day is not so good. Lucy this morning had gone back a bit.\n", - "There is, however, one good thing which has arisen from it; Mrs.\n", - "Westenra was naturally anxious concerning Lucy, and has consulted me\n", - "her that my old master, Van Helsing, the great specialist, was coming to\n", - "shock to her would mean sudden death, and this, in Lucy's weak\n", - "difficulties, all of us, my poor old fellow; but, please God, we shall\n", - "Yours ever,\n", - "\"JOHN SEWARD.\"\n", - "_Dr. Seward's Diary._\n", - "_7 September._--The first thing Van Helsing said to me when we met at\n", - "Liverpool Street was:--\n", - "\"Have you said anything to our young friend the lover of her?\"\n", - "\"No,\" I said. \"I waited till I had seen you, as I said in my telegram. I\n", - "wrote him a letter simply telling him that you were coming, as Miss\n", - "Westenra was not so well, and that I should let him know if need be.\"\n", - "\"Right, my friend,\" he said, \"quite right! Better he not know as yet;\n", - "shall know all. And, my good friend John, let me caution you. You deal\n", - "as you deal discreetly with your madmen, so deal with God's madmen,\n", - "and breed. You and I shall keep as yet what we know here, and here.\" He\n", - "\"Why not now?\" I asked. \"It may do some good; we may arrive at some\n", - "decision.\" He stopped and looked at me, and said:--\n", - "\"My friend John, when the corn is grown, even before it has\n", - "and say to you: 'Look! he's good corn; he will make good crop when the\n", - "he used long ago to do at lectures, and said: \"The good husbandman tell\n", - "the work of their life. See you now, friend John? I have sown my corn,\n", - "and Nature has her work to do in making it sprout; if he sprout at all,\n", - "there's some promise; and I wait till the ear begins to swell.\" He broke\n", - "\"You were always a careful student, and your case-book was ever more\n", - "Even if you have not kept the good practise, let me tell you that this\n", - "Hereafter it may be of interest to you to see how true you guess. We\n", - "When I described Lucy's symptoms--the same as before, but infinitely\n", - "Mrs. Westenra met us. She was alarmed, but not nearly so much as I\n", - "something like the way Dame Nature gathers round a foreign body an\n", - "a rule that she should not be present with Lucy or think of her illness\n", - "I saw again the hand of Nature fighting for life. Van Helsing and I were\n", - "shown up to Lucy's room. If I was shocked when I saw her yesterday, I\n", - "hear. Van Helsing's face grew set as marble, and his eyebrows converged\n", - "Van Helsing beckoned to me, and we went gently out of the room. The\n", - "closed the door. \"My God!\" he said; \"this is dreadful. There is no time\n", - "\"I am younger and stronger, Professor. It must be me.\"\n", - "\"Then get ready at once. I will bring up my bag. I am prepared.\"\n", - "door, and Arthur was stepping quickly in. He rushed up to me, saying in\n", - "\"Jack, I was so anxious. I read between the lines of your letter, and\n", - "myself. Is not that gentleman Dr. Van Helsing? I am so thankful to you,\n", - "sir, for coming.\" When first the Professor's eye had lit upon him he had\n", - "\"Sir, you have come in time. You are the lover of our dear miss. She is\n", - "bad, very, very bad. Nay, my child, do not go like that.\" For he\n", - "suddenly grew pale and sat down in a chair almost fainting. \"You are to\n", - "\"What can I do?\" asked Arthur hoarsely. \"Tell me, and I shall do it. My\n", - "her.\" The Professor has a strongly humorous side, and I could from old\n", - "\"My young sir, I do not ask so much as that--not the last!\"\n", - "\"What shall I do?\" There was fire in his eyes, and his open nostril\n", - "quivered with intent. Van Helsing slapped him on the shoulder. \"Come!\"\n", - "he said. \"You are a man, and it is a man we want. You are better than\n", - "me, better than my friend John.\" Arthur looked bewildered, and the\n", - "Professor went on by explaining in a kindly way:--\n", - "\"Young miss is bad, very bad. She wants blood, and blood she must have\n", - "or die. My friend John and I have consulted; and we are about to perform\n", - "the more young and strong than me\"--here Arthur took my hand and wrung\n", - "so calm and our blood not so bright than yours!\" Arthur turned to him\n", - "\"If you only knew how gladly I would die for her you would\n", - "He stopped, with a sort of choke in his voice.\n", - "\"Good boy!\" said Van Helsing. \"In the not-so-far-off you will be happy\n", - "must leave at my sign. Say no word to Madame; you know how it is with\n", - "her! There must be no shock; any knowledge of this would be one. Come!\"\n", - "We all went up to Lucy's room. Arthur by direction remained outside.\n", - "Lucy turned her head and looked at us, but said nothing. She was not\n", - "to us; that was all. Van Helsing took some things from his bag and laid\n", - "\"Now, little miss, here is your medicine. Drink it off, like a good\n", - "child. See, I lift you so that to swallow is easy. Yes.\" She had made\n", - "It astonished me how long the drug took to act. This, in fact, marked\n", - "its potency; and she fell into a deep sleep. When the Professor was\n", - "satisfied he called Arthur into the room, and bade him strip off his\n", - "coat. Then he added: \"You may take that one little kiss whiles I bring\n", - "over the table. Friend John, help to me!\" So neither of us looked whilst\n", - "Van Helsing turning to me, said:\n", - "\"He is so young and strong and of blood so pure that we need not\n", - "Then with swiftness, but with absolute method, Van Helsing performed the\n", - "back to poor Lucy's cheeks, and through Arthur's growing pallor the joy\n", - "anxious, for the loss of blood was telling on Arthur, strong man as he\n", - "was. It gave me an idea of what a terrible strain Lucy's system must\n", - "have undergone that what weakened Arthur only partially restored her.\n", - "But the Professor's face was set, and he stood watch in hand and with\n", - "his eyes fixed now on the patient and now on Arthur. I could hear my own\n", - "heart beat. Presently he said in a soft voice: \"Do not stir an instant.\n", - "It is enough. You attend him; I will look to her.\" When all was over I\n", - "could see how much Arthur was weakened. I dressed the wound and took his\n", - "arm to bring him away, when Van Helsing spoke without turning round--the\n", - "\"The brave lover, I think, deserve another kiss, which he shall have\n", - "presently.\" And as he had now finished his operation, he adjusted the\n", - "could hear the deep hiss of indrawn breath which is one of Van Helsing's\n", - "me, saying: \"Now take down our brave young lover, give him of the port\n", - "When Arthur had gone I went back to the room. Lucy was sleeping gently,\n", - "breast heaved. By the bedside sat Van Helsing, looking at her intently.\n", - "The velvet band again covered the red mark. I asked the Professor in a\n", - "\"What do you make of that mark on her throat?\"\n", - "\"What do you make of it?\"\n", - "\"Well?\" said Van Helsing.\n", - "\"Well,\" said I, \"I can make nothing of it.\" The Professor stood up. \"I\n", - "must go back to Amsterdam to-night,\" he said. \"There are books and\n", - "\"Shall I have a nurse?\" I asked.\n", - "\"We are the best nurses, you and I. You keep watch all night; see that\n", - "\"May begin?\" I said. \"What on earth do you mean?\"\n", - "\"We shall see!\" he answered, as he hurried out. He came back a moment\n", - "\"Remember, she is your charge. If you leave her, and harm befall, you\n", - "_Dr. Seward's Diary--continued._\n", - "_8 September._--I sat up all night with Lucy. The opiate worked itself\n", - "absolute prostration which she had undergone. When I told Mrs. Westenra\n", - "that Dr. Van Helsing had directed that I should sit up with her she\n", - "\"You do not want to go to sleep?\"\n", - "\"No; I am afraid.\"\n", - "\"Afraid to go to sleep! Why so? It is the boon we all crave for.\"\n", - "\"Ah, not if you were like me--if sleep was to you a presage of horror!\"\n", - "\"A presage of horror! What on earth do you mean?\"\n", - "\"But, my dear girl, you may sleep to-night. I am here watching you, and\n", - "\"Ah, I can trust you!\" I seized the opportunity, and said: \"I promise\n", - "\"You will? Oh, will you really? How good you are to me. Then I will\n", - "sleep!\" And almost at the word she gave a deep sigh of relief, and sank\n", - "All night long I watched by her. She never stirred, but slept on and on\n", - "In the early morning her maid came, and I left her in her care and took\n", - "wire to Van Helsing and to Arthur, telling them of the excellent result\n", - "past day and night. A telegram came from Van Helsing at Amsterdam whilst\n", - "I was at dinner, suggesting that I should be at Hillingham to-night, as\n", - "_9 September_.--I was pretty tired and worn out when I got to\n", - "Hillingham. For two nights I had hardly had a wink of sleep, and my\n", - "\"No sitting up to-night for you. You are worn out. I am quite well\n", - "excellent port. Then Lucy took me upstairs, and showed me a room next\n", - "her own, where a cozy fire was burning. \"Now,\" she said, \"you must stay\n", - "So, on her renewing her promise to call me if she should want anything,\n", - "_Lucy Westenra's Diary._\n", - "_9 September._--I feel so happy to-night. I have been so miserably weak,\n", - "a long spell of east wind out of a steel sky. Somehow Arthur feels very,\n", - "eyes and sympathy on ourselves, whilst health and strength give Love\n", - "where my thoughts are. If Arthur only knew! My dear, my dear, your ears\n", - "last night! How I slept, with that dear, good Dr. Seward watching me.\n", - "And to-night I shall not fear to sleep, since he is close at hand and\n", - "within call. Thank everybody for being so good to me! Thank God!\n", - "Good-night, Arthur.\n", - "_Dr. Seward's Diary._\n", - "_10 September._--I was conscious of the Professor's hand on my head, and\n", - "\"And how is our patient?\"\n", - "\"Well, when I left her, or rather when she left me,\" I answered.\n", - "\"Come, let us see,\" he said. And together we went into the room.\n", - "The blind was down, and I went over to raise it gently, whilst Van\n", - "Helsing stepped, with his soft, cat-like tread, over to the bed.\n", - "As I raised the blind, and the morning sunlight flooded the room, I\n", - "heard the Professor's low hiss of inspiration, and knowing its rarity, a\n", - "his exclamation of horror, \"Gott in Himmel!\" needed no enforcement from\n", - "There on the bed, seemingly in a swoon, lay poor Lucy, more horribly\n", - "corpse after a prolonged illness. Van Helsing raised his foot to stamp\n", - "stood to him, and he put it down again softly. \"Quick!\" he said. \"Bring\n", - "He wetted the poor white lips with it, and together we rubbed palm and\n", - "\"It is not too late. It beats, though but feebly. All our work is\n", - "undone; we must begin again. There is no young Arthur here now; I have\n", - "to call on you yourself this time, friend John.\" As he spoke, he was\n", - "matter how willingly it be given, is a terrible feeling--Van Helsing\n", - "held up a warning finger. \"Do not stir,\" he said, \"but I fear that with\n", - "of morphia.\" He proceeded then, swiftly and deftly, to carry out his\n", - "intent. The effect on Lucy was not bad, for the faint seemed to merge\n", - "The Professor watched me critically. \"That will do,\" he said. \"Already?\"\n", - "I remonstrated. \"You took a great deal more from Art.\" To which he\n", - "\"He is her lover, her _fiancé_. You have work, much work, to do for her\n", - "When we stopped the operation, he attended to Lucy, whilst I applied\n", - "\"Mind, nothing must be said of this. If our young lover should turn up\n", - "When I came back he looked at me carefully, and then said:--\n", - "\"You are not much the worse. Go into the room, and lie on your sofa, and\n", - "and over again how Lucy had made such a retrograde movement, and how\n", - "Lucy slept well into the day, and when she woke she was fairly well and\n", - "strong, though not nearly so much so as the day before. When Van Helsing\n", - "Lucy chatted with me freely, and seemed quite unconscious that anything\n", - "\"We owe you so much, Dr. Seward, for all you have done, but you really\n", - "do!\" As she spoke, Lucy turned crimson, though it was only momentarily,\n", - "Van Helsing returned in a couple of hours, and presently said to me:\n", - "\"Now you go home, and eat much and drink enough. Make yourself strong. I\n", - "In the hall two of the maids came to me, and asked if they or either of\n", - "them might not sit up with Miss Lucy. They implored me to let them; and\n", - "when I said it was Dr. Van Helsing's wish that either he or I should sit\n", - "I am weak at present, and perhaps because it was on Lucy's account, that\n", - "_11 September._--This afternoon I went over to Hillingham. Found Van\n", - "Helsing in excellent spirits, and Lucy much better. Shortly after I had\n", - "arrived, a big parcel from abroad came for the Professor. He opened it\n", - "\"These are for you, Miss Lucy,\" he said.\n", - "\"For me? Oh, Dr. Van Helsing!\"\n", - "\"Yes, my dear, but not for you to play with. These are medicines.\" Here\n", - "Lucy made a wry face. \"Nay, but they are not to take in a decoction or\n", - "point out to my friend Arthur what woes he may have to endure in seeing\n", - "of Lethe, and of that fountain of youth that the Conquistadores sought\n", - "for in the Floridas, and find him all too late.\"\n", - "Whilst he was speaking, Lucy had been examining the flowers and smelling\n", - "\"Oh, Professor, I believe you are only putting up a joke on me. Why,\n", - "To my surprise, Van Helsing rose up and said with all his sternness, his\n", - "\"No trifling with me! I never jest! There is grim purpose in all I do;\n", - "others if not for your own.\" Then seeing poor Lucy scared, as she might\n", - "well be, he went on more gently: \"Oh, little miss, my dear, do not fear\n", - "for you. Now sit still awhile. Come with me, friend John, and you shall\n", - "help me deck the room with my garlic, which is all the way from Haarlem,\n", - "where my friend Vanderpool raise herb in his glass-houses all the year.\n", - "We went into the room, taking the flowers with us. The Professor's\n", - "\"Well, Professor, I know you always have a reason for what you do, but\n", - "\"Perhaps I am!\" he answered quietly as he began to make the wreath which\n", - "Lucy was to wear round her neck.\n", - "We then waited whilst Lucy made her toilet for the night, and when she\n", - "\"Take care you do not disturb it; and even if the room feel close, do\n", - "\"I promise,\" said Lucy, \"and thank you both a thousand times for all\n", - "your kindness to me! Oh, what have I done to be blessed with such\n", - "As we left the house in my fly, which was waiting, Van Helsing said:--\n", - "\"To-night I can sleep in peace, and sleep I want--two nights of travel,\n", - "He seemed so confident that I, remembering my own confidence two nights\n", - "CHAPTER XI\n", - "_Lucy Westenra's Diary._\n", - "_12 September._--How good they all are to me. I quite love that dear Dr.\n", - "Van Helsing. I wonder why he was so anxious about these flowers. He\n", - "for me! How blessed are some people, whose lives have no fears, no\n", - "and lying like Ophelia in the play, with \"virgin crants and maiden\n", - "There is peace in its smell; I feel sleep coming already. Good-night,\n", - "_Dr. Seward's Diary._\n", - "_13 September._--Called at the Berkeley and found Van Helsing, as usual,\n", - "Professor took his bag, which he always brings with him now.\n", - "Let all be put down exactly. Van Helsing and I arrived at Hillingham at\n", - "Mrs. Westenra coming out of the morning room. She is always an early\n", - "\"You will be glad to know that Lucy is better. The dear child is still\n", - "should disturb her.\" The Professor smiled, and looked quite jubilant. He\n", - "\"Aha! I thought I had diagnosed the case. My treatment is working,\" to\n", - "\"You must not take all the credit to yourself, doctor. Lucy's state this\n", - "\"How you do mean, ma'am?\" asked the Professor.\n", - "\"Well, I was anxious about the dear child in the night, and went into\n", - "She moved off into her boudoir, where she usually breakfasted early. As\n", - "she had spoken, I watched the Professor's face, and saw it turn ashen\n", - "Then, for the first time in my life, I saw Van Helsing break down. He\n", - "his arms again, as though appealing to the whole universe. \"God! God!\n", - "God!\" he said. \"What have we done, what has this poor thing done, that\n", - "we are so sore beset? Is there fate amongst us still, sent down from the\n", - "pagan world of old, that such things must be, and in such way? This poor\n", - "beset! How are all the powers of the devils against us!\" Suddenly he\n", - "jumped to his feet. \"Come,\" he said, \"come, we must see and act. Devils\n", - "all the same.\" He went to the hall-door for his bag; and together we\n", - "went up to Lucy's room.\n", - "Once again I drew up the blind, whilst Van Helsing went towards the bed.\n", - "This time he did not start as he looked on the poor face with the same\n", - "\"As I expected,\" he murmured, with that hissing inspiration of his which\n", - "warning hand. \"No!\" he said. \"To-day you must operate. I shall provide.\n", - "You are weakened already.\" As he spoke he took off his coat and rolled\n", - "Again the operation; again the narcotic; again some return of colour to\n", - "watched whilst Van Helsing recruited himself and rested.\n", - "Presently he took an opportunity of telling Mrs. Westenra that she must\n", - "not remove anything from Lucy's room without consulting him; that the\n", - "After another hour Lucy waked from her sleep, fresh and bright and\n", - "What does it all mean? I am beginning to wonder if my long habit of life\n", - "_Lucy Westenra's Diary._\n", - "_17 September._--Four days and nights of peace. I am getting so strong\n", - "however, Dr. Van Helsing has been with me, all this bad dreaming seems\n", - "Haarlem. To-night Dr. Van Helsing is going away, as he has to be for a\n", - "day in Amsterdam. But I need not be watched; I am well enough to be left\n", - "alone. Thank God for mother's sake, and dear Arthur's, and for all our\n", - "last night Dr. Van Helsing slept in his chair a lot of the time. I found\n", - "_\"The Pall Mall Gazette,\" 18 September._\n", - "THE ESCAPED WOLF.\n", - "PERILOUS ADVENTURE OF OUR INTERVIEWER.\n", - "_Interview with the Keeper in the Zoölogical Gardens._\n", - "After many inquiries and almost as many refusals, and perpetually using\n", - "the words \"Pall Mall Gazette\" as a sort of talisman, I managed to find\n", - "the keeper of the section of the Zoölogical Gardens in which the wolf\n", - "department is included. Thomas Bilder lives in one of the cottages in\n", - "\"Now, sir, you can go on and arsk me what you want. You'll excoose me\n", - "\"How do you mean, ask them questions?\" I queried, wishful to get him\n", - "\"'Ittin' of them over the 'ead with a pole is one way; scratchin' of\n", - "arsk the Superintendent if you might arsk me questions. Without offence\n", - "\"You did.\"\n", - "\"An' when you said you'd report me for usin' of obscene language that\n", - "as the wolves, and lions, and tigers does. But, Lor' love yer 'art, now\n", - "Drive along with your questions. I know what yer a-comin' at, that 'ere\n", - "\"Exactly. I want you to give me your view of it. Just tell me how it\n", - "\"All right, guv'nor. This 'ere is about the 'ole story. That 'ere wolf\n", - "what we called Bersicker was one of three grey ones that came from\n", - "Norway to Jamrach's, which we bought off him four years ago. He was a\n", - "\"Don't you mind him, sir!\" broke in Mrs. Tom, with a cheery laugh. \"'E's\n", - "'isself! But there ain't no 'arm in 'im.\"\n", - "\"Well, sir, it was about two hours after feedin' yesterday when I first\n", - "away straight. There was Bersicker a-tearin' like a mad thing at the\n", - "'Keeper, these wolves seem upset at something.'\n", - "\"'Maybe it's you,' says I, for I did not like the airs as he give\n", - "of insolent smile, with a mouth full of white, sharp teeth. 'Oh no, they\n", - "\"'Ow yes, they would,' says I, a-imitatin' of him. 'They always likes a\n", - "\"Well, it was a odd thing, but when the animiles see us a-talkin' they\n", - "lay down, and when I went over to Bersicker he let me stroke his ears\n", - "\"'Tyke care,' says I. 'Bersicker is quick.'\n", - "\"'Never mind,' he says. 'I'm used to 'em!'\n", - "\"'Are you in the business yourself?' I says, tyking off my 'at, for a\n", - "\"'No' says he, 'not exactly in the business, but I 'ave made pets of\n", - "several.' And with that he lifts his 'at as perlite as a lord, and walks\n", - "away. Old Bersicker kep' a-lookin' arter 'im till 'e was out of sight,\n", - "There warn't no one near, except some one that was evidently a-callin' a\n", - "dog somewheres out back of the gardings in the Park road. Once or twice\n", - "turnin' in, an', bust me, but when I kem opposite to old Bersicker's\n", - "\"Did any one else see anything?\"\n", - "\"One of our gard'ners was a-comin' 'ome about that time from a 'armony,\n", - "night-a-huntin' of the Park for Bersicker, that he remembered seein'\n", - "\"Now, Mr. Bilder, can you account in any way for the escape of the\n", - "\"Well, sir,\" he said, with a suspicious sort of modesty, \"I think I can;\n", - "\"Certainly I shall. If a man like you, who knows the animals from\n", - "\"Well then, sir, I accounts for it this way; it seems to me that 'ere\n", - "From the hearty way that both Thomas and his wife laughed at the joke I\n", - "with the worthy Thomas, but I thought I knew a surer way to his heart,\n", - "\"Now, Mr. Bilder, we'll consider that first half-sovereign worked off,\n", - "\"Right y'are, sir,\" he said briskly. \"Ye'll excoose me, I know, for\n", - "\"Well, I never!\" said the old lady.\n", - "\"My opinion is this: that 'ere wolf is a-'idin' of, somewheres. The\n", - "Lor' bless you, in real life a wolf is only a low creature, not half so\n", - "hisself, and more like he's somewhere round the Park a-'idin' an'\n", - "green eyes a-shining at her out of the dark! If he can't get food he's\n", - "against the window, and Mr. Bilder's face doubled its natural length\n", - "\"God bless me!\" he said. \"If there ain't old Bersicker come back by\n", - "He went to the door and opened it; a most unnecessary proceeding it\n", - "After all, however, there is nothing like custom, for neither Bilder nor\n", - "picture-wolves--Red Riding Hood's quondam friend, whilst moving her\n", - "The whole scene was an unutterable mixture of comedy and pathos. The\n", - "wicked wolf that for half a day had paralysed London and set all the\n", - "prodigal son. Old Bilder examined him all over with most tender\n", - "\"There, I knew the poor old chap would get into some kind of trouble;\n", - "didn't I say it all along? Here's his head all cut and full of broken\n", - "This 'ere's what comes of it. Come along, Bersicker.\"\n", - "He took the wolf and locked him up in a cage, with a piece of meat that\n", - "to-day regarding the strange escapade at the Zoo.\n", - "_Dr. Seward's Diary._\n", - "_17 September._--I was engaged after dinner in my study posting up my\n", - "books, which, through press of other work and the many visits to Lucy,\n", - "into the Superintendent's study is almost unknown. Without an instant's\n", - "Before he could strike again, however, I got in my right and he was\n", - "placidly, simply repeating over and over again: \"The blood is the life!\n", - "The blood is the life!\"\n", - "late for my physical good, and then the prolonged strain of Lucy's\n", - "weary, and I need rest, rest, rest. Happily Van Helsing has not summoned\n", - "_Telegram, Van Helsing, Antwerp, to Seward, Carfax._\n", - "(Sent to Carfax, Sussex, as no county given; delivered late by\n", - "\"_17 September._--Do not fail to be at Hillingham to-night. If not\n", - "_Dr. Seward's Diary._\n", - "_18 September._--Just off for train to London. The arrival of Van\n", - "Helsing's telegram filled me with dismay. A whole night lost, and I know\n", - "possible that all may be well, but what _may_ have happened? Surely\n", - "me, and then I can complete my entry on Lucy's phonograph.\n", - "_Memorandum left by Lucy Westenra._\n", - "_17 September. Night._--I write this and leave it to be seen, so that no\n", - "I went to bed as usual, taking care that the flowers were placed as Dr.\n", - "Van Helsing directed, and soon fell asleep.\n", - "sleep-walking on the cliff at Whitby when Mina saved me, and which now I\n", - "know so well. I was not afraid, but I did wish that Dr. Seward was in\n", - "the next room--as Dr. Van Helsing said he would be--so that I might have\n", - "alone, I opened my door and called out: \"Is there anybody there?\" There\n", - "Then outside in the shrubbery I heard a sort of howl like a dog's, but\n", - "startled and a little frightened, and cried out: \"What is that?\" I tried\n", - "The window blind blew back with the wind that rushed in, and in the\n", - "other things, she clutched the wreath of flowers that Dr. Van Helsing\n", - "The time did not seem long, but very, very awful, till I recovered\n", - "mother's breast. When they were there I remembered what Dr. Van Helsing\n", - "My heart sank when I saw what had happened. They all four lay helpless\n", - "The air seems full of specks, floating and circling in the draught from\n", - "the window, and the lights burn blue and dim. What am I to do? God\n", - "gone! It is time that I go too. Good-bye, dear Arthur, if I should not\n", - "survive this night. God keep you, dear, and God help me!\n", - "CHAPTER XII\n", - "DR. SEWARD'S DIARY\n", - "_18 September._--I drove at once to Hillingham and arrived early.\n", - "Keeping my cab at the gate, I went up the avenue alone. I knocked gently\n", - "and rang as quietly as possible, for I feared to disturb Lucy or her\n", - "tight around us? Was it indeed a house of death to which I had come, too\n", - "danger to Lucy, if she had had again one of those frightful relapses;\n", - "gate, and a few seconds later I met Van Helsing running up the avenue.\n", - "When he saw me, he gasped out:--\n", - "\"Then it was you, and just arrived. How is she? Are we too late? Did you\n", - "\"Then I fear we are too late. God's will be done!\" With his usual\n", - "recuperative energy, he went on: \"Come. If there be no way open to get\n", - "We went round to the back of the house, where there was a kitchen\n", - "window. The Professor took a small surgical saw from his case, and\n", - "opened the window. I helped the Professor in, and followed him. There\n", - "room left no doubt as to their condition. Van Helsing and I looked at\n", - "each other, and as we moved away he said: \"We can attend to them later.\"\n", - "Then we ascended to Lucy's room. For an instant or two we paused at the\n", - "How shall I describe what we saw? On the bed lay two women, Lucy and her\n", - "fixed upon it. By her side lay Lucy, with face white and still more\n", - "Without a word the Professor bent over the bed, his head almost touching\n", - "poor Lucy's breast; then he gave a quick turn of his head, as of one who\n", - "\"It is not yet too late! Quick! quick! Bring the brandy!\"\n", - "but returned to Van Helsing. He rubbed the brandy, as on another\n", - "Flick them in the face with a wet towel, and flick them hard. Make them\n", - "Miss Lucy. So, sobbing and crying, they went about their way, half clad\n", - "got a bath and carried Lucy out as she was and placed her in it. Whilst\n", - "with a message from Mr. Holmwood. I bade her simply tell him that he\n", - "I never saw in all my experience the Professor work in such deadly\n", - "\"If that were all, I would stop here where we are now, and let her fade\n", - "away into peace, for I see no light in life over her horizon.\" He went\n", - "Presently we both began to be conscious that the heat was beginning to\n", - "stethoscope, and her lungs had a perceptible movement. Van Helsing's\n", - "\"The first gain is ours! Check to the King!\"\n", - "We took Lucy into another room, which had by now been prepared, and laid\n", - "that Van Helsing tied a soft silk handkerchief round her throat. She was\n", - "Van Helsing called in one of the women, and told her to stay with her\n", - "\"We must consult as to what is to be done,\" he said as we descended the\n", - "death which the British woman of the lower classes always rigidly\n", - "enough for our purposes. Van Helsing's sternness was somewhat relieved\n", - "\"What are we to do now? Where are we to turn for help? We must have\n", - "\"What's the matter with me, anyhow?\"\n", - "The voice came from the sofa across the room, and its tones brought\n", - "relief and joy to my heart, for they were those of Quincey Morris. Van\n", - "Helsing started angrily at the first sound, but his face softened and a\n", - "glad look came into his eyes as I cried out: \"Quincey Morris!\" and\n", - "\"What brought you here?\" I cried as our hands met.\n", - "\"I guess Art is the cause.\"\n", - "He handed me a telegram:--\n", - "\"Have not heard from Seward for three days, and am terribly anxious.\n", - "Cannot leave. Father still in same condition. Send me word how Lucy is.\n", - "Do not delay.--HOLMWOOD.\"\n", - "Van Helsing strode forward, and took his hand, looking him straight in\n", - "us for all he's worth, but God sends us men when we want them.\"\n", - "Once again we went through that ghastly operation. I have not the heart\n", - "and hear. However, the action of both heart and lungs improved, and Van\n", - "Helsing made a subcutaneous injection of morphia, as before, and with\n", - "good effect. Her faint became a profound slumber. The Professor watched\n", - "whilst I went downstairs with Quincey Morris, and sent one of the maids\n", - "to pay off one of the cabmen who were waiting. I left Quincey lying down\n", - "Lucy now was. When I came softly in, I found Van Helsing with a sheet or\n", - "He handed me the paper saying only: \"It dropped from Lucy's breast when\n", - "When I had read it, I stood looking at the Professor, and after a pause\n", - "asked him: \"In God's name, what does it all mean? Was she, or is she,\n", - "did not know what to say more. Van Helsing put out his hand and took the\n", - "\"Do not trouble about it now. Forget it for the present. You shall know\n", - "is it that you came to me to say?\" This brought me back to fact, and I\n", - "had it would surely kill poor Lucy, if nothing else did. I know, and you\n", - "know, and the other doctor who attended her knows, that Mrs. Westenra\n", - "\"Good, oh my friend John! Well thought of! Truly Miss Lucy, if she be\n", - "man. Ah yes, I know, friend John; I am not blind! I love you all the\n", - "more for it! Now go.\"\n", - "In the hall I met Quincey Morris, with a telegram for Arthur telling him\n", - "that Mrs. Westenra was dead; that Lucy also had been ill, but was now\n", - "going on better; and that Van Helsing and I were with her. I told him\n", - "\"When you come back, Jack, may I have two words with you all to\n", - "When I got back Quincey was waiting for me. I told him I would see him\n", - "as soon as I knew about Lucy, and went up to her room. She was still\n", - "sleeping, and the Professor seemingly had not moved from his seat at her\n", - "So I went down to Quincey and took him into the breakfast-room, where\n", - "\"Jack Seward, I don't want to shove myself in anywhere where I've no\n", - "with her? The Dutchman--and a fine old fellow he is; I can see\n", - "Now I know well that you medical men speak _in camera_, and that a man\n", - "\"That's so,\" I said, and he went on:--\n", - "\"I take it that both you and Van Helsing had done already what I did\n", - "\"That's so.\"\n", - "\"And I guess Art was in it too. When I saw him four days ago down at his\n", - "since I was on the Pampas and had a mare that I was fond of go to grass\n", - "betraying confidence, Arthur was the first, is not that so?\" As he spoke\n", - "Professor wished kept secret; but already he knew so much, and guessed\n", - "in the same phrase: \"That's so.\"\n", - "\"And how long has this been going on?\"\n", - "\"About ten days.\"\n", - "\"Ten days! Then I guess, Jack Seward, that that poor pretty creature\n", - "of four strong men. Man alive, her whole body wouldn't hold it.\" Then,\n", - "coming close to me, he spoke in a fierce half-whisper: \"What took it\n", - "I shook my head. \"That,\" I said, \"is the crux. Van Helsing is simply\n", - "There has been a series of little circumstances which have thrown out\n", - "all our calculations as to Lucy being properly watched. But these shall\n", - "not occur again. Here we stay until all be well--or ill.\" Quincey held\n", - "out his hand. \"Count me in,\" he said. \"You and the Dutchman will tell me\n", - "When she woke late in the afternoon, Lucy's first movement was to feel\n", - "in her breast, and, to my surprise, produced the paper which Van Helsing\n", - "had given me to read. The careful Professor had replaced it where it had\n", - "come from, lest on waking she should be alarmed. Her eye then lit on Van\n", - "Helsing and on me too, and gladdened. Then she looked around the room,\n", - "took the paper from her breast and tore it in two. Van Helsing stepped\n", - "the fragments. Van Helsing seemed surprised, and his brows gathered as\n", - "_19 September._--All last night she slept fitfully, being always afraid\n", - "to sleep, and something weaker when she woke from it. The Professor and\n", - "unattended. Quincey Morris said nothing about his intention, but I knew\n", - "When the day came, its searching light showed the ravages in poor Lucy's\n", - "slept, and both Van Helsing and I noticed the difference in her, between\n", - "one. In the afternoon she asked for Arthur, and we telegraphed for him.\n", - "Quincey went off to meet him at the station.\n", - "When he arrived it was nearly six o'clock, and the sun was setting full\n", - "colour to the pale cheeks. When he saw her, Arthur was simply choking\n", - "It was now nearly one o'clock, and he and Van Helsing are sitting with\n", - "this on Lucy's phonograph. Until six o'clock they are to try to rest. I\n", - "_Letter, Mina Harker to Lucy Westenra._\n", - "(Unopened by her.)\n", - "\"_17 September._\n", - "\"My dearest Lucy,--\n", - "\"It seems _an age_ since I heard from you, or indeed since I wrote. You\n", - "at Exeter there was a carriage waiting for us, and in it, though he had\n", - "an attack of gout, Mr. Hawkins. He took us to his house, where there\n", - "dinner Mr. Hawkins said:--\n", - "\"'My dears, I want to drink your health and prosperity; and may every\n", - "my will I have left you everything.' I cried, Lucy dear, as Jonathan and\n", - "\"So here we are, installed in this beautiful old house, and from both my\n", - "housekeeping. Jonathan and Mr. Hawkins are busy all day; for, now that\n", - "Jonathan is a partner, Mr. Hawkins wants to tell him all about the\n", - "\"How is your dear mother getting on? I wish I could run up to town for a\n", - "shoulders; and Jonathan wants looking after still. He is beginning to\n", - "placidity. However, thank God, these occasions grow less frequent as the\n", - "and is it to be a public or a private wedding? Tell me all about it,\n", - "junior partner of the important firm Hawkins & Harker; and so, as you\n", - "Lucy, and all blessings on you.\n", - "\"Yours,\n", - "\"MINA HARKER.\"\n", - "_Report from Patrick Hennessey, M. D., M. R. C. S. L. K. Q. C. P. I.,\n", - "etc., etc., to John Seward, M. D._\n", - "\"_20 September._\n", - "\"My dear Sir,--\n", - "\"In accordance with your wishes, I enclose report of the conditions of\n", - "everything left in my charge.... With regard to patient, Renfield, there\n", - "Renfield's room, the patient began to rate him from within, and called\n", - "mind as to what kind of a place he had got to by saying: 'Lor' bless\n", - "beast like that.' Then he asked his way civilly enough, and I told him\n", - "on him, he began to shout: 'I'll frustrate them! They shan't rob me!\n", - "they shan't murder me by inches! I'll fight for my Lord and Master!' and\n", - "room. One of the attendants, Hardy, had a finger broken. However, I set\n", - "\"The two carriers were at first loud in their threats of actions for\n", - "follows:--Jack Smollet, of Dudding's Rents, King George's Road, Great\n", - "Walworth, and Thomas Snelling, Peter Farley's Row, Guide Court, Bethnal\n", - "Green. They are both in the employment of Harris & Sons, Moving and\n", - "Shipment Company, Orange Master's Yard, Soho.\n", - "\"Believe me, dear Sir,\n", - "\"Yours faithfully,\n", - "\"PATRICK HENNESSEY.\"\n", - "_Letter, Mina Harker to Lucy Westenra_.\n", - "(Unopened by her.)\n", - "\"_18 September._\n", - "\"My dearest Lucy,--\n", - "\"Such a sad blow has befallen us. Mr. Hawkins has died very suddenly.\n", - "Some may not think it so sad for us, but we had both come to so love him\n", - "Jonathan is greatly distressed. It is not only that he feels sorrow,\n", - "dream of avarice, but Jonathan feels it on another account. He says the\n", - "the midst of your own happiness; but, Lucy dear, I must tell some one,\n", - "for the strain of keeping up a brave and cheerful appearance to Jonathan\n", - "up to London, as we must do the day after to-morrow; for poor Mr.\n", - "Hawkins left in his will that he was to be buried in the grave with his\n", - "father. As there are no relations at all, Jonathan will have to be chief\n", - "\"Your loving\n", - "\"MINA HARKER.\"\n", - "_Dr. Seward's Diary._\n", - "_20 September._--Only resolution and habit can let me make an entry\n", - "been flapping those grim wings to some purpose of late--Lucy's mother\n", - "and Arthur's father, and now.... Let me get on with my work.\n", - "I duly relieved Van Helsing in his watch over Lucy. We wanted Arthur to\n", - "all break down for want of rest, lest Lucy should suffer, that he agreed\n", - "to go. Van Helsing was very kind to him. \"Come, my child,\" he said;\n", - "Come to the drawing-room, where there is a big fire, and there are two\n", - "sleep.\" Arthur went off with him, casting back a longing look on Lucy's\n", - "should be. I could see that the Professor had carried out in this room,\n", - "window-sashes reeked with it, and round Lucy's neck, over the silk\n", - "handkerchief which Van Helsing made her keep on, was a rough chaplet of\n", - "I found that Lucy had moved slightly, and had torn away the garlic\n", - "Presently she woke, and I gave her food, as Van Helsing had prescribed.\n", - "She took but a little, and that languidly. There did not seem to be with\n", - "At six o'clock Van Helsing came to relieve me. Arthur had then fallen\n", - "into a doze, and he mercifully let him sleep on. When he saw Lucy's face\n", - "sharp whisper: \"Draw up the blind; I want light!\" Then he bent down,\n", - "and, with his face almost touching Lucy's, examined her carefully. He\n", - "he did so he started back, and I could hear his ejaculation, \"Mein\n", - "Gott!\" as it was smothered in his throat. I bent over and looked, too,\n", - "The wounds on the throat had absolutely disappeared.\n", - "For fully five minutes Van Helsing stood looking at her, with his face\n", - "\"She is dying. It will not be long now. It will be much difference, mark\n", - "he thought he was late, and expressed his fear. I assured him that Lucy\n", - "was still asleep, but told him as gently as I could that both Van\n", - "Helsing and I feared that the end was near. He covered his face with his\n", - "shook with grief. I took him by the hand and raised him up. \"Come,\" I\n", - "When we came into Lucy's room I could see that Van Helsing had, with\n", - "everything look as pleasing as possible. He had even brushed Lucy's\n", - "\"Arthur! Oh, my love, I am so glad you have come!\" He was stooping to\n", - "kiss her, when Van Helsing motioned him back. \"No,\" he whispered, \"not\n", - "yet! Hold her hand; it will comfort her more.\"\n", - "So Arthur took her hand and knelt beside her, and she looked her best,\n", - "And then insensibly there came the strange change which I had noticed in\n", - "\"Arthur! Oh, my love, I am so glad you have come! Kiss me!\" Arthur bent\n", - "eagerly over to kiss her; but at that instant Van Helsing, who, like me,\n", - "\"Not for your life!\" he said; \"not for your living soul and hers!\" And\n", - "Arthur was so taken aback that he did not for a moment know what to do\n", - "I kept my eyes fixed on Lucy, as did Van Helsing, and we saw a spasm as\n", - "Very shortly after she opened her eyes in all their softness, and\n", - "putting out her poor, pale, thin hand, took Van Helsing's great brown\n", - "one; drawing it to her, she kissed it. \"My true friend,\" she said, in a\n", - "faint voice, but with untellable pathos, \"My true friend, and his! Oh,\n", - "hand, as one who registers an oath. Then he turned to Arthur, and said\n", - "to him: \"Come, my child, take her hand in yours, and kiss her on the\n", - "Their eyes met instead of their lips; and so they parted.\n", - "Lucy's eyes closed; and Van Helsing, who had been watching closely, took\n", - "Arthur's arm, and drew him away.\n", - "And then Lucy's breathing became stertorous again, and all at once it\n", - "\"It is all over,\" said Van Helsing. \"She is dead!\"\n", - "I took Arthur by the arm, and led him away to the drawing-room, where he\n", - "I went back to the room, and found Van Helsing looking at poor Lucy, and\n", - "Death had given back part of her beauty, for her brow and cheeks had\n", - "\"We thought her dying whilst she slept,\n", - "And sleeping when she died.\"\n", - "I stood beside Van Helsing, and said:--\n", - "\"Ah, well, poor girl, there is peace for her at last. It is the end!\"\n", - "He turned to me, and said with grave solemnity:--\n", - "\"Not so; alas! not so. It is only the beginning!\"\n", - "When I asked him what he meant, he only shook his head and answered:--\n", - "\"We can do nothing as yet. Wait and see.\"\n", - "CHAPTER XIII\n", - "DR. SEWARD'S DIARY--_continued_.\n", - "The funeral was arranged for the next succeeding day, so that Lucy and\n", - "Even the woman who performed the last offices for the dead remarked to\n", - "\"She makes a very beautiful corpse, sir. It's quite a privilege to\n", - "I noticed that Van Helsing never kept far away. This was possible from\n", - "at hand; and as Arthur had to be back the next day to attend at his\n", - "bidden. Under the circumstances, Van Helsing and I took it upon\n", - "ourselves to examine papers, etc. He insisted upon looking over Lucy's\n", - "foreigner, might not be quite aware of English legal requirements, and\n", - "As he spoke he took from his pocket-book the memorandum which had been\n", - "in Lucy's breast, and which she had torn in her sleep.\n", - "\"When you find anything of the solicitor who is for the late Mrs.\n", - "Westenra, seal all her papers, and write him to-night. For me, I watch\n", - "here in the room and in Miss Lucy's old room all night, and I myself\n", - "the name and address of Mrs. Westenra's solicitor and had written to\n", - "letter, when, to my surprise, Van Helsing walked into the room,\n", - "\"Can I help you, friend John? I am free, and if I may, my service is to\n", - "\"Have you got what you looked for?\" I asked, to which he replied:--\n", - "When we had finished the work in hand, he said to me:--\n", - "\"And now, friend John, I think we may to bed. We want sleep, both you\n", - "Before turning in we went to look at poor Lucy. The undertaker had\n", - "winding-sheet was laid over the face; when the Professor bent over and\n", - "wax candles showing a sufficient light to note it well. All Lucy's\n", - "The Professor looked sternly grave. He had not loved her as I had, and\n", - "there was no need for tears in his eyes. He said to me: \"Remain till I\n", - "\"To-morrow I want you to bring me, before night, a set of post-mortem\n", - "\"Must we make an autopsy?\" I asked.\n", - "\"Yes and no. I want to operate, but not as you think. Let me tell you\n", - "her heart. Ah! you a surgeon, and so shocked! You, whom I have seen with\n", - "the rest shudder. Oh, but I must not forget, my dear friend John, that\n", - "Arthur I must not; he will be free after his father's funeral to-morrow,\n", - "\"But why do it at all? The girl is dead. Why mutilate her poor body\n", - "without need? And if there is no necessity for a post-mortem and nothing\n", - "knowledge--why do it? Without such it is monstrous.\"\n", - "For answer he put his hand on my shoulder, and said, with infinite\n", - "\"Friend John, I pity your poor bleeding heart; and I love you the more\n", - "send for me when the great trouble came? Yes! Were you not amazed, nay\n", - "horrified, when I would not let Arthur kiss his love--though she was\n", - "dying--and snatched him away by all my strength? Yes! And yet you saw\n", - "weak, and she kiss my rough old hand and bless me? Yes! And did you not\n", - "hear me swear promise to her, that so she closed her eyes grateful? Yes!\n", - "\"Well, I have good reason now for all I want to do. You have for many\n", - "John. If you trust me not, then I must tell what I think; and that is\n", - "oh! so lonely when I want all help and courage that may be!\" He paused a\n", - "moment and went on solemnly: \"Friend John, there are strange and\n", - "her back towards me, so did not see me--and go into the room where Lucy\n", - "I must have slept long and soundly, for it was broad daylight when Van\n", - "Helsing waked me by coming into my room. He came over to my bedside and\n", - "\"You need not trouble about the knives; we shall not do it.\"\n", - "\"Why not?\" I asked. For his solemnity of the night before had greatly\n", - "\"Because,\" he said sternly, \"it is too late--or too early. See!\" Here he\n", - "held up the little golden crucifix. \"This was stolen in the night.\"\n", - "\"How, stolen,\" I asked in wonder, \"since you have it now?\"\n", - "\"Because I get it back from the worthless wretch who stole it, from the\n", - "He went away on the word, leaving me with a new mystery to think of, a\n", - "The forenoon was a dreary time, but at noon the solicitor came: Mr.\n", - "Marquand, of Wholeman, Sons, Marquand & Lidderdale. He was very genial\n", - "cares as to details. During lunch he told us that Mrs. Westenra had for\n", - "entailed property of Lucy's father's which now, in default of direct\n", - "real and personal, was left absolutely to Arthur Holmwood. When he had\n", - "\"Frankly we did our best to prevent such a testamentary disposition, and\n", - "Frankly, however, I must admit that in this case any other form of\n", - "treated at her decease as under intestacy. In which case Lord Godalming,\n", - "He was a good fellow, but his rejoicing at the one little part--in which\n", - "He did not remain long, but said he would look in later in the day and\n", - "see Lord Godalming. His coming, however, had been a certain comfort to\n", - "once. Van Helsing ordered the former arrangement to be adhered to,\n", - "explaining that, as Lord Godalming was coming very soon, it would be\n", - "the night before, so that when Arthur came such shocks to his feelings\n", - "Poor fellow! He looked desperately sad and broken; even his stalwart\n", - "bitter blow to him. With me he was warm as ever, and to Van Helsing he\n", - "constraint with him. The Professor noticed it, too, and motioned me to\n", - "\"You loved her too, old fellow; she told me all about it, and there was\n", - "Here he suddenly broke down, and threw his arms round my shoulders and\n", - "\"Oh, Jack! Jack! What shall I do! The whole of life seems gone from me\n", - "\"Come and look at her.\"\n", - "Together we moved over to the bed, and I lifted the lawn from her face.\n", - "God! how beautiful she was. Every hour seemed to be enhancing her\n", - "loveliness. It frightened and amazed me somewhat; and as for Arthur, he\n", - "\"Jack, is she really dead?\"\n", - "I left him in the drawing-room, and told Van Helsing that he had said\n", - "came out of the room again I told him of Arthur's question, and he\n", - "We all dined together, and I could see that poor Art was trying to make\n", - "the best of things. Van Helsing had been silent all dinner-time; but\n", - "\"Lord----\"; but Arthur interrupted him:--\n", - "\"No, no, not that, for God's sake! not yet at any rate. Forgive me, sir:\n", - "The Professor answered very sweetly:--\n", - "'Mr.,' and I have grown to love you--yes, my dear boy, to love you--as\n", - "Arthur.\"\n", - "Arthur held out his hand, and took the old man's warmly.\n", - "\"Call me what you will,\" he said. \"I hope I may always have the title of\n", - "your goodness to my poor dear.\" He paused a moment, and went on: \"I know\n", - "Professor nodded--\"you must forgive me.\"\n", - "He answered with a grave kindness:--\n", - "\"And, indeed, indeed, sir,\" said Arthur warmly, \"I shall in all ways\n", - "Jack's friend, and you were hers. You shall do what you like.\"\n", - "The Professor cleared his throat a couple of times, as though about to\n", - "\"May I ask you something now?\"\n", - "\"Certainly.\"\n", - "\"You know that Mrs. Westenra left you all her property?\"\n", - "\"No, poor dear; I never thought of it.\"\n", - "\"And as it is all yours, you have a right to deal with it as you will. I\n", - "want you to give me permission to read all Miss Lucy's papers and\n", - "Lucy's sake?\"\n", - "Arthur spoke out heartily, like his old self:--\n", - "\"Dr. Van Helsing, you may do what you will. I feel that in saying this I\n", - "The old Professor stood up as he said solemnly:--\n", - "\"And you are right. There will be pain for us all; but it will not be\n", - "I slept on a sofa in Arthur's room that night. Van Helsing did not go to\n", - "never out of sight of the room where Lucy lay in her coffin, strewn with\n", - "_Mina Harker's Journal._\n", - "_22 September._--In the train to Exeter. Jonathan sleeping.\n", - "It seems only yesterday that the last entry was made, and yet how much\n", - "between then, in Whitby and all the world before me, Jonathan away and\n", - "no news of him; and now, married to Jonathan, Jonathan a solicitor, a\n", - "partner, rich, master of his business, Mr. Hawkins dead and buried, and\n", - "Jonathan with another attack that may harm him. Some day he may ask me\n", - "The service was very simple and very solemn. There were only ourselves\n", - "and the servants there, one or two old friends of his from Exeter, his\n", - "London agent, and a gentleman representing Sir John Paxton, the\n", - "President of the Incorporated Law Society. Jonathan and I stood hand in\n", - "We came back to town quietly, taking a 'bus to Hyde Park Corner.\n", - "Jonathan thought it would interest me to go into the Row for a while, so\n", - "of the empty chair at home; so we got up and walked down Piccadilly.\n", - "Jonathan was holding me by the arm, the way he used to in old days\n", - "pedantry of it biting into yourself a bit; but it was Jonathan, and he\n", - "girl, in a big cart-wheel hat, sitting in a victoria outside Guiliano's,\n", - "when I felt Jonathan clutch my arm so tight that he hurt me, and he said\n", - "under his breath: \"My God!\" I am always anxious about Jonathan, for I\n", - "He was very pale, and his eyes seemed bulging out as, half in terror and\n", - "Jonathan kept staring at him, till I was afraid he would notice. I\n", - "Jonathan why he was disturbed, and he answered, evidently thinking that\n", - "I knew as much about it as he did: \"Do you see who it is?\"\n", - "\"No, dear,\" I said; \"I don't know him; who is it?\" His answer seemed to\n", - "to me, Mina, to whom he was speaking:--\n", - "\"It is the man himself!\"\n", - "The poor dear was evidently terrified at something--very greatly\n", - "moved up Piccadilly he followed in the same direction, and hailed a\n", - "\"I believe it is the Count, but he has grown young. My God, if this be\n", - "so! Oh, my God! my God! If I only knew! if I only knew!\" He was\n", - "further, and then went in and sat for a while in the Green Park. It was\n", - "After a few minutes' staring at nothing, Jonathan's eyes closed, and he\n", - "\"Why, Mina, have I been asleep! Oh, do forgive me for being so rude.\n", - "Come, and we'll have a cup of tea somewhere.\" He had evidently forgotten\n", - "must open that parcel, and know what is written. Oh, Jonathan, you will,\n", - "_Later._--A sad home-coming in every way--the house empty of the dear\n", - "soul who was so good to us; Jonathan still pale and dizzy under a slight\n", - "relapse of his malady; and now a telegram from Van Helsing, whoever he\n", - "\"You will be grieved to hear that Mrs. Westenra died five days ago, and\n", - "that Lucy died the day before yesterday. They were both buried to-day.\"\n", - "Oh, what a wealth of sorrow in a few words! Poor Mrs. Westenra! poor\n", - "Lucy! Gone, gone, never to return to us! And poor, poor Arthur, to have\n", - "lost such sweetness out of his life! God help us all to bear our\n", - "_Dr. Seward's Diary._\n", - "_22 September._--It is all over. Arthur has gone back to Ring, and has\n", - "taken Quincey Morris with him. What a fine fellow is Quincey! I believe\n", - "in my heart of hearts that he suffered as much about Lucy's death as any\n", - "of us; but he bore himself through it like a moral Viking. If America\n", - "indeed. Van Helsing is lying down, having a rest preparatory to his\n", - "journey. He goes over to Amsterdam to-night, but says he returns\n", - "he has work to do in London which may take him some time. Poor old\n", - "standing beside Arthur, who, poor fellow, was speaking of his part in\n", - "the operation where his blood had been transfused to his Lucy's veins; I\n", - "could see Van Helsing's face grow white and purple by turns. Arthur was\n", - "and that she was his wife in the sight of God. None of us said a word of\n", - "the other operations, and none of us ever shall. Arthur and Quincey went\n", - "away together to the station, and Van Helsing and I came on here. The\n", - "manifestations of nervous strength or weakness! Then when his face grew\n", - "His reply was in a way characteristic of him, for it was logical and\n", - "\"Ah, you don't comprehend, friend John. Do not think that I am not sad,\n", - "door and say, 'May I come in?' is not the true laughter. No! he is a\n", - "time of suitability. He say, 'I am here.' Behold, in example I grieve my\n", - "coffin and say 'Thud! thud!' to my heart, till it send back the blood\n", - "John, for we are more level in experiences than father and son--yet even\n", - "at such moment King Laugh he come to me and shout and bellow in my ear,\n", - "'Here I am! here I am!' till the blood come dance back and bring some of\n", - "the sunshine that he carry with him to my cheek. Oh, friend John, it is\n", - "troubles; and yet when King Laugh come he make them all dance to the\n", - "make with that smileless mouth of him. And believe me, friend John, that\n", - "become too great, and we break. But King Laugh he come like the\n", - "\"Oh, it was the grim irony of it all--this so lovely lady garlanded with\n", - "who loved her, and whom she loved; and that sacred bell going 'Toll!\n", - "for what? She is dead; so! Is it not?\"\n", - "\"Well, for the life of me, Professor,\" I said, \"I can't see anything to\n", - "Art and his trouble? Why, his heart was simply breaking.\"\n", - "\"Just so. Said he not that the transfusion of his blood to her veins had\n", - "\"Yes, and it was a sweet and comforting idea for him.\"\n", - "\"Quite so. But there was a difficulty, friend John. If so that, then\n", - "what about the others? Ho, ho! Then this so sweet maid is a polyandrist,\n", - "and me, with my poor wife dead to me, but alive by Church's law, though\n", - "\"Friend John, forgive me if I pain. I showed not my feeling to others\n", - "If you could have looked into my very heart then when I want to laugh;\n", - "now, when King Laugh have pack up his crown, and all that is to him--for\n", - "\"Because I know!\"\n", - "And now we are all scattered; and for many a long day loneliness will\n", - "London; where the air is fresh, and the sun rises over Hampstead Hill,\n", - "So I can finish this diary; and God only knows if I shall ever begin\n", - "\"FINIS.\"\n", - "_\"The Westminster Gazette,\" 25 September._\n", - "A HAMPSTEAD MYSTERY.\n", - "The neighbourhood of Hampstead is just at present exercised with a\n", - "was known to the writers of headlines as \"The Kensington Horror,\" or\n", - "\"The Stabbing Woman,\" or \"The Woman in Black.\" During the past two or\n", - "home or neglecting to return from their playing on the Heath. In all\n", - "is that they had been with a \"bloofer lady.\" It has always been late in\n", - "that even Ellen Terry could not be so winningly attractive as some of\n", - "There is, however, possibly a serious side to the question, for some of\n", - "when very young, in and around Hampstead Heath, and for any stray dog\n", - "_\"The Westminster Gazette,\" 25 September._\n", - "_Extra Special._\n", - "THE HAMPSTEAD HORROR.\n", - "ANOTHER CHILD INJURED.\n", - "_The \"Bloofer Lady.\"_\n", - "We have just received intelligence that another child, missed last\n", - "Shooter's Hill side of Hampstead Heath, which is, perhaps, less\n", - "CHAPTER XIV\n", - "MINA HARKER'S JOURNAL\n", - "_23 September_.--Jonathan is better after a bad night. I am so glad that\n", - "and now how proud I am to see my Jonathan rising to the height of his\n", - "_24 September_.--I hadn't the heart to write last night; that terrible\n", - "record of Jonathan's upset me so. Poor dear! How he must have suffered,\n", - "we saw yesterday! He seemed quite certain of him.... Poor fellow! I\n", - "wedding-day he said: \"Unless some solemn duty come upon me to go back to\n", - "the bitter hours, asleep or awake, mad or sane.\" There seems to be\n", - "through it all some thread of continuity.... That fearful Count was\n", - "coming to London.... If it should be, and he came to London, with his\n", - "poor Jonathan may not be upset, for I can speak for him and never let\n", - "him be troubled or worried with it at all. If ever Jonathan quite gets\n", - "_Letter, Van Helsing to Mrs. Harker._\n", - "\"_24 September._\n", - "(_Confidence_)\n", - "\"Dear Madam,--\n", - "sent to you sad news of Miss Lucy Westenra's death. By the kindness of\n", - "Lord Godalming, I am empowered to read her letters and papers, for I am\n", - "love her. Oh, Madam Mina, by that love, I implore you, help me. It is\n", - "be that I see you? You can trust me. I am friend of Dr. John Seward and\n", - "of Lord Godalming (that was Arthur of Miss Lucy). I must keep it private\n", - "for the present from all. I should come to Exeter to see you at once if\n", - "pardon, madam. I have read your letters to poor Lucy, and know how good\n", - "\"VAN HELSING.\"\n", - "_Telegram, Mrs. Harker to Van Helsing._\n", - "\"_25 September._--Come to-day by quarter-past ten train if you can catch\n", - "\"WILHELMINA HARKER.\"\n", - "MINA HARKER'S JOURNAL.\n", - "_25 September._--I cannot help feeling terribly excited as the time\n", - "draws near for the visit of Dr. Van Helsing, for somehow I expect that\n", - "it will throw some light upon Jonathan's sad experience; and as he\n", - "attended poor dear Lucy in her last illness, he can tell me all about\n", - "her. That is the reason of his coming; it is concerning Lucy and her\n", - "sleep-walking, and not about Jonathan. Then I shall never know the real\n", - "truth now! How silly I am. That awful journal gets hold of my\n", - "course it is about Lucy. That habit came back to the poor dear, and that\n", - "understand. I hope I did right in not saying anything of it to Mrs.\n", - "Westenra; I should never forgive myself if any act of mine, were it even\n", - "a negative one, brought harm on poor dear Lucy. I hope, too, Dr. Van\n", - "Helsing will not blame me; I have had so much trouble and anxiety of\n", - "then Jonathan went away this morning to stay away from me a whole day\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "now. I shall say nothing of Jonathan's journal unless he asks me. I am\n", - "about Lucy, I can hand it to him; it will save much questioning.\n", - "_Later._--He has come and gone. Oh, what a strange meeting, and how it\n", - "possible, or even a part of it? If I had not read Jonathan's journal\n", - "Jonathan! How he must have suffered. Please the good God, all this may\n", - "satisfied and better able to bear the shock. Dr. Van Helsing must be a\n", - "good man as well as a clever one if he is Arthur's friend and Dr.\n", - "Seward's, and if they brought him all the way from Holland to look after\n", - "Lucy. I feel from having seen him that he _is_ good and kind and of a\n", - "noble nature. When he comes to-morrow I shall ask him about Jonathan;\n", - "and then, please God, all this sorrow and anxiety may lead to a good\n", - "end. I used to think I would like to practise interviewing; Jonathan's\n", - "friend on \"The Exeter News\" told him that memory was everything in such\n", - "It was half-past two o'clock when the knock came. I took my courage _à\n", - "deux mains_ and waited. In a few minutes Mary opened the door, and\n", - "announced \"Dr. Van Helsing.\"\n", - "\"Mrs. Harker, is it not?\" I bowed assent.\n", - "\"That was Miss Mina Murray?\" Again I assented.\n", - "\"It is Mina Murray that I came to see that was friend of that poor dear\n", - "child Lucy Westenra. Madam Mina, it is on account of the dead I come.\"\n", - "\"Sir,\" I said, \"you could have no better claim on me than that you were\n", - "a friend and helper of Lucy Westenra.\" And I held out my hand. He took\n", - "\"Oh, Madam Mina, I knew that the friend of that poor lily girl must be\n", - "good, but I had yet to learn----\" He finished his speech with a courtly\n", - "\"I have read your letters to Miss Lucy. Forgive me, but I had to begin\n", - "with her at Whitby. She sometimes kept a diary--you need not look\n", - "surprised, Madam Mina; it was begun after you had left, and was in\n", - "\"I can tell you, I think, Dr. Van Helsing, all about it.\"\n", - "\"Ah, then you have good memory for facts, for details? It is not always\n", - "\"No, doctor, but I wrote it all down at the time. I can show it to you\n", - "\"Oh, Madam Mina, I will be grateful; you will do me much favour.\" I\n", - "\"May I read it?\"\n", - "\"If you wish,\" I answered as demurely as I could. He opened it, and for\n", - "\"Oh, you so clever woman!\" he said. \"I knew long that Mr. Jonathan was a\n", - "And will you not so much honour me and so help me as to read it for me?\n", - "Alas! I know not the shorthand.\" By this time my little joke was over,\n", - "\"Forgive me,\" I said: \"I could not help it; but I had been thinking that\n", - "it was of dear Lucy that you wished to ask, and so that you might not\n", - "He took it and his eyes glistened. \"You are so good,\" he said. \"And may\n", - "\"By all means,\" I said, \"read it over whilst I order lunch; and then you\n", - "can ask me questions whilst we eat.\" He bowed and settled himself in a\n", - "\"Oh, Madam Mina,\" he said, \"how can I say what I owe to you? This paper\n", - "clever woman. Madam\"--he said this very solemnly--\"if ever Abraham Van\n", - "Helsing can do anything for you or yours, I trust you will let me know.\n", - "It will be pleasure and delight if I may serve you as a friend; as a\n", - "\"But, doctor, you praise me too much, and--and you do not know me.\"\n", - "\"Not know you--I, who am old, and who have studied all my life men and\n", - "him and all that follow from him! And I have read your diary that you\n", - "line. I, who have read your so sweet letter to poor Lucy of your\n", - "marriage and your trust, not know you! Oh, Madam Mina, good women tell\n", - "husband--tell me of him. Is he quite well? Is all that fever gone, and\n", - "Jonathan, so I said:--\n", - "\"He was almost recovered, but he has been greatly upset by Mr. Hawkins's\n", - "death.\" He interrupted:--\n", - "\"Oh, yes, I know, I know. I have read your last two letters.\" I went\n", - "\"I suppose this upset him, for when we were in town on Thursday last he\n", - "\"A shock, and after brain fever so soon! That was not good. What kind of\n", - "\"He thought he saw some one who recalled something terrible, something\n", - "which led to his brain fever.\" And here the whole thing seemed to\n", - "overwhelm me in a rush. The pity for Jonathan, the horror which he\n", - "\"My life is a barren and lonely one, and so full of work that I have not\n", - "my friend John Seward I have known so many good people and seen such\n", - "Husband Jonathan would not like to see you so pale; and what he like not\n", - "and smile. You have told me all about Lucy, and so now we shall not\n", - "speak of it, lest it distress. I shall stay in Exeter to-night, for I\n", - "husband Jonathan's trouble so far as you can, but not yet. You must eat\n", - "After lunch, when we went back to the drawing-room, he said to me:--\n", - "\"And now tell me all about him.\" When it came to speaking to this great\n", - "Jonathan a madman--that journal is all so strange--and I hesitated to go\n", - "\"Dr. Van Helsing, what I have to tell you is so queer that you must not\n", - "have even half believed some very strange things.\" He reassured me by\n", - "\"Oh, my dear, if you only know how strange is the matter regarding which\n", - "\"Thank you, thank you, a thousand times! You have taken a weight off my\n", - "Jonathan's. It is the copy of his journal when abroad, and all that\n", - "\"Jonathan will be here at half-past eleven, and you must come to lunch\n", - "will leave you at Paddington before eight.\" He was surprised at my\n", - "up all the trains to and from Exeter, so that I may help Jonathan in\n", - "So he took the papers with him and went away, and I sit here\n", - "_Letter (by hand), Van Helsing to Mrs. Harker._\n", - "\"_25 September, 6 o'clock._\n", - "\"Dear Madam Mina,--\n", - "\"Yours the most faithful,\n", - "\"ABRAHAM VAN HELSING.\"\n", - "_Letter, Mrs. Harker to Van Helsing._\n", - "\"_25 September, 6:30 p. m._\n", - "\"My dear Dr. Van Helsing,--\n", - "in London! I fear to think. I have this moment, whilst writing, had a\n", - "wire from Jonathan, saying that he leaves by the 6:25 to-night from\n", - "Launceston and will be here at 10:18, so that I shall have no fear\n", - "to breakfast at eight o'clock, if this be not too early for you? You can\n", - "you to Paddington by 2:35. Do not answer this, as I shall take it that,\n", - "\"Believe me,\n", - "\"Your faithful and grateful friend,\n", - "\"MINA HARKER.\"\n", - "_Jonathan Harker's Journal._\n", - "_26 September._--I thought never to write in this diary again, but the\n", - "time has come. When I got home last night Mina had supper ready, and\n", - "when we had supped she told me of Van Helsing's visit, and of her having\n", - "of the Count. He has succeeded after all, then, in his design in getting\n", - "to London, and it was he I saw. He has got younger, and how? Van Helsing\n", - "Mina says. We sat late, and talked it all over. Mina is dressing, and I\n", - "He was, I think, surprised to see me. When I came into the room where he\n", - "\"But Madam Mina told me you were ill, that you had had a shock.\" It was\n", - "so funny to hear my wife called \"Madam Mina\" by this kindly,\n", - "\"And how?\"\n", - "\"By your letter to Mina last night. I was in doubt, and then everything\n", - "yourself. No, you don't; you couldn't with eyebrows like yours.\" He\n", - "\"So! You are physiognomist. I learn more here with each hour. I am with\n", - "would listen to him go on praising Mina for a day, so I simply nodded\n", - "\"She is one of God's women, fashioned by His own hand to show us men and\n", - "selfish. And you, sir--I have read all the letters to poor Miss Lucy,\n", - "will give me your hand, will you not? And let us be friends for all our\n", - "We shook hands, and he was so earnest and so kind that it made me quite\n", - "\"And now,\" he said, \"may I ask you for some more help? I have a great\n", - "Can you tell me what went before your going to Transylvania? Later on I\n", - "\"Look here, sir,\" I said, \"does what you have to do concern the Count?\"\n", - "\"It does,\" he said solemnly.\n", - "\"Then I am with you heart and soul. As you go by the 10:30 train, you\n", - "You can take them with you and read them in the train.\"\n", - "After breakfast I saw him to the station. When we were parting he\n", - "\"Perhaps you will come to town if I send to you, and take Madam Mina\n", - "\"We shall both come when you will,\" I said.\n", - "I had got him the morning papers and the London papers of the previous\n", - "catch something in one of them, \"The Westminster Gazette\"--I knew it by\n", - "groaning to himself: \"Mein Gott! Mein Gott! So soon! so soon!\" I do not\n", - "the window and waved his hand, calling out: \"Love to Madam Mina; I shall\n", - "_Dr. Seward's Diary._\n", - "_26 September._--Truly there is no such thing as finality. Not a week\n", - "since I said \"Finis,\" and yet here I am starting fresh again, or rather\n", - "to me. I had a letter from Arthur, written on Sunday, and from it I\n", - "gather that he is bearing up wonderfully well. Quincey Morris is with\n", - "Arthur is beginning to recover something of his old buoyancy; so as to\n", - "fairly have said that the wound which poor Lucy left on me was becoming\n", - "end God only knows. I have an idea that Van Helsing thinks he knows,\n", - "went to Exeter yesterday, and stayed there all night. To-day he came\n", - "and thrust last night's \"Westminster Gazette\" into my hand.\n", - "\"What do you think of that?\" he asked as he stood back and folded his\n", - "away at Hampstead. It did not convey much to me, until I reached a\n", - "idea struck me, and I looked up. \"Well?\" he said.\n", - "\"It is like poor Lucy's.\"\n", - "\"And what do you make of it?\"\n", - "\"Simply that there is some cause in common. Whatever it was that injured\n", - "\"That is true indirectly, but not directly.\"\n", - "\"How do you mean, Professor?\" I asked. I was a little inclined to take\n", - "despair about poor Lucy, had he looked more stern.\n", - "\"Tell me!\" I said. \"I can hazard no opinion. I do not know what to\n", - "\"Do you mean to tell me, friend John, that you have no suspicion as to\n", - "what poor Lucy died of; not after all the hints given, not only by\n", - "\"Of nervous prostration following on great loss or waste of blood.\"\n", - "\"And how the blood lost or waste?\" I shook my head. He stepped over and\n", - "\"You are clever man, friend John; you reason well, and your wit is bold;\n", - "and yet which are; that some people see things that others cannot? But\n", - "believe in corporeal transference. No? Nor in materialisation. No? Nor\n", - "in astral bodies. No? Nor in the reading of thought. No? Nor in\n", - "\"Yes,\" I said. \"Charcot has proved that pretty well.\" He smiled as he\n", - "went on: \"Then you are satisfied as to it. Yes? And of course then you\n", - "Charcot--alas that he is no more!--into the very soul of the patient\n", - "that he influence. No? Then, friend John, am I to take it that you\n", - "be a blank? No? Then tell me--for I am student of the brain--how you\n", - "Methuselah lived nine hundred years, and 'Old Parr' one hundred and\n", - "sixty-nine, and yet that poor Lucy, with four men's blood in her poor\n", - "veins, could not live even one day? For, had she live one more day, we\n", - "could have save her. Do you know all the mystery of life and death? Do\n", - "qualities of brutes are in some men, and not in others? Can you tell me\n", - "for centuries in the tower of the old Spanish church and grew and grew,\n", - "till, on descending, he could drink the oil of all the church lamps? Can\n", - "you tell me why in the Pampas, ay and elsewhere, there are bats that\n", - "veins; how in some islands of the Western seas there are bats which hang\n", - "found dead men, white as even Miss Lucy was?\"\n", - "\"Good God, Professor!\" I said, starting up. \"Do you mean to tell me that\n", - "Lucy was bitten by such a bat; and that such a thing is here in London\n", - "in the nineteenth century?\" He waved his hand for silence, and went\n", - "\"Can you tell me why the tortoise lives more long than generations of\n", - "Can you tell me why men believe in all ages and places that there are\n", - "women who cannot die? We all know--because science has vouched for the\n", - "the world. Can you tell me how the Indian fakir can make himself to die\n", - "come and take away the unbroken seal and that there lie the Indian\n", - "fakir, not dead, but that rise up and walk amongst them as before?\" Here\n", - "some lesson, as long ago he used to do in his study at Amsterdam; but\n", - "\"Professor, let me be your pet student again. Tell me the thesis, so\n", - "\"That is good image,\" he said. \"Well, I shall tell you. My thesis is\n", - "\"To believe what?\"\n", - "\"To believe in things that you cannot. Let me illustrate. I heard once\n", - "of an American who so defined faith: 'that faculty which enables us to\n", - "believe things which we know to be untrue.' For one, I follow that man.\n", - "He meant that we shall have an open mind, and not let a little bit of\n", - "truck. We get the small truth first. Good! We keep him, and we value\n", - "\"Then you want me not to let some previous conviction injure the\n", - "\"Ah, you are my favourite pupil still. It is worth to teach you. Now\n", - "throats were made by the same that made the hole in Miss Lucy?\"\n", - "\"I suppose so.\" He stood up and said solemnly:--\n", - "\"Then you are wrong. Oh, would it were so! but alas! no. It is worse,\n", - "\"In God's name, Professor Van Helsing, what do you mean?\" I cried.\n", - "He threw himself with a despairing gesture into a chair, and placed his\n", - "\"They were made by Miss Lucy!\"\n", - "CHAPTER XV\n", - "DR. SEWARD'S DIARY--_continued_.\n", - "For a while sheer anger mastered me; it was as if he had during her life\n", - "struck Lucy on the face. I smote the table hard and rose up as I said to\n", - "\"Dr. Van Helsing, are you mad?\" He raised his head and looked at me, and\n", - "somehow the tenderness of his face calmed me at once. \"Would I were!\" he\n", - "said. \"Madness were easy to bear compared with truth like this. Oh, my\n", - "you so simple a thing? Was it because I hate you and have hated you all\n", - "my life? Was it because I wished to give you pain? Was it that I wanted,\n", - "fearful death? Ah no!\"\n", - "\"Forgive me,\" said I. He went on:--\n", - "\"My friend, it was because I wished to be gentle in the breaking to you,\n", - "concrete truth, and of such a one as Miss Lucy. To-night I go to prove\n", - "This staggered me. A man does not like to prove such a truth; Byron\n", - "\"And prove the very truth he most abhorred.\"\n", - "He saw my hesitation, and spoke:--\n", - "\"The logic is simple, no madman's logic this time, jumping from tussock\n", - "at worst it will not harm. If it be true! Ah, there is the dread; yet\n", - "in the hospital. Dr. Vincent, of the North Hospital, where the papers\n", - "in class at Amsterdam. He will let two scientists see his case, if he\n", - "\"And then?\" He took a key from his pocket and held it up. \"And then we\n", - "spend the night, you and I, in the churchyard where Lucy lies. This is\n", - "Arthur.\" My heart sank within me, for I felt that there was some fearful\n", - "We found the child awake. It had had a sleep and taken some food, and\n", - "similarity to those which had been on Lucy's throat. They were smaller,\n", - "and the edges looked fresher; that was all. We asked Vincent to what he\n", - "heights of London. \"Out of so many harmless ones,\" he said, \"there may\n", - "be some wild specimen from the South of a more malignant species. Some\n", - "the Zoölogical Gardens a young one may have got loose, or one be bred\n", - "week after, the children were playing nothing but Red Riding Hood on the\n", - "Heath and in every alley in the place until this 'bloofer lady' scare\n", - "\"I hope,\" said Van Helsing, \"that when you are sending the child home\n", - "\"Certainly not, not for a week at least; longer if the wound is not\n", - "Our visit to the hospital took more time than we had reckoned on, and\n", - "the sun had dipped before we came out. When Van Helsing saw how dark it\n", - "\"There is no hurry. It is more late than I thought. Come, let us seek\n", - "We dined at \"Jack Straw's Castle\" along with a little crowd of\n", - "radius. The Professor had evidently noted the road we were to go, for he\n", - "the Westenra tomb. The Professor took the key, opened the creaky door,\n", - "Van Helsing went about his work systematically. Holding his candle so\n", - "made assurance of Lucy's coffin. Another search in his bag, and he took\n", - "\"What are you going to do?\" I asked.\n", - "\"To open the coffin. You shall yet be convinced.\" Straightway he began\n", - "hold of his hand to stop him. He only said: \"You shall see,\" and again\n", - "such things, and I drew back towards the door. But the Professor never\n", - "It was certainly a surprise to me, and gave me a considerable shock, but\n", - "Van Helsing was unmoved. He was now more sure than ever of his ground,\n", - "and so emboldened to proceed in his task. \"Are you satisfied now, friend\n", - "John?\" he asked.\n", - "\"I am satisfied that Lucy's body is not in that coffin; but that only\n", - "\"And what is that, friend John?\"\n", - "\"That it is not there.\"\n", - "\"That is good logic,\" he said, \"so far as it goes. But how do you--how\n", - "\"Perhaps a body-snatcher,\" I suggested. \"Some of the undertaker's people\n", - "the only real cause which I could suggest. The Professor sighed. \"Ah\n", - "He put on the coffin-lid again, gathered up all his things and placed\n", - "locked it. He handed me the key, saying: \"Will you keep it? You had\n", - "of that kind.\" He said nothing, but put the key in his pocket. Then he\n", - "It was a lonely vigil. Just after I had taken my place I heard a distant\n", - "unnerved, and angry with the Professor for taking me on such an errand\n", - "Suddenly, as I turned round, I thought I saw something like a white\n", - "Professor's side of the ground, and hurriedly went towards it. Then I\n", - "coming over, found the Professor holding in his arms a tiny child. When\n", - "\"Are you satisfied now?\"\n", - "\"No,\" I said, in a way that I felt was aggressive.\n", - "\"Do you not see the child?\"\n", - "\"Yes, it is a child, but who brought it here? And is it wounded?\" I\n", - "\"We shall see,\" said the Professor, and with one impulse we took our way\n", - "When we had got some little distance away, we went into a clump of\n", - "\"Was I right?\" I asked triumphantly.\n", - "\"We were just in time,\" said the Professor thankfully.\n", - "We had now to decide what we were to do with the child, and so consulted\n", - "So finally we decided that we would take it to the Heath, and when we\n", - "well. At the edge of Hampstead Heath we heard a policeman's heavy\n", - "cab near the \"Spaniards,\" and drove to town.\n", - "sleep, as Van Helsing is to call for me at noon. He insists that I shall\n", - "_27 September._--It was two o'clock before we found a suitable\n", - "morning did we desire it; but the Professor told me that we should not\n", - "Outrageous as it was to open a leaden coffin, to see if a woman dead\n", - "and rested silent, for Van Helsing had a way of going on his own road,\n", - "streamed in. Van Helsing walked over to Lucy's coffin, and I followed.\n", - "He bent over and again forced back the leaden flange; and then a shock\n", - "There lay Lucy, seemingly just as we had seen her the night before her\n", - "\"Is this a juggle?\" I said to him.\n", - "\"Are you convinced now?\" said the Professor in response, and as he spoke\n", - "\"See,\" he went on, \"see, they are even sharper than before. With this\n", - "John?\" Once more, argumentative hostility woke within me. I _could_ not\n", - "\"She may have been placed here since last night.\"\n", - "\"Indeed? That is so, and by whom?\"\n", - "\"And yet she has been dead one week. Most peoples in that time would not\n", - "look so.\" I had no answer for this, so was silent. Van Helsing did not\n", - "\"Here, there is one thing which is different from all recorded; here is\n", - "that, friend John, but you shall know it all later--and in trance could\n", - "is Un-Dead, too. So it is that she differ from all other. Usually when\n", - "the Un-Dead sleep at home\"--as he spoke he made a comprehensive sweep of\n", - "they are, but this so sweet that was when she not Un-Dead she go back to\n", - "it make hard that I must kill her in her sleep.\" This turned my blood\n", - "cold, and it began to dawn upon me that I was accepting Van Helsing's\n", - "idea of killing her? He looked up at me, and evidently saw the change in\n", - "\"Ah, you believe now?\"\n", - "I answered: \"Do not press me too hard all at once. I am willing to\n", - "drive a stake through her body.\" It made me shudder to think of so\n", - "shudder at the presence of this being, this Un-Dead, as Van Helsing\n", - "I waited a considerable time for Van Helsing to begin, but he stood as\n", - "want Arthur, and how shall we tell him of this? If you, who saw the\n", - "wounds on Lucy's throat, and saw the wounds so similar on the child's at\n", - "Arthur, who know none of those things, to believe? He doubted me when I\n", - "an Un-Dead. No! I told him once, and since then I learn much. Now, since\n", - "Berkeley Hotel at ten of the clock. I shall send for Arthur to come too,\n", - "and also that so fine young man of America that gave his blood. Later we\n", - "shall all have work to do. I come with you so far as Piccadilly and\n", - "So we locked the tomb and came away, and got over the wall of the\n", - "churchyard, which was not much of a task, and drove back to Piccadilly.\n", - "_Note left by Van Helsing in his portmanteau, Berkeley Hotel directed to\n", - "John Seward, M. D._\n", - "(Not delivered.)\n", - "\"_27 September._\n", - "\"Friend John,--\n", - "that churchyard. It pleases me that the Un-Dead, Miss Lucy, shall not\n", - "Therefore I shall fix some things she like not--garlic and a\n", - "crucifix--and so seal up the door of the tomb. She is young as Un-Dead,\n", - "may not prevail on her wanting to get in; for then the Un-Dead is\n", - "and if there be aught that may be learned I shall learn it. For Miss\n", - "Lucy or from her, I have no fear; but that other to whom is there that\n", - "she is Un-Dead, he have now the power to seek her tomb and find shelter.\n", - "He is cunning, as I know from Mr. Jonathan and from the way that all\n", - "along he have fooled us when he played with us for Miss Lucy's life, and\n", - "we lost; and in many ways the Un-Dead are strong. He have always the\n", - "to Miss Lucy it also is all to him. Besides, he can summon his wolf and\n", - "Un-Dead woman sleep, and the one old man watch.\n", - "\"Therefore I write this in case.... Take the papers that are with this,\n", - "the diaries of Harker and the rest, and read them, and then find this\n", - "great Un-Dead, and cut off his head and burn his heart or drive a stake\n", - "\"If it be so, farewell.\n", - "\"VAN HELSING.\"\n", - "_Dr. Seward's Diary._\n", - "_28 September._--It is wonderful what a good night's sleep will do for\n", - "one. Yesterday I was almost willing to accept Van Helsing's monstrous\n", - "the Professor can have done it himself? He is so abnormally clever that\n", - "it would be almost as great a marvel as the other to find that Van\n", - "Helsing was mad; but anyhow I shall watch him carefully. I may get some\n", - "_29 September, morning._.... Last night, at a little before ten o'clock,\n", - "Arthur and Quincey came into Van Helsing's room; he told us all that he\n", - "wanted us to do, but especially addressing himself to Arthur, as if all\n", - "there. You were doubtless surprised at my letter?\" This query was\n", - "directly addressed to Lord Godalming.\n", - "\"Me too,\" said Quincey Morris laconically.\n", - "\"Oh,\" said the Professor, \"then you are nearer the beginning, both of\n", - "you, than friend John here, who has to go a long way back before he can\n", - "It was evident that he recognised my return to my old doubting frame of\n", - "\"That's frank anyhow,\" broke in Quincey. \"I'll answer for the Professor.\n", - "\"I thank you, sir,\" said Van Helsing proudly. \"I have done myself the\n", - "to me.\" He held out a hand, which Quincey took.\n", - "Then Arthur spoke out:--\n", - "\"Dr. Van Helsing, I don't quite like to 'buy a pig in a poke,' as they\n", - "say in Scotland, and if it be anything in which my honour as a gentleman\n", - "or my faith as a Christian is concerned, I cannot make such a promise.\n", - "If you can assure me that what you intend does not violate either of\n", - "\"I accept your limitation,\" said Van Helsing, \"and all I ask of you is\n", - "\"Agreed!\" said Arthur; \"that is only fair. And now that the\n", - "Kingstead.\"\n", - "Arthur's face fell as he said in an amazed sort of way:--\n", - "\"Where poor Lucy is buried?\" The Professor bowed. Arthur went on: \"And\n", - "\"To enter the tomb!\" Arthur stood up.\n", - "\"Professor, are you in earnest; or it is some monstrous joke? Pardon me,\n", - "I see that you are in earnest.\" He sat down again, but I could see that\n", - "\"And when in the tomb?\"\n", - "\"To open the coffin.\"\n", - "\"This is too much!\" he said, angrily rising again. \"I am willing to be\n", - "of the grave--of one who----\" He fairly choked with indignation. The\n", - "Professor looked pityingly at him.\n", - "\"If I could spare you one pang, my poor friend,\" he said, \"God knows I\n", - "Arthur looked up with set white face and said:--\n", - "\"Take care, sir, take care!\"\n", - "\"Would it not be well to hear what I have to say?\" said Van Helsing.\n", - "\"And then you will at least know the limit of my purpose. Shall I go\n", - "\"That's fair enough,\" broke in Morris.\n", - "After a pause Van Helsing went on, evidently with an effort:--\n", - "\"Miss Lucy is dead; is it not so? Yes! Then there can be no wrong to\n", - "Arthur jumped to his feet.\n", - "\"Good God!\" he cried. \"What do you mean? Has there been any mistake; has\n", - "she been buried alive?\" He groaned in anguish that not even hope could\n", - "further than to say that she might be Un-Dead.\"\n", - "\"Un-Dead! Not alive! What do you mean? Is this all a nightmare, or what\n", - "\"There are mysteries which men can only guess at, which age by age they\n", - "I have not done. May I cut off the head of dead Miss Lucy?\"\n", - "\"Heavens and earth, no!\" cried Arthur in a storm of passion. \"Not for\n", - "Van Helsing, you try me too far. What have I done to you that you should\n", - "torture me so? What did that poor, sweet girl do that you should want to\n", - "cast such dishonour on her grave? Are you mad to speak such things, or\n", - "am I mad to listen to them? Don't dare to think more of such a\n", - "duty to do in protecting her grave from outrage; and, by God, I shall do\n", - "Van Helsing rose up from where he had all the time been seated, and\n", - "\"My Lord Godalming, I, too, have a duty to do, a duty to others, a duty\n", - "to you, a duty to the dead; and, by God, I shall do it! All I ask you\n", - "may seem to me. And then, to follow of your Lordship's wishes I shall\n", - "you will.\" His voice broke a little, and he went on with a voice full of\n", - "\"But, I beseech you, do not go forth in anger with me. In a long life of\n", - "to do what I can of good; at the first to please my friend John, and\n", - "even now, when she is the dead Un-Dead, she shall have it freely.\" He\n", - "said this with a very grave, sweet pride, and Arthur was much affected\n", - "\"Oh, it is hard to think of it, and I cannot understand; but at least I\n", - "CHAPTER XVI\n", - "DR. SEWARD'S DIARY--_continued_\n", - "It was just a quarter before twelve o'clock when we got into the\n", - "the sky. We all kept somehow close together, with Van Helsing slightly\n", - "well at Arthur, for I feared that the proximity to a place laden with so\n", - "to his grief. The Professor unlocked the door, and seeing a natural\n", - "He then lit a dark lantern and pointed to the coffin. Arthur stepped\n", - "forward hesitatingly; Van Helsing said to me:--\n", - "\"You were with me here yesterday. Was the body of Miss Lucy in that\n", - "\"It was.\" The Professor turned to the rest saying:--\n", - "\"You hear; and yet there is no one who does not believe with me.\" He\n", - "Van Helsing forced back the leaden flange, and we all looked in and\n", - "The coffin was empty!\n", - "For several minutes no one spoke a word. The silence was broken by\n", - "Quincey Morris:--\n", - "\"Professor, I answered for you. Your word is all I want. I wouldn't ask\n", - "Is this your doing?\"\n", - "touched her. What happened was this: Two nights ago my friend Seward and\n", - "day-time, and she lay there. Did she not, friend John?\"\n", - "\"Yes.\"\n", - "\"That night we were just in time. One more so small child was missing,\n", - "and we find it, thank God, unharmed amongst the graves. Yesterday I came\n", - "here before sundown, for at sundown the Un-Dead can move. I waited here\n", - "which the Un-Dead cannot bear, and other things which they shun. Last\n", - "So\"--here he shut the dark slide of his lantern--\"now to the outside.\"\n", - "He opened the door, and we filed out, he coming last and locking the\n", - "Oh! but it seemed fresh and pure in the night air after the terror of\n", - "throw aside doubt and to accept Van Helsing's conclusions. Quincey\n", - "Morris was phlegmatic in the way of a man who accepts all things, and\n", - "tobacco and began to chew. As to Van Helsing, he was employed in a\n", - "asked him what it was that he was doing. Arthur and Quincey drew near\n", - "\"I am closing the tomb, so that the Un-Dead may not enter.\"\n", - "\"And is that stuff you have put there going to do it?\" asked Quincey.\n", - "\"Great Scott! Is this a game?\"\n", - "\"It is.\"\n", - "\"What is that which you are using?\" This time the question was by\n", - "Arthur. Van Helsing reverently lifted his hat as he answered:--\n", - "\"The Host. I brought it from Amsterdam. I have an Indulgence.\" It was an\n", - "that in the presence of such earnest purpose as the Professor's, a\n", - "one approaching. I pitied the others, especially Arthur. I had myself\n", - "There was a long spell of silence, a big, aching void, and then from the\n", - "Professor a keen \"S-s-s-s!\" He pointed; and far down the avenue of yews\n", - "We could not see the face, for it was bent down over what we saw to be a\n", - "were starting forward, but the Professor's warning hand, seen by us as\n", - "and I could hear the gasp of Arthur, as we recognised the features of\n", - "Lucy Westenra. Lucy Westenra, but yet how changed. The sweetness was\n", - "wantonness. Van Helsing stepped out, and, obedient to his gesture, we\n", - "tomb. Van Helsing raised his lantern and drew the slide; by the\n", - "concentrated light that fell on Lucy's face we could see that the lips\n", - "We shuddered with horror. I could see by the tremulous light that even\n", - "Van Helsing's iron nerve had failed. Arthur was next to me, and if I had\n", - "When Lucy--I call the thing that was before us Lucy because it bore her\n", - "and colour; but Lucy's eyes unclean and full of hell-fire, instead of\n", - "light, and the face became wreathed with a voluptuous smile. Oh, God,\n", - "how it made me shudder to see it! With a careless motion, she flung to\n", - "was a cold-bloodedness in the act which wrung a groan from Arthur; when\n", - "She still advanced, however, and with a languorous, voluptuous grace,\n", - "\"Come to me, Arthur. Leave these others and come to me. My arms are\n", - "There was something diabolically sweet in her tones--something of the\n", - "who heard the words addressed to another. As for Arthur, he seemed under\n", - "was leaping for them, when Van Helsing sprang forward and held between\n", - "When within a foot or two of the door, however, she stopped, as if\n", - "quiver from Van Helsing's iron nerves. Never did I see such baffled\n", - "the flesh were the coils of Medusa's snakes, and the lovely,\n", - "the Greeks and Japanese. If ever a face meant death--if looks could\n", - "And so for full half a minute, which seemed an eternity, she remained\n", - "entry. Van Helsing broke the silence by asking Arthur:--\n", - "\"Answer me, oh my friend! Am I to proceed in my work?\"\n", - "Arthur threw himself on his knees, and hid his face in his hands, as he\n", - "\"Do as you will, friend; do as you will. There can be no horror like\n", - "click of the closing lantern as Van Helsing held it down; coming close\n", - "relief when we saw the Professor calmly restoring the strings of putty\n", - "When this was done, he lifted the child and said:\n", - "\"Come now, my friends; we can do no more till to-morrow. There is a\n", - "him, as on the other night; and then to home.\" Coming close to Arthur,\n", - "\"My friend Arthur, you have had a sore trial; but after, when you look\n", - "waters, my child. By this time to-morrow you will, please God, have\n", - "Arthur and Quincey came home with me, and we tried to cheer each other\n", - "_29 September, night._--A little before twelve o'clock we three--Arthur,\n", - "Quincey Morris, and myself--called for the Professor. It was odd to\n", - "course, Arthur wore black, for he was in deep mourning, but the rest of\n", - "ourselves. Van Helsing, instead of his little black bag, had with him a\n", - "When we were alone and had heard the last of the footsteps die out up\n", - "Professor to the tomb. He unlocked the door, and we entered, closing it\n", - "by. When he again lifted the lid off Lucy's coffin we all looked--Arthur\n", - "loathing for the foul Thing which had taken Lucy's shape without her\n", - "soul. I could see even Arthur's face grow hard as he looked. Presently\n", - "he said to Van Helsing:--\n", - "\"Is this really Lucy's body, or only a demon in her shape?\"\n", - "\"It is her body, and yet not it. But wait a while, and you all see her\n", - "She seemed like a nightmare of Lucy as she lay there; the pointed teeth,\n", - "devilish mockery of Lucy's sweet purity. Van Helsing, with his usual\n", - "bracing, but the effect of these things on both Arthur and Quincey was\n", - "When all was ready, Van Helsing said:--\n", - "\"Before we do anything, let me tell you this; it is out of the lore and\n", - "of the Un-Dead. When they become such, there comes with the change the\n", - "die from the preying of the Un-Dead becomes themselves Un-Dead, and prey\n", - "ripples from a stone thrown in the water. Friend Arthur, if you had met\n", - "that kiss which you know of before poor Lucy die; or again, last night\n", - "have become _nosferatu_, as they call it in Eastern Europe, and would\n", - "all time make more of those Un-Deads that so have fill us with horror.\n", - "The career of this so unhappy dear lady is but just begun. Those\n", - "she live on, Un-Dead, more and more they lose their blood and by her\n", - "this now Un-Dead be made to rest as true dead, then the soul of the poor\n", - "shall take her place with the other Angels. So that, my friend, it will\n", - "To this I am willing; but is there none amongst us who has a better\n", - "right? Will it be no joy to think of hereafter in the silence of the\n", - "night when sleep is not: 'It was my hand that sent her to the stars; it\n", - "herself have chosen, had it been to her to choose?' Tell me if there be\n", - "We all looked at Arthur. He saw, too, what we all did, the infinite\n", - "Lucy to us as a holy, and not an unholy, memory; he stepped forward and\n", - "\"My true friend, from the bottom of my broken heart I thank you. Tell me\n", - "what I am to do, and I shall not falter!\" Van Helsing laid a hand on his\n", - "\"Brave lad! A moment's courage, and it is done. This stake must be\n", - "\"Go on,\" said Arthur hoarsely. \"Tell me what I am to do.\"\n", - "\"Take this stake in your left hand, ready to place the point over the\n", - "follow--strike in God's name, that so all may be well with the dead that\n", - "we love and that the Un-Dead pass away.\"\n", - "Arthur took the stake and the hammer, and when once his mind was set on\n", - "action his hands never trembled nor even quivered. Van Helsing opened\n", - "his missal and began to read, and Quincey and I followed as well as we\n", - "The Thing in the coffin writhed; and a hideous, blood-curdling screech\n", - "lips were cut, and the mouth was smeared with a crimson foam. But Arthur\n", - "never faltered. He looked like a figure of Thor as his untrembling arm\n", - "And then the writhing and quivering of the body became less, and the\n", - "The hammer fell from Arthur's hand. He reeled and would have fallen had\n", - "to the other of us. We gazed so eagerly that Arthur rose, for he had\n", - "There, in the coffin lay no longer the foul Thing that we had so dreaded\n", - "privilege to the one best entitled to it, but Lucy as we had seen her in\n", - "Van Helsing came and laid his hand on Arthur's shoulder, and said to\n", - "\"And now, Arthur my friend, dear lad, am I not forgiven?\"\n", - "The reaction of the terrible strain came as he took the old man's hand\n", - "\"Forgiven! God bless you that you have given my dear one her soul again,\n", - "and me peace.\" He put his hands on the Professor's shoulder, and laying\n", - "unmoving. When he raised his head Van Helsing said to him:--\n", - "\"And now, my child, you may kiss her. Kiss her dead lips if you will, as\n", - "devil now--not any more a foul Thing for all eternity. No longer she is\n", - "the devil's Un-Dead. She is God's true dead, whose soul is with Him!\"\n", - "Arthur bent and kissed her, and then we sent him and Quincey out of the\n", - "tomb; the Professor and I sawed the top off the stake, leaving the point\n", - "and gathering up our belongings, came away. When the Professor locked\n", - "the door he gave the key to Arthur.\n", - "Outside the air was sweet, the sun shone, and the birds sang, and it\n", - "Before we moved away Van Helsing said:--\n", - "\"Now, my friends, one step of our work is done, one the most harrowing\n", - "it, and pain. Shall you not all help me? We have learned to believe, all\n", - "of us--is it not so? And since so, do we not see our duty? Yes! And do\n", - "Each in turn, we took his hand, and the promise was made. Then said the\n", - "Professor as we moved off:--\n", - "\"Two nights hence you shall meet with me and dine together at seven of\n", - "the clock with friend John. I shall entreat two others, two that you\n", - "unfold. Friend John, you come with me home, for I have much to consult\n", - "about, and you can help me. To-night I leave for Amsterdam, but shall\n", - "Then our promise shall be made to each other anew; for there is a\n", - "CHAPTER XVII\n", - "DR. SEWARD'S DIARY--_continued_\n", - "When we arrived at the Berkeley Hotel, Van Helsing found a telegram\n", - "\"Am coming up by train. Jonathan at Whitby. Important news.--MINA\n", - "HARKER.\"\n", - "The Professor was delighted. \"Ah, that wonderful Madam Mina,\" he said,\n", - "\"pearl among women! She arrive, but I cannot stay. She must go to your\n", - "house, friend John. You must meet her at the station. Telegraph her _en\n", - "When the wire was despatched he had a cup of tea; over it he told me of\n", - "a diary kept by Jonathan Harker when abroad, and gave me a typewritten\n", - "copy of it, as also of Mrs. Harker's diary at Whitby. \"Take these,\" he\n", - "many another; or it may sound the knell of the Un-Dead who walk the\n", - "kept diary of all these so strange things; is it not so? Yes! Then we\n", - "shall go through all these together when we meet.\" He then made ready\n", - "for his departure, and shortly after drove off to Liverpool Street. I\n", - "took my way to Paddington, where I arrived about fifteen minutes before\n", - "The crowd melted away, after the bustling fashion common to arrival\n", - "after a quick glance, said: \"Dr. Seward, is it not?\"\n", - "\"And you are Mrs. Harker!\" I answered at once; whereupon she held out\n", - "\"I knew you from the description of poor dear Lucy; but----\" She stopped\n", - "The blush that rose to my own cheeks somehow set us both at ease, for it\n", - "typewriter, and we took the Underground to Fenchurch Street, after I had\n", - "prepared at once for Mrs. Harker.\n", - "In due time we arrived. She knew, of course, that the place was a\n", - "She told me that, if she might, she would come presently to my study, as\n", - "the papers which Van Helsing left with me, though they lie open before\n", - "_Mina Harker's Journal._\n", - "_29 September._--After I had tidied myself, I went down to Dr. Seward's\n", - "the door, and on his calling out, \"Come in,\" I entered.\n", - "To my intense surprise, there was no one with him. He was quite alone,\n", - "\"Oh,\" he replied with a smile, \"I was only entering my diary.\"\n", - "\"Your diary?\" I asked him in surprise.\n", - "\"Yes,\" he answered. \"I keep it in this.\" As he spoke he laid his hand on\n", - "\"Why, this beats even shorthand! May I hear it say something?\"\n", - "\"Certainly,\" he replied with alacrity, and stood up to put it in train\n", - "\"The fact is,\" he began awkwardly, \"I only keep my diary in it; and as\n", - "is, I mean----\" He stopped, and I tried to help him out of his\n", - "\"You helped to attend dear Lucy at the end. Let me hear how she died;\n", - "To my surprise, he answered, with a horrorstruck look in his face:--\n", - "\"Tell you of her death? Not for the wide world!\"\n", - "\"Why not?\" I asked, for some grave, terrible feeling was coming over me.\n", - "Again he paused, and I could see that he was trying to invent an excuse.\n", - "At length he stammered out:--\n", - "\"You see, I do not know how to pick out any particular part of the\n", - "diary.\" Even while he was speaking an idea dawned upon him, and he said\n", - "of a child: \"That's quite true, upon my honour. Honest Indian!\" I could\n", - "said. \"But do you know that, although I have kept the diary for months\n", - "part of it in case I wanted to look it up?\" By this time my mind was\n", - "made up that the diary of a doctor who attended Lucy might have\n", - "something to add to the sum of our knowledge of that terrible Being, and\n", - "\"Then, Dr. Seward, you had better let me copy it out for you on my\n", - "typewriter.\" He grew to a positively deathly pallor as he said:--\n", - "\"No! no! no! For all the world, I wouldn't let you know that terrible\n", - "Then it was terrible; my intuition was right! For a moment I thought,\n", - "\"You do not know me,\" I said. \"When you have read those papers--my own\n", - "He is certainly a man of noble nature; poor dear Lucy was right about\n", - "\"You are quite right. I did not trust you because I did not know you.\n", - "But I know you now; and let me say that I should have known you long\n", - "ago. I know that Lucy told you of me; she told me of you too. May I make\n", - "the only atonement in my power? Take the cylinders and hear them--the\n", - "able to understand certain things.\" He carried the phonograph himself up\n", - "_Dr. Seward's Diary._\n", - "_29 September._--I was so absorbed in that wonderful diary of Jonathan\n", - "Harker and that other of his wife that I let the time run on without\n", - "dinner, so I said: \"She is possibly tired; let dinner wait an hour,\" and\n", - "I went on with my work. I had just finished Mrs. Harker's diary, when\n", - "cause for tears, God knows! but the relief of them was denied me; and\n", - "\"Oh, no, not distressed me,\" she replied, \"but I have been more touched\n", - "It was like a soul crying out to Almighty God. No one must hear them\n", - "spoken ever again! See, I have tried to be useful. I have copied out the\n", - "\"No one need ever know, shall ever know,\" I said in a low voice. She\n", - "\"Ah, but they must!\"\n", - "\"Must! But why?\" I asked.\n", - "\"Because it is a part of the terrible story, a part of poor dear Lucy's\n", - "point; and I see already, though your diary only took me to 7 September,\n", - "how poor Lucy was beset, and how her terrible doom was being wrought\n", - "out. Jonathan and I have been working day and night since Professor Van\n", - "Helsing saw us. He is gone to Whitby to get more information, and he\n", - "if some of us were in the dark.\" She looked at me so appealingly, and at\n", - "that I gave in at once to her wishes. \"You shall,\" I said, \"do as you\n", - "like in the matter. God forgive me if I do wrong! There are terrible\n", - "poor Lucy's death, you will not be content, I know, to remain in the\n", - "_Mina Harker's Journal._\n", - "_29 September._--After dinner I came with Dr. Seward to his study. He\n", - "When the terrible story of Lucy's death, and--and all that followed, was\n", - "fainting disposition. When Dr. Seward saw me he jumped up with a\n", - "the multitude of horrors, the holy ray of light that my dear, dear Lucy\n", - "had not known Jonathan's experience in Transylvania I could not have\n", - "typewriter, and said to Dr. Seward:--\n", - "\"Let me write this all out now. We must be ready for Dr. Van Helsing\n", - "when he comes. I have sent a telegram to Jonathan to come on here when\n", - "he arrives in London from Whitby. In this matter dates are everything,\n", - "Lord Godalming and Mr. Morris are coming too. Let us be able to tell him\n", - "when they come.\" He accordingly set the phonograph at a slow pace, and I\n", - "all the rest. It was late when I got through, but Dr. Seward went about\n", - "remembered what Jonathan put in his diary of the Professor's\n", - "Exeter; so, seeing that Dr. Seward keeps his newspapers, I borrowed the\n", - "files of \"The Westminster Gazette\" and \"The Pall Mall Gazette,\" and took\n", - "them to my room. I remember how much \"The Dailygraph\" and \"The Whitby\n", - "Gazette,\" of which I had made cuttings, helped us to understand the\n", - "terrible events at Whitby when Count Dracula landed, so I shall look\n", - "_Dr. Seward's Diary._\n", - "_30 September._--Mr. Harker arrived at nine o'clock. He had got his\n", - "_Later._--After lunch Harker and his wife went back to their own room,\n", - "the letters between the consignee of the boxes at Whitby and the\n", - "carriers in London who took charge of them. He is now reading his wife's\n", - "Strange that it never struck me that the very next house might be\n", - "the Count's hiding-place! Goodness knows that we had enough clues\n", - "from the conduct of the patient Renfield! The bundle of letters\n", - "if we had only had them earlier we might have saved poor Lucy!\n", - "Stop; that way madness lies! Harker has gone back, and is again\n", - "meantime I should see Renfield, as hitherto he has been a sort of\n", - "index to the coming and going of the Count. I hardly see this yet,\n", - "that Mrs. Harker put my cylinders into type! We never could have\n", - "I found Renfield sitting placidly in his room with his hands\n", - "not had the chat with Harker and read the letters and the dates of\n", - "Count. What then does this absolute content mean? Can it be that\n", - "Stay; he is himself zoöphagous, and in his wild ravings outside the\n", - "chapel door of the deserted house he always spoke of \"master.\" This\n", - "and then--! So I came away. I mistrust these quiet moods of his; so\n", - "_Jonathan Harker's Journal._\n", - "_29 September, in train to London._--When I received Mr. Billington's\n", - "thought it best to go down to Whitby and make, on the spot, such\n", - "of the Count's to its place in London. Later, we may be able to deal\n", - "stay the night. They are hospitable, with true Yorkshire hospitality:\n", - "knew that I was busy, and that my stay was short, and Mr. Billington had\n", - "It gave me almost a turn to see again one of the letters which I had\n", - "seen on the Count's table before I knew of his diabolical plans.\n", - "Everything had been carefully thought out, and done systematically and\n", - "out. To use an Americanism, he had \"taken no chances,\" and the absolute\n", - "\"Fifty cases of common earth, to be used for experimental purposes.\"\n", - "Also the copy of letter to Carter Paterson, and their reply; of both of\n", - "these I got copies. This was all the information Mr. Billington could\n", - "give me, so I went down to the port and saw the coastguards, the Customs\n", - "tradition; but no one could add to the simple description \"Fifty cases\n", - "_30 September._--The station-master was good enough to give me a line to\n", - "his old companion the station-master at King's Cross, so that when I\n", - "From thence I went on to Carter Paterson's central office, where I met\n", - "day-book and letter-book, and at once telephoned to their King's Cross\n", - "delivery of the boxes at Carfax. Here again I found the tally agreeing\n", - "\"That 'ere 'ouse, guv'nor, is the rummiest I ever was in. Blyme! but it\n", - "Jerusalem in it. But the ole chapel--that took the cike, that did! Me\n", - "Having been in the house, I could well believe him; but if he knew what\n", - "Of one thing I am now satisfied: that _all_ the boxes which arrived at\n", - "Whitby from Varna in the _Demeter_ were safely deposited in the old\n", - "chapel at Carfax. There should be fifty of them there, unless any have\n", - "since been removed--as from Dr. Seward's diary I fear.\n", - "I shall try to see the carter who took away the boxes from Carfax when\n", - "Renfield attacked them. By following up this clue we may learn a good\n", - "_Later._--Mina and I have worked all day, and we have put all the papers\n", - "_Mina Harker's Journal_\n", - "_30 September._--I am so glad that I hardly know how to contain myself.\n", - "It is, I suppose, the reaction from the haunting fear which I have had:\n", - "detrimentally on Jonathan. I saw him leave for Whitby with as brave a\n", - "Professor Van Helsing said: he is true grit, and he improves under\n", - "thing so hunted as is the Count. That is just it: this Thing is not\n", - "human--not even beast. To read Dr. Seward's account of poor Lucy's\n", - "_Later._--Lord Godalming and Mr. Morris arrived earlier than we\n", - "expected. Dr. Seward was out on business, and had taken Jonathan with\n", - "brought back all poor dear Lucy's hopes of only a few months ago. Of\n", - "course they had heard Lucy speak of me, and it seemed that Dr. Van\n", - "Helsing, too, has been quite \"blowing my trumpet,\" as Mr. Morris\n", - "about the proposals they made to Lucy. They did not quite know what to\n", - "them in affairs right up to date. I knew from Dr. Seward's diary that\n", - "they had been at Lucy's death--her real death--and that I need not fear\n", - "I gave them each a copy to read in the library. When Lord Godalming got\n", - "\"Did you write all this, Mrs. Harker?\"\n", - "to the last hour of his life. Besides, I know you loved my poor Lucy--\"\n", - "Here he turned away and covered his face with his hands. I could hear\n", - "Lord Godalming found himself alone with me he sat down on the sofa and\n", - "\"I loved dear Lucy, and I know what she was to you, and what you were to\n", - "Lucy's sake?\"\n", - "In an instant the poor dear fellow was overwhelmed with grief. It seemed\n", - "We women have something of the mother in us that makes us rise above\n", - "After a little bit his sobs ceased, and he raised himself with an\n", - "like a brother, will you not, for all our lives--for dear Lucy's sake?\"\n", - "\"For dear Lucy's sake,\" I said as we clasped hands. \"Ay, and for your\n", - "will let me know.\" He was so earnest, and his sorrow was so fresh, that\n", - "As I came along the corridor I saw Mr. Morris looking out of a window.\n", - "He turned as he heard my footsteps. \"How is Art?\" he said. Then noticing\n", - "my red eyes, he went on: \"Ah, I see you have been comforting him. Poor\n", - "He bore his own trouble so bravely that my heart bled for him. I saw the\n", - "be your friend, and will you come to me for comfort if you need it? You\n", - "will know, later on, why I speak.\" He saw that I was in earnest, and\n", - "\"Little girl, you will never regret that true-hearted kindness, so long\n", - "as ever you live!\" Then he went into the study to his friend.\n", - "\"Little girl!\"--the very words he had used to Lucy, and oh, but he\n", - "CHAPTER XVIII\n", - "DR. SEWARD'S DIARY\n", - "_30 September._--I got home at five o'clock, and found that Godalming\n", - "and Morris had not only arrived, but had already studied the transcript\n", - "of the various diaries and letters which Harker and his wonderful wife\n", - "carriers' men, of whom Dr. Hennessey had written to me. Mrs. Harker gave\n", - "finished, Mrs. Harker said:--\n", - "\"Dr. Seward, may I ask a favour? I want to see your patient, Mr.\n", - "Renfield. Do let me see him. What you have said of him in your diary\n", - "interests me so much!\" She looked so appealing and so pretty that I\n", - "lady would like to see him; to which he simply answered: \"Why?\"\n", - "\"She is going through the house, and wants to see every one in it,\" I\n", - "answered. \"Oh, very well,\" he said; \"let her come in, by all means; but\n", - "just wait a minute till I tidy up the place.\" His method of tidying was\n", - "task, he said cheerfully: \"Let the lady come in,\" and sat down on the\n", - "\"Good-evening, Mr. Renfield,\" said she. \"You see, I know you, for Dr.\n", - "Seward has told me of you.\" He made no immediate reply, but eyed her all\n", - "\"You're not the girl the doctor wanted to marry, are you? You can't be,\n", - "you know, for she's dead.\" Mrs. Harker smiled sweetly as she replied:--\n", - "\"Oh no! I have a husband of my own, to whom I was married before I ever\n", - "saw Dr. Seward, or he me. I am Mrs. Harker.\"\n", - "\"Then what are you doing here?\"\n", - "\"My husband and I are staying on a visit with Dr. Seward.\"\n", - "\"Then don't stay.\"\n", - "\"But why not?\" I thought that this style of conversation might not be\n", - "pleasant to Mrs. Harker, any more than it was to me, so I joined in:--\n", - "\"How did you know I wanted to marry any one?\" His reply was simply\n", - "contemptuous, given in a pause in which he turned his eyes from Mrs.\n", - "Harker to me, instantly turning them back again:--\n", - "\"What an asinine question!\"\n", - "\"I don't see that at all, Mr. Renfield,\" said Mrs. Harker, at once\n", - "\"You will, of course, understand, Mrs. Harker, that when a man is so\n", - "gentleman. I wonder if it was Mrs. Harker's presence which had touched\n", - "We continued to talk for some time; and, seeing that he was seemingly\n", - "\"Why, I myself am an instance of a man who had a strange belief. Indeed,\n", - "blood--relying, of course, upon the Scriptural phrase, 'For the blood is\n", - "the life.' Though, indeed, the vendor of a certain nostrum has\n", - "saw that I should go to the station to meet Van Helsing, so I told Mrs.\n", - "Harker that it was time to leave. She came at once, after saying\n", - "pleasantly to Mr. Renfield: \"Good-bye, and I hope I may see you often,\n", - "\"Good-bye, my dear. I pray God I may never see your sweet face again.\n", - "May He bless and keep you!\"\n", - "When I went to the station to meet Van Helsing I left the boys behind\n", - "me. Poor Art seemed more cheerful than he has been since Lucy first took\n", - "ill, and Quincey is more like his own bright self than he has been for\n", - "Van Helsing stepped from the carriage with the eager nimbleness of a\n", - "\"Ah, friend John, how goes all? Well? So! I have been busy, for I come\n", - "much to tell. Madam Mina is with you? Yes. And her so fine husband? And\n", - "Arthur and my friend Quincey, they are with you, too? Good!\"\n", - "As I drove to the house I told him of what had passed, and of how my own\n", - "diary had come to be of some use through Mrs. Harker's suggestion; at\n", - "which the Professor interrupted me:--\n", - "\"Ah, that wonderful Madam Mina! She has man's brain--a brain that a man\n", - "should have were he much gifted--and a woman's heart. The good God\n", - "fashioned her for a purpose, believe me, when He made that so good\n", - "combination. Friend John, up to now fortune has made that woman of help\n", - "had found in his absence: that the house which Dracula had bought was\n", - "to come on him. \"Oh that we had known it before!\" he said, \"for then we\n", - "might have reached him in time to save poor Lucy. However, 'the milk\n", - "of that, but go on our way to the end.\" Then he fell into a silence that\n", - "dinner he said to Mrs. Harker:--\n", - "\"I am told, Madam Mina, by my friend John that you and your husband have\n", - "\"Not up to this moment, Professor,\" she said impulsively, \"but up to\n", - "\"But why not up to now? We have seen hitherto how good light all the\n", - "Mrs. Harker began to blush, and taking a paper from her pockets, she\n", - "\"Dr. Van Helsing, will you read this, and tell me if it must go in. It\n", - "what is personal. Must it go in?\" The Professor read it over gravely,\n", - "\"It need not go in if you do not wish it; but I pray that it may. It can\n", - "honour you--as well as more esteem and love.\" She took it back with\n", - "And so now, up to this very hour, all the records we have are complete\n", - "and in order. The Professor took away one copy to study after dinner,\n", - "_Mina Harker's Journal._\n", - "_30 September._--When we met in Dr. Seward's study two hours after\n", - "board or committee. Professor Van Helsing took the head of the table, to\n", - "which Dr. Seward motioned him as he came into the room. He made me sit\n", - "next to him on his right, and asked me to act as secretary; Jonathan sat\n", - "next to me. Opposite us were Lord Godalming, Dr. Seward, and Mr.\n", - "Morris--Lord Godalming being next the Professor, and Dr. Seward in the\n", - "centre. The Professor said:--\n", - "that are in these papers.\" We all expressed assent, and he went on:--\n", - "\"Then it were, I think good that I tell you something of the kind of\n", - "So we then can discuss how we shall act, and can take our measure\n", - "\"There are such beings as vampires; some of us have evidence that they\n", - "have believe until such time as that fact thunder on my ear. 'See! see!\n", - "I prove; I prove.' Alas! Had I known at the first what now I know--nay,\n", - "begin our strike to destroy him? How shall we find his where; and having\n", - "found it, how can we destroy? My friends, this is much; it is a terrible\n", - "where end we? Life is nothings; I heed him not. But to fail here, is not\n", - "We go on for all time abhorred by all; a blot on the face of God's\n", - "sunshine; an arrow in the side of Him who died for man. But we are face\n", - "to face with duty; and in such case must we shrink? For me, I say, no;\n", - "Whilst he was speaking, Jonathan had taken my hand. I feared, oh so\n", - "When the Professor had done speaking my husband looked in my eyes, and I\n", - "\"I answer for Mina and myself,\" he said.\n", - "\"Count me in, Professor,\" said Mr. Quincey Morris, laconically as usual.\n", - "\"I am with you,\" said Lord Godalming, \"for Lucy's sake, if for no other\n", - "Dr. Seward simply nodded. The Professor stood up and, after laying his\n", - "his right hand, and Lord Godalming his left; Jonathan held my right with\n", - "his left and stretched across to Mr. Morris. So as we all took hands our\n", - "occur to me to draw back. We resumed our places, and Dr. Van Helsing\n", - "\"Well, you know what we have to contend against; but we, too, are not\n", - "In fact, so far as our powers extend, they are unfettered, and we are\n", - "\"Now let us see how far the general powers arrayed against us are\n", - "\"All we have to go upon are traditions and superstitions. These do not\n", - "sceptical, matter-of-fact nineteenth century? We even scouted a belief\n", - "that men have been. In old Greece, in old Rome; he flourish in Germany\n", - "all over, in France, in India, even in the Chernosese; and in China, so\n", - "this day. He have follow the wake of the berserker Icelander, the\n", - "devil-begotten Hun, the Slav, the Saxon, the Magyar. So far, then, we\n", - "Jonathan, who lived with him for weeks, did never see him to eat, never!\n", - "He throws no shadow; he make in the mirror no reflect, as again\n", - "Jonathan observe. He has the strength of many of his hand--witness again\n", - "Jonathan when he shut the door against the wolfs, and when he help him\n", - "from the ship arrival in Whitby, when he tear open the dog; he can be as\n", - "bat, as Madam Mina saw him on the window at Whitby, and as friend John\n", - "saw him fly from this so near house, and as my friend Quincey saw him at\n", - "the window of Miss Lucy. He can come in mist which he create--that noble\n", - "come on moonlight rays as elemental dust--as again Jonathan saw those\n", - "sisters in the castle of Dracula. He become so small--we ourselves saw\n", - "Miss Lucy, ere she was at peace, slip through a hairbreadth space at the\n", - "He cannot go where he lists; he who is not of nature has yet to obey\n", - "These things are we told, and in this record of ours we have proof by\n", - "Whitby; still at other time he can only change when the time come. It is\n", - "We have seen it with our eyes.\n", - "\"Thus when we find the habitation of this man-that-was, we can confine\n", - "clever. I have asked my friend Arminius, of Buda-Pesth University, to\n", - "has been. He must, indeed, have been that Voivode Dracula who won his\n", - "name against the Turk, over the great river on the very frontier of\n", - "Turkey-land. If it be so, then was he no common man; for in that time,\n", - "forest.' That mighty brain and that iron resolution went with him to his\n", - "grave, and are even now arrayed against us. The Draculas were, says\n", - "Arminius, a great and noble race, though now and again were scions who\n", - "were held by their coevals to have had dealings with the Evil One. They\n", - "learned his secrets in the Scholomance, amongst the mountains over Lake\n", - "Hermanstadt, where the devil claims the tenth scholar as his due. In the\n", - "'pokol'--Satan and hell; and in one manuscript this very Dracula is\n", - "Whilst they were talking Mr. Morris was looking steadily at the window,\n", - "pause, and then the Professor went on:--\n", - "\"And now we must settle what we do. We have here much data, and we must\n", - "proceed to lay out our campaign. We know from the inquiry of Jonathan\n", - "that from the castle to Whitby came fifty boxes of earth, all of which\n", - "were delivered at Carfax; we also know that at least some of these boxes\n", - "Here we were interrupted in a very startling way. Outside the house came\n", - "out. The men all jumped to their feet; Lord Godalming flew over to the\n", - "window and threw up the sash. As he did so we heard Mr. Morris's voice\n", - "\"Sorry! I fear I have alarmed you. I shall come in and tell you about\n", - "\"It was an idiotic thing of me to do, and I ask your pardon, Mrs.\n", - "Harker, most sincerely; I fear I must have frightened you terribly. But\n", - "the fact is that whilst the Professor was talking there came a big bat\n", - "seen one. You used to laugh at me for it then, Art.\"\n", - "\"Did you hit it?\" asked Dr. Van Helsing.\n", - "\"I don't know; I fancy not, for it flew away into the wood.\" Without\n", - "saying any more he took his seat, and the Professor began to resume his\n", - "\"We must trace each of these boxes; and when we are ready, we must\n", - "Thus in the end we may find him in his form of man between the hours of\n", - "\"And now for you, Madam Mina, this night is the end until all be well.\n", - "You are too precious to us to have such risk. When we part to-night, you\n", - "All the men, even Jonathan, seemed relieved; but it did not seem to me\n", - "Mr. Morris resumed the discussion:--\n", - "\"As there is no time to lose, I vote we have a look at his house right\n", - "me out of their counsels altogether. They have now gone off to Carfax,\n", - "Manlike, they had told me to go to bed and sleep; as if a woman can\n", - "to sleep, lest Jonathan have added anxiety about me when he returns.\n", - "_Dr. Seward's Diary._\n", - "_1 October, 4 a. m._--Just as we were about to leave the house, an\n", - "urgent message was brought to me from Renfield to know if I would see\n", - "\"He seems very importunate, sir. I have never seen him so eager. I don't\n", - "cause, so I said: \"All right; I'll go now\"; and I asked the others to\n", - "\"Take me with you, friend John,\" said the Professor. \"His case in your\n", - "\"May I come also?\" asked Lord Godalming.\n", - "\"Me too?\" said Quincey Morris. \"May I come?\" said Harker. I nodded, and\n", - "We found him in a state of considerable excitement, but far more\n", - "the habit of equality, that I at once made the introduction: \"Lord\n", - "Godalming; Professor Van Helsing; Mr. Quincey Morris, of Texas; Mr.\n", - "Renfield.\" He shook hands with each of them, saying in turn:--\n", - "\"Lord Godalming, I had the honour of seconding your father at the\n", - "Windham; I grieve to know, by your holding the title, that he is no\n", - "patronised on Derby night. Mr. Morris, you should be proud of your great\n", - "state. Its reception into the Union was a precedent which may have\n", - "far-reaching effects hereafter, when the Pole and the Tropics may hold\n", - "alliance to the Stars and Stripes. The power of Treaty may yet prove a\n", - "vast engine of enlargement, when the Monroe doctrine takes its true\n", - "meeting Van Helsing? Sir, I make no apology for dropping all forms of\n", - "And I am sure that you, Dr. Seward, humanitarian and medico-jurist as\n", - "be considered as under exceptional circumstances.\" He made this last\n", - "So I contented myself with making a general statement that he appeared\n", - "\"But I fear, Dr. Seward, that you hardly apprehend my wish. I desire to\n", - "before so admirable a practitioner as Dr. Seward so simple, yet so\n", - "momentous a wish, to ensure its fulfilment.\" He looked at me keenly, and\n", - "\"Is it possible that I have erred in my supposition?\"\n", - "\"You have,\" I said frankly, but at the same time, as I felt, brutally.\n", - "There was a considerable pause, and then he said slowly:--\n", - "\"Then I suppose I must only shift my ground of request. Let me ask for\n", - "your friends.\" Again he looked at us all keenly. I had a growing\n", - "all lunatics, give himself away in the end. Van Helsing was gazing at\n", - "with the fixed concentration of his look. He said to Renfield in a tone\n", - "\"Can you not tell frankly your real reason for wishing to be free\n", - "without prejudice, and with the habit of keeping an open mind--Dr.\n", - "Seward will give you, at his own risk and on his own responsibility, the\n", - "privilege you seek.\" He shook his head sadly, and with a look of\n", - "poignant regret on his face. The Professor went on:--\n", - "\"Come, sir, bethink yourself. You claim the privilege of reason in the\n", - "we perform the duty which you yourself put upon us? Be wise, and help\n", - "us; and if we can we shall aid you to achieve your wish.\" He still shook\n", - "\"Dr. Van Helsing, I have nothing to say. Your argument is complete, and\n", - "\"Come, my friends, we have work to do. Good-night.\"\n", - "As, however, I got near the door, a new change came over the patient. He\n", - "relations, he became still more demonstrative. I glanced at Van Helsing,\n", - "\"Let me entreat you, Dr. Seward, oh, let me implore you, to let me out\n", - "By all you hold sacred--by all you hold dear--by your love that is\n", - "lost--by your hope that lives--for the sake of the Almighty, take me out\n", - "of this and save my soul from guilt! Can't you hear me, man? Can't you\n", - "understand? Will you never learn? Don't you know that I am sane and\n", - "for his soul? Oh, hear me! hear me! Let me go! let me go! let me go!\"\n", - "\"Come,\" I said sternly, \"no more of this; we have had quite enough\n", - "He suddenly stopped and looked at me intently for several moments. Then,\n", - "When I was leaving the room, last of our party, he said to me in a\n", - "\"You will, I trust, Dr. Seward, do me the justice to bear in mind, later\n", - "CHAPTER XIX\n", - "JONATHAN HARKER'S JOURNAL\n", - "_1 October, 5 a. m._--I went with the party to the search with an easy\n", - "mind, for I think I never saw Mina so absolutely strong and well. I am\n", - "Somehow, it was a dread to me that she was in this fearful business at\n", - "little upset by the scene with Mr. Renfield. When we came away from his\n", - "room we were silent till we got back to the study. Then Mr. Morris said\n", - "to Dr. Seward:--\n", - "\"Say, Jack, if that man wasn't attempting a bluff, he is about the\n", - "chance.\" Lord Godalming and I were silent, but Dr. Van Helsing added:--\n", - "\"Friend John, you know more of lunatics than I do, and I'm glad of it,\n", - "our present task we must take no chance, as my friend Quincey would say.\n", - "All is best as they are.\" Dr. Seward seemed to answer them both in a\n", - "seems so mixed up with the Count in an indexy kind of way that I am\n", - "throat out with his teeth. Besides, he called the Count 'lord and\n", - "That horrid thing has the wolves and the rats and his own kind to help\n", - "help to unnerve a man.\" The Professor stepped over, and laying his hand\n", - "\"Friend John, have no fear. We are trying to do our duty in a very sad\n", - "hope for, except the pity of the good God?\" Lord Godalming had slipped\n", - "\"That old place may be full of rats, and if so, I've got an antidote on\n", - "call.\" Having passed the wall, we took our way to the house, taking care\n", - "out. When we got to the porch the Professor opened his bag and took out\n", - "\"My friends, we are going into a terrible danger, and we need arms of\n", - "which we must not desecrate needless.\" This was a portion of Sacred\n", - "Wafer, which he put in an envelope and handed to me. Each of the others\n", - "was similarly equipped. \"Now,\" he said, \"friend John, where are the\n", - "skeleton keys? If so that we can open the door, we need not break house\n", - "by the window, as before at Miss Lucy's.\"\n", - "Dr. Seward tried one or two skeleton keys, his mechanical dexterity as a\n", - "Dr. Seward's diary of the opening of Miss Westenra's tomb; I fancy that\n", - "shrank back. The Professor was the first to move forward, and stepped\n", - "\"_In manus tuas, Domine!_\" he said, crossing himself as he passed over\n", - "Professor carefully tried the lock, lest we might not be able to open it\n", - "The light from the tiny lamps fell in all sorts of odd forms, as the\n", - "experience in Transylvania. I think the feeling was common to us all,\n", - "The whole place was thick with dust. The floor was seemingly inches\n", - "in the blanket of dust, similar to that exposed when the Professor\n", - "\"You know this place, Jonathan. You have copied maps of it, and you know\n", - "\"This is the spot,\" said the Professor as he turned his lamp on a small\n", - "encountered. None of the others had met the Count at all at close\n", - "air. But as to the odour itself, how shall I describe it? It was not\n", - "Under ordinary circumstances such a stench would have brought our\n", - "We made an accurate examination of the place, the Professor saying as we\n", - "\"The first thing is to see how many of the boxes are left; we must then\n", - "There were only twenty-nine left out of the fifty! Once I got a fright,\n", - "for, seeing Lord Godalming suddenly turn and look out of the vaulted\n", - "see the high lights of the Count's evil face, the ridge of the nose, the\n", - "as Lord Godalming said, \"I thought I saw a face, but it was only the\n", - "A few minutes later I saw Morris step suddenly back from a corner, which\n", - "For a moment or two we stood appalled, all save Lord Godalming, who was\n", - "iron-bound oaken door, which Dr. Seward had described from the outside,\n", - "from behind Dr. Seward's house by the yelping of dogs, and after about a\n", - "Unconsciously we had all moved towards the door, and as we moved I\n", - "Lord Godalming lifted one of the dogs, and carrying him in, placed him\n", - "With their going it seemed as if some evil presence had departed, for\n", - "Whether it was the purifying of the deadly atmosphere by the opening of\n", - "Never once did the dogs exhibit any symptom of uneasiness, and even when\n", - "The morning was quickening in the east when we emerged from the front.\n", - "Dr. Van Helsing had taken the key of the hall-door from the bunch, and\n", - "\"So far,\" he said, \"our night has been eminently successful. No harm has\n", - "accomplished without the bringing thereinto our most sweet Madam Mina or\n", - "beasts which are to the Count's command are yet themselves not amenable\n", - "from the so little dogs of my friend Arthur. We have other matters\n", - "So be it that he has gone elsewhere. Good! It has given us opportunity\n", - "The house was silent when we got back, save for some poor creature who\n", - "from Renfield's room. The poor wretch was doubtless torturing himself,\n", - "I came tiptoe into our own room, and found Mina asleep, breathing so\n", - "_1 October, later._--I suppose it was natural that we should have all\n", - "rest at all. Even Mina must have felt its exhaustion, for though I slept\n", - "sooner the matter is attended to the better. I shall look up Thomas\n", - "Snelling to-day.\n", - "_Dr. Seward's Diary._\n", - "_1 October._--It was towards noon when I was awakened by the Professor\n", - "\"Your patient interests me much. May it be that with you I visit him\n", - "this morning? Or if that you are too occupy, I can go alone if it may\n", - "instructions. Before the Professor left the room I cautioned him against\n", - "getting any false impression from my patient. \"But,\" he answered, \"I\n", - "things. He said to Madam Mina, as I see in your diary of yesterday, that\n", - "he had once had such a belief. Why do you smile, friend John?\"\n", - "\"Excuse me,\" I said, \"but the answer is here.\" I laid my hand on the\n", - "type-written matter. \"When our sane and learned lunatic made that very\n", - "nauseous with the flies and spiders which he had eaten just before Mrs.\n", - "Harker entered the room.\" Van Helsing smiled in turn. \"Good!\" he said.\n", - "\"Your memory is true, friend John. I should have remembered. And yet it\n", - "Who knows?\" I went on with my work, and before long was through that in\n", - "Van Helsing back in the study. \"Do I interrupt?\" he asked politely as he\n", - "\"Not at all,\" I answered. \"Come in. My work is finished, and I am free.\n", - "\"It is needless; I have seen him!\"\n", - "\"Well?\"\n", - "When I entered his room he was sitting on a stool in the centre, with\n", - "measure of respect as I could assume. He made no reply whatever. \"Don't\n", - "enough; you are the old fool Van Helsing. I wish you would take yourself\n", - "Dutchmen!\" Not a word more would he say, but sat in his implacable\n", - "happy words with that sweet soul Madam Mina. Friend John, it does\n", - "not want him to weaken in this matter. \"Mrs. Harker is better out of it.\n", - "Things are quite bad enough for us, all men of the world, and who have\n", - "So Van Helsing has gone to confer with Mrs. Harker and Harker; Quincey\n", - "and Art are all out following up the clues as to the earth-boxes. I\n", - "_Mina Harker's Journal._\n", - "_1 October._--It is strange to me to be kept in the dark as I am to-day;\n", - "after Jonathan's full confidence for so many years, to see him\n", - "Jonathan was late too, he was the earlier. He spoke to me before he went\n", - "what had happened in the visit to the Count's house. And yet he must\n", - "I acquiesced. But to think that he keeps anything from me! And now I am\n", - "That has done me good. Well, some day Jonathan will tell me all; and\n", - "Last night I went to bed when the men had gone, simply because they told\n", - "kept thinking over everything that has been ever since Jonathan came to\n", - "see me in London, and it all seems like a horrible tragedy, with fate\n", - "is most to be deplored. If I hadn't gone to Whitby, perhaps poor dear\n", - "Lucy would be with us now. She hadn't taken to visiting the churchyard\n", - "Oh, why did I ever go to Whitby? There now, crying again! I wonder what\n", - "has come over me to-day. I must hide it from Jonathan, for if he knew\n", - "on a very tumultuous scale, from Mr. Renfield's room, which is somewhere\n", - "All was dark and silent, the black shadows thrown by the moonlight\n", - "morning, when Jonathan woke me. I think that it took me an effort and a\n", - "little time to realise where I was, and that it was Jonathan who was\n", - "I thought that I was asleep, and waiting for Jonathan to come back. I\n", - "around. The gaslight which I had left lit for Jonathan, but turned down,\n", - "my eyes, but could still see through my eyelids. (It is wonderful what\n", - "tricks our dreams play us, and how conveniently we can imagine.) The\n", - "pillar of cloud by day and of fire by night.\" Was it indeed some such\n", - "spiritual guidance that was coming to me in my sleep? But the pillar was\n", - "two red eyes, such as Lucy told me of in her momentary mental wandering\n", - "when, on the cliff, the dying sunlight struck the windows of St. Mary's\n", - "Church. Suddenly the horror burst upon me that it was thus that Jonathan\n", - "too much of them. I would get Dr. Van Helsing or Dr. Seward to prescribe\n", - "_2 October 10 p. m._--Last night I slept, but did not dream. I must have\n", - "slept soundly, for I was not waked by Jonathan coming to bed; but the\n", - "In the afternoon Mr. Renfield asked if he might see me. Poor man, he was\n", - "very gentle, and when I came away he kissed my hand and bade God bless\n", - "of what had occurred to each during the day; I could see from Jonathan's\n", - "sleepy as I should have been; so before they went I asked Dr. Seward to\n", - "CHAPTER XX\n", - "JONATHAN HARKER'S JOURNAL\n", - "_1 October, evening._--I found Thomas Snelling in his house at Bethnal\n", - "Green, but unhappily he was not in a condition to remember anything. The\n", - "was only the assistant to Smollet, who of the two mates was the\n", - "responsible person. So off I drove to Walworth, and found Mr. Joseph\n", - "Smollet at home and in his shirtsleeves, taking a late tea out of a\n", - "were, he said, six in the cartload which he took from Carfax and left at\n", - "197, Chicksand Street, Mile End New Town, and another six which he\n", - "deposited at Jamaica Lane, Bermondsey. If then the Count meant to\n", - "scatter these ghastly refuges of his over London, these places were\n", - "he could not mean to confine himself to two sides of London. He was now\n", - "be left out of his diabolical scheme--let alone the City itself and the\n", - "very heart of fashionable London in the south-west and west. I went back\n", - "to Smollet, and asked him if he could tell us if any other boxes had\n", - "been taken from Carfax.\n", - "He replied:--\n", - "\"Well, guv'nor, you've treated me wery 'an'some\"--I had given him half a\n", - "Bloxam say four nights ago in the 'Are an' 'Ounds, in Pincher's Alley,\n", - "Purfect. There ain't a-many such jobs as this 'ere, an' I'm thinkin'\n", - "that maybe Sam Bloxam could tell ye summut.\" I asked if he could tell me\n", - "\"Look 'ere, guv'nor, there ain't no sense in me a-keepin' you 'ere. I\n", - "may find Sam soon, or I mayn't; but anyhow he ain't like to be in a way\n", - "If you can give me a envelope with a stamp on it, and put yer address on\n", - "it, I'll find out where Sam is to be found and post it ye to-night. But\n", - "'im; for Sam gets off main early, never mind the booze the night afore.\"\n", - "This was all practical, so one of the children went off with a penny to\n", - "came back, I addressed the envelope and stamped it, and when Smollet had\n", - "Mina is fast asleep, and looks a little too pale; her eyes look as\n", - "Count or his doings ever since we told her of our decision.\n", - "_2 October, evening._--A long and trying and exciting day. By the first\n", - "\"Sam Bloxam, Korkrans, 4, Poters Cort, Bartel Street, Walworth. Arsk for\n", - "I got the letter in bed, and rose without waking Mina. She looked heavy\n", - "her going back to Exeter. I think she would be happier in our own home,\n", - "in ignorance. I only saw Dr. Seward for a moment, and told him where I\n", - "have found out anything. I drove to Walworth and found, with some\n", - "difficulty, Potter's Court. Mr. Smollet's spelling misled me, as I asked\n", - "for Poter's Court instead of Potter's Court. However, when I had found\n", - "the court, I had no difficulty in discovering Corcoran's lodging-house.\n", - "When I asked the man who came to the door for the \"depite,\" he shook his\n", - "of that kind livin' ere or anywheres.\" I took out Smollet's letter, and\n", - "of the court might guide me. \"What are you?\" I asked.\n", - "deputy's knowledge at my disposal, and I learned that Mr. Bloxam, who\n", - "Corcoran's, had left for his work at Poplar at five o'clock that\n", - "and with this slender clue I had to start for Poplar. It was twelve\n", - "of these suggested that there was being erected at Cross Angel Street a\n", - "coin of the realm, put me on the track of Bloxam; he was sent for on my\n", - "that he had made two journeys between Carfax and a house in Piccadilly,\n", - "asked him if he could tell me the number of the house in Piccadilly, to\n", - "\"Well, guv'nor, I forgits the number, but it was only a few doors from a\n", - "\"How did you get into the houses if they were both empty?\"\n", - "\"There was the old party what engaged me a-waitin' in the 'ouse at\n", - "Purfleet. He 'elped me to lift the boxes and put them in the dray. Curse\n", - "How this phrase thrilled through me!\n", - "\"Why, 'e took up 'is end o' the boxes like they was pounds of tea, and\n", - "\"How did you get into the house in Piccadilly?\" I asked.\n", - "\"He was there too. He must 'a' started off and got there afore me, for\n", - "\"The whole nine?\" I asked.\n", - "\"Yus; there was five in the first load an' four in the second. It was\n", - "\"Were the boxes left in the hall?\"\n", - "\"Yus; it was a big 'all, an' there was nothin' else in it.\" I made one\n", - "\"You didn't have any key?\"\n", - "\"Never used no key nor nothink. The old gent, he opened the door 'isself\n", - "\"And you can't remember the number of the house?\"\n", - "\"No, sir. But ye needn't have no difficulty about that. It's a 'igh 'un\n", - "off for Piccadilly. I had gained a new painful experience; the Count\n", - "unobserved. At Piccadilly Circus I discharged my cab, and walked\n", - "westward; beyond the Junior Constitutional I came across the house\n", - "arranged by Dracula. The house looked as though it had been long\n", - "Behind the rails of the balcony I saw there were some loose boards,\n", - "experience of the investigation and purchase of Carfax, and I could not\n", - "There was at present nothing to be learned from the Piccadilly side, and\n", - "Piccadilly houses being mostly in occupation. I asked one or two of the\n", - "very lately there had been a notice-board of \"For Sale\" up, and that\n", - "perhaps Mitchell, Sons, & Candy, the house agents, could tell me\n", - "did not lose any time. Having learned the address of Mitchell, Sons, &\n", - "Candy from a directory at the Berkeley, I was soon at their office in\n", - "Sackville Street.\n", - "The gentleman who saw me was particularly suave in manner, but\n", - "Piccadilly house--which throughout our interview he called a\n", - "\"It is sold, sir.\"\n", - "\"Pardon me,\" I said, with equal politeness, \"but I have a special reason\n", - "Again he paused longer, and raised his eyebrows still more. \"It is sold,\n", - "\"Surely,\" I said, \"you do not mind letting me know so much.\"\n", - "\"But I do mind,\" he answered. \"The affairs of their clients are\n", - "absolutely safe in the hands of Mitchell, Sons, & Candy.\" This was\n", - "\"Your clients, sir, are happy in having so resolute a guardian of their\n", - "confidence. I am myself a professional man.\" Here I handed him my card.\n", - "\"In this instance I am not prompted by curiosity; I act on the part of\n", - "Lord Godalming, who wishes to know something of the property which was,\n", - "he understood, lately for sale.\" These words put a different complexion\n", - "\"I would like to oblige you if I could, Mr. Harker, and especially would\n", - "renting some chambers for him when he was the Honourable Arthur\n", - "Holmwood. If you will let me have his lordship's address I will consult\n", - "the House on the subject, and will, in any case, communicate with his\n", - "gave the address at Dr. Seward's and came away. It was now dark, and I\n", - "was tired and hungry. I got a cup of tea at the Aërated Bread Company\n", - "and came down to Purfleet by the next train.\n", - "inquietude. Thank God, this will be the last night of her looking on at\n", - "amongst ourselves--I took Mina to her room and left her to go to bed.\n", - "The dear girl was more affectionate with me than ever, and clung to me\n", - "came away. Thank God, the ceasing of telling things has made no\n", - "When I came down again I found the others all gathered round the fire in\n", - "information; when I had finished Van Helsing said:--\n", - "\"This has been a great day's work, friend Jonathan. Doubtless we are on\n", - "wretch to his real death.\" We all sat silent awhile and all at once Mr.\n", - "Morris spoke:--\n", - "\"Say! how are we going to get into that house?\"\n", - "\"We got into the other,\" answered Lord Godalming quickly.\n", - "\"But, Art, this is different. We broke house at Carfax, but we had night\n", - "commit burglary in Piccadilly, either by day or night. I confess I don't\n", - "morning.\" Lord Godalming's brows contracted, and he stood up and walked\n", - "\"Quincey's head is level. This burglary business is getting serious; we\n", - "can find the Count's key basket.\"\n", - "As nothing could well be done before morning, and as it would be at\n", - "least advisable to wait till Lord Godalming should hear from Mitchell's,\n", - "Just a line. Mina sleeps soundly and her breathing is regular. Her\n", - "herself at home in Exeter. Oh, but I am sleepy!\n", - "_Dr. Seward's Diary._\n", - "_1 October._--I am puzzled afresh about Renfield. His moods change so\n", - "repulse of Van Helsing, his manner was that of a man commanding destiny.\n", - "He was, in fact, commanding destiny--subjectively. He did not really\n", - "\"What about the flies these times?\" He smiled on me in quite a superior\n", - "sort of way--such a smile as would have become the face of Malvolio--as\n", - "\"The fly, my dear sir, has one striking feature; its wings are typical\n", - "\"Oh, it is a soul you are after now, is it?\" His madness foiled his\n", - "\"Oh, no, oh no! I want no souls. Life is all I want.\" Here he brightened\n", - "This puzzled me a little, so I drew him on:--\n", - "\"Then you command life; you are a god, I suppose?\" He smiled with an\n", - "\"Oh no! Far be it from me to arrogate to myself the attributes of the\n", - "Deity. I am not even concerned in His especially spiritual doings. If I\n", - "purely terrestrial, somewhat in the position which Enoch occupied\n", - "spiritually!\" This was a poser to me. I could not at the moment recall\n", - "Enoch's appositeness; so I had to ask a simple question, though I felt\n", - "\"And why with Enoch?\"\n", - "\"Because he walked with God.\" I could not see the analogy, but did not\n", - "\"So you don't care about life and you don't want souls. Why not?\" I put\n", - "The effort succeeded; for an instant he unconsciously relapsed into his\n", - "or----\" He suddenly stopped and the old cunning look spread over his\n", - "face, like a wind-sweep on the surface of the water. \"And doctor, as to\n", - "life, what is it after all? When you've got all you require, and you\n", - "friends--like you, Dr. Seward\"; this was said with a leer of\n", - "Later in the day he sent for me. Ordinarily I would not have come\n", - "Lord Godalming and Quincey. Van Helsing sits in my study poring over the\n", - "record prepared by the Harkers; he seems to think that by accurate\n", - "might not care to go again. There was also another reason: Renfield\n", - "\"What about souls?\" It was evident then that my surmise had been\n", - "lunatic. I determined to have the matter out. \"What about them\n", - "cruel only to be kind.\" So I said:--\n", - "\"You like life, and you want life?\"\n", - "\"Oh yes! but that is all right; you needn't worry about that!\"\n", - "\"But,\" I asked, \"how are we to get the life without getting the soul\n", - "also?\" This seemed to puzzle him, so I followed it up:--\n", - "know, and you must put up with their souls!\" Something seemed to affect\n", - "\"Would you like some sugar to get your flies round again?\" He seemed to\n", - "\"Not much! flies are poor things, after all!\" After a pause he added,\n", - "\"But I don't want their souls buzzing round me, all the same.\"\n", - "\"Or spiders?\" I went on.\n", - "\"Blow spiders! What's the use of spiders? There isn't anything in them\n", - "\"So, so!\" I thought to myself, \"this is the second time he has suddenly\n", - "stopped at the word 'drink'; what does it mean?\" Renfield seemed himself\n", - "\"I don't take any stock at all in such matters. 'Rats and mice and such\n", - "small deer,' as Shakespeare has it, 'chicken-feed of the larder' they\n", - "\"I see,\" I said. \"You want big things that you can make your teeth meet\n", - "in? How would you like to breakfast on elephant?\"\n", - "\"What ridiculous nonsense you are talking!\" He was getting too wide\n", - "The effect I desired was obtained, for he at once fell from his\n", - "his eyes blazing and all the signs of intense cerebral excitement. \"To\n", - "hell with you and your souls!\" he shouted. \"Why do you plague me about\n", - "souls? Haven't I got enough to worry, and pain, and distract me already,\n", - "without thinking of souls!\" He looked so hostile that I thought he was\n", - "\"Forgive me, Doctor; I forgot myself. You do not need any help. I am so\n", - "sure you will understand!\" He had evidently self-control; so when the\n", - "\"Dr. Seward, you have been very considerate towards me. Believe me that\n", - "this man's state. Several points seem to make what the American\n", - "Here they are:--\n", - "Will not mention \"drinking.\"\n", - "Fears the thought of being burdened with the \"soul\" of anything.\n", - "Has no dread of wanting \"life\" in the future.\n", - "Despises the meaner forms of life altogether, though he dreads being\n", - "Logically all these things point one way! he has assurance of some kind\n", - "And the assurance--?\n", - "Merciful God! the Count has been to him, and there is some new scheme of\n", - "_Later._--I went after my round to Van Helsing and told him my\n", - "while asked me to take him to Renfield. I did so. As we came to the door\n", - "His is a curious case indeed; we must watch him to-night.\n", - "_Letter, Mitchell, Sons and Candy to Lord Godalming._\n", - "_\"1 October._\n", - "\"My Lord,\n", - "\"We are at all times only too happy to meet your wishes. We beg, with\n", - "regard to the desire of your Lordship, expressed by Mr. Harker on your\n", - "purchase of No. 347, Piccadilly. The original vendors are the executors\n", - "of the late Mr. Archibald Winter-Suffield. The purchaser is a foreign\n", - "nobleman, Count de Ville, who effected the purchase himself paying the\n", - "purchase money in notes 'over the counter,' if your Lordship will pardon\n", - "\"We are, my Lord,\n", - "\"Your Lordship's humble servants,\n", - "\"MITCHELL, SONS & CANDY.\"\n", - "_Dr. Seward's Diary._\n", - "_2 October._--I placed a man in the corridor last night, and told him to\n", - "make an accurate note of any sound he might hear from Renfield's room,\n", - "in the study--Mrs. Harker having gone to bed--we discussed the attempts\n", - "Before going to bed I went round to the patient's room and looked in\n", - "This morning the man on duty reported to me that a little after midnight\n", - "To-day Harker is out following up his clue, and Art and Quincey are\n", - "earth between sunrise and sunset; we shall thus catch the Count at his\n", - "weakest, and without a refuge to fly to. Van Helsing is off to the\n", - "British Museum looking up some authorities on ancient medicine. The old\n", - "and the Professor is searching for witch and demon cures which may be\n", - "_Later._--We have met again. We seem at last to be on the track, and our\n", - "Renfield's quiet has anything to do with this. His moods have so\n", - "followed the doings of the Count, that the coming destruction of the\n", - "valuable clue. He is now seemingly quiet for a spell.... Is he?---- That\n", - "The attendant came bursting into my room and told me that Renfield had\n", - "CHAPTER XXI\n", - "DR. SEWARD'S DIARY\n", - "_3 October._--Let me put down with exactness all that happened, as well\n", - "When I came to Renfield's room I found him lying on the floor on his\n", - "the whole side of his face are paralysed.\" How such a thing could have\n", - "Eversfield Asylum before anyone could lay hands on her. And I suppose he\n", - "\"Go to Dr. Van Helsing, and ask him to kindly come here at once. I want\n", - "him without an instant's delay.\" The man ran off, and within a few\n", - "minutes the Professor, in his dressing gown and slippers, appeared. When\n", - "he saw Renfield on the ground, he looked keenly at him a moment, and\n", - "\"Ah, a sad accident! He will need very careful watching, and much\n", - "If you will remain I shall in a few minutes join you.\"\n", - "The patient was now breathing stertorously and it was easy to see that\n", - "he had suffered some terrible injury. Van Helsing returned with\n", - "\"Send the attendant away. We must be alone with him when he becomes\n", - "conscious, after the operation.\" So I said:--\n", - "\"I think that will do now, Simmons. We have done all that we can at\n", - "present. You had better go your round, and Dr. Van Helsing will operate.\n", - "Let me know instantly if there be anything unusual anywhere.\"\n", - "The man withdrew, and we went into a strict examination of the patient.\n", - "The wounds of the face was superficial; the real injury was a depressed\n", - "Professor thought a moment and said:--\n", - "\"We must reduce the pressure and get back to normal conditions, as far\n", - "too late.\" As he was speaking there was a soft tapping at the door. I\n", - "went over and opened it and found in the corridor without, Arthur and\n", - "Quincey in pajamas and slippers: the former spoke:--\n", - "\"I heard your man call up Dr. Van Helsing and tell him of an accident.\n", - "So I woke Quincey or rather called for him as he was not asleep. Things\n", - "till they had entered; then I closed it again. When Quincey saw the\n", - "\"My God! what has happened to him? Poor, poor devil!\" I told him\n", - "down on the edge of the bed, with Godalming beside him; we all watched\n", - "\"We shall wait,\" said Van Helsing, \"just long enough to fix the best\n", - "The minutes during which we waited passed with fearful slowness. I had a\n", - "horrible sinking in my heart, and from Van Helsing's face I gathered\n", - "the words that Renfield might speak. I was positively afraid to think;\n", - "At last there came a time when it was evident that the patient was\n", - "sinking fast; he might die at any moment. I looked up at the Professor\n", - "\"There is no time to lose. His words may be worth many lives; I have\n", - "We shall operate just above the ear.\"\n", - "Without another word he made the operation. For a few moments the\n", - "Suddenly his eyes opened, and became fixed in a wild, helpless stare.\n", - "This was continued for a few moments; then it softened into a glad\n", - "\"I'll be quiet, Doctor. Tell them to take off the strait-waistcoat. I\n", - "dreadfully.\" He tried to turn his head; but even with the effort his\n", - "eyes seemed to grow glassy again so I gently put it back. Then Van\n", - "Helsing said in a quiet grave tone:--\n", - "\"Tell us your dream, Mr. Renfield.\" As he heard the voice his face\n", - "\"That is Dr. Van Helsing. How good it is of you to be here. Give me some\n", - "stopped and seemed fainting, I called quietly to Quincey--\"The\n", - "brandy--it is in my study--quick!\" He flew and returned with a glass,\n", - "Then his eyes roved round the room; as they caught sight of the two\n", - "\"If I were not sure already, I would know from them.\" For an instant his\n", - "\"Quick, Doctor, quick. I am dying! I feel that I have but a few minutes;\n", - "and then I must go back to death--or worse! Wet my lips with brandy\n", - "crushed brain dies anyhow. Thank you! It was that night after you left\n", - "dogs bark behind our house, but not where He was!\" As he spoke, Van\n", - "Helsing's eyes never blinked, but his hand came out and met mine and\n", - "and said: \"Go on,\" in a low voice. Renfield proceeded:--\n", - "\"He came up to the window in the mist, as I had seen him often before;\n", - "Then he began promising me things--not in words but by doing them.\" He\n", - "was interrupted by a word from the Professor:--\n", - "\"How?\"\n", - "\"By making them happen; just as he used to send in the flies when the\n", - "backs.\" Van Helsing nodded to him as he whispered to me unconsciously:--\n", - "\"The _Acherontia Aitetropos of the Sphinges_--what you call the\n", - "'Death's-head Moth'?\" The patient went on without stopping.\n", - "\"Then he began to whisper: 'Rats, rats, rats! Hundreds, thousands,\n", - "Then the dogs howled, away beyond the dark trees in His house. He\n", - "beckoned me to the window. I got up and looked out, and He raised his\n", - "then He moved the mist to the right and left, and I could see that there\n", - "were thousands of rats with their eyes blazing red--like His, only\n", - "seemed to be saying: 'All these lives will I give you, ay, and many more\n", - "me!' And then a red cloud, like the colour of blood, seemed to close\n", - "the sash and saying to Him: 'Come in, Lord and Master!' The rats were\n", - "all gone, but He slid into the room through the sash, though it was only\n", - "open an inch wide--just as the Moon herself has often come in through\n", - "His voice was weaker, so I moistened his lips with the brandy again, and\n", - "back to the point, but Van Helsing whispered to me: \"Let him go on. Do\n", - "if once he lost the thread of his thought.\" He proceeded:--\n", - "\"All day I waited to hear from him, but he did not send me anything, not\n", - "When he slid in through the window, though it was shut, and did not even\n", - "as he went by me. I couldn't hold him. I thought that, somehow, Mrs.\n", - "Harker had come into the room.\"\n", - "The two men sitting on the bed stood up and came over, standing behind\n", - "They were both silent, but the Professor started and quivered; his face,\n", - "\"When Mrs. Harker came in to see me this afternoon she wasn't the same;\n", - "it was like tea after the teapot had been watered.\" Here we all moved,\n", - "to know that He had been taking the life out of her.\" I could feel that\n", - "the rest quivered, as I did, but we remained otherwise still. \"So when\n", - "He came to-night I was ready for Him. I saw the mist stealing in, and I\n", - "Ay, and He felt it too, for He had to come out of the mist to struggle\n", - "mean Him to take any more of her life, till I saw His eyes. They burned\n", - "when I tried to cling to Him, He raised me up and flung me down. There\n", - "to steal away under the door.\" His voice was becoming fainter and his\n", - "breath more stertorous. Van Helsing stood up instinctively.\n", - "\"We know the worst now,\" he said. \"He is here, and we know his purpose.\n", - "It may not be too late. Let us be armed--the same as we were the other\n", - "night, but lose no time; there is not an instant to spare.\" There was no\n", - "had when we entered the Count's house. The Professor had his ready, and\n", - "\"They never leave me; and they shall not till this unhappy business is\n", - "Alas! alas! that that dear Madam Mina should suffer!\" He stopped; his\n", - "Outside the Harkers' door we paused. Art and Quincey held back, and the\n", - "\"Should we disturb her?\"\n", - "\"We must,\" said Van Helsing grimly. \"If the door be locked, I shall\n", - "\"May it not frighten her terribly? It is unusual to break into a lady's\n", - "Van Helsing said solemnly, \"You are always right; but this is life and\n", - "are all as one to me to-night. Friend John, when I turn the handle, if\n", - "He turned the handle as he spoke, but the door did not yield. We threw\n", - "headlong into the room. The Professor did actually fall, and I saw\n", - "The moonlight was so bright that through the thick yellow blind the room\n", - "was light enough to see. On the bed beside the window lay Jonathan\n", - "Harker, his face flushed and breathing heavily as though in a stupor.\n", - "Kneeling on the near edge of the bed facing outwards was the white-clad\n", - "His face was turned from us, but the instant we saw we all recognised\n", - "the Count--in every way, even to the scar on his forehead. With his left\n", - "hand he held both Mrs. Harker's hands, keeping them away with her arms\n", - "compel it to drink. As we burst into the room, the Count turned his\n", - "and sprang at us. But by this time the Professor had gained his feet,\n", - "and was holding towards him the envelope which contained the Sacred\n", - "Wafer. The Count suddenly stopped, just as poor Lucy had done outside\n", - "under Quincey's match, we saw nothing but a faint vapour. This, as we\n", - "open, had swung back to its old position. Van Helsing, Art, and I moved\n", - "forward to Mrs. Harker, who by this time had drawn her breath and with\n", - "Count's terrible grip, and from behind them came a low desolate wail\n", - "endless grief. Van Helsing stepped forward and drew the coverlet gently\n", - "over her body, whilst Art, after looking at her face for an instant\n", - "despairingly, ran out of the room. Van Helsing whispered to me:--\n", - "\"Jonathan is in a stupor such as we know the Vampire can produce. We can\n", - "do nothing with poor Madam Mina for a few moments till she recovers\n", - "herself; I must wake him!\" He dipped the end of a towel in cold water\n", - "window. There was much moonshine; and as I looked I could see Quincey\n", - "Morris run across the lawn and hide himself in the shadow of a great\n", - "instant I heard Harker's quick exclamation as he woke to partial\n", - "\"In God's name what does this mean?\" Harker cried out. \"Dr. Seward, Dr.\n", - "Van Helsing, what is it? What has happened? What is wrong? Mina, dear,\n", - "what is it? What does that blood mean? My God, my God! has it come to\n", - "together. \"Good God help us! help her! oh, help her!\" With a quick\n", - "man in him awake at the need for instant exertion. \"What has happened?\n", - "Tell me all about it!\" he cried without pausing. \"Dr. Van Helsing, you\n", - "love Mina, I know. Oh, do something to save her. It cannot have gone too\n", - "far yet. Guard her while I look for _him_!\" His wife, through her terror\n", - "\"No! no! Jonathan, you must not leave me. I have suffered enough\n", - "to-night, God knows, without the dread of his harming you. You must stay\n", - "with me. Stay with these friends who will watch over you!\" Her\n", - "Van Helsing and I tried to calm them both. The Professor held up his\n", - "\"Do not fear, my dear. We are here; and whilst this is close to you no\n", - "and take counsel together.\" She shuddered and was silent, holding down\n", - "\"Unclean, unclean! I must touch him or kiss him no more. Oh, that it\n", - "most cause to fear.\" To this he spoke out resolutely:--\n", - "\"Nonsense, Mina. It is a shame to me to hear such a word. I would not\n", - "hear it of you; and I shall not hear it from you. May God judge me by my\n", - "if by any act or will of mine anything ever come between us!\" He put out\n", - "\"And now, Dr. Seward, tell me all about it. Too well I know the broad\n", - "and his eyes blazed as I told how the ruthless hands of the Count had\n", - "hair. Just as I had finished, Quincey and Godalming knocked at the door.\n", - "They entered in obedience to our summons. Van Helsing looked at me\n", - "to him he asked them what they had seen or done. To which Lord Godalming\n", - "however----\" He stopped suddenly, looking at the poor drooping figure on\n", - "the bed. Van Helsing said gravely:--\n", - "\"Go on, friend Arthur. We want here no more concealments. Our hope now\n", - "is in knowing all. Tell freely!\" So Art went on:--\n", - "\"He had been there, and though it could only have been for a few\n", - "had helped the flames.\" Here I interrupted. \"Thank God there is the\n", - "other copy in the safe!\" His face lit for a moment, but fell again as he\n", - "into Renfield's room; but there was no trace there except----!\" Again he\n", - "paused. \"Go on,\" said Harker hoarsely; so he bowed his head and\n", - "is dead.\" Mrs. Harker raised her head, looking from one to the other of\n", - "\"God's will be done!\" I could not but feel that Art was keeping back\n", - "Van Helsing turned to Morris and asked:--\n", - "\"And you, friend Quincey, have you any to tell?\"\n", - "\"A little,\" he answered. \"It may be much eventually, but at present I\n", - "can't say. I thought it well to know if possible where the Count would\n", - "Renfield's window, and flap westward. I expected to see him in some\n", - "shape go back to Carfax; but he evidently sought some other lair. He\n", - "He said the latter words through his shut teeth. For a space of perhaps\n", - "hear the sound of our hearts beating; then Van Helsing said, placing his\n", - "hand very tenderly on Mrs. Harker's head:--\n", - "\"And now, Madam Mina--poor, dear, dear Madam Mina--tell us exactly what\n", - "The poor, dear lady shivered, and I could see the tension of her nerves\n", - "out one hand to Van Helsing who took it in his, and, after stooping and\n", - "After a pause in which she was evidently ordering her thoughts, she\n", - "Her husband involuntarily groaned as she turned to him and said\n", - "lovingly: \"Do not fret, dear. You must be brave and strong, and help me\n", - "I turned to wake Jonathan, but found that he slept so soundly that it\n", - "sunset on the windows of St. Mary's Church at Whitby. I knew, too, the\n", - "red scar on his forehead where Jonathan had struck him. For an instant\n", - "pointing as he spoke to Jonathan:--\n", - "\"'Silence! If you make a sound I shall take him and dash his brains out\n", - "so, 'First, a little refreshment to reward my exertions. You may as well\n", - "such is, when his touch is on his victim. And oh, my God, my God, pity\n", - "me! He placed his reeking lips upon my throat!\" Her husband groaned\n", - "saw it drip with the fresh blood!\" The remembrance seemed for a while to\n", - "\"Then he spoke to me mockingly, 'And so you, like the others, would play\n", - "frustrate me in my designs! You know now, and they know in part already,\n", - "call. When my brain says \"Come!\" to you, you shall cross land or sea to\n", - "do my bidding; and to that end this!' With that he pulled open his\n", - "the wound, so that I must either suffocate or swallow some of the---- Oh\n", - "my God! my God! what have I done? What have I done to deserve such a\n", - "days. God pity me! Look down on a poor soul in worse than mortal peril;\n", - "and in mercy pity those to whom she is dear!\" Then she began to rub her\n", - "As she was telling her terrible story, the eastern sky began to quicken,\n", - "We have arranged that one of us is to stay within call of the unhappy\n", - "Of this I am sure: the sun rises to-day on no more miserable house in\n", - "CHAPTER XXII\n", - "JONATHAN HARKER'S JOURNAL\n", - "_3 October._--As I must do something or go mad, I write this diary. It\n", - "take something to eat; for Dr. Van Helsing and Dr. Seward are agreed\n", - "that if we do not eat we cannot work our best. Our best will be, God\n", - "not have landed Mina or me anywhere worse than we are to-day. However,\n", - "we must trust and hope. Poor Mina told me just now, with the tears\n", - "faith is tested--that we must keep on trusting; and that God will aid us\n", - "up to the end. The end! oh my God! what end?... To work! To work!\n", - "When Dr. Van Helsing and Dr. Seward had come back from seeing poor\n", - "Renfield, we went gravely into what was to be done. First, Dr. Seward\n", - "told us that when he and Dr. Van Helsing had gone down to the room below\n", - "they had found Renfield lying on the floor, all in a heap. His face was\n", - "Dr. Seward asked the attendant who was on duty in the passage if he had\n", - "half dozing--when he heard loud voices in the room, and then Renfield\n", - "had called out loudly several times, \"God! God! God!\" after that there\n", - "on the floor, face down, just as the doctors had seen him. Van Helsing\n", - "to it, if required, that the word \"God\" was spoken by the patient. Dr.\n", - "Seward said to us, when we were alone, that he did not wish to go into\n", - "When the question began to be discussed as to what should be our next\n", - "step, the very first thing we decided was that Mina should be in full\n", - "despair. \"There must be no concealment,\" she said, \"Alas! we have had\n", - "Whatever may happen, it must be of new hope or of new courage to me!\"\n", - "Van Helsing was looking at her fixedly as she spoke, and said, suddenly\n", - "\"But dear Madam Mina, are you not afraid; not for yourself, but for\n", - "others from yourself, after what has happened?\" Her face grew set in its\n", - "\"Ah no! for my mind is made up!\"\n", - "\"To what?\" he asked gently, whilst we were all very still; for each in\n", - "\"Because if I find in myself--and I shall watch keenly for it--a sign of\n", - "\"You would not kill yourself?\" he asked, hoarsely.\n", - "pain, and so desperate an effort!\" She looked at him meaningly as she\n", - "\"My child, there is such an one if it were for your good. For myself I\n", - "could hold it in my account with God to find such an euthanasia for you,\n", - "even at this moment if it were best. Nay, were it safe! But my\n", - "child----\" For a moment he seemed choked, and a great sob rose in his\n", - "\"There are here some who would stand between you and death. You must not\n", - "die; for if he is still with the quick Un-Dead, your death would make\n", - "you even as he is. No, you must live! You must struggle and strive to\n", - "live, though death would seem a boon unspeakable. You must fight Death\n", - "night; in safety or in peril! On your living soul I charge you that you\n", - "do not die--nay, nor think of death--till this great evil be past.\" The\n", - "\"I promise you, my dear friend, that if God will let me live, I shall\n", - "strive to do so; till, if it may be in His good time, this horror may\n", - "have passed away from me.\" She was so good and brave that we all felt\n", - "She was pleased with the prospect of anything to do--if \"pleased\" could\n", - "As usual Van Helsing had thought ahead of everyone else, and was\n", - "\"It is perhaps well,\" he said, \"that at our meeting after our visit to\n", - "Carfax we decided not to do anything with the earth-boxes that lay\n", - "there. Had we done so, the Count must have guessed our purpose, and\n", - "Piccadilly, we may track the very last of them. To-day, then, is ours;\n", - "and the destroying shall be, in time, sure.\" Here I started up for I\n", - "preciously laden with Mina's life and happiness were flying from us,\n", - "since whilst we talked action was impossible. But Van Helsing held up\n", - "his hand warningly. \"Nay, friend Jonathan,\" he said, \"in this, the\n", - "all probable the key of the situation is in that house in Piccadilly.\n", - "The Count may have many houses which he has bought. Of them he will have\n", - "friend Arthur call, in his phrases of hunt 'stop the earths' and so we\n", - "\"Then let us come at once,\" I cried, \"we are wasting the precious,\n", - "precious time!\" The Professor did not move, but simply said:--\n", - "\"And how are we to get into that house in Piccadilly?\"\n", - "\"Any way!\" I cried. \"We shall break in if need be.\"\n", - "\"And your police; where will they be, and what will they say?\"\n", - "\"Don't wait more than need be; you know, I am sure, what torture I am\n", - "\"Ah, my child, that I do; and indeed there is no wish of me to add to\n", - "\"Now suppose that you were, in truth, the owner of that house, and could\n", - "\"And your police, they would interfere, would they not?\"\n", - "\"Oh, no! not if they knew the man was properly employed.\"\n", - "\"Then,\" he looked at me as keenly as he spoke, \"all that is in doubt is\n", - "friend Jonathan, you go take the lock off a hundred empty house in this\n", - "your London, or of any city in the world; and if you do it as such\n", - "house in London, and when he went for months of summer to Switzerland\n", - "they can. And when that owner come back from his holiday in Switzerland\n", - "I could not but see how right he was and the terrible despair of Mina's\n", - "Helsing went on:--\n", - "\"When once within that house we may find more clues; at any rate some of\n", - "more earth-boxes--at Bermondsey and Mile End.\"\n", - "Lord Godalming stood up. \"I can be of some use here,\" he said. \"I shall\n", - "\"Look here, old fellow,\" said Morris, \"it is a capital idea to have all\n", - "Walworth or Mile End would attract too much attention for our purposes?\n", - "It seems to me that we ought to take cabs when we go south or east; and\n", - "\"Friend Quincey is right!\" said the Professor. \"His head is what you\n", - "Mina took a growing interest in everything and I was rejoiced to see\n", - "what had occurred with poor Lucy when the Count had sucked her blood. As\n", - "When we came to the discussion of the sequence of our efforts and of the\n", - "finally agreed that before starting for Piccadilly we should destroy the\n", - "Count's lair close at hand. In case he should find it out too soon, we\n", - "As to the disposal of forces, it was suggested by the Professor that,\n", - "after our visit to Carfax, we should all enter the house in Piccadilly;\n", - "that the two doctors and I should remain there, whilst Lord Godalming\n", - "and Quincey found the lairs at Walworth and Mile End and destroyed them.\n", - "It was possible, if not likely, the Professor urged, that the Count\n", - "might appear in Piccadilly during the day, and that if so we might be\n", - "Mina, I thought that my mind was made up on the subject; but Mina would\n", - "in which I could be useful; that amongst the Count's papers might be\n", - "some clue which I could understand out of my experience in Transylvania;\n", - "cope with the Count's extraordinary power. I had to give in, for Mina's\n", - "we should all work together. \"As for me,\" she said, \"I have no fear.\n", - "Things have been as bad as they can be; and whatever may happen must\n", - "have in it some element of hope or comfort. Go, my husband! God can, if\n", - "He wishes it, guard me as well alone as with any one present.\" So I\n", - "started up crying out: \"Then in God's name let us come at once, for we\n", - "are losing time. The Count may come to Piccadilly earlier than we\n", - "\"Not so!\" said Van Helsing, holding up his hand.\n", - "\"But why?\" I asked.\n", - "\"Do you forget,\" he said, with actually a smile, \"that last night he\n", - "Did I forget! shall I ever--can I ever! Can any of us ever forget that\n", - "terrible scene! Mina struggled hard to keep her brave countenance; but\n", - "shuddered whilst she moaned. Van Helsing had not intended to recall her\n", - "he was horrified at his thoughtlessness and tried to comfort her. \"Oh,\n", - "Madam Mina,\" he said, \"dear, dear Madam Mina, alas! that I of all who so\n", - "forget it, will you not?\" He bent low beside her as he spoke; she took\n", - "\"No, I shall not forget, for it is well that I remember; and with it I\n", - "Breakfast was a strange meal to us all. We tried to be cheerful and\n", - "encourage each other, and Mina was the brightest and most cheerful of\n", - "us. When it was over, Van Helsing stood up and said:--\n", - "\"Now, my dear friends, we go forth to our terrible enterprise. Are we\n", - "lair; armed against ghostly as well as carnal attack?\" We all assured\n", - "him. \"Then it is well. Now, Madam Mina, you are in any case _quite_ safe\n", - "here until the sunset; and before then we shall return--if---- We shall\n", - "return! But before we go let me see you armed against personal attack. I\n", - "of things of which we know, so that He may not enter. Now let me guard\n", - "yourself. On your forehead I touch this piece of Sacred Wafer in the\n", - "name of the Father, the Son, and----\"\n", - "There was a fearful scream which almost froze our hearts to hear. As he\n", - "had placed the Wafer on Mina's forehead, it had seared it--had burned\n", - "\"Unclean! Unclean! Even the Almighty shuns my polluted flesh! I must\n", - "bear this mark of shame upon my forehead until the Judgment Day.\" They\n", - "their eyes that ran tears silently. Then Van Helsing turned and said\n", - "\"It may be that you may have to bear that mark till God himself see fit,\n", - "as He most surely shall, on the Judgment Day, to redress all wrongs of\n", - "the earth and of His children that He has placed thereon. And oh, Madam\n", - "Mina, my dear, my dear, may we who love you be there to see, when that\n", - "red scar, the sign of God's knowledge of what has been, shall pass away,\n", - "we live, that scar shall pass away when God sees right to lift the\n", - "burden that is hard upon us. Till then we bear our Cross, as His Son did\n", - "in obedience to His Will. It may be that we are chosen instruments of\n", - "His good pleasure, and that we ascend to His bidding as that other\n", - "fears, and all that makes the difference between God and man.\"\n", - "There was hope in his words, and comfort; and they made for resignation.\n", - "Mina and I both felt so, and simultaneously we each took one of the old\n", - "It was then time to start. So I said farewell to Mina, a parting which\n", - "To one thing I have made up my mind: if we find out that Mina must be a\n", - "We entered Carfax without trouble and found all things the same as on\n", - "Dr. Van Helsing said to us solemnly as we stood before them:--\n", - "\"And now, my friends, we have a duty here to do. We must sterilise this\n", - "God.\" As he spoke he took from his bag a screwdriver and a wrench, and\n", - "was concentrated on the Professor. Taking from his box a piece of the\n", - "Sacred Wafer he laid it reverently on the earth, and then shutting down\n", - "One by one we treated in the same way each of the great boxes, and left\n", - "of the Host.\n", - "When we closed the door behind us, the Professor said solemnly:--\n", - "\"So much is already done. If it may be that with all the others we can\n", - "be so successful, then the sunset of this evening may shine on Madam\n", - "Mina's forehead all white as ivory and with no stain!\"\n", - "As we passed across the lawn on our way to the station to catch our\n", - "window of my own room saw Mina. I waved my hand to her, and nodded to\n", - "_Piccadilly, 12:30 o'clock._--Just before we reached Fenchurch Street\n", - "Lord Godalming said to me:--\n", - "\"Quincey and I will find a locksmith. You had better not come with us in\n", - "solicitor and the Incorporated Law Society might tell you that you\n", - "even of odium, but he went on: \"Besides, it will attract less attention\n", - "better go with Jack and the Professor and stay in the Green Park,\n", - "\"The advice is good!\" said Van Helsing, so we said no more. Godalming\n", - "and Morris hurried off in a cab, we following in another. At the corner\n", - "of Arlington Street our contingent got out and strolled into the Green\n", - "Park. My heart beat as I saw the house on which so much of our hope was\n", - "At length we saw a four-wheeler drive up. Out of it, in leisurely\n", - "fashion, got Lord Godalming and Morris; and down from the box descended\n", - "ascended the steps, and Lord Godalming pointed out what he wanted done.\n", - "The workman took off his coat leisurely and hung it on one of the spikes\n", - "turning to his employers, made some remark. Lord Godalming smiled, and\n", - "entered the hall. We sat still; my own cigar burnt furiously, but Van\n", - "Helsing's went cold altogether. We waited patiently as we saw the\n", - "This he finally handed to Lord Godalming, who took out his purse and\n", - "When the man had fairly gone, we three crossed the street and knocked at\n", - "the door. It was immediately opened by Quincey Morris, beside whom stood\n", - "Lord Godalming lighting a cigar.\n", - "\"The place smells so vilely,\" said the latter as we came in. It did\n", - "indeed smell vilely--like the old chapel at Carfax--and with our\n", - "previous experience it was plain to us that the Count had been using the\n", - "with, and as yet we did not know whether the Count might not be in the\n", - "Our work was not over, and would never be until we should have found the\n", - "Count was not at present in the house, and we proceeded to search for\n", - "After a cursory glance at the rest of the rooms, from basement to attic,\n", - "which might belong to the Count; and so we proceeded to minutely examine\n", - "table. There were title deeds of the Piccadilly house in a great bundle;\n", - "deeds of the purchase of the houses at Mile End and Bermondsey;\n", - "the other houses. When we had examined this last find, Lord Godalming\n", - "and Quincey Morris taking accurate notes of the various addresses of the\n", - "houses in the East and the South, took with them the keys in a great\n", - "the Count.\n", - "CHAPTER XXIII\n", - "DR. SEWARD'S DIARY\n", - "_3 October._--The time seemed terribly long whilst we were waiting for\n", - "the coming of Godalming and Quincey Morris. The Professor tried to keep\n", - "purpose, by the side glances which he threw from time to time at Harker.\n", - "The poor fellow is overwhelmed in a misery that is appalling to see.\n", - "Last night he was a frank, happy-looking man, with strong, youthful\n", - "thought my own trouble was bad enough, but his----! The Professor knows\n", - "it. As I learned from the researches of my friend Arminus of Buda-Pesth,\n", - "attend the Scholomance, and there was no branch of knowledge of his time\n", - "In some faculties of mind he has been, and is, only a child; but he is\n", - "lead through Death, not Life.\"\n", - "Harker groaned and said, \"And this is all arrayed against my darling!\n", - "But how is he experimenting? The knowledge may help us to defeat him!\"\n", - "\"He has all along, since his coming, been trying his power, slowly but\n", - "and to go slow. _Festina lente_ may well be his motto.\"\n", - "\"I fail to understand,\" said Harker wearily. \"Oh, do be more plain to\n", - "me! Perhaps grief and trouble are dulling my brain.\"\n", - "The Professor laid his hand tenderly on his shoulder as he spoke:--\n", - "\"Ah, my child, I will be plain. Do you not see how, of late, this\n", - "John's home; for your Vampire, though in all afterwards he can come when\n", - "hiding-place! But, my child, do not despair; this knowledge come to him\n", - "just too late! Already all of his lairs but one be sterilise as for him;\n", - "there not more at stake for us than for him? Then why we not be even\n", - "more careful than him? By my clock it is one hour and already, if all be\n", - "well, friend Arthur and Quincey are on their way to us. To-day is our\n", - "Whilst he was speaking we were startled by a knock at the hall door, the\n", - "hall with one impulse, and Van Helsing, holding up his hand to us to\n", - "despatch. The Professor closed the door again, and, after looking at the\n", - "\"Look out for D. He has just now, 12:45, come from Carfax hurriedly and\n", - "hastened towards the South. He seems to be going the round and may want\n", - "to see you: Mina.\"\n", - "There was a pause, broken by Jonathan Harker's voice:--\n", - "\"Now, God be thanked, we shall soon meet!\" Van Helsing turned to him\n", - "\"God will act in His own way and time. Do not fear, and do not rejoice\n", - "\"Oh, hush, hush, my child!\" said Van Helsing. \"God does not purchase\n", - "souls in this wise; and the Devil, though he may purchase, does not keep\n", - "faith. But God is merciful and just, and knows your pain and your\n", - "devotion to that dear Madam Mina. Think you, how her pain would be\n", - "coming for action; to-day this Vampire is limit to the powers of man,\n", - "is that my Lord Arthur and Quincey arrive first.\"\n", - "About half an hour after we had received Mrs. Harker's telegram, there\n", - "the Professor's heart and mine beat loudly. We looked at each other, and\n", - "Helsing pulled back the latch, and, holding the door half open, stood\n", - "saw Lord Godalming and Quincey Morris. They came quickly in and closed\n", - "\"It is all right. We found both places; six boxes in each and we\n", - "\"Destroyed?\" asked the Professor.\n", - "\"For him!\" We were silent for a minute, and then Quincey said:--\n", - "\"There's nothing to do but to wait here. If, however, he doesn't turn up\n", - "by five o'clock, we must start off; for it won't do to leave Mrs. Harker\n", - "\"He will be here before long now,\" said Van Helsing, who had been\n", - "consulting his pocket-book. \"_Nota bene_, in Madam's telegram he went\n", - "south from Carfax, that means he went to cross the river, and he could\n", - "suspicious; and he went from Carfax first to the place where he would\n", - "suspect interference least. You must have been at Bermondsey only a\n", - "Mile End next. This took him some time; for he would then have to be\n", - "arms! Be ready!\" He held up a warning hand as he spoke, for we all could\n", - "adventures in different parts of the world, Quincey Morris had always\n", - "been the one to arrange the plan of action, and Arthur and I had been\n", - "gesture, placed us each in position. Van Helsing, Harker, and I were\n", - "just behind the door, so that when it was opened the Professor could\n", - "Godalming behind and Quincey in front stood just out of sight ready to\n", - "the hall; the Count was evidently prepared for some surprise--at least\n", - "Suddenly with a single bound he leaped into the room, winning a way past\n", - "Harker, who, with a quick movement, threw himself before the door\n", - "leading into the room in the front of the house. As the Count saw us, a\n", - "ready his great Kukri knife and made a fierce and sudden cut at him. The\n", - "blow was a powerful one; only the diabolical quickness of the Count's\n", - "fell out. The expression of the Count's face was so hellish, that for a\n", - "moment I feared for Harker, though I saw him throw the terrible knife\n", - "protective impulse, holding the Crucifix and Wafer in my left hand. I\n", - "the Count's face. His waxen hue became greenish-yellow by the contrast\n", - "dive he swept under Harker's arm, ere his blow could fall, and, grasping\n", - "We ran over and saw him spring unhurt from the ground. He, rushing up\n", - "There he turned and spoke to us:--\n", - "\"You think to baffle me, you--with your pale faces all in a row, like\n", - "sheep in a butcher's. You shall be sorry yet, each one of you! You think\n", - "jackals when I want to feed. Bah!\" With a contemptuous sneer, he passed\n", - "to speak was the Professor, as, realising the difficulty of following\n", - "\"We have learnt something--much! Notwithstanding his brave words, he\n", - "fears us; he fear time, he fear want! For if not, why he hurry so? His\n", - "very tone betray him, or my ears deceive. Why take that money? You\n", - "return.\" As he spoke he put the money remaining into his pocket; took\n", - "the title-deeds in the bundle as Harker had left them, and swept the\n", - "Godalming and Morris had rushed out into the yard, and Harker had\n", - "lowered himself from the window to follow the Count. He had, however,\n", - "was no sign of him. Van Helsing and I tried to make inquiry at the back\n", - "It was now late in the afternoon, and sunset was not far off. We had to\n", - "Professor when he said:--\n", - "\"Let us go back to Madam Mina--poor, poor dear Madam Mina. All we can do\n", - "bravely as he could to comfort Harker. The poor fellow was quite broken\n", - "With sad hearts we came back to my house, where we found Mrs. Harker\n", - "\"I can never thank you all enough. Oh, my poor darling!\" As she spoke,\n", - "she took her husband's grey head in her hands and kissed it--\"Lay your\n", - "poor head here and rest it. All will yet be well, dear! God will protect\n", - "us if He so will it in His good intent.\" The poor fellow groaned. There\n", - "We had a sort of perfunctory supper together, and I think it cheered us\n", - "our promise, we told Mrs. Harker everything which had passed; and\n", - "part where Harker had rushed at the Count so recklessly, she clung to\n", - "purity and faith, was outcast from God.\n", - "\"Jonathan,\" she said, and the word sounded like music on her lips it was\n", - "so full of love and tenderness, \"Jonathan dear, and you all my true,\n", - "you destroyed the false Lucy so that the true Lucy might live hereafter;\n", - "As she spoke I could see her husband's face darken and draw together, as\n", - "Instinctively the clasp on his wife's hand grew closer, till his\n", - "\"May God give him into my hand just for long enough to destroy that\n", - "\"Oh, hush! oh, hush! in the name of the good God. Don't say such things,\n", - "Jonathan, my husband; or you will crush me with fear and horror. Just\n", - "other like you--and with equal cause for anger--may deny it to me! Oh,\n", - "had there been another way; but I pray that God may not have treasured\n", - "sorely stricken man. Oh, God, let these poor white hairs go in evidence\n", - "We men were all in tears now. There was no resisting them, and we wept\n", - "Her husband flung himself on his knees beside her, and putting his arms\n", - "round her, hid his face in the folds of her dress. Van Helsing beckoned\n", - "with their God.\n", - "Before they retired the Professor fixed up the room against any coming\n", - "of the Vampire, and assured Mrs. Harker that she might rest in peace.\n", - "She tried to school herself to the belief, and, manifestly for her\n", - "I think and believe, not without its reward. Van Helsing had placed at\n", - "When they had retired, Quincey, Godalming, and I arranged that we should\n", - "poor stricken lady. The first watch falls to Quincey, so the rest of us\n", - "_Jonathan Harker's Journal._\n", - "_3-4 October, close to midnight._--I thought yesterday would never end.\n", - "There was over me a yearning for sleep, in some sort of blind belief\n", - "earth-box remained, and that the Count alone knew where it was. If he\n", - "This I know: that if ever there was a woman who was all perfection, that\n", - "seem despicable. Surely God will not permit the world to be the poorer\n", - "reefwards now, and faith is our only anchor. Thank God! Mina is\n", - "over her face a repose which was like spring after the blasts of March.\n", - "_Later._--I must have fallen asleep, for I was awaked by Mina, who was\n", - "\"Hush! there is someone in the corridor!\" I got up softly, and crossing\n", - "Just outside, stretched on a mattress, lay Mr. Morris, wide awake. He\n", - "\"Hush! go back to bed; it is all right. One of us will be here all\n", - "His look and gesture forbade discussion, so I came back and told Mina.\n", - "She sighed and positively a shadow of a smile stole over her poor, pale\n", - "\"Oh, thank God for good brave men!\" With a sigh she sank back again to\n", - "_4 October, morning._--Once again during the night I was wakened by\n", - "Mina. This time we had all had a good sleep, for the grey of the coming\n", - "\"Go, call the Professor. I want to see him at once.\"\n", - "\"Why?\" I asked.\n", - "\"Is anything wrong?\" he asked, in alarm.\n", - "\"No,\" I replied; \"but Mina wants to see Dr. Van Helsing at once.\"\n", - "\"I will go,\" he said, and hurried into the Professor's room.\n", - "In two or three minutes later Van Helsing was in the room in his\n", - "dressing-gown, and Mr. Morris and Lord Godalming were with Dr. Seward at\n", - "the door asking questions. When the Professor saw Mina smile--a\n", - "\"Oh, my dear Madam Mina, this is indeed a change. See! friend Jonathan,\n", - "we have got our dear Madam Mina, as of old, back to us to-day!\" Then\n", - "turning to her, he said, cheerfully: \"And what am I do for you? For at\n", - "\"I want you to hypnotise me!\" she said. \"Do it before the dawn, for I\n", - "short!\" Without a word he motioned her to sit up in bed.\n", - "Looking fixedly at her, he commenced to make passes in front of her,\n", - "her bosom could one know that she was alive. The Professor made a few\n", - "impose silence, the Professor motioned to me to bring the others in.\n", - "They came on tip-toe, closing the door behind them, and stood at the\n", - "stillness was broken by Van Helsing's voice speaking in a low level tone\n", - "\"Where are you?\" The answer came in a neutral way:--\n", - "\"I do not know. Sleep has no place it can call its own.\" For several\n", - "minutes there was silence. Mina sat rigid, and the Professor stood\n", - "was growing lighter; without taking his eyes from Mina's face, Dr. Van\n", - "Helsing motioned me to pull up the blind. I did so, and the day seemed\n", - "itself through the room. On the instant the Professor spoke again:--\n", - "\"Where are you now?\" The answer came dreamily, but with intention; it\n", - "\"What do you see?\"\n", - "\"What do you hear?\" I could detect the strain in the Professor's patient\n", - "\"The lapping of water. It is gurgling by, and little waves leap. I can\n", - "\"Then you are on a ship?\" We all looked at each other, trying to glean\n", - "\"Oh, yes!\"\n", - "\"What else do you hear?\"\n", - "\"The sound of men stamping overhead as they run about. There is the\n", - "\"What are you doing?\"\n", - "\"I am still--oh, so still. It is like death!\" The voice faded away into\n", - "By this time the sun had risen, and we were all in the full light of\n", - "day. Dr. Van Helsing placed his hands on Mina's shoulders, and laid her\n", - "us all around her. \"Have I been talking in my sleep?\" was all she said.\n", - "She seemed, however, to know the situation without telling, though she\n", - "was eager to know what she had told. The Professor repeated the\n", - "\"Then there is not a moment to lose: it may not be yet too late!\" Mr.\n", - "Morris and Lord Godalming started for the door but the Professor's calm\n", - "\"Stay, my friends. That ship, wherever it was, was weighing anchor\n", - "your so great Port of London. Which of them is it that you seek? God be\n", - "forward if we had been able to see what we might have seen! Alas, but\n", - "that sentence is a puddle; is it not? We can know now what was in the\n", - "Count's mind, when he seize that money, though Jonathan's so fierce\n", - "me, ESCAPE! He saw that with but one earth-box left, and a pack of men\n", - "following like dogs after a fox, this London was no place for him. He\n", - "think to escape, but no! we follow him. Tally Ho! as friend Arthur would\n", - "say when he put on his red frock! Our old fox is wily; oh! so wily, and\n", - "us.\" Mina looked at him appealingly as she asked:--\n", - "\"But why need we seek him further, when he is gone away from us?\" He\n", - "\"Ask me nothings as yet. When we have breakfast, then I answer all\n", - "questions.\" He would say no more, and we separated to dress.\n", - "After breakfast Mina repeated her question. He looked at her gravely for\n", - "\"Because my dear, dear Madam Mina, now more than ever must we find him\n", - "even if we have to follow him to the jaws of Hell!\" She grew paler as\n", - "\"Why?\"\n", - "\"Because,\" he answered solemnly, \"he can live for centuries, and you are\n", - "CHAPTER XXIV\n", - "DR. SEWARD'S PHONOGRAPH DIARY, SPOKEN BY VAN HELSING\n", - "This to Jonathan Harker.\n", - "You are to stay with your dear Madam Mina. We shall go to make our\n", - "This is your best and most holiest office. This day nothing can find him\n", - "to his Castle in Transylvania. I know it so well, as if a great hand of\n", - "he think poor Miss Lucy, being as he thought like him, keep open to him.\n", - "But there was not of time. When that fail he make straight for his last\n", - "He is clever, oh, so clever! he know that his game here was finish; and\n", - "comfort you and poor dear Madam Mina with new hope. For it will be hope\n", - "pursue, he take hundreds of years to get so far as London; and yet in\n", - "But we are strong, each in our purpose; and we are all more strong\n", - "together. Take heart afresh, dear husband of Madam Mina. This battle is\n", - "but begun, and in the end we shall win--so sure as that God sits on high\n", - "to watch over His children. Therefore be of much comfort till we return.\n", - "VAN HELSING.\n", - "_Jonathan Harker's Journal._\n", - "_4 October._--When I read to Mina, Van Helsing's message in the\n", - "certainty that the Count is out of the country has given her comfort;\n", - "believe in it. Even my own terrible experiences in Castle Dracula seem\n", - "Alas! how can I disbelieve! In the midst of my thought my eye fell on\n", - "Mina says that perhaps we are the instruments of ultimate good. It may\n", - "yet of the future. It is better to wait till we see the Professor and\n", - "The day is running by more quickly than I ever thought a day could run\n", - "_Mina Harker's Journal._\n", - "_5 October, 5 p. m._--Our meeting for report. Present: Professor Van\n", - "Helsing, Lord Godalming, Dr. Seward, Mr. Quincey Morris, Jonathan\n", - "Harker, Mina Harker.\n", - "Dr. Van Helsing described what steps were taken during the day to\n", - "discover on what boat and whither bound Count Dracula made his escape:--\n", - "\"As I knew that he wanted to get back to Transylvania, I felt sure that\n", - "he must go by the Danube mouth; or by somewhere in the Black Sea, since\n", - "by that way he come. It was a dreary blank that was before us. _Omne\n", - "ships leave for the Black Sea last night. He was in sailing ship, since\n", - "Madam Mina tell of sails being set. These not so important as to go in\n", - "your list of the shipping in the _Times_, and so we go, by suggestion of\n", - "Lord Godalming, to your Lloyd's, where are note of all ships that sail,\n", - "however so small. There we find that only one Black-Sea-bound ship go\n", - "out with the tide. She is the _Czarina Catherine_, and she sail from\n", - "Doolittle's Wharf for Varna, and thence on to other parts and up the\n", - "Danube. 'Soh!' said I, 'this is the ship whereon is the Count.' So off\n", - "we go to Doolittle's Wharf, and there we find a man in an office of wood\n", - "of the goings of the _Czarina Catherine_. He swear much, and he red face\n", - "and loud of voice, but he good fellow all the same; and when Quincey\n", - "\"They make known to us among them, how last afternoon at about five\n", - "sails for the Black Sea and for where. Some took him to the office and\n", - "him that he doesn't want no Frenchmen--with bloom upon them and also\n", - "\"No one knew where he went 'or bloomin' well cared,' as they said, for\n", - "became apparent to all that the _Czarina Catherine_ would not sail as\n", - "The captain swore polyglot--very polyglot--polyglot with bloom and\n", - "Indeed they thought not of him; for soon the fog begin to melt away, and\n", - "\"And so, my dear Madam Mina, it is that we have to rest for a time, for\n", - "Danube mouth. To sail a ship takes time, go she never so quick; and when\n", - "Varna, and to be given to an agent, one Ristics who will there present\n", - "When he ask if there be any wrong, for that so, he can telegraph and\n", - "have inquiry made at Varna, we say 'no'; for what is to be done is not\n", - "When Dr. Van Helsing had done speaking, I asked him if he were certain\n", - "that the Count had remained on board the ship. He replied: \"We have the\n", - "pursue the Count, for oh! I dread Jonathan leaving me, and I know that\n", - "\"Yes, it is necessary--necessary--necessary! For your sake in the first,\n", - "dear Madam Mina, will learn it in the phonograph of my friend John, or\n", - "work of centuries. Were another of the Un-Dead, like him, to try to do\n", - "some wondrous way. The very place, where he have been alive, Un-Dead for\n", - "There have been volcanoes, some of whose openings still send out waters\n", - "so in time, death, which is of man's common lot and with God's sanction,\n", - "shall make you like to him. This must not be! We have sworn together\n", - "that it must not. Thus are we ministers of God's own wish: that the\n", - "world, and men for whom His Son die, will not be given over to monsters,\n", - "whose very existence would defame Him. He have allowed us to redeem one\n", - "soul already, and we go out as the old knights of the Cross to redeem\n", - "we fall, we fall in good cause.\" He paused and I said:--\n", - "\"But will not the Count take his rebuff wisely? Since he has been driven\n", - "from England, will he not avoid it, as a tiger does the village from\n", - "\"Aha!\" he said, \"your simile of the tiger good, for me, and I shall\n", - "adopt him. Your man-eater, as they of India call the tiger who has once\n", - "over the Turkey frontier and attack his enemy on his own ground; he be\n", - "beaten back, but did he stay? No! He come again, and again, and again.\n", - "Look at his persistence and endurance. With the child-brain that was to\n", - "does he do? He find out the place of all the world most of promise for\n", - "peoples. Oh, if such an one was to come from God, and not the Devil,\n", - "honour and glory of God.\"\n", - "After a general discussion it was determined that for to-night nothing\n", - "My surmise was not finished, could not be; for I caught sight in the\n", - "_Dr. Seward's Diary._\n", - "_5 October._--We all rose early, and I think that sleep did much for\n", - "It is really wonderful how much resilience there is in human nature. Let\n", - "caught sight of the red blotch on Mrs. Harker's forehead that I was\n", - "trouble is still existent. Even Mrs. Harker seems to lose sight of her\n", - "that in some mysterious way poor Mrs. Harker's tongue is tied. I _know_\n", - "cannot, give them utterance. I have mentioned this to Van Helsing, and\n", - "Count had his own purposes when he gave her what Van Helsing called \"the\n", - "Vampire's baptism of blood.\" Well, there may be a poison that distils\n", - "a mystery we should not wonder at anything! One thing I know: that if my\n", - "instinct be true regarding poor Mrs. Harker's silences, then there is a\n", - "Van Helsing is coming to my study a little before the others. I shall\n", - "_Later._--When the Professor came in, we talked over the state of\n", - "\"Friend John, there is something that you and I must talk of alone, just\n", - "\"Madam Mina, our poor, dear Madam Mina is changing.\" A cold shiver ran\n", - "through me to find my worst fears thus endorsed. Van Helsing\n", - "\"With the sad experience of Miss Lucy, we must this time be warned\n", - "often; as so it was with Miss Lucy. She did not speak, even when she\n", - "it be that she can, by our hypnotic trance, tell what the Count see and\n", - "\"Then, what we must do is to prevent this; we must keep her ignorant of\n", - "task! Oh, so painful that it heart-break me to think of; but it must be.\n", - "When to-day we meet, I must tell her that for reason which we will not\n", - "us.\" He wiped his forehead, which had broken out in profuse perspiration\n", - "It is now close to the time of our general gathering. Van Helsing has\n", - "_Later._--At the very outset of our meeting a great personal relief was\n", - "experienced by both Van Helsing and myself. Mrs. Harker had sent a\n", - "without her presence to embarrass us. The Professor and I looked at each\n", - "part, I thought that if Mrs. Harker realised the danger herself, it was\n", - "confer alone again. We went at once into our Plan of Campaign. Van\n", - "Helsing roughly put the facts before us first:--\n", - "\"The _Czarina Catherine_ left the Thames yesterday morning. It will take\n", - "reach Varna; but we can travel overland to the same place in three days.\n", - "Now, if we allow for two days less for the ship's voyage, owing to such\n", - "weather influences as we know that the Count can bring to bear; and if\n", - "be in Varna a day before the ship arrives, and able to make such\n", - "against evil things, spiritual as well as physical.\" Here Quincey Morris\n", - "\"I understand that the Count comes from a wolf country, and it may be\n", - "that he shall get there before us. I propose that we add Winchesters to\n", - "our armament. I have a kind of belief in a Winchester when there is any\n", - "trouble of that sort around. Do you remember, Art, when we had the pack\n", - "after us at Tobolsk? What wouldn't we have given then for a repeater\n", - "\"Good!\" said Van Helsing, \"Winchesters it shall be. Quincey's head is\n", - "can do nothing here; and as I think that Varna is not familiar to any of\n", - "us, why not go there more soon? It is as long to wait here as there.\n", - "To-night and to-morrow we can get ready, and then, if all be well, we\n", - "\"We four?\" said Harker interrogatively, looking from one to another of\n", - "\"Of course!\" answered the Professor quickly, \"you must remain to take\n", - "care of your so sweet wife!\" Harker was silent for awhile and then said\n", - "\"Let us talk of that part of it in the morning. I want to consult with\n", - "Mina.\" I thought that now was the time for Van Helsing to warn him not\n", - "_Jonathan Harker's Journal._\n", - "_5 October, afternoon._--For some time after our meeting this morning I\n", - "with happiness. Thank God, there are such moments still for her.\n", - "_Later._--How strange it all is. I sat watching Mina's happy sleep, and\n", - "once Mina opened her eyes, and looking at me tenderly, said:--\n", - "\"Jonathan, I want you to promise me something on your word of honour. A\n", - "promise made to me, but made holily in God's hearing, and not to be\n", - "\"Mina,\" I said, \"a promise like that, I cannot make at once. I may have\n", - "\"But, dear one,\" she said, with such spiritual intensity that her eyes\n", - "You can ask Dr. Van Helsing if I am not right; if he disagrees you may\n", - "She said:--\n", - "\"Promise me that you will not tell me anything of the plans formed for\n", - "the campaign against the Count. Not by word, or inference, or\n", - "_Later, midnight._--Mina has been bright and cheerful all the evening.\n", - "So much so that all the rest seemed to take courage, as if infected\n", - "trouble. Thank God for it, for then at least she can forget her care.\n", - "Perhaps her example may affect me as her gaiety did to-night. I shall\n", - "_6 October, morning._--Another surprise. Mina woke me early, about the\n", - "same time as yesterday, and asked me to bring Dr. Van Helsing. I thought\n", - "for the Professor. He had evidently expected some such call, for I found\n", - "room, he asked Mina if the others might come, too.\n", - "\"No,\" she said quite simply, \"it will not be necessary. You can tell\n", - "Dr. Van Helsing was as startled as I was. After a moment's pause he\n", - "\"But why?\"\n", - "\"You must take me with you. I am safer with you, and you shall be safer,\n", - "\"But why, dear Madam Mina? You know that your safety is our solemnest\n", - "any of us from--from circumstances--things that have been.\" He paused,\n", - "As she replied, she raised her finger and pointed to her forehead:--\n", - "coming up; I may not be able again. I know that when the Count wills me\n", - "wile; by any device to hoodwink--even Jonathan.\" God saw the look that\n", - "she turned on me as she spoke, and if there be indeed a Recording Angel\n", - "\"You men are brave and strong. You are strong in your numbers, for you\n", - "and so learn that which even I myself do not know.\" Dr. Van Helsing said\n", - "\"Madam Mina, you are, as always, most wise. You shall with us come; and\n", - "together we shall do that which we go forth to achieve.\" When he had\n", - "spoken, Mina's long spell of silence made me look at her. She had fallen\n", - "the blind and let in the sunlight which flooded the room. Van Helsing\n", - "a minute Lord Godalming, Dr. Seward, and Mr. Morris were with us also.\n", - "He told them what Mina had said, and went on:--\n", - "\"In the morning we shall leave for Varna. We have now to deal with a\n", - "new factor: Madam Mina. Oh, but her soul is true. It is to her an agony\n", - "warned in time. There must be no chance lost, and in Varna we must be\n", - "\"What shall we do exactly?\" asked Mr. Morris laconically. The Professor\n", - "\"We shall at the first board that ship; then, when we have identified\n", - "\"I shall not wait for any opportunity,\" said Morris. \"When I see the box\n", - "\"Good boy,\" said Dr. Van Helsing. \"Brave boy. Quincey is all man. God\n", - "There was nothing further to be said, and we parted. I shall now settle\n", - "_Later._--It is all done; my will is made, and all complete. Mina if she\n", - "It is now drawing towards the sunset; Mina's uneasiness calls my\n", - "danger--some new pain, which, however, may in God's will be means to a\n", - "She is calling to me.\n", - "CHAPTER XXV\n", - "DR. SEWARD'S DIARY\n", - "_11 October, Evening._--Jonathan Harker has asked me to note this, as he\n", - "I think that none of us were surprised when we were asked to see Mrs.\n", - "Harker a little before the time of sunset. We have of late come to\n", - "To-night, when we met, she was somewhat constrained, and bore all the\n", - "\"We are all here together in freedom, for perhaps the last time! I know,\n", - "dear; I know that you will always be with me to the end.\" This was to\n", - "her husband whose hand had, as we could see, tightened upon hers. \"In\n", - "the morning we go out upon our task, and God alone knows what may be in\n", - "There is a poison in my blood, in my soul, which may destroy me; which\n", - "is one way out for me, you must not and I must not take it!\" She looked\n", - "\"What is that way?\" asked Van Helsing in a hoarse voice. \"What is that\n", - "\"That I may die now, either by my own hand or that of another, before\n", - "did my poor Lucy's. Were death, or the fear of death, the only thing\n", - "done, is God's will. Therefore, I, on my part, give up here the\n", - "blackest things that the world or the nether world holds!\" We were all\n", - "faces of the others were set and Harker's grew ashen grey; perhaps he\n", - "\"This is what I can give into the hotch-pot.\" I could not but note the\n", - "seriousness. \"What will each of you give? Your lives I know,\" she went\n", - "on quickly, \"that is easy for brave men. Your lives are God's, and you\n", - "can give them back to Him; but what will you give to me?\" She looked\n", - "seemed to understand; he nodded, and her face lit up. \"Then I shall tell\n", - "\"What is that time?\" The voice was Quincey's, but it was low and\n", - "\"When you shall be convinced that I am so changed that it is better that\n", - "Quincey was the first to rise after the pause. He knelt down before her\n", - "\"My true friend!\" was all she could say amid her fast-falling tears, as,\n", - "\"I swear the same, my dear Madam Mina!\" said Van Helsing.\n", - "\"And I!\" said Lord Godalming, each of them in turn kneeling to her to\n", - "\"And must I, too, make such a promise, oh, my wife?\"\n", - "\"You too, my dearest,\" she said, with infinite yearning of pity in her\n", - "voice and eyes. \"You must not shrink. You are nearest and dearest and\n", - "towards those whom they love, in such times of sore trial! And oh, my\n", - "the hand of him that loves me best. Dr. Van Helsing, I have not\n", - "forgotten your mercy in poor Lucy's case to him who loved\"--she stopped\n", - "\"Again I swear!\" came the Professor's resonant voice. Mrs. Harker\n", - "\"And now one word of warning, a warning which you must never forget:\n", - "\"One more request;\" she became very solemn as she said this, \"it is not\n", - "me, if you will.\" We all acquiesced, but no one spoke; there was no need\n", - "\"I want you to read the Burial Service.\" She was interrupted by a deep\n", - "heart, and continued: \"You must read it over me some day. Whatever may\n", - "\"But oh, my dear one,\" he pleaded, \"death is afar off from you.\"\n", - "\"Nay,\" she said, holding up a warning hand. \"I am deeper in death at\n", - "\"Oh, my wife, must I read it?\" he said, before he began.\n", - "\"It would comfort me, my husband!\" was all she said; and he began to\n", - "\"How can I--how could any one--tell of that strange scene, its\n", - "had to pause, he read the simple and beautiful service from the Burial\n", - "of the Dead. I--I cannot go on--words--and--v-voice--f-fail m-me!\"\n", - "She was right in her instinct. Strange as it all was, bizarre as it may\n", - "comforted us much; and the silence, which showed Mrs. Harker's coming\n", - "_Jonathan Harker's Journal._\n", - "_15 October, Varna._--We left Charing Cross on the morning of the 12th,\n", - "got to Paris the same night, and took the places secured for us in the\n", - "Orient Express. We travelled night and day, arriving here at about five\n", - "o'clock. Lord Godalming went to the Consulate to see if any telegram had\n", - "Odessus.\" The journey may have had incidents; I was, however, too eager\n", - "to get on, to care for them. Until the _Czarina Catherine_ comes into\n", - "Thank God! Mina is well, and looks to be getting stronger; her colour is\n", - "wakeful and alert; and it has become a habit for Van Helsing to\n", - "\"Nothing; all is dark.\" And to the second:--\n", - "It is evident that the _Czarina Catherine_ is still at sea, hastening on\n", - "her way to Varna. Lord Godalming has just returned. He had four\n", - "that the _Czarina Catherine_ had not been reported to Lloyd's from\n", - "anywhere. He had arranged before leaving London that his agent should\n", - "We had dinner and went to bed early. To-morrow we are to see the\n", - "Vice-Consul, and to arrange, if we can, about getting on board the ship\n", - "as soon as she arrives. Van Helsing says that our chance will be to get\n", - "on the boat between sunrise and sunset. The Count, even if he takes the\n", - "for we can open the box and make sure of him, as we did of poor Lucy,\n", - "seamen. Thank God! this is the country where bribery can do anything,\n", - "warned, and we shall be safe. Judge Moneybag will settle this case, I\n", - "_16 October._--Mina's report still the same: lapping waves and rushing\n", - "when we hear of the _Czarina Catherine_ we shall be ready. As she must\n", - "pass the Dardanelles we are sure to have some report.\n", - "_17 October._--Everything is pretty well fixed now, I think, to welcome\n", - "the Count on his return from his tour. Godalming told the shippers that\n", - "risk. The owner gave him a paper telling the Captain to give him every\n", - "similar authorisation to his agent at Varna. We have seen the agent, who\n", - "was much impressed with Godalming's kindly manner to him, and we are all\n", - "Count is there, Van Helsing and Seward will cut off his head at once and\n", - "drive a stake through his heart. Morris and Godalming and I shall\n", - "have ready. The Professor says that if we can so treat the Count's body,\n", - "_Czarina Catherine_ is seen, we are to be informed by a special\n", - "_24 October._--A whole week of waiting. Daily telegrams to Godalming,\n", - "but only the same story: \"Not yet reported.\" Mina's morning and evening\n", - "_Telegram, October 24th._\n", - "_Rufus Smith, Lloyd's, London, to Lord Godalming, care of H. B. M.\n", - "Vice-Consul, Varna._\n", - "\"_Czarina Catherine_ reported this morning from Dardanelles.\"\n", - "_Dr. Seward's Diary._\n", - "_25 October._--How I miss my phonograph! To write diary with a pen is\n", - "irksome to me; but Van Helsing says I must. We were all wild with\n", - "excitement yesterday when Godalming got his telegram from Lloyd's. I\n", - "Harker, alone of our party, did not show any signs of emotion. After\n", - "getting back some of her colour, Van Helsing and I are not satisfied. We\n", - "would break poor Harker's heart--certainly his nerve--if he knew that we\n", - "had even a suspicion on the subject. Van Helsing examines, he tells me,\n", - "\"Euthanasia\" is an excellent and a comforting word! I am grateful to\n", - "It is only about 24 hours' sail from the Dardanelles to here, at the\n", - "rate the _Czarina Catherine_ has come from London. She should therefore\n", - "_25 October, Noon_.--No news yet of the ship's arrival. Mrs. Harker's\n", - "excitement, except Harker, who is calm; his hands are cold as ice, and\n", - "an hour ago I found him whetting the edge of the great Ghoorka knife\n", - "Count if the edge of that \"Kukri\" ever touches his throat, driven by\n", - "Van Helsing and I were a little alarmed about Mrs. Harker to-day. About\n", - "_Later._--Our opinion was justified, for when after a refreshing sleep\n", - "may be in the Black Sea, the Count is hurrying to his destination. To\n", - "_26 October._--Another day and no tidings of the _Czarina Catherine_.\n", - "She ought to be here by now. That she is still journeying _somewhere_ is\n", - "apparent, for Mrs. Harker's hypnotic report at sunrise was still the\n", - "_27 October, Noon._--Most strange; no news yet of the ship we wait for.\n", - "Mrs. Harker reported last night and this morning as usual: \"lapping\n", - "faint.\" The telegrams from London have been the same: \"no further\n", - "report.\" Van Helsing is terribly anxious, and told me just now that he\n", - "fears the Count is escaping us. He added significantly:--\n", - "\"I did not like that lethargy of Madam Mina's. Souls and memories can do\n", - "strange things during trance.\" I was about to ask him more, but Harker\n", - "_28 October._--Telegram. _Rufus Smith, London, to Lord Godalming,\n", - "care H. B. M. Vice Consul, Varna._\n", - "\"_Czarina Catherine_ reported entering Galatz at one o'clock\n", - "_Dr. Seward's Diary._\n", - "_28 October._--When the telegram came announcing the arrival in Galatz I\n", - "The delay of arrival at Varna made us individually satisfied that things\n", - "took it differently. Van Helsing raised his hand over his head for a\n", - "moment, as though in remonstrance with the Almighty; but he said not a\n", - "Godalming grew very pale, and sat breathing heavily. I was myself half\n", - "stunned and looked in wonder at one after another. Quincey Morris\n", - "old wandering days it meant \"action.\" Mrs. Harker grew ghastly white, so\n", - "the great Kukri knife and rested there. \"When does the next train start\n", - "for Galatz?\" said Van Helsing to us generally.\n", - "\"At 6:30 to-morrow morning!\" We all started, for the answer came from\n", - "Mrs. Harker.\n", - "\"How on earth do you know?\" said Art.\n", - "\"You forget--or perhaps you do not know, though Jonathan does and so\n", - "does Dr. Van Helsing--that I am the train fiend. At home in Exeter I\n", - "the time-tables now. I knew that if anything were to take us to Castle\n", - "Dracula we should go by Galatz, or at any rate through Bucharest, so I\n", - "\"Wonderful woman!\" murmured the Professor.\n", - "\"Can't we get a special?\" asked Lord Godalming. Van Helsing shook his\n", - "Now let us organize. You, friend Arthur, go to the train and get the\n", - "you, friend Jonathan, go to the agent of the ship and get from him\n", - "letters to the agent in Galatz, with authority to make search the ship\n", - "just as it was here. Morris Quincey, you see the Vice-Consul, and get\n", - "his aid with his fellow in Galatz and all he can do to make our way\n", - "smooth, so that no times be lost when over the Danube. John will stay\n", - "with Madam Mina and me, and we shall consult. For so if time be long you\n", - "with Madam to make report.\"\n", - "\"And I,\" said Mrs. Harker brightly, and more like her old self than she\n", - "The three younger men looked happier at the moment as they seemed to\n", - "realise the significance of her words; but Van Helsing and I, turning to\n", - "When the three men had gone out to their tasks Van Helsing asked Mrs.\n", - "Harker to look up the copy of the diaries and find him the part of\n", - "Harker's journal at the Castle. She went away to get it; when the door\n", - "\"We mean the same! speak out!\"\n", - "\"There is some change. It is a hope that makes me sick, for it may\n", - "\"Quite so. Do you know why I asked her to get the manuscript?\"\n", - "\"No!\" said I, \"unless it was to get an opportunity of seeing me alone.\"\n", - "\"You are in part right, friend John, but only in part. I want to tell\n", - "but I believe it is right. In the moment when Madam Mina said those\n", - "the trance of three days ago the Count sent her his spirit to read her\n", - "Now he make his most effort to escape us. At present he want her not.\n", - "\"He is sure with his so great knowledge that she will come at his call;\n", - "have been of man so long and that have not lost the grace of God, will\n", - "therefore small. Here comes Madam Mina; not a word to her of her trance!\n", - "She know it not; and it would overwhelm her and make despair just when\n", - "a special power which the Count give her, and which he may not take away\n", - "learn. Oh, John, my friend, we are in awful straits. I fear, as I never\n", - "feared before. We can only trust the good God. Silence! here she comes!\"\n", - "I thought that the Professor was going to break down and have hysterics,\n", - "just as he had when Lucy died, but with a great effort he controlled\n", - "himself and was at perfect nervous poise when Mrs. Harker tripped into\n", - "of typewriting to Van Helsing. He looked over them gravely, his face\n", - "\"Friend John, to you with so much of experience already--and you, too,\n", - "dear Madam Mina, that are young--here is a lesson: do not fear ever to\n", - "strong to use his little wings. Nay, like the \"Ugly Duck\" of my friend\n", - "Hans Andersen, he be no duck-thought at all, but a big swan-thought that\n", - "read here what Jonathan have written:--\n", - "\"That other of his race who, in a later age, again and again, brought\n", - "his forces over The Great River into Turkey Land; who, when he was\n", - "\"What does this tell us? Not much? no! The Count's child-thought see\n", - "man-thought see nothing, till just now. No! But there comes another word\n", - "leagues. Is it not so? Well, I shall explain. To begin, have you ever\n", - "study the philosophy of crime? 'Yes' and 'No.' You, John, yes; for it is\n", - "a study of insanity. You, no, Madam Mina; for crime touch you not--not\n", - "This criminal has not full man-brain. He is clever and cunning and\n", - "him the ground to start from to do more. '_Dos pou sto_,' said\n", - "Archimedes. 'Give me a fulcrum, and I shall move the world!' To do once,\n", - "just as he have done before! Oh, my dear, I see that your eyes are\n", - "Mrs. Harker began to clap her hands and her eyes sparkled. He went on:--\n", - "\"Now you shall speak. Tell us two dry men of science what you see with\n", - "those so bright eyes.\" He took her hand and held it whilst she spoke.\n", - "His finger and thumb closed on her pulse, as I thought instinctively and\n", - "\"The Count is a criminal and of criminal type. Nordau and Lombroso would\n", - "Thus, in a difficulty he has to seek resource in habit. His past is a\n", - "lips--tells that once before, when in what Mr. Morris would call a\n", - "So he came to London to invade a new land. He was beaten, and when all\n", - "the sea to his home; just as formerly he had fled back over the Danube\n", - "from Turkey Land.\"\n", - "\"Good, good! oh, you so clever lady!\" said Van Helsing,\n", - "\"Seventy-two only; and in all this excitement. I have hope.\" Turning to\n", - "\"But go on. Go on! there is more to tell if you will. Be not afraid;\n", - "John and I know. I do in any case, and shall tell you if you are right.\n", - "Speak, without fear!\"\n", - "\"Nay! fear not, you must be egotist, for it is of you that we think.\"\n", - "\"Then, as he is criminal he is selfish; and as his intellect is small\n", - "purpose. That purpose is remorseless. As he fled back over the Danube,\n", - "night. I felt it! Oh, I felt it! Thank God, for His great mercy! My soul\n", - "his ends.\" The Professor stood up:--\n", - "\"He has so used your mind; and by it he has left us here in Varna,\n", - "Galatz, where, doubtless, he had made preparation for escaping from us.\n", - "But his child-mind only saw so far; and it may be that, as ever is in\n", - "God's Providence, the very thing that the evil-doer most reckoned on for\n", - "in his own snare, as the great Psalmist says. For now that he think he\n", - "there can be no knowledge of him to you; there is where he fail! That\n", - "that God is with us through all this blackness, and these many dark\n", - "ourselves that we become like him. Friend John, this has been a great\n", - "And so I have written it whilst we wait their return, and Mrs. Harker\n", - "has written with her typewriter all since she brought the MS. to us.\n", - "CHAPTER XXVI\n", - "DR. SEWARD'S DIARY\n", - "_29 October._--This is written in the train from Varna to Galatz. Last\n", - "for our work when we get to Galatz. When the usual time came round Mrs.\n", - "Harker prepared herself for her hypnotic effort; and after a longer and\n", - "more serious effort on the part of Van Helsing than has been usually\n", - "this time the Professor had to ask her questions, and to ask them pretty\n", - "There is tramping of feet overhead, and ropes and chains are dragged\n", - "along. What is this? There is a gleam of light; I can feel the air\n", - "Here she stopped. She had risen, as if impulsively, from where she lay\n", - "weight. Van Helsing and I looked at each other with understanding.\n", - "Quincey raised his eyebrows slightly and looked at her intently, whilst\n", - "Harker's hand instinctively closed round the hilt of his Kukri. There\n", - "\"Would none of you like a cup of tea? You must all be so tired!\" We\n", - "tea; when she had gone Van Helsing said:--\n", - "\"You see, my friends. _He_ is close to land: he has left his\n", - "at Whitby. But if the day come before he get on shore, then, unless he\n", - "We may then arrive in time; for if he escape not at night we shall come\n", - "There was no more to be said, so we waited in patience until the dawn;\n", - "at which time we might learn more from Mrs. Harker.\n", - "Early this morning we listened, with breathless anxiety, for her\n", - "so short that we began to despair. Van Helsing seemed to throw his whole\n", - "\"All is dark. I hear lapping water, level with me, and some creaking as\n", - "of wood on wood.\" She paused, and the red sun shot up. We must wait till\n", - "And so it is that we are travelling towards Galatz in an agony of\n", - "but already, at Bucharest, we are three hours late, so we cannot\n", - "hypnotic messages from Mrs. Harker; either or both may possibly throw\n", - "_Later._--Sunset has come and gone. Fortunately it came at a time when\n", - "Mrs. Harker yielded to the hypnotic influence even less readily than\n", - "this morning. I am in fear that her power of reading the Count's\n", - "on it may ultimately mislead us. If I thought that the Count's power\n", - "\"Something is going out; I can feel it pass me like a cold wind. I can\n", - "fierce-falling water, and the howling of wolves.\" She stopped and a\n", - "in answer to the Professor's imperative questioning. When she woke from\n", - "_30 October, 7 a. m._--We are near Galatz now, and I may not have time\n", - "Knowing of the increasing difficulty of procuring the hypnotic trance,\n", - "Van Helsing began his passes earlier than usual. They produced no\n", - "greater difficulty, only a minute before the sun rose. The Professor\n", - "\"All is dark. I hear water swirling by, level with my ears, and the\n", - "queer one like----\" She stopped and grew white, and whiter still.\n", - "\"Go on; go on! Speak, I command you!\" said Van Helsing in an agonised\n", - "was reddening even Mrs. Harker's pale face. She opened her eyes, and we\n", - "\"Oh, Professor, why ask me to do what you know I can't? I don't remember\n", - "anything.\" Then, seeing the look of amazement on our faces, she said,\n", - "\"What have I said? What have I done? I know nothing, only that I was\n", - "It seemed so funny to hear you order me about, as if I were a bad\n", - "\"Oh, Madam Mina,\" he said, sadly, \"it is proof, if proof be needed, of\n", - "The whistles are sounding; we are nearing Galatz. We are on fire with\n", - "_Mina Harker's Journal._\n", - "_30 October._--Mr. Morris took me to the hotel where our rooms had been\n", - "much as they had been at Varna, except that Lord Godalming went to the\n", - "Vice-Consul, as his rank might serve as an immediate guarantee of some\n", - "of the _Czarina Catherine_.\n", - "_Later._--Lord Godalming has returned. The Consul is away, and the\n", - "Vice-Consul sick; so the routine work has been attended to by a clerk.\n", - "He was very obliging, and offered to do anything in his power.\n", - "_Jonathan Harker's Journal._\n", - "_30 October._--At nine o'clock Dr. Van Helsing, Dr. Seward, and I called\n", - "on Messrs. Mackenzie & Steinkoff, the agents of the London firm of\n", - "Hapgood. They had received a wire from London, in answer to Lord\n", - "Godalming's telegraphed request, asking us to show them any civility in\n", - "on board the _Czarina Catherine_, which lay at anchor out in the river\n", - "harbour. There we saw the Captain, Donelson by name, who told us of his\n", - "\"Man!\" he said, \"but it made us afeard, for we expeckit that we should\n", - "average. It's no canny to run frae London to the Black Sea wi' a wind\n", - "ahint ye, as though the Deil himself were blawin' on yer sail for his\n", - "we see. We ran by Gibraltar wi'oot bein' able to signal; an' till we\n", - "came to the Dardanelles and had to wait to get our permit to pass, we\n", - "Deil was minded to get us into the Black Sea quick, he was like to do it\n", - "miscredit wi' the owners, or no hurt to our traffic; an' the Old Mon who\n", - "hinderin' him.\" This mixture of simplicity and cunning, of superstition\n", - "and commercial reasoning, aroused Van Helsing, who said:--\n", - "\"Mine friend, that Devil is more clever than he is thought by some; and\n", - "he know when he meet his match!\" The skipper was not displeased with the\n", - "\"When we got past the Bosphorus the men began to grumble; some o' them,\n", - "the Roumanians, came and asked me to heave overboard a big box which had\n", - "frae London. I had seen them speer at the fellow, and put out their twa\n", - "five days I joost let the wind carry us; for if the Deil wanted to get\n", - "through the fog, we found ourselves just in the river opposite Galatz.\n", - "The Roumanians were wild, and wanted me right or wrong to take out the\n", - "river Danube. They had, mind ye, taken the box on the deck ready to\n", - "fling in, and as it was marked Galatz _via_ Varna, I thocht I'd let it\n", - "aboard wi' an order, written to him from England, to receive a box\n", - "marked for one Count Dracula. Sure eneuch the matter was one ready to\n", - "dam' thing, for I was beginnin' masel' to feel uneasy at it. If the Deil\n", - "\"What was the name of the man who took it?\" asked Dr. Van Helsing with\n", - "cabin, produced a receipt signed \"Immanuel Hildesheim.\" Burgen-strasse\n", - "16 was the address. We found out that this was all the Captain knew; so\n", - "We found Hildesheim in his office, a Hebrew of rather the Adelphi\n", - "Theatre type, with a nose like a sheep, and a fez. His arguments were\n", - "important. He had received a letter from Mr. de Ville of London, telling\n", - "which would arrive at Galatz in the _Czarina Catherine_. This he was to\n", - "give in charge to a certain Petrof Skinsky, who dealt with the Slovaks\n", - "an English bank note, which had been duly cashed for gold at the Danube\n", - "International Bank. When Skinsky had come to him, he had taken him to\n", - "We then sought for Skinsky, but were unable to find him. One of his\n", - "together with the rent due, in English money. This had been between ten\n", - "Whilst we were talking one came running and breathlessly gasped out that\n", - "the body of Skinsky had been found inside the wall of the churchyard of\n", - "St. Peter, and that the throat had been torn open as if by some wild\n", - "women crying out \"This is the work of a Slovak!\" We hurried away lest we\n", - "As we came home we could arrive at no definite conclusion. We were all\n", - "to the hotel to Mina.\n", - "When we met together, the first thing was to consult as to taking Mina\n", - "_Mina Harker's Journal._\n", - "_30 October, evening._--They were so tired and worn out and dispirited\n", - "\"Traveller's\" typewriter, and to Mr. Morris for getting this one for\n", - "It is all done; poor dear, dear Jonathan, what he must have suffered,\n", - "I have asked Dr. Van Helsing, and he has got me all the papers that I\n", - "follow the Professor's example, and think without prejudice on the facts\n", - "I do believe that under God's providence I have made a discovery. I\n", - "_Mina Harker's Memorandum._\n", - "(Entered in her Journal.)\n", - "_Ground of inquiry._--Count Dracula's problem is to get back to his own\n", - "(_a_) He must be _brought back_ by some one. This is evident; for had he\n", - "(_b_) _How is he to be taken?_--Here a process of exclusions may help\n", - "1. _By Road._--There are endless difficulties, especially in leaving the\n", - "(_x_) There are people; and people are curious, and investigate. A hint,\n", - "(_y_) There are, or there may be, customs and octroi officers to pass.\n", - "(_z_) His pursuers might follow. This is his highest fear; and in order\n", - "2. _By Rail._--There is no one in charge of the box. It would have to\n", - "left in a strange place with no refuge that he could fly to? This is not\n", - "3. _By Water._--Here is the safest way, in one respect, but with most\n", - "We know from the record that he was on the water; so what we have to do\n", - "The first thing is to realise exactly what he has done as yet; we may,\n", - "_Firstly._--We must differentiate between what he did in London as part\n", - "_Secondly_ we must see, as well as we can surmise it from the facts we\n", - "As to the first, he evidently intended to arrive at Galatz, and sent\n", - "invoice to Varna to deceive us lest we should ascertain his means of\n", - "exit from England; his immediate and sole purpose then was to escape.\n", - "The proof of this, is the letter of instructions sent to Immanuel\n", - "Hildesheim to clear and take away the box _before sunrise_. There is\n", - "also the instruction to Petrof Skinsky. These we must only guess at; but\n", - "there must have been some letter or message, since Skinsky came to\n", - "Hildesheim.\n", - "That, so far, his plans were successful we know. The _Czarina Catherine_\n", - "made a phenomenally quick journey--so much so that Captain Donelson's\n", - "played the Count's game for him, and he ran with his favouring wind\n", - "through fogs and all till he brought up blindfold at Galatz. That the\n", - "Count's arrangements were well made, has been proved. Hildesheim cleared\n", - "the box, took it off, and gave it to Skinsky. Skinsky took it--and here\n", - "Now we come to what the Count must have done after his arrival--_on\n", - "land_, at Galatz.\n", - "The box was given to Skinsky before sunrise. At sunrise the Count could\n", - "appear in his own form. Here, we ask why Skinsky was chosen at all to\n", - "aid in the work? In my husband's diary, Skinsky is mentioned as dealing\n", - "with the Slovaks who trade down the river to the port; and the man's\n", - "remark, that the murder was the work of a Slovak, showed the general\n", - "feeling against his class. The Count wanted isolation.\n", - "My surmise is, this: that in London the Count decided to get back to his\n", - "the castle by Szgany, and probably they delivered their cargo to Slovaks\n", - "who took the boxes to Varna, for there they were shipped for London.\n", - "Thus the Count had knowledge of the persons who could arrange this\n", - "came out from his box, met Skinsky and instructed him what to do as to\n", - "Slovaks to have ascended is either the Pruth or the Sereth. I read in\n", - "level with my ears and the creaking of wood. The Count in his box, then,\n", - "Of course it may not be either the Sereth or the Pruth, but we may\n", - "possibly investigate further. Now of these two, the Pruth is the more\n", - "easily navigated, but the Sereth is, at Fundu, joined by the Bistritza\n", - "which runs up round the Borgo Pass. The loop it makes is manifestly as\n", - "close to Dracula's castle as can be got by water.\n", - "_Mina Harker's Journal--continued._\n", - "When I had done reading, Jonathan took me in his arms and kissed me. The\n", - "others kept shaking me by both hands, and Dr. Van Helsing said:--\n", - "\"Our dear Madam Mina is once more our teacher. Her eyes have been where\n", - "to our Council of War; for, here and now, we must plan what each and all\n", - "\"I shall get a steam launch and follow him,\" said Lord Godalming.\n", - "\"And I, horses to follow on the bank lest by chance he land,\" said Mr.\n", - "Morris.\n", - "\"Good!\" said the Professor, \"both good. But neither must go alone. There\n", - "must be force to overcome force if need be; the Slovak is strong and\n", - "rough, and he carries rude arms.\" All the men smiled, for amongst them\n", - "they carried a small arsenal. Said Mr. Morris:--\n", - "\"I have brought some Winchesters; they are pretty handy in a crowd, and\n", - "there may be wolves. The Count, if you remember, took some other\n", - "precautions; he made some requisitions on others that Mrs. Harker could\n", - "not quite hear or understand. We must be ready at all points.\" Dr.\n", - "Seward said:--\n", - "\"I think I had better go with Quincey. We have been accustomed to hunt\n", - "along. You must not be alone, Art. It may be necessary to fight the\n", - "Slovaks, and a chance thrust--for I don't suppose these fellows carry\n", - "shall not rest until the Count's head and body have been separated, and\n", - "we are sure that he cannot re-incarnate.\" He looked at Jonathan as he\n", - "spoke, and Jonathan looked at me. I could see that the poor dear was\n", - "the ... the ... Vampire. (Why did I hesitate to write the word?) He was\n", - "silent awhile, and during his silence Dr. Van Helsing spoke:--\n", - "\"Friend Jonathan, this is to you for twice reasons. First, because you\n", - "wrought such woe to you and yours. Be not afraid for Madam Mina; she\n", - "me say that what I would is this: while you, my Lord Godalming and\n", - "friend Jonathan go in your so swift little steamboat up the river, and\n", - "whilst John and Quincey guard the bank where perchance he might be\n", - "landed, I will take Madam Mina right into the heart of the enemy's\n", - "of his coffin-box lest his Slovak carriers should in fear leave him to\n", - "perish--we shall go in the track where Jonathan went,--from Bistritz\n", - "over the Borgo, and find our way to the Castle of Dracula. Here, Madam\n", - "Mina's hypnotic power will surely help, and we shall find our way--all\n", - "made sanctify, so that that nest of vipers be obliterated.\" Here\n", - "Jonathan interrupted him hotly:--\n", - "\"Do you mean to say, Professor Van Helsing, that you would bring Mina,\n", - "into the jaws of his death-trap? Not for the world! Not for Heaven or\n", - "Hell!\" He became almost speechless for a minute, and then went on:--\n", - "\"Do you know what the place is? Have you seen that awful den of hellish\n", - "Have you felt the Vampire's lips upon your throat?\" Here he turned to\n", - "\"Oh, my God, what have we done to have this terror upon us!\" and he sank\n", - "down on the sofa in a collapse of misery. The Professor's voice, as he\n", - "\"Oh, my friend, it is because I would save Madam Mina from that awful\n", - "see. We men here, all save Jonathan, have seen with their own eyes what\n", - "terrible straits. If the Count escape us this time--and he is strong and\n", - "company, and would be as those others that you, Jonathan, saw. You have\n", - "clutched the moving bag that the Count threw to them. You shudder; and\n", - "possibly my life? If it were that any one went into that place to stay,\n", - "\"Do as you will,\" said Jonathan, with a sob that shook him all over, \"we\n", - "are in the hands of God!\"\n", - "_Later._--Oh, it did me good to see the way that these brave men worked.\n", - "How can women help loving men when they are so earnest, and so true, and\n", - "so brave! And, too, it made me think of the wonderful power of money!\n", - "What can it not do when it is properly applied; and what might it do\n", - "when basely used. I felt so thankful that Lord Godalming is rich, and\n", - "that both he and Mr. Morris, who also has plenty of money, are willing\n", - "of us was to do; and now Lord Godalming and Jonathan have a lovely steam\n", - "and Mr. Morris have half a dozen good horses, well appointed. We have\n", - "Van Helsing and I are to leave by the 11:40 train to-night for Veresti,\n", - "where we are to get a carriage to drive to the Borgo Pass. We are\n", - "in the matter. The Professor knows something of a great many languages,\n", - "large-bore revolver; Jonathan would not be happy unless I was armed like\n", - "forehead forbids that. Dear Dr. Van Helsing comforts me by telling me\n", - "_Later._--It took all my courage to say good-bye to my darling. We may\n", - "never meet again. Courage, Mina! the Professor is looking at you keenly;\n", - "God will let them fall in gladness.\n", - "_Jonathan Harker's Journal._\n", - "_October 30. Night._--I am writing this in the light from the furnace\n", - "door of the steam launch: Lord Godalming is firing up. He is an\n", - "own on the Thames, and another on the Norfolk Broads. Regarding our\n", - "plans, we finally decided that Mina's guess was correct, and that if any\n", - "waterway was chosen for the Count's escape back to his Castle, the\n", - "Sereth and then the Bistritza at its junction, would be the one. We took\n", - "Carpathians. We have no fear in running at good speed up the river at\n", - "make steaming, even in the dark, easy enough. Lord Godalming tells me to\n", - "comfort is that we are in the hands of God. Only for that faith it would\n", - "Morris and Dr. Seward were off on their long ride before we started;\n", - "can be easily adapted for Mina, if required.\n", - "It is a wild adventure we are on. Here, as we are rushing along through\n", - "_31 October._--Still hurrying along. The day has come, and Godalming is\n", - "_1 November, evening._--No news all day; we have found nothing of the\n", - "kind we seek. We have now passed into the Bistritza; and if we are wrong\n", - "and little. Early this morning, one crew took us for a Government boat,\n", - "so at Fundu, where the Bistritza runs into the Sereth, we got a\n", - "Roumanian flag which we now fly conspicuously. With every boat which we\n", - "to ask or do. Some of the Slovaks tell us that a big boat passed them,\n", - "was before they came to Fundu, so they could not tell us whether the\n", - "boat turned into the Bistritza or continued on up the Sereth. At Fundu\n", - "dear Mina and me.\n", - "_2 November, morning._--It is broad daylight. That good fellow would not\n", - "me. I wonder where Mina is now, and Van Helsing. They should have got to\n", - "Veresti about noon on Wednesday. It would take them some time to get the\n", - "would be about now at the Borgo Pass. God guide and help them! I am\n", - "Dr. Seward and Mr. Morris are getting on. There seem to be endless\n", - "met much obstruction. I hope that before we get to Strasba we may see\n", - "them; for if by that time we have not overtaken the Count, it may be\n", - "_Dr. Seward's Diary._\n", - "_2 November._--Three days on the road. No news, and no time to write it\n", - "Those adventurous days of ours are turning up useful. We must push on;\n", - "_3 November._--We heard at Fundu that the launch had gone up the\n", - "Bistritza. I wish it wasn't so cold. There are signs of snow coming; and\n", - "go on, Russian fashion.\n", - "_4 November._--To-day we heard of the launch having been detained by an\n", - "accident when trying to force a way up the rapids. The Slovak boats get\n", - "_Mina Harker's Journal._\n", - "_31 October._--Arrived at Veresti at noon. The Professor tells me that\n", - "could say was: \"dark and quiet.\" He is off now buying a carriage and\n", - "see it all. If Jonathan and I were driving through it alone what a\n", - "people! But, alas!--\n", - "_Later._--Dr. Van Helsing has returned. He has got the carriage and\n", - "for a company of soldiers. The Professor encourages her, and whispers to\n", - "We shall soon be off. I am afraid to think what may happen to us. We are\n", - "truly in the hands of God. He alone knows what may be, and I pray Him,\n", - "with all the strength of my sad and humble soul, that He will watch over\n", - "my beloved husband; that whatever may happen, Jonathan may know that I\n", - "CHAPTER XXVII\n", - "MINA HARKER'S JOURNAL\n", - "_1 November._--All day long we have travelled, and at a good speed. The\n", - "think that the journey will be an easy one. Dr. Van Helsing is laconic;\n", - "he tells the farmers that he is hurrying to Bistritz, and pays them well\n", - "Professor seems tireless; all day he would not take any rest, though he\n", - "Jonathan, but somehow I have now no fear for him, or for myself. I write\n", - "Van Helsing is sleeping, Poor dear, he looks very tired and old and\n", - "_2 November, morning._--I was successful, and we took turns driving all\n", - "us comfortable. At dawn Van Helsing hypnotised me; he says I answered\n", - "danger--more than need be; but we are in God's hands.\n", - "_2 November, night._--All day long driving. The country gets wilder as\n", - "we go, and the great spurs of the Carpathians, which at Veresti seemed\n", - "Van Helsing says that by morning we shall reach the Borgo Pass. The\n", - "houses are very few here now, and the Professor says that the last horse\n", - "drive. We shall get to the Pass in daylight; we do not want to arrive\n", - "will to-morrow bring to us? We go to seek the place where my poor\n", - "that He will deign to watch over my husband and those dear to us both,\n", - "and who are in such deadly peril. As for me, I am not worthy in His\n", - "sight. Alas! I am unclean to His eyes, and shall be until He may deign\n", - "to let me stand forth in His sight as one of those who have not incurred\n", - "His wrath.\n", - "_Memorandum by Abraham Van Helsing._\n", - "_4 November._--This to my old and true friend John Seward, M.D., of\n", - "Purfleet, London, in case I may not see him. It may explain. It is\n", - "alive--Madam Mina aiding me. It is cold, cold; so cold that the grey\n", - "affected Madam Mina; she has been so heavy of head all day that she was\n", - "not like herself. She sleeps, and sleeps, and sleeps! She who is usual\n", - "However, to-night she is more _vif_. Her long sleep all day have refresh\n", - "God's will be done--whatever it may be, and whithersoever it may lead!\n", - "Now to the historical, for as Madam Mina write not in her stenography, I\n", - "We got to the Borgo Pass just after sunrise yesterday morning. When I\n", - "couch with furs, and Madam Mina, lying down, yield herself as usual, but\n", - "before, came the answer: \"darkness and the swirling of water.\" Then she\n", - "woke, bright and radiant and we go on our way and soon reach the Pass.\n", - "At this time and place, she become all on fire with zeal; some new\n", - "\"This is the way.\"\n", - "\"How know you it?\" I ask.\n", - "\"Of course I know it,\" she answer, and with a pause, add: \"Have not my\n", - "Jonathan travelled it and wrote of his travel?\"\n", - "At first I think somewhat strange, but soon I see that there be only one\n", - "road from the Bukovina to Bistritz, which is more wide and hard, and\n", - "So we came down this road; when we meet other ways--not always were we\n", - "they go on so patient. By-and-by we find all the things which Jonathan\n", - "hours and hours. At the first, I tell Madam Mina to sleep; she try, and\n", - "look down and find Madam Mina still sleep. It is now not far off sunset\n", - "For we are going up, and up; and all is oh! so wild and rocky, as though\n", - "Then I arouse Madam Mina. This time she wake with not much trouble, and\n", - "Madam Mina laugh, and I turn and look at her. She is now quite awake,\n", - "and look so well as I never saw her since that night at Carfax when we\n", - "first enter the Count's house. I am amaze, and not at ease then; but she\n", - "_5 November, morning._--Let me be accurate in everything, for though you\n", - "that I, Van Helsing, am mad--that the many horrors and the so long\n", - "All yesterday we travel, ever getting closer to the mountains, and\n", - "frowning precipices and much falling water, and Nature seem to have held\n", - "sometime her carnival. Madam Mina still sleep and sleep; and though I\n", - "she is with that Vampire baptism. \"Well,\" said I to myself, \"if it be\n", - "night.\" As we travel on the rough road, for a road of an ancient and\n", - "with a sense of guilt and of time passed, and found Madam Mina still\n", - "steep-rising hill, on summit of which was such a castle as Jonathan tell\n", - "I woke Madam Mina, and again tried to hypnotise her; but alas!\n", - "Madam Mina, now awake and more charming than ever, sit comfortable amid\n", - "where Madam Mina sat; and over the ring I passed some of the wafer, and\n", - "\"Will you not come over to the fire?\" for I wished to make a test of\n", - "\"Why not go on?\" I asked. She shook her head, and, coming back, sat\n", - "Presently the horses began to scream, and tore at their tethers till I\n", - "all the terrible anxiety. It was as though my memories of all Jonathan's\n", - "feared for my dear Madam Mina when these weird figures drew near and\n", - "\"No! No! Do not go without. Here you are safe!\" I turned to her, and\n", - "\"But you? It is for you that I fear!\" whereat she laughed--a laugh, low\n", - "\"Fear for _me_! Why fear for me? None safer in all the world from them\n", - "Then, alas! I knew. Did I not, I would soon have learned, for the\n", - "the Holy circle. Then they began to materialise till--if God have not\n", - "in actual flesh the same three women that Jonathan saw in the room, when\n", - "lips. They smiled ever at poor dear Madam Mina; and as their laugh came\n", - "her, and said in those so sweet tingling tones that Jonathan said were\n", - "\"Come, sister. Come to us. Come! Come!\" In fear I turned to my poor\n", - "Madam Mina, and my heart with gladness leapt like flame; for oh! the\n", - "Wafer, advanced on them towards the fire. They drew back before me, and\n", - "approach, me, whilst so armed, nor Madam Mina whilst she remained within\n", - "And so we remained till the red of the dawn to fall through the\n", - "At the first coming of the dawn the horrid figures melted in the\n", - "Instinctively, with the dawn coming, I turned to Madam Mina, intending\n", - "work. Madam Mina still sleeps; and, God be thanked! she is calm in her\n", - "_Jonathan Harker's Journal._\n", - "_4 November, evening._--The accident to the launch has been a terrible\n", - "and by now my dear Mina would have been free. I fear to think of her,\n", - "follow on the track. I note this whilst Godalming is getting ready. We\n", - "have our arms. The Szgany must look out if they mean fight. Oh, if only\n", - "Morris and Seward were with us. We must only hope! If I write no more\n", - "Good-bye, Mina! God bless and keep you.\n", - "_Dr. Seward's Diary._\n", - "_5 November._--With the dawn we saw the body of Szgany before us dashing\n", - "_Dr. Van Helsing's Memorandum._\n", - "_5 November, afternoon._--I am at least sane. Thank God for that mercy\n", - "Madam Mina sleeping within the Holy circle, I took my way to the castle.\n", - "The blacksmith hammer which I took in the carriage from Veresti was\n", - "Then I bethought me of my dear Madam Mina, and I was in terrible plight.\n", - "The dilemma had me between his horns.\n", - "Her, I had not dare to take into this place, but left safe from the\n", - "Vampire in that Holy circle; and yet even there would be the wolf! I\n", - "submit, if it were God's will. At any rate it was only death and\n", - "the grave of the Vampire! So I make my choice to go on with my work.\n", - "Vampire sleep, so full of life and voluptuous beauty that I shudder as\n", - "wanton Un-Dead have hypnotise him; and he remain on and on, till sunset\n", - "come, and the Vampire sleep be over. Then the beautiful eyes of the fair\n", - "kiss--and man is weak. And there remain one more victim in the Vampire\n", - "fold; one more to swell the grim and grisly ranks of the Un-Dead!...\n", - "There is some fascination, surely, when I am moved by the mere presence\n", - "as the lairs of the Count have had. Yes, I was moved--I, Van Helsing,\n", - "of a clarion. For it was the voice of my dear Madam Mina that I heard.\n", - "Then I braced myself again to my horrid task, and found by wrenching\n", - "which, like Jonathan I had seen to gather herself out of the atoms of\n", - "with new emotion. But God be thanked, that soul-wail of my dear Madam\n", - "Mina had not died out of my ears; and, before the spell could be wrought\n", - "there had been only three of these Un-Dead phantoms around us in the\n", - "night, I took it that there were no more of active Un-Dead existent.\n", - "There was one great tomb more lordly than all the rest; huge it was, and\n", - "DRACULA.\n", - "This then was the Un-Dead home of the King-Vampire, to whom so many more\n", - "Before I began to restore these women to their dead selves through my\n", - "awful work, I laid in Dracula's tomb some of the Wafer, and so banished\n", - "him from it, Un-Dead, for ever.\n", - "Then began my terrible task, and I dreaded it. Had it been but one, it\n", - "had been easy, comparative. But three! To begin twice more after I had\n", - "Miss Lucy, what would it not be with these strange ones who had survived\n", - "Oh, my friend John, but it was butcher work; had I not been nerved by\n", - "till all was over, God be thanked, my nerve did stand. Had I not seen\n", - "left my work undone. But it is over! And the poor souls, I can pity them\n", - "for a short moment ere fading. For, friend John, hardly had my knife\n", - "Before I left the castle I so fixed its entrances that never more can\n", - "the Count enter there Un-Dead.\n", - "When I stepped into the circle where Madam Mina slept, she woke from her\n", - "\"Come!\" she said, \"come away from this awful place! Let us go to meet my\n", - "husband who is, I know, coming towards us.\" She was looking thin and\n", - "And so with trust and hope, and yet full of fear, we go eastward to meet\n", - "our friends--and _him_--whom Madam Mina tell me that she _know_ are\n", - "_Mina Harker's Journal._\n", - "_6 November._--It was late in the afternoon when the Professor and I\n", - "took our way towards the east whence I knew Jonathan was coming. We did\n", - "clear line of Dracula's castle cut the sky; for we were so deep under\n", - "Carpathian mountains was far below it. We saw it in all its grandeur,\n", - "full of terror. I knew from the way Dr. Van Helsing was searching about\n", - "In a little while the Professor signalled to me, so I got up and joined\n", - "hand and drew me in: \"See!\" he said, \"here you will be in shelter; and\n", - "if the wolves do come I can meet them one by one.\" He brought in our\n", - "\"Look! Madam Mina, look! look!\" I sprang up and stood beside him on the\n", - "On the cart was a great square chest. My heart leaped as I saw it, for I\n", - "well I knew that at sunset the Thing, which was till then imprisoned\n", - "pursuit. In fear I turned to the Professor; to my consternation,\n", - "\"At least you shall be safe here from _him_!\" He took the glasses from\n", - "\"See,\" he said, \"they come quickly; they are flogging the horses, and\n", - "galloping as hard as they can.\" He paused and went on in a hollow\n", - "\"They are racing for the sunset. We may be too late. God's will be\n", - "done!\" Down came another blinding rush of driving snow, and the whole\n", - "\"Look! Look! Look! See, two horsemen follow fast, coming up from the\n", - "south. It must be Quincey and John. Take the glass. Look before the snow\n", - "blots it all out!\" I took it and looked. The two men might be Dr. Seward\n", - "and Mr. Morris. I knew at all events that neither of them was Jonathan.\n", - "At the same time I _knew_ that Jonathan was not far off; looking around\n", - "break-neck speed. One of them I knew was Jonathan, and the other I took,\n", - "of course, to be Lord Godalming. They, too, were pursuing the party with\n", - "the cart. When I told the Professor he shouted in glee like a schoolboy,\n", - "laid his Winchester rifle ready for use against the boulder at the\n", - "opening of our shelter. \"They are all converging,\" he said. \"When the\n", - "It was strange to see the snow falling in such heavy flakes close to us,\n", - "Every instant seemed an age whilst we waited. The wind came now in\n", - "Closer and closer they drew. The Professor and I crouched down behind\n", - "All at once two voices shouted out to: \"Halt!\" One was my Jonathan's,\n", - "raised in a high key of passion; the other Mr. Morris' strong resolute\n", - "spoken. Instinctively they reined in, and at the instant Lord Godalming\n", - "and Jonathan dashed up at one side and Dr. Seward and Mr. Morris on the\n", - "forward; but the four men raised their Winchester rifles, and in an\n", - "unmistakable way commanded them to stop. At the same moment Dr. Van\n", - "Helsing and I rose behind the rock and pointed our weapons at them.\n", - "Seeing that they were surrounded the men tightened their reins and drew\n", - "The leader, with a quick movement of his rein, threw his horse out in\n", - "For answer, all four men of our party threw themselves from their horses\n", - "Jonathan in such danger, but that the ardour of battle must have been\n", - "In the midst of this I could see that Jonathan on one side of the ring\n", - "of men, and Quincey on the other, were forcing a way to the cart; it was\n", - "box, and flung it over the wheel to the ground. In the meantime, Mr.\n", - "Morris had had to use force to pass through his side of the ring of\n", - "Szgany. All the time I had been breathlessly watching Jonathan I had,\n", - "beside Jonathan, who had by now jumped from the cart, I could see that\n", - "as Jonathan, with desperate energy, attacked one end of the chest,\n", - "attempting to prize off the lid with his great Kukri knife, he attacked\n", - "By this time the gypsies, seeing themselves covered by the Winchesters,\n", - "and at the mercy of Lord Godalming and Dr. Seward, had given in and made\n", - "shadows of the whole group fell long upon the snow. I saw the Count\n", - "As I looked, the eyes saw the sinking sun, and the look of hate in them\n", - "But, on the instant, came the sweep and flash of Jonathan's great knife.\n", - "moment Mr. Morris's bowie knife plunged into the heart.\n", - "It was like a miracle; but before our very eyes, and almost in the\n", - "The Castle of Dracula now stood out against the red sky, and every stone\n", - "The gypsies, taking us as in some way the cause of the extraordinary\n", - "Mr. Morris, who had sunk to the ground, leaned on his elbow, holding his\n", - "flew to him, for the Holy circle did not now keep me back; so did the\n", - "\"I am only too happy to have been of any service! Oh, God!\" he cried\n", - "suddenly, struggling up to a sitting posture and pointing to me, \"It was\n", - "worth for this to die! Look! look!\"\n", - "The sun was now right down upon the mountain top, and the red gleams\n", - "the men sank on their knees and a deep and earnest \"Amen\" broke from all\n", - "\"Now God be thanked that all has not been in vain! See! the snow is not\n", - "more stainless than her forehead! The curse has passed away!\"\n", - "And, to our bitter grief, with a smile and in silence, he died, a\n", - "NOTE\n", - "Seven years ago we all went through the flames; and the happiness of\n", - "is an added joy to Mina and to me that our boy's birthday is the same\n", - "day as that on which Quincey Morris died. His mother holds, I know, the\n", - "we call him Quincey.\n", - "In the summer of this year we made a journey to Transylvania, and went\n", - "When we got home we were talking of the old time--which we could all\n", - "look back on without despair, for Godalming and Seward are both happily\n", - "note-books of Mina and Seward and myself, and Van Helsing's memorandum.\n", - "We could hardly ask any one, even did we wish to, to accept these as\n", - "proofs of so wild a story. Van Helsing summed it all up as he said, with\n", - "\"We want no proofs; we ask none to believe us! This boy will some day\n", - "JONATHAN HARKER.\n", - "THE END\n", - "_There's More to Follow!_\n", - "More stories of the sort you like; more, probably, by the author of\n", - "reputation, in the Authors' Alphabetical List which you will find\n", - "It is a _selected_ list; every book in it has achieved a certain\n", - "The Grosset & Dunlap list is not only the greatest Index of Good\n", - "Fiction available, it represents in addition a generally accepted\n", - "Standard of Value. It will pay you to\n", - "_Look on the Other Side of the Wrapper!_\n", - "_In case the wrapper is lost write to the publishers for a complete\n", - "DETECTIVE STORIES BY J. S. FLETCHER\n", - "May be had wherever books are sold. Ask for Grosset & Dunlap's list\n", - "THE SECRET OF THE BARBICAN\n", - "THE ANNEXATION SOCIETY\n", - "THE WOLVES AND THE LAMB\n", - "GREEN INK\n", - "THE KING versus WARGRAVE\n", - "THE LOST MR. LINTHWAITE\n", - "THE MILL OF MANY WINDOWS\n", - "THE HEAVEN-KISSED HILL\n", - "THE MIDDLE TEMPLE MURDER\n", - "RAVENSDENE COURT\n", - "THE RAYNER-SLADE AMALGAMATION\n", - "THE SAFETY PIN\n", - "THE SECRET WAY\n", - "THE VALLEY OF HEADSTRONG MEN\n", - "_Ask for Complete free list of G. & D. Popular Copyrighted Fiction_\n", - "GROSSET & DUNLAP, _Publishers_, NEW YORK\n", - "Typographical errors corrected by the etext transcriber:\n", - "\"The Westminister Gazette,\" 25 September.=> \"The Westminster Gazette,\"\n", - "25 September. {pg 165}\n", - "It have told him=> She must have told him {pg 169}\n", - "Goldaming=> Godalming {pg 226}\n", - "They lay in a sort of or-orderly=> They lay in a sort of orderly {pg\n", - "Translyvania=> Transylvania {pg 294}\n", - "this mrrning from Dardanelles=> this morning from Dardanelles {pg 313}\n" - ] - } - ], - "source": [ - "# Here's the pattern I used (which uses some features we haven't seen)\n", - "\n", - "names = r'(? They lay in a sort of orderly {pg\r\n", - "279}\r\n", - "\r\n", - "Translyvania=> Transylvania {pg 294}\r\n", - "\r\n", - "this mrrning from Dardanelles=> this morning from Dardanelles {pg 313}\r\n", - "\r\n", - "\r\n", - "\r\n", - "\r\n" - ] - } - ], - "source": [ - "!tail pg345_cleaned.txt" - ] - }, - { - "cell_type": "markdown", - "id": "6874023a", - "metadata": {}, - "source": [ - "When you are working with large files, debugging can be difficult because there might be too much output to check by hand.\n", - "A good debugging strategy is to start with just part of the file, get the program working, and then run it with the whole file.\n", - "\n", - "To make a small file that contains part of a larger file, we can use `!head` again with the redirect operator, `>`, which indicates that the results should be written to a file rather than displayed." - ] - }, - { - "cell_type": "code", - "execution_count": 67, - "id": "d4c92501", - "metadata": {}, - "outputs": [], - "source": [ - "!head pg345_cleaned.txt > pg345_cleaned_10_lines.txt" - ] - }, - { - "cell_type": "markdown", - "id": "3fc851f8", - "metadata": {}, - "source": [ - "By default, `!head` reads the first 10 lines, but it takes an optional argument that indicates the number of lines to read." - ] - }, - { - "cell_type": "code", - "execution_count": 68, - "id": "8f6606dd", - "metadata": {}, - "outputs": [], - "source": [ - "!head -100 pg345_cleaned.txt > pg345_cleaned_100_lines.txt" - ] - }, - { - "cell_type": "markdown", - "id": "24871c78", - "metadata": {}, - "source": [ - "This shell command reads the first 100 lines from `pg345_cleaned.txt` and writes them to a file called `pg345_cleaned_100_lines.txt`.\n", - "\n", - "Note: The shell commands `!head` and `!tail` are not available on all operating systems.\n", - "If they don't work for you, we can write similar functions in Python.\n", - "See the first exercise at the end of this chapter for suggestions." - ] - }, - { - "cell_type": "markdown", - "id": "c842524d", - "metadata": {}, - "source": [ - "## Glossary\n", - "\n", - "**sequence:**\n", - " An ordered collection of values where each value is identified by an integer index.\n", - "\n", - "**character:**\n", - "An element of a string, including letters, numbers, and symbols.\n", - "\n", - "**index:**\n", - " An integer value used to select an item in a sequence, such as a character in a string. In Python indices start from `0`.\n", - "\n", - "**slice:**\n", - " A part of a string specified by a range of indices.\n", - "\n", - "**empty string:**\n", - "A string that contains no characters and has length `0`.\n", - "\n", - "**object:**\n", - " Something a variable can refer to. An object has a type and a value.\n", - "\n", - "**immutable:**\n", - "If the elements of an object cannot be changed, the object is immutable.\n", - "\n", - "**invocation:**\n", - " An expression -- or part of an expression -- that calls a method.\n", - "\n", - "**regular expression:**\n", - "A sequence of characters that defines a search pattern.\n", - "\n", - "**pattern:**\n", - "A rule that specifies the requirements a string has to meet to constitute a match.\n", - "\n", - "**string substitution:**\n", - "Replacement of a string, or part of a string, with another string.\n", - "\n", - "**shell command:**\n", - "A statement in a shell language, which is a language used to interact with an operating system." - ] - }, - { - "cell_type": "markdown", - "id": "4306e765", - "metadata": {}, - "source": [ - "## Exercises" - ] - }, - { - "cell_type": "code", - "execution_count": 69, - "id": "18bced21", - "metadata": { - "tags": [ - "remove-print" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Exception reporting mode: Verbose\n" - ] - } - ], - "source": [ - "# This cell tells Jupyter to provide detailed debugging information\n", - "# when a runtime error occurs. Run it before working on the exercises.\n", - "\n", - "%xmode Verbose" - ] - }, - { - "cell_type": "code", - "execution_count": 70, - "id": "772f5c14", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "download('https://raw.githubusercontent.com/AllenDowney/ThinkPython/v3/words.txt');" - ] - }, - { - "cell_type": "markdown", - "id": "5be97ddc", - "metadata": {}, - "source": [ - "### Ask a virtual assistant\n", - "\n", - "In this chapter, we only scratched the surface of what regular expressions can do.\n", - "To get an idea of what's possible, ask a virtual assistant, \"What are the most common special characters used in Python regular expressions?\"\n", - "\n", - "You can also ask for a pattern that matches particular kinds of strings.\n", - "For example, try asking:\n", - "\n", - "* Write a Python regular expression that matches a 10-digit phone number with hyphens.\n", - "\n", - "* Write a Python regular expression that matches a street address with a number and a street name, followed by `ST` or `AVE`.\n", - "\n", - "* Write a Python regular expression that matches a full name with any common title like `Mr` or `Mrs` followed by any number of names beginning with capital letters, possibly with hyphens between some names.\n", - "\n", - "And if you want to see something more complicated, try asking for a regular expression that matches any legal URL.\n", - "\n", - "A regular expression often has the letter `r` before the quotation mark, which indicates that it is a \"raw string\".\n", - "For more information, ask a virtual assistant, \"What is a raw string in Python?\"" - ] - }, - { - "cell_type": "code", - "execution_count": 71, - "id": "8650dec2", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "from doctest import run_docstring_examples\n", - "\n", - "def run_doctests(func):\n", - " run_docstring_examples(func, globals(), name=func.__name__)" - ] - }, - { - "cell_type": "markdown", - "id": "20dcbbb3", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "See if you can write a function that does the same thing as the shell command `!head`.\n", - "It should take as arguments the name of a file to read, the number of lines to read, and the name of the file to write the lines into.\n", - "If the third parameter is `None`, it should display the lines rather than write them to a file.\n", - "\n", - "Consider asking a virtual assistant for help, but if you do, tell it not to use a `with` statement or a `try` statement." - ] - }, - { - "cell_type": "code", - "execution_count": 72, - "id": "75b12538", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def head(input_file, num_lines=10, output_file=None):\n", - " reader = open(input_file, 'r')\n", - "\n", - " if output_file is not None:\n", - " writer = open(output_file, 'w')\n", - " \n", - " for i in range(num_lines):\n", - " line = reader.readline()\n", - " \n", - " if output_file is not None:\n", - " writer.write(line)\n", - " else:\n", - " print(line, end='')\n", - " \n", - " reader.close()\n", - " if output_file is not None:\n", - " writer.close()" - ] - }, - { - "cell_type": "markdown", - "id": "24f6aac3", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "You can use the following examples to test your function." - ] - }, - { - "cell_type": "code", - "execution_count": 73, - "id": "9cbc19cd", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "\n", - "\n", - "\n", - " DRACULA\n", - "\n", - " _by_\n", - "\n", - " Bram Stoker\n", - "\n" - ] - } - ], - "source": [ - "head('pg345_cleaned.txt', 10)" - ] - }, - { - "cell_type": "code", - "execution_count": 74, - "id": "19de7df0", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "head('pg345_cleaned.txt', 100, 'pg345_cleaned_100_lines.txt')" - ] - }, - { - "cell_type": "code", - "execution_count": 75, - "id": "242f7ba6", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "JONATHAN HARKER'S JOURNAL\r\n", - "\r\n", - "(_Kept in shorthand._)\r\n", - "\r\n", - "\r\n", - "_3 May. Bistritz._--Left Munich at 8:35 P. M., on 1st May, arriving at\r\n", - "Vienna early next morning; should have arrived at 6:46, but train was an\r\n", - "hour late. Buda-Pesth seems a wonderful place, from the glimpse which I\r\n", - "got of it from the train and the little I could walk through the\r\n", - "streets. I feared to go very far from the station, as we had arrived\r\n" - ] - } - ], - "source": [ - "!tail pg345_cleaned_100_lines.txt" - ] - }, - { - "cell_type": "markdown", - "id": "adb78357", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "\"Wordle\" is an online word game where the objective is to guess a five-letter word in six or fewer attempts.\n", - "Each attempt has to be recognized as a word, not including proper nouns.\n", - "After each attempt, you get information about which of the letters you guessed appear in the target word, and which ones are in the correct position.\n", - "\n", - "For example, suppose the target word is `MOWER` and you guess `TRIED`.\n", - "You would learn that `E` is in the word and in the correct position, `R` is in the word but not in the correct position, and `T`, `I`, and `D` are not in the word.\n", - "\n", - "As a different example, suppose you have guessed the words `SPADE` and `CLERK`, and you've learned that `E` is in the word, but not in either of those positions, and none of the other letters appear in the word.\n", - "Of the words in the word list, how many could be the target word?\n", - "Write a function called `check_word` that takes a five-letter word and checks whether it could be the target word, given these guesses." - ] - }, - { - "cell_type": "code", - "execution_count": 76, - "id": "2a37092e", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def check_word(word):\n", - " if 'e' not in word:\n", - " return False\n", - " \n", - " if word[2] == 'e' or word[4] == 'e':\n", - " return False\n", - " \n", - " if uses_any(word, 'spadclrk'):\n", - " return False\n", - " \n", - " return True" - ] - }, - { - "cell_type": "markdown", - "id": "87fdf676", - "metadata": {}, - "source": [ - "You can use any of the functions from the previous chapter, like `uses_any`." - ] - }, - { - "cell_type": "code", - "execution_count": 77, - "id": "8d19b6ce", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "def uses_any(word, letters):\n", - " for letter in word.lower():\n", - " if letter in letters.lower():\n", - " return True\n", - " return False" - ] - }, - { - "cell_type": "markdown", - "id": "63593f1b", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "You can use the following loop to test your function." - ] - }, - { - "cell_type": "code", - "execution_count": 78, - "id": "9bbf0b1c", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "befit\n", - "befog\n", - "beget\n", - "begin\n", - "begot\n", - "begum\n", - "begun\n", - "beigy\n", - "being\n", - "bemix\n", - "benni\n", - "benny\n", - "beton\n", - "bewig\n", - "bogey\n", - "boney\n", - "buteo\n", - "ebbet\n", - "ebony\n", - "eight\n", - "embow\n", - "emmet\n", - "enfin\n", - "enjoy\n", - "ennui\n", - "envoi\n", - "envoy\n", - "enzym\n", - "eying\n", - "feign\n", - "feint\n", - "fenny\n", - "feoff\n", - "fogey\n", - "fumet\n", - "gemmy\n", - "gemot\n", - "genet\n", - "genii\n", - "genom\n", - "given\n", - "gooey\n", - "hefty\n", - "heigh\n", - "hemin\n", - "heugh\n", - "homey\n", - "honey\n", - "hooey\n", - "hymen\n", - "jemmy\n", - "jenny\n", - "jeton\n", - "jetty\n", - "meiny\n", - "mezzo\n", - "mizen\n", - "money\n", - "motet\n", - "motey\n", - "neigh\n", - "netty\n", - "nomen\n", - "numen\n", - "often\n", - "quiet\n", - "tenet\n", - "tenon\n", - "tenth\n", - "tenty\n", - "teugh\n", - "thief\n", - "totem\n", - "unmet\n", - "unmew\n", - "veiny\n", - "venin\n", - "venom\n", - "vimen\n", - "vixen\n", - "webby\n", - "weigh\n", - "wenny\n", - "winey\n", - "witen\n", - "wizen\n", - "women\n", - "woven\n", - "xenon\n", - "zibet\n" - ] - } - ], - "source": [ - "for line in open('words.txt'):\n", - " word = line.strip()\n", - " if len(word) == 5 and check_word(word):\n", - " print(word)" - ] - }, - { - "cell_type": "markdown", - "id": "d009cb52", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "Continuing the previous exercise, suppose you guess the work `TOTEM` and learn that the `E` is *still* not in the right place, but the `M` is. How many words are left?" - ] - }, - { - "cell_type": "code", - "execution_count": 79, - "id": "925c7aa9", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def check_word2(word):\n", - " if not check_word(word):\n", - " return False\n", - " \n", - " if word[3] == 'e':\n", - " return False\n", - " \n", - " if word[4] != 'm':\n", - " return False\n", - " \n", - " return True" - ] - }, - { - "cell_type": "code", - "execution_count": 80, - "id": "3f658f3a", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "begum\n", - "enzym\n", - "genom\n", - "venom\n" - ] - } - ], - "source": [ - "# Solution\n", - "\n", - "for line in open('words.txt'):\n", - " word = line.strip()\n", - " if len(word) == 5 and check_word2(word):\n", - " print(word)" - ] - }, - { - "cell_type": "markdown", - "id": "c1d0f892", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "*The Count of Monte Cristo* is a novel by Alexandre Dumas that is considered a classic.\n", - "Nevertheless, in the introduction of an English translation of the book, the writer Umberto Eco confesses that he found the book to be \"one of the most badly written novels of all time\".\n", - "\n", - "In particular, he says it is \"shameless in its repetition of the same adjective,\" and mentions in particular the number of times \"its characters either shudder or turn pale.\"\n", - "\n", - "To see whether his objection is valid, let's count the number number of lines that contain the word `pale` in any form, including `pale`, `pales`, `paled`, and `paleness`, as well as the related word `pallor`. \n", - "Use a single regular expression that matches any of these words.\n", - "As an additional challenge, make sure that it doesn't match any other words, like `impale` -- you might want to ask a virtual assistant for help." - ] - }, - { - "cell_type": "markdown", - "id": "742efd98", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "The following cell downloads the book from Project Gutenberg ." - ] - }, - { - "cell_type": "code", - "execution_count": 81, - "id": "9a74be13", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "import os\n", - "\n", - "if not os.path.exists('pg1184.txt'):\n", - " !wget https://www.gutenberg.org/cache/epub/1184/pg1184.txt" - ] - }, - { - "cell_type": "markdown", - "id": "881c2f99", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "The following cell runs a function that reads the file from Project Gutenberg and writes a file that contains only the text of the book, not the added information about the book." - ] - }, - { - "cell_type": "code", - "execution_count": 82, - "id": "946c63d2", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "def clean_file(input_file, output_file):\n", - " reader = open(input_file)\n", - " writer = open(output_file, 'w')\n", - "\n", - " for line in reader:\n", - " if is_special_line(line):\n", - " break\n", - "\n", - " for line in reader:\n", - " if is_special_line(line):\n", - " break\n", - " writer.write(line)\n", - " \n", - " reader.close()\n", - " writer.close()\n", - "\n", - "clean_file('pg1184.txt', 'pg1184_cleaned.txt')" - ] - }, - { - "cell_type": "code", - "execution_count": 83, - "id": "08294921", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def count_matches(pattern):\n", - " count = 0\n", - " for line in open('pg1184_cleaned.txt'):\n", - " result = re.search(pattern, line)\n", - " if result != None:\n", - " count += 1\n", - " return count" - ] - }, - { - "cell_type": "code", - "execution_count": 84, - "id": "3eb8f83f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "239" - ] - }, - "execution_count": 84, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Solution\n", - "\n", - "# This solution uses only features we've seen in the chapter,\n", - "# but it also matches words that contain these string, like \"impale\".\n", - "\n", - "pattern = '(pale|pales|paled|paleness|pallor)'\n", - "count_matches(pattern)" - ] - }, - { - "cell_type": "code", - "execution_count": 85, - "id": "b6bffe8a", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "223" - ] - }, - "execution_count": 85, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Solution\n", - "\n", - "# This solution uses the special sequence \\b to match a word boundary,\n", - "# which can be any kind of white space or punctuation.\n", - "# The `r` before the quotation mark indicates that the pattern is\n", - "# a raw string, which is needed because the pattern contains a\n", - "# special sequence.\n", - "\n", - "pattern = r'\\b(pale|pales|paled|paleness|pallor)\\b'\n", - "count_matches(pattern)" - ] - }, - { - "cell_type": "markdown", - "id": "7db56337", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "By this count, these words appear on `223` lines of the book, so Mr. Eco might have a point." - ] - }, - { - "cell_type": "markdown", - "id": "a7f4edf8", - "metadata": { - "tags": [] - }, - "source": [ - "[Think Python: 3rd Edition](https://allendowney.github.io/ThinkPython/index.html)\n", - "\n", - "Copyright 2024 [Allen B. Downey](https://allendowney.com)\n", - "\n", - "Code license: [MIT License](https://mit-license.org/)\n", - "\n", - "Text license: [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-nc-sa/4.0/)" - ] - } - ], - "metadata": { - "celltoolbar": "Tags", - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.11" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/soln/chap09.ipynb b/soln/chap09.ipynb deleted file mode 100644 index 3d3914f..0000000 --- a/soln/chap09.ipynb +++ /dev/null @@ -1,2792 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "1331faa1", - "metadata": {}, - "source": [ - "You can order print and ebook versions of *Think Python 3e* from\n", - "[Bookshop.org](https://bookshop.org/a/98697/9781098155438) and\n", - "[Amazon](https://www.amazon.com/_/dp/1098155432?smid=ATVPDKIKX0DER&_encoding=UTF8&tag=oreilly20-20&_encoding=UTF8&tag=greenteapre01-20&linkCode=ur2&linkId=e2a529f94920295d27ec8a06e757dc7c&camp=1789&creative=9325)." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "bde1c3f9", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "from os.path import basename, exists\n", - "\n", - "def download(url):\n", - " filename = basename(url)\n", - " if not exists(filename):\n", - " from urllib.request import urlretrieve\n", - "\n", - " local, _ = urlretrieve(url, filename)\n", - " print(\"Downloaded \" + str(local))\n", - " return filename\n", - "\n", - "download('https://github.com/AllenDowney/ThinkPython/raw/v3/thinkpython.py');\n", - "download('https://github.com/AllenDowney/ThinkPython/raw/v3/diagram.py');\n", - "\n", - "import thinkpython" - ] - }, - { - "cell_type": "markdown", - "id": "3c25ca7e", - "metadata": {}, - "source": [ - "# Lists\n", - "\n", - "This chapter presents one of Python's most useful built-in types, lists.\n", - "You will also learn more about objects and what can happen when multiple variables refer to the same object.\n", - "\n", - "In the exercises at the end of the chapter, we'll make a word list and use it to search for special words like palindromes and anagrams." - ] - }, - { - "cell_type": "markdown", - "id": "4d32b3e2", - "metadata": {}, - "source": [ - "## A list is a sequence\n", - "\n", - "Like a string, a **list** is a sequence of values. In a string, the\n", - "values are characters; in a list, they can be any type.\n", - "The values in a list are called **elements**.\n", - "\n", - "There are several ways to create a new list; the simplest is to enclose the elements in square brackets (`[` and `]`).\n", - "For example, here is a list of two integers. " - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "a16a119b", - "metadata": {}, - "outputs": [], - "source": [ - "numbers = [42, 123]" - ] - }, - { - "cell_type": "markdown", - "id": "b5d6112c", - "metadata": {}, - "source": [ - "And here's a list of three strings." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "ac7a4a0b", - "metadata": {}, - "outputs": [], - "source": [ - "cheeses = ['Cheddar', 'Edam', 'Gouda']" - ] - }, - { - "cell_type": "markdown", - "id": "dda58c67", - "metadata": {}, - "source": [ - "The elements of a list don't have to be the same type.\n", - "The following list contains a string, a float, an integer, and even another list." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "18fb0e21", - "metadata": {}, - "outputs": [], - "source": [ - "t = ['spam', 2.0, 5, [10, 20]]" - ] - }, - { - "cell_type": "markdown", - "id": "147fa217", - "metadata": {}, - "source": [ - "A list within another list is **nested**.\n", - "\n", - "A list that contains no elements is called an empty list; you can create\n", - "one with empty brackets, `[]`." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "0ff58916", - "metadata": {}, - "outputs": [], - "source": [ - "empty = []" - ] - }, - { - "cell_type": "markdown", - "id": "f95381bc", - "metadata": {}, - "source": [ - "The `len` function returns the length of a list." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "f3153f36", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "3" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(cheeses)" - ] - }, - { - "cell_type": "markdown", - "id": "371403a3", - "metadata": {}, - "source": [ - "The length of an empty list is `0`." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "58727d35", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "0" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(empty)" - ] - }, - { - "cell_type": "markdown", - "id": "d3589a5d", - "metadata": {}, - "source": [ - "The following figure shows the state diagram for `cheeses`, `numbers` and `empty`." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "25582cad", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "from diagram import make_list, Binding, Value\n", - "\n", - "list1 = make_list(cheeses, dy=-0.3, offsetx=0.17)\n", - "binding1 = Binding(Value('cheeses'), list1)\n", - "\n", - "list2 = make_list(numbers, dy=-0.3, offsetx=0.17)\n", - "binding2 = Binding(Value('numbers'), list2)\n", - "\n", - "list3 = make_list(empty, dy=-0.3, offsetx=0.1)\n", - "binding3 = Binding(Value('empty'), list3)" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "925c7d67", - "metadata": { - "tags": [ - "remove-input" - ] - }, - "outputs": [ - { - "data": { - "image/png": "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+eWXxnnBggXVokULlSlTxghwgoOD1aNHDw0ePDjD+hISEoxQqHDhwqpevbo8PT3l5uamuLg4BQcHa+/evYqIiFB0dLRef/115cuXT927d7ervb6+vpo8ebKkpDWknnzySRUsWFAXLlxQvnz57KoDcISFCxfqzTfflJT0Xv7UU0+pQIECOn78uPz9/WWxWBQWFqbnn39ex44dszucyGwHDx7U6NGjdfv2bVWoUEFNmzZVkSJFdPLkSW3btk0Wi0Xnz59X+/btdfjwYf30008aMGCAJKlq1apq0KCBXF1ddfjwYWP0S0BAgF555ZUUu/SkZdSoUUa/rk6dOnriiSdksVi0b98+43Py2LFjat26tXbu3KmKFSumWde0adM0YsQI43PEzc3NeG9PSEhQQECA9u7dK4vFoj///FOtWrWSv7+/ChYsmG4bY2Ji9Pzzz2vfvn3KmzevmjRpoipVqigmJkb79+83ytEXfXjQF01CXzRpHcvIyEjlz59fvr6+do/QvF/Ws5DKly+fpffK6XJMMDRr1iybUKhnz5764osvUv3AOXLkiObMmZPuB8fEiRMVExOjUaNGaezYsTZlr1+/rhdeeMEYujp69Gj17Nkz1f/xoqOj1b17dyNUad++vb755htVqVLFplxERIQ++OADzZw5UzExMXr55ZfT7FzMnz/fCIXc3Nz05Zdfqm/fvik61n5+fnrllVcUHBysv//+W1988YVGjhxpU+bPP/80QqGyZcvql19+UcOGDVP9OwkICNDixYvTnHM5YcIEIxQqU6aMpk+frq5du6b4e1m+fLkGDhyo8PBwzZkzR23atFHPnj1TvMbkD+KaNWtq1apV8vLySnFPi8WivXv3asGCBXJxcUm1XchatWrV0r59+1JMgzHTh3JcXJzxhTqtL/VOTk7y9PTUoUOHdP78+WxsXdZas2ZNms9Zj0IsVaqU3YHH/Zg9e7ZiYmLk4+OjSZMmqXjx4sZzt27d0ltvvaUVK1ZIkqZOnarXX3891dFLiYmJGjBggBEKPfnkk/r666/1+OOP25S7c+eOpk2bpsmTJ8tisWj48OFq2LBhqq/xq6++MkIhJycn/d///Z/eeecdm8UfT506pX79+mnPnj06dOhQhq/X39/fZppely5d5Ovrq2LFihmPhYeHa/jw4Vq5cqW++OKLDOt0dnZW79691atXLzVq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RQkJCXrvvfc0b948m7K3bt3Stm3btG3bNv3999+aO3eu8uTJc0/tAAAAuRN90ezl5ORkHN/dv3sQJ06cMI4rVaqUafVmJYIhAPgfZ2dm12aXCRMm2CxkXbBgQbVo0UJlypQxApzg4GD16NFDgwcPzrC+hIQEIxQqXLiwqlevLk9PT7m5uSkuLk7BwcHau3evIiIiFB0drddff1358uVT9+7d7Wrv/PnzNXbsWEmSt7e3ateurTx58mjv3r06fvy4JGnjxo0aOXKkfH199e6772rBggVydnZWvXr15OXlpcTERO3cuVOBgYGSpJUrV6p27dp699137+WvDgAA5FL0RbNXQECAcVy+fPlMqXPJkiXGrmdOTk56/vnnM6XerEYwBAAmtmbNmmy/p7+/v7766ivjvEuXLvL19VWxYsWMx8LDwzV8+HCtXLlSX3zxRYZ1Ojs7q3fv3urVq5caNWqkfPnypSgTExOjWbNmacKECYqPj9c777yjdu3a2bVTxKhRo+Th4aH58+erefPmNs998803GjNmjCRp8eLFqlq1qhYsWCAvLy/Nnz/fZjeMhIQEjRkzRjNmzJAkffHFF3rjjTdUqFChFPesXLmyMYUNAAAAmScxMVHLli0zzlu1anXf9dy8eVMBAQH68ccftXTpUuO5ESNGqGrVqg/a1GxBMAQAsMuZM2c0YsQIu8u/9NJLql+/forHx48fL4vFIinpQ3jBggUpplMVLVpU8+bN040bN7Rp06YM75U/f34jbEmLi4uLhg0bpsTERI0bN043b97UsmXL9Nprr2VYv5OTk37//XfVqFEjxXNDhw7Vhg0b5Ofnp/j4eI0ePVqlSpXSmjVrVKpUKZuyefLk0aeffqr169fr1KlTioqK0tq1a9WtW7cM2wAAAIDMMWfOHJ08eVJS0g+M9vQHk7311ltatGhRms8XKFBA48aNs2vUe05BMAQAsMvly5c1Z84cu8vXq1cvRTB04sQJ7d692zifMmVKmmvsODs7a+rUqXrqqaeMICkz9O7dW+PGjZMkbd682a6OwKuvvppqKJSsR48e8vPzM85HjBiRIhRKlidPHnXt2lVTpkyRlLRGEcEQAABA9jh27JgmTJhgnPfp0yfdft69aNSokWbPni1PT89MqS+7EAwBALLN1q1bjeO6deuqevXq6ZavWrWq6tevr3/++cfueyQm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PHJ2dlZUVJSioqJ05swZeXp6qlOnTsqXL58DW5p9tm/frvnz5xvnb775Zoah0N3Kli2rH374gYWoAQAAgByIYAgA/icxMVFlypRRrVq1VLlyZbm7u0uSwsPDtXv3bh05ckSBgYHasGGD2rdv79jGZpMvvvjCOPb09NSECRPuu64nnnjCrnLHjh3TkiVLtHnzZgUFBSkqKkrFixfXY489prZt26pPnz4qUaJEunVMmjRJkydPliR98MEHGj16dLrlt23bpueee06S1KxZM61Zsybd8uHh4Zo7d65+//13nTt3TnFxcSpbtqyaNm2q/v37q27duna91mQXLlzQunXr5O/vr6NHjyo4OFi3bt1SkSJFVLZsWTVu3Fi9evVSgwYN7qleAAAAICMEQwDwPz169FClSpVSPF60aFE9++yzcnZ21r///qtjx46pWbNmKlKkiANamX0CAwO1adMm43zAgAFydXXNsvvFx8frww8/1Ny5c5WQkGDzXEhIiEJCQrR9+3ZNmzZNn332mV5++eUsa0t6du7cqX79+uny5cs2j58+fVqnT5/W4sWL9cEHH+iDDz6wq76PPvpI33zzjSwWS4rnbty4oRs3bujo0aOaN2+eunfvrunTp6tgwYKZ8loAAAAAgiEA+J/UQiFr3t7e+vfffyUlBRW5PRjavn27zXm3bt2y7F6JiYnq3bu3zUidYsWKqXnz5ipWrJiCgoK0bds2xcbG6ubNm3rzzTcVHh6uwYMHZ1mbUnPgwAF1795dUVFRxmN169ZVrVq1FBsbqz179ujcuXOaNGmSMeIsI0FBQbJYLHJyclLVqlVVtWpVFS9eXPny5dP169d16NAhnTt3TpK0cuVKRUZGavny5XJycsqKlwgAAACTIRgCADvlyZPHOE5tdMfDKL0pUzt27DCOPTw8VLFixSxrx3//+1+btrz77rsaPXq0zY5noaGheuONN4xRTB999JHq16+v+vXrZ1m7rMXGxur11183QqEKFSpowYIFatiwoU25pUuXatiwYfroo4/sqrdu3bpq27at/vOf/6Q5RW7Hjh0aPHiwzp49q3Xr1umnn37SSy+9lGrZl19+2WGjqQAAAPDwcXZ0AwDgYREUFGQclyxZ0oEtyR7Wr9fLyyvL7hMREaEpU6YY52+//bbGjx9vEwpJSeHUTz/9pHr16klKmnr2IGse3aul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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from diagram import diagram, adjust, Bbox\n", - "\n", - "width, height, x, y = [3.66, 1.58, 0.45, 1.2]\n", - "ax = diagram(width, height)\n", - "bbox1 = binding1.draw(ax, x, y)\n", - "bbox2 = binding2.draw(ax, x+2.25, y)\n", - "bbox3 = binding3.draw(ax, x+2.25, y-1.0)\n", - "\n", - "bbox = Bbox.union([bbox1, bbox2, bbox3])\n", - "#adjust(x, y, bbox)" - ] - }, - { - "cell_type": "markdown", - "id": "503f25d8", - "metadata": {}, - "source": [ - "Lists are represented by boxes with the word \"list\" outside and the numbered elements of the list inside." - ] - }, - { - "cell_type": "markdown", - "id": "e0b8ff01", - "metadata": {}, - "source": [ - "## Lists are mutable\n", - "\n", - "To read an element of a list, we can use the bracket operator.\n", - "The index of the first element is `0`." - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "9deb85a3", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'Cheddar'" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "cheeses[0]" - ] - }, - { - "cell_type": "markdown", - "id": "9747e951", - "metadata": {}, - "source": [ - "Unlike strings, lists are mutable. When the bracket operator appears on\n", - "the left side of an assignment, it identifies the element of the list\n", - "that will be assigned." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "98ec5d9c", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[42, 17]" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "numbers[1] = 17\n", - "numbers" - ] - }, - { - "cell_type": "markdown", - "id": "5097a517", - "metadata": {}, - "source": [ - "The second element of `numbers`, which used to be `123`, is now `17`.\n", - "\n", - "List indices work the same way as string indices:\n", - "\n", - "- Any integer expression can be used as an index.\n", - "\n", - "- If you try to read or write an element that does not exist, you get\n", - " an `IndexError`.\n", - "\n", - "- If an index has a negative value, it counts backward from the end of\n", - " the list.\n", - "\n", - "The `in` operator works on lists -- it checks whether a given element appears anywhere in the list." - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "000aed26", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "'Edam' in cheeses" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "bcb8929c", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "'Wensleydale' in cheeses" - ] - }, - { - "cell_type": "markdown", - "id": "89d01ebf", - "metadata": {}, - "source": [ - "Although a list can contain another list, the nested list still counts as a single element -- so in the following list, there are only four elements." - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "5ad51a26", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "4" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "t = ['spam', 2.0, 5, [10, 20]]\n", - "len(t)" - ] - }, - { - "cell_type": "markdown", - "id": "4e0ea41d", - "metadata": {}, - "source": [ - "And `10` is not considered to be an element of `t` because it is an element of a nested list, not `t`." - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "156dbc10", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "10 in t" - ] - }, - { - "cell_type": "markdown", - "id": "1ee7a4d9", - "metadata": {}, - "source": [ - "## List slices\n", - "\n", - "The slice operator works on lists the same way it works on strings.\n", - "The following example selects the second and third elements from a list of four letters." - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "70b16371", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['b', 'c']" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "letters = ['a', 'b', 'c', 'd']\n", - "letters[1:3]" - ] - }, - { - "cell_type": "markdown", - "id": "bc59d952", - "metadata": {}, - "source": [ - "If you omit the first index, the slice starts at the beginning. " - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "e67bab33", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['a', 'b']" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "letters[:2]" - ] - }, - { - "cell_type": "markdown", - "id": "1aaaae86", - "metadata": {}, - "source": [ - "If you omit the second, the slice goes to the end. " - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "a310f506", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['c', 'd']" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "letters[2:]" - ] - }, - { - "cell_type": "markdown", - "id": "67ad02e8", - "metadata": {}, - "source": [ - "So if you omit both, the slice is a copy of the whole list." - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "1385a75e", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['a', 'b', 'c', 'd']" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "letters[:]" - ] - }, - { - "cell_type": "markdown", - "id": "9232c1ef", - "metadata": {}, - "source": [ - "Another way to copy a list is to use the `list` function." - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "a0ca0135", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['a', 'b', 'c', 'd']" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "list(letters)" - ] - }, - { - "cell_type": "markdown", - "id": "50e4b182", - "metadata": {}, - "source": [ - "Because `list` is the name of a built-in function, you should avoid using it as a variable name.\n" - ] - }, - { - "cell_type": "markdown", - "id": "1b057c0c", - "metadata": {}, - "source": [ - "## List operations\n", - "\n", - "The `+` operator concatenates lists." - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "66804de0", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[1, 2, 3, 4]" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "t1 = [1, 2]\n", - "t2 = [3, 4]\n", - "t1 + t2" - ] - }, - { - "cell_type": "markdown", - "id": "474a5c40", - "metadata": {}, - "source": [ - "The `*` operator repeats a list a given number of times." - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "96620f93", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['spam', 'spam', 'spam', 'spam']" - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "['spam'] * 4" - ] - }, - { - "cell_type": "markdown", - "id": "5b33bc51", - "metadata": {}, - "source": [ - "No other mathematical operators work with lists, but the built-in function `sum` adds up the elements." - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "0808ed08", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "3" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "sum(t1)" - ] - }, - { - "cell_type": "markdown", - "id": "f216a14d", - "metadata": {}, - "source": [ - "And `min` and `max` find the smallest and largest elements." - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "7ed7e53d", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "1" - ] - }, - "execution_count": 25, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "min(t1)" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "dda02e4e", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "4" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "max(t2)" - ] - }, - { - "cell_type": "markdown", - "id": "533a2009", - "metadata": {}, - "source": [ - "## List methods\n", - "\n", - "Python provides methods that operate on lists. For example, `append`\n", - "adds a new element to the end of a list:" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "bcf04ef9", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['a', 'b', 'c', 'd', 'e']" - ] - }, - "execution_count": 27, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "letters.append('e')\n", - "letters" - ] - }, - { - "cell_type": "markdown", - "id": "ccc57f77", - "metadata": {}, - "source": [ - "`extend` takes a list as an argument and appends all of the elements:" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "be55916d", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['a', 'b', 'c', 'd', 'e', 'f', 'g']" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "letters.extend(['f', 'g'])\n", - "letters" - ] - }, - { - "cell_type": "markdown", - "id": "0f39d9f6", - "metadata": {}, - "source": [ - "There are two methods that remove elements from a list.\n", - "If you know the index of the element you want, you can use `pop`." - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "b22da905", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'b'" - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "t = ['a', 'b', 'c']\n", - "t.pop(1)" - ] - }, - { - "cell_type": "markdown", - "id": "6729415a", - "metadata": {}, - "source": [ - "The return value is the element that was removed.\n", - "And we can confirm that the list has been modified." - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "id": "01bdff91", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['a', 'c']" - ] - }, - "execution_count": 30, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "t" - ] - }, - { - "cell_type": "markdown", - "id": "1e97ee7d", - "metadata": {}, - "source": [ - "If you know the element you want to remove (but not the index), you can use `remove`:" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "id": "babe366e", - "metadata": {}, - "outputs": [], - "source": [ - "t = ['a', 'b', 'c']\n", - "t.remove('b')" - ] - }, - { - "cell_type": "markdown", - "id": "60e710fe", - "metadata": {}, - "source": [ - "The return value from `remove` is `None`.\n", - "But we can confirm that the list has been modified." - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "id": "f80f5b1d", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['a', 'c']" - ] - }, - "execution_count": 32, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "t" - ] - }, - { - "cell_type": "markdown", - "id": "2a9448a8", - "metadata": {}, - "source": [ - "If the element you ask for is not in the list, that's a ValueError." - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "id": "861f8e7e", - "metadata": { - "tags": [ - "raises-exception" - ] - }, - "outputs": [ - { - "ename": "ValueError", - "evalue": "list.remove(x): x not in list", - "output_type": "error", - "traceback": [ - "\u001b[0;31mValueError\u001b[0m\u001b[0;31m:\u001b[0m list.remove(x): x not in list\n" - ] - } - ], - "source": [ - "%%expect ValueError\n", - "\n", - "t.remove('d')" - ] - }, - { - "cell_type": "markdown", - "id": "18305f96", - "metadata": {}, - "source": [ - "## Lists and strings\n", - "\n", - "A string is a sequence of characters and a list is a sequence of values,\n", - "but a list of characters is not the same as a string. \n", - "To convert from a string to a list of characters, you can use the `list` function." - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "id": "1b50bc13", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['s', 'p', 'a', 'm']" - ] - }, - "execution_count": 34, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "s = 'spam'\n", - "t = list(s)\n", - "t" - ] - }, - { - "cell_type": "markdown", - "id": "0291ef69", - "metadata": {}, - "source": [ - "The `list` function breaks a string into individual letters.\n", - "If you want to break a string into words, you can use the `split` method:" - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "id": "c28e5127", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['pining', 'for', 'the', 'fjords']" - ] - }, - "execution_count": 35, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "s = 'pining for the fjords'\n", - "t = s.split()\n", - "t" - ] - }, - { - "cell_type": "markdown", - "id": "0e16909d", - "metadata": {}, - "source": [ - "An optional argument called a **delimiter** specifies which characters to use as word boundaries. The following example uses a hyphen as a delimiter." - ] - }, - { - "cell_type": "code", - "execution_count": 88, - "id": "ec6ea206", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['ex', 'parrot']" - ] - }, - "execution_count": 88, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "s = 'ex-parrot'\n", - "t = s.split('-')\n", - "t" - ] - }, - { - "cell_type": "markdown", - "id": "7c61f916", - "metadata": {}, - "source": [ - "If you have a list of strings, you can concatenate them into a single string using `join`.\n", - "`join` is a string method, so you have to invoke it on the delimiter and pass the list as an argument." - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "id": "75c74d3c", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'pining for the fjords'" - ] - }, - "execution_count": 37, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "delimiter = ' '\n", - "t = ['pining', 'for', 'the', 'fjords']\n", - "s = delimiter.join(t)\n", - "s" - ] - }, - { - "cell_type": "markdown", - "id": "bedd842b", - "metadata": {}, - "source": [ - "In this case the delimiter is a space character, so `join` puts a space\n", - "between words.\n", - "To join strings without spaces, you can use the empty string, `''`, as a delimiter." - ] - }, - { - "cell_type": "markdown", - "id": "181215ce", - "metadata": {}, - "source": [ - "## Looping through a list\n", - "\n", - "You can use a `for` statement to loop through the elements of a list." - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "id": "a5df1e10", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Cheddar\n", - "Edam\n", - "Gouda\n" - ] - } - ], - "source": [ - "for cheese in cheeses:\n", - " print(cheese)" - ] - }, - { - "cell_type": "markdown", - "id": "c0e53a09", - "metadata": {}, - "source": [ - "For example, after using `split` to make a list of words, we can use `for` to loop through them." - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "id": "76b2c2e3", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "pining\n", - "for\n", - "the\n", - "fjords\n" - ] - } - ], - "source": [ - "s = 'pining for the fjords'\n", - "\n", - "for word in s.split():\n", - " print(word)" - ] - }, - { - "cell_type": "markdown", - "id": "0857b55b", - "metadata": {}, - "source": [ - "A `for` loop over an empty list never runs the indented statements." - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "id": "7e844887", - "metadata": {}, - "outputs": [], - "source": [ - "for x in []:\n", - " print('This never happens.')" - ] - }, - { - "cell_type": "markdown", - "id": "6e5f55c9", - "metadata": {}, - "source": [ - "## Sorting lists\n", - "\n", - "Python provides a built-in function called `sorted` that sorts the elements of a list." - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "id": "9db54d53", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['a', 'b', 'c']" - ] - }, - "execution_count": 41, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "scramble = ['c', 'a', 'b']\n", - "sorted(scramble)" - ] - }, - { - "cell_type": "markdown", - "id": "44e028cf", - "metadata": {}, - "source": [ - "The original list is unchanged." - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "id": "33d11287", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['c', 'a', 'b']" - ] - }, - "execution_count": 42, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "scramble" - ] - }, - { - "cell_type": "markdown", - "id": "530146af", - "metadata": {}, - "source": [ - "`sorted` works with any kind of sequence, not just lists. So we can sort the letters in a string like this." - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "id": "38c7cb0c", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['e', 'e', 'l', 'r', 's', 't', 't']" - ] - }, - "execution_count": 43, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "sorted('letters')" - ] - }, - { - "cell_type": "markdown", - "id": "f90bd9ea", - "metadata": {}, - "source": [ - "The result is a list.\n", - "To convert the list to a string, we can use `join`." - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "id": "2adb2fc3", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'eelrstt'" - ] - }, - "execution_count": 44, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "''.join(sorted('letters'))" - ] - }, - { - "cell_type": "markdown", - "id": "a57084e2", - "metadata": {}, - "source": [ - "With an empty string as the delimiter, the elements of the list are joined with nothing between them." - ] - }, - { - "cell_type": "markdown", - "id": "ce98b3d5", - "metadata": {}, - "source": [ - "## Objects and values\n", - "\n", - "If we run these assignment statements:" - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "id": "aa547282", - "metadata": {}, - "outputs": [], - "source": [ - "a = 'banana'\n", - "b = 'banana'" - ] - }, - { - "cell_type": "markdown", - "id": "33d020aa", - "metadata": {}, - "source": [ - "We know that `a` and `b` both refer to a string, but we don't know whether they refer to the *same* string. \n", - "There are two possible states, shown in the following figure." - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "id": "95a2aded", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "from diagram import Frame, Stack\n", - "\n", - "s = 'banana'\n", - "bindings = [Binding(Value(name), Value(repr(s))) for name in 'ab']\n", - "frame1 = Frame(bindings, dy=-0.25)\n", - "\n", - "binding1 = Binding(Value('a'), Value(repr(s)), dy=-0.11)\n", - "binding2 = Binding(Value('b'), draw_value=False, dy=0.11)\n", - "frame2 = Frame([binding1, binding2], dy=-0.25)\n", - "\n", - "stack = Stack([frame1, frame2], dx=1.7, dy=0)" - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "id": "3d75a28c", - "metadata": { - "tags": [ - "remove-input" - ] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "width, height, x, y = [2.85, 0.76, 0.17, 0.51]\n", - "ax = diagram(width, height)\n", - "bbox = stack.draw(ax, x, y)\n", - "# adjust(x, y, bbox)" - ] - }, - { - "cell_type": "markdown", - "id": "2f0b0431", - "metadata": {}, - "source": [ - "In the diagram on the left, `a` and `b` refer to two different objects that have the\n", - "same value. In the diagram on the right, they refer to the same object.\n", - "To check whether two variables refer to the same object, you can use the `is` operator." - ] - }, - { - "cell_type": "code", - "execution_count": 48, - "id": "a37e37bf", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 48, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "a = 'banana'\n", - "b = 'banana'\n", - "a is b" - ] - }, - { - "cell_type": "markdown", - "id": "d1eb0e36", - "metadata": {}, - "source": [ - "In this example, Python only created one string object, and both `a`\n", - "and `b` refer to it.\n", - "But when you create two lists, you get two objects." - ] - }, - { - "cell_type": "code", - "execution_count": 49, - "id": "d6af7316", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 49, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "a = [1, 2, 3]\n", - "b = [1, 2, 3]\n", - "a is b" - ] - }, - { - "cell_type": "markdown", - "id": "a8d4c3d4", - "metadata": {}, - "source": [ - "So the state diagram looks like this." - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "id": "dea08b82", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "t = [1, 2, 3]\n", - "binding1 = Binding(Value('a'), Value(repr(t)))\n", - "binding2 = Binding(Value('b'), Value(repr(t)))\n", - "frame = Frame([binding1, binding2], dy=-0.25)" - ] - }, - { - "cell_type": "code", - "execution_count": 51, - "id": "7e66ee69", - "metadata": { - "tags": [ - "remove-input" - ] - }, - "outputs": [ - { - "data": { - "image/png": "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o7p0WOp9/fXXOn78eIvXV1VV6dChQ02+X11d3eJtGn5sQUfsH7l8a6C5rfmW9OvXr8XANJxTcn3Whk/uamtrdfToUR09erTV9Z944gk999xzLm+NdXcExgWLFy9WVFSU3nrrLe3du1c//PCDvL29NXToUN11111asGABh7h2AcHBwW36aN+rWWlpqYqKiqzlyz9ioivJycmxLgcHB7fptEytiYqKUn5+vnbs2KH09HTl5uaqsLBQZWVlqqmpka+vr/r376+RI0dqwoQJuvfee51+SwEaIzDt0NwpIyIiIlz+DwBcruEf2Y6we/du6z0/kydP1qRJk1y+T1OnUPniiy+syy+88EKHfOBXUFCQZs+ezUdmdDJ28gPdQGpqqnW54Wlcupqamhrt3btXkjRixAjdf//9Nk8EV7AFA3SC48ePy+FwWMsjR47Unj17Ou3x67cKZsyYofDw8E573PbKysqyPn108eLFXfoUPZs3b9bChQvtHqNL67q/PQAdori4WIcPH5anp6eWLFli9zitqg/hmDFjdOedd9o8DVzlUXf5IRtdFGcihrspKSmxTv1+uaCgICUkJHTyROhI6enpSklJafa6zj4Muzld4WhJAgMAV6GuEBheIgMAGEFgAABGEBgAgBEEBgBgBIEBABhBYAAARhAYAIARBAYAYASBAQAYQWAAAEYQGACAEQQGAGAEgQEAGEFgAABGEBgAgBEEBgBgBIEBABhBYAAARhAYAIARBAYAYASBAQAYQWAAAEYQGACAEQQGAGAEgQEAGEFgAABGEBgAgBEEBgBgBIEBABhBYAAARhAYAIARHnV1dXV2DwEAuPqwBQMAMILAAACMIDAAACMIDADACAIDADCCwAAAjCAwAAAjCAwAwAgCAwAwgsAAAIwgMAAAIwgMAMAIAgMAMILAAACMIDAAACMIDADACAIDADCCwAAAjCAwAAAjCAwAwAgCAwAwgsAAAIwgMAAAIwgMAMAIAgMAMILAAACMIDAAACMIDADACAIDADCCwAAAjCAwAAAjCAwAwAgCAwAwgsAAAIwgMAAAIwgMAMAIAgMAMILAAACMIDAAACMIDADACAIDADCCwAAAjCAwAAAjCAwAwAgCAwAwgsAAAIwgMAAAIwgMAMAIAgMAMILAAACMIDAAACMIDADACAIDADCCwAAAjCAwAAAjCAwAwAgCAwAwgsAAAIwgMAAAIwgMAMCI/weC5LzM942bEQAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "width, height, x, y = [1.16, 0.76, 0.21, 0.51]\n", - "ax = diagram(width, height)\n", - "bbox = frame.draw(ax, x, y)\n", - "# adjust(x, y, bbox)" - ] - }, - { - "cell_type": "markdown", - "id": "cc115a9f", - "metadata": {}, - "source": [ - "In this case we would say that the two lists are **equivalent**, because they have the same elements, but not **identical**, because they are not the same object. \n", - "If two objects are identical, they are also equivalent, but if they are equivalent, they are not necessarily identical." - ] - }, - { - "cell_type": "markdown", - "id": "a58db021", - "metadata": {}, - "source": [ - "## Aliasing\n", - "\n", - "If `a` refers to an object and you assign `b = a`, then both variables refer to the same object." - ] - }, - { - "cell_type": "code", - "execution_count": 52, - "id": "d6a7eb5b", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 52, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "a = [1, 2, 3]\n", - "b = a\n", - "b is a" - ] - }, - { - "cell_type": "markdown", - "id": "f6ab3262", - "metadata": {}, - "source": [ - "So the state diagram looks like this." - ] - }, - { - "cell_type": "code", - "execution_count": 53, - "id": "dd406791", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "t = [1, 2, 3]\n", - "binding1 = Binding(Value('a'), Value(repr(t)), dy=-0.11)\n", - "binding2 = Binding(Value('b'), draw_value=False, dy=0.11)\n", - "frame = Frame([binding1, binding2], dy=-0.25)" - ] - }, - { - "cell_type": "code", - "execution_count": 54, - "id": "552e1e1e", - "metadata": { - "tags": [ - "remove-input" - ] - }, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYkAAAEvCAYAAACwmD1OAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAC4jAAAuIwF4pT92AAAaX0lEQVR4nO3de1BU993H8c9CQEVQQVARBJYab6hjvKAxJk2r1TpJTQ1p1TgmmUZrYq+xnZo6sbFpapJ2mjGTqjNJa2oSE63R2pnGZjoaY1TGS8RgEDQK7CLgDVHkIoqwzx/qeVjlhyywHFber5nMcDm7+8PM8ObsOed7HB6PxyMAABoQZPcCAADtF5EAABgRCQCAEZEAABgRCQCAEZEAABgRCQCAEZEAABgRCQCAEZEAABgRCQCAEZEAABgRCQCAEZEAABgRCQCAEZEAABgRCQCAEZEAABgRCQCAEZEAABgRCQCAEZEAABgRCQCAEZEAABgRCQCAEZEAABgRCQCAEZEAABgRCQCAEZEAABgRCQCAEZEAABgRCQCAEZEAABgRCQCAEZEAABgRCQCAEZEAABgRCQCAEZEAABgRCQCAEZEAABgRCQCAEZEAABgRCQCAEZEAABgRCQCAEZEAABgRCQCAEZEAABgRCQCAEZEAABgRCQCAEZEAABgRCQCAEZEAABgRCQCA0V12vXB5ebldLw0AASciIsKW12VPAgBgRCQAAEZEAgBgRCQAAEZEAgBgRCQAAEZEAgBgRCQAAEZEAgBgRCQAAEZEAgBgRCQAAEZEAgBgRCQAAEZEAgBgRCQAAEZEAgBgRCQAAEZEAgBgRCQAAEZEAgBgRCQAAEZEAgBgRCQAAEZEAgBgRCQAAEZEAgBgRCQAAEZEAgBgRCQAAEZEAgBgRCQAAEZEAgBgRCQAAEZEAgBgRCQAAEZEAgBgdJfdC2gPCgoK9L///U+7d+9Wdna2ioqKVFVVpYiICMXGxuree+/VrFmzlJqaavdSAaBNOTwej8eOFy4vL7fjZW/xwgsv6M0331RT/hnS0tK0YsUKhYWFtcHKAOD/RURE2PK6HX5PorCwUB6PRw6HQ3fffbfuvvtuRUVFKSQkRKWlpcrMzFR+fr4kaePGjSovL9eGDRvkcDhsXjkA+F+H35N44403FB0dre9+97vq2bNng9ukp6drwYIFysvLkyS99dZbmjlzZlsuE0AHZ9eeRIePRFO53W6NGTNG1dXVGjVqlLZv3273kgB0IHZFgrObmigxMVH333+/JCkjI0MXL160eUUA4H8d/phEfSdOnNCBAwd0/PhxlZWV6dKlS14HtN1utyTJ4/EoKytL48ePt2upANAmiISkvXv3aunSpUpPT2/SWU6SdO7cOT+vCgDs1+Ej8d577+mnP/1pk+NwQ6AdUwGA5ujQkThy5Ih+8YtfWIEYPHiwnnrqKaWmpiohIUERERHq3Lmztf0zzzyjDz74QJJ8jkp95eXlSk9P19WrV9W3b185nU716NGjRT8LAPhDh47EypUrdfXqVUnSxIkTtX79eoWGhhq3r6ioaJXX3bx5s86ePStJOnr0qLZv366oqCg5nU45nU7FxcUpODi4VV4LAFqiQ0fis88+sz5esmRJo4GQrh3Ybqna2lqVlpbe8vXS0lKVlpbqwIEDCgkJUUJCghUNu059A4AOHYlTp05ZH6ekpDS6bVlZmbKyslr8msHBwUpJSdGhQ4eM29TU1Cg3N1e5ubmSpOjoaCsYffv2VVAQZy4DaBsdOhL1f9lWVVWpU6dOxm3fffdd1dTUtMrrTpw4UUlJSTp+/Ljy8/N16dKlRrcvKSlRSUmJ9u/fr06dOikpKUlOp1NJSUnMkQLgVx06EklJScrOzpYkbdmyRbNnz25wu+PHj+vVV19ttdd1OBzq37+/+vfvL4/Ho9OnTysvL0/5+fk6ffp0o4+9fPmyjh49qqNHj0qSevfube1l9OnTh5lSAFpVh47E1KlTrUgsXrxYvXv31qRJk7y2+eyzzzR//nyVl5era9euqqysbNU1OBwO9enTR3369NH48eNVWVkpt9ut/Px8uVwuXb58udHHnz59WqdPn9aePXvUpUsXJSUlKTk5WYmJiV5nZgFAc3To2U1nz57V2LFjVVJSYn1txIgRGjhwoBwOhzIzM5WTkyPp2ltEMTExWrdunSRp1apVxj2P1lJXV6eTJ08qPz9f+fn51hlRTeFwOKzTa51Op6Kjo9nLAAIYA/5ssnfvXs2cObPRK6gffvhhrVq1SosWLbKuk2iLSNysvLxcLpdLeXl5Kigo8OkYSXh4uLWXkZCQcNszuQC0L9xPwiZjx47Vvn37tHLlSv33v/+Vy+WSdO29/nvuuUczZszQ1KlT7V3kdRERERo2bJiGDRumq1evqri42NrLaOi02voqKiqUlZWlrKwsBQUFKT4+3trLiIyMZC8DQIM6/J7EneLChQtyuVzKz89XQUGBamtrm/zY7t27W2dM9evXTyEhIX5cKYDm4O0mtJqamhoVFhZaexllZWVNfmxwcLD69eun5ORkOZ1Ode/e3Y8rBdBURAJ+4fF4dP78eSsYhYWFqqura/LjGRcCtA9EAm3iypUrKigosKLhyzwqxoUA9iESaHMej0clJSVWMIqLi32abntjXEhycrJiY2MZFwL4EZGA7aqrq60L+ZoyLqQ+xoUA/kUk0K7cGBdyIxj1hyE2BeNCgNZFJNCuVVVVWafYNmVcSH1dunSxgtHa40IOHTqkY8eOKT4+XqNGjdJdd/nv0h+3261hw4Y1+L1hw4Zp9+7dfntt+N/atWv17LPPNvi9559/XosXL27jFXnjYjq0a2FhYRoyZIiGDBni87iQS5cuKTs7W9nZ2a06LsTlcmnr1q2Srv0Cd7vdeuSRRxqd5muX2tpa5eTkKCMjQwcPHlRGRoaysrKsq+YnTJigLVu22LzKayc27N69Wzt27NDBgwf19ddfW9MIoqKiNGTIEH3rW9/S7NmzFRUVZds6L168qL179+qLL75Qdna2cnNzVVRUpIqKCgUFBal79+4aMGCAxo0bp8cff1z9+/e3ba2Bjj0JtNiNcSH5+flyu91tNi7k4MGD2r59u9fXevXqpUcffdQvx0Tq70lERERo5syZ1vfi4uK0cOHCBh/3n//8R3PnzlVVVZXxudtDJJYsWaI1a9bowoULt922a9eu+sMf/qC5c+f6f2EN+NWvfqW33367SdsGBQXp6aef1h//+MdG92L3799vzWaTpAMHDigjI0MSexJAi9QfF1JbW6uioqI2GRcycOBApaene731debMGa1fv15paWnq1q1bq/2MN4uMjNRf/vKXJm1bVlbWaCDaiy1btngFomvXrho9erRiY2MVGhqq3Nxc7du3TzU1NaqsrNTChQtVWFiopUuX2rZmSdZeQ2Jiorp166YrV67I7XZr//79qq6uVl1dnd5++20dO3ZMmzZtMr4lOWbMGI0ZM8b6fNmyZVYkOjIigVYVHByshIQEJSQk6Jvf/KZP40Lq6upUUFCggoIC7dix47bjQsLCwvSDH/xAmzZt8volfP78ea1bt05paWnq2bOn335WX/Xq1UsjR460/tu2bZtWrVpl97K83HXXXZo2bZqeeOIJPfDAA7f8Qj1x4oR+8pOfWLf+ff311zV+/HhNnjy5Tdc5YsQILVu2TBMnTtSgQYMa/GPi4sWLeuWVV7RixQpJ18b+r1y5Uj//+c/bdK2BjkjAr3r06KERI0ZoxIgRPo8LKSsrU2ZmpjIzM43jQnr16qUZM2Zo48aNunjxovXYiooKrV+/XtOnT1dsbKxff8bbmTRpkg4fPqx+/fp5ff2LL76waUUNS0tL06xZs+R0Oo3b9OvXTxs2bNCUKVOsv7Jfe+21No/EnDlzbrtNt27d9Morr6isrEzvv/++JGn16tVEwkdEAm0mJCTEeivJ13EhtbW1crlc1pTem8eFzJgxQ5s2bfIa+V5dXa2PPvpI06ZNU2Jior9/PKPevXvb9tq+aOp77p06ddLixYv12GOPSboWu3PnzrWrvbb65syZY0UiLy9PFRUVCg8Pt3lVgYNIwBYOh0NRUVGKiorSqFGjfB4XUlpaqtLSUh04cMAaF5KSkqIjR47ozJkz1nY1NTXavHmzpk6dqgEDBvj7x+owxo0bZ33s8Xh04sSJdhuJ6Ohor8+JhG+IBNqF0NBQr/t++zIupKamRrm5ucrNzZV0bY+l/hlWtbW1+vjjj1VdXa3hw4f7/WfpCG4+BuDLaPq2duTIEevjsLCwW6KBxhEJtDsOh0MxMTGKiYlRamqq17gQl8t12zOFGjoF1+PxaOvWraqurtaYMWO4AryFbtwb/ob4+HibVtK4Gwevb3jooYf8esHlnYh/LbR7nTt31sCBAzVw4MAWjwvZtWuXiouL9cgjjxCKFli7dq318eDBg9vVcZfLly+rsLBQO3bs0PLly73uNvn73//e3sUFICKBgOJwONSnTx/16dNH9957r9e4kPz8fF25cuW2z5GXl6ddu3bp/vvvb4MV33kOHTqk9957z/p83rx5Nq5GKioq0uDBgxvdZvTo0Xr33Xfb7R5Pe0YkEHDq6up04cIFnT171uu/pgTihqKiIj+u8M5VWVmpH//4x9YxiEGDBunJJ5+0eVVmXbp00dKlS40zmXB7RAIBJSsrSzt37vRpjHlDOIDtO4/HowULFljHIzp16qTVq1fbfk/0rl27eu3NVFRUyO12KyMjQ5cuXdKiRYv0wQcfaPny5Ro1apSNKw1MRAIBo6qqStu2bWvWmTQREREKDw9XWFiYhg8f3ugFY2jYiy++qH/961/W58uXL9fQoUNtXNE1PXr0aHBESmlpqZYvX6433nhDmZmZmjp1qtatW6dvf/vbNqwycBEJBJTbBSI4OFjR0dGKjo62zpCKiYlp1fHkHdHy5cu1fPly6/OXXnpJs2fPtm9BTRAVFaWXXnpJvXr10uLFi1VdXa25c+fqyy+/9OtcrzsNkUDACAsLU2pqqvbt2yfp2tsM9UMQExOjyMhIbqPaylavXq3f/e531ucLFy7UL3/5S/sW5KMFCxbo73//u3Jzc1VSUqIPP/xQ8+fPt3tZAYNIIKBMmDBBY8eO1dWrV9WlSxe7l3PHW7dunZ577jnr86efftr2qa++CgoK0oMPPmhdbLlnzx4i4QMigYATEhJi+8HSjuDf//63nn32Wetq95kzZ+r111+3eVXN06NHD+vj242vhzf2ywHc4pNPPtGPfvQj6xjQtGnTtGrVqoC9ALH+RZeRkZE2riTwEAkAXnbs2KEnnnjCGm/yne98R6tXr1ZwcLDNK2ueK1eu6NNPP7U+HzhwoI2rCTxEAoBl7969mjlzpqqrqyVdOwb0/vvv+3RbWX8rKyvz6TTol19+WSdPnrQ+nzZtmj+WdcciEkCAGjp0qLp166Zu3brpmWeeafHzZWZm6rHHHlNlZaWka6Ms/vnPf7b4BIGdO3da6+zWrZt27tzZ4udLTU3V3/72N5WUlBi3y8/P17x587xO3Z0xY4ZSUlJa9PodDQeuEXBqamoC7uymtLS0W4YRnj592vr44MGDuu+++2553EcffdRmd9abPn26190CnU6nXnzxxSY9dvLkyZoyZYq/lnaLY8eOaeHChfr1r3+t5ORkDRo0SJGRkQoJCdGFCxeUk5OjnJwcr8eMGzcuYA+824lIIKDs2rXL6zqJmy+ai4qKapfXSRw9elQFBQXG71dWVuqrr7665euNzaOqf4+N1jhecPNf5Rs2bGjyY3v27GmMxM33AmnpWuu/9VVXV6fjx4/r+PHjjW7/s5/9TL/5zW8C6g+L9oJIIGBUVVVZgZCu/WKtrKyU2+22vhYcHKyePXvecpHdnXbF9fnz572GFM6YMcPG1TQuKyvL+tjpdCo1NbVFzzd58mTl5OTo008/1f79+3X48GG53W7rWEV4eLhiYmI0bNgw3XfffXr00Ufb7V3zAgGRQEAJDg5u9KBlbW2tzpw543ULU0kKDw9XRESEunTpouHDhys5OdnfS/VS/xdla9i1a5d1T/AHH3xQDzzwQIuf8+LFiy1+joZ8/vnn1se//e1vW+WmP3FxcZozZ47mzJnT4udC49rffjlgEBYWpkmTJjXrLYOKigqdPHlSeXl52rx5sw4fPuyHFbadHTt2WB/XH5nR3tTW1io9PV2SNGTIEP3whz+0eUXwFXsSCCgpKSkaPHhwg/eTqKioaPLzfPXVVy06y6WgoMBrSNywYcO0e/fuZj+fr278df7QQw9p9OjRbfa6vvryyy914cIFSdILL7zQLo8X3bB27VruO9EAIoGAExQUpKioKEVFRalfv35yuVwKDQ1t8p3ppGtvVwSqM2fO6MiRIwoKCtKSJUvsXk6jbsRs5MiRevjhh21eDZqDSCCgeDwenTp1yrpdaf3TSJsqOTlZEyZM8PlxERERxlt1tmV0evXq5bfjB63tueee8xoQ2J4NGDDA+P+3I9+syOG5+fy0NlJeXm7HyyIAVVdXy+12W2FoyV3pJkyY0OKzawA7RERE2PK67Emg3fF4PCopKbGiUFxcfMu59o0JCQmx5g7d4HA4NHHiRG5bCviISKBduHLligoKCpSXlyeXy+XTQeiQkBAlJiYqLi5OOTk5t5z+GhwcrKlTp2rAgAGtvWzgjkckYAuPx6Pz589bewuFhYXWef9NERUVJafTKafTqbi4OFVVVWnTpk06d+6c13YhISGaNm2aEhMTW/tHADoEIoE2U1NToxMnTig/P18ul8trTtDtBAcHKyEhwQpD9+7dre+dP39eGzduvOVgbufOnTV9+vQ2m30E3ImIBPzqwoUL1t7CiRMnfBrx3L17dysK8fHxDd6N7syZM9q4ceMtB7PDw8OVlpbGOAaghYgEWlVtba2KioqsMPhyq8igoCDFx8dbYYiMjGz0TmhVVVXasGGDLl++7PX1yMhIpaWleV3sBqB5iARarLy83IpCQUHBLWcWNSY8PNyKQkJCgk83tzl69Ogtgejdu7emT5+usLCwJj8PADMiAZ/V1dVZc5Dy8/MbvfHLzRwOh/r27WuFITo6utn3Tb75XsX9+vXTtGnT1KlTp2Y9H4BbcTEdmqSqqkoul8s66HzzX/CNCQsLU1JSkpxOpxITE1t1bPehQ4d07NgxxcfHa9SoUa0yYRRoj+y6mI5IoEEtHX/Rp08fa2+hd+/ezd5bAHANV1zboP6BzUCZheNPly5dssZfuFwun8ZfdOrUydpbSEpK4pgAcIfo0JHo6Fo6/iI6OlrJyclyOp2KjY1t12OgATQPkehgrly54jUsr7KyssmPvTH+4sbegl27vwDaDpG4w3k8HpWWllpRKCoqatH4i5bexB5AYCESdyB/jb8A0PEQiTuEv8dfAOiYiESAunr1qtf4i/Pnzzf5sb6OvwDQcRGJmxw4cEDvvPOOdu/erZMnTyo0NFTJycn63ve+p3nz5tk6D8iu8RcAOq4OfTHdzddJLFu2TH/605+MB3b79u2rNWvWaOzYsW2yvrq6OhUXF1thsGv8BQD7ccW1DepH4rXXXtOiRYskScnJyRo9erRCQ0N1+PBhHTx40OsxW7Zs8dttMCsrK63xF26326fxF126dLGi0NrjLwDYi0jYoH4kQkNDFRQUpDfffFMzZszw2m7Pnj166qmnVFxcLElKSUnR559/3ioHeBl/AaApiIQNbj6+8M477ygtLa3BbXNycvTAAw9Yf9mvWLFCc+bMadbrejwe5ebm6tixY4y/ANAkRMIG9SMxfvx4ffLJJ41uv3jxYv31r3+VJI0ZM0bbtm1r1utu3bpVhw4davL2MTEx1t4C4y+AjokBfzabNWvWbbd5/PHHrUhkZGSosrJSXbt29el1amtrdfjw4Ua3YfwFgPaCSFyXmpp6221SUlIUHh6uiooK1dbWKisry+cznYKDgxUVFaWzZ896fZ3xFwDaIyJxXXx8/G23uXFa6ddffy1JOnfuXLNe6/vf/77S09N19epVxcXFKSkpST169GjWcwGAPxGJ65p6ALj+20vNPa4SERGhKVOmNOuxANCWOAJ6XVVVVZO2qz9am2MFAO50ROK6wsLC227j8Xh08uRJ6/OePXv6c0kAYDsicd3+/ftvu012drb1FlNwcLCGDh3q72UBgK2IxHXr16+/7TYffvih9fHIkSN9Pv0VAAINkbhu586d2rx5s/H7R48e1VtvvWV9/uSTT7bBqgDAXkTiutDQUM2fP18bNmy45Xt79+7V9OnTVV1dLUkaPHiwZs6c2dZLBIA2x1iO61599VU9//zzkqRvfOMbGj16tEJCQpSdna2MjAxru/DwcH388ce655572ny9ADouZjfZ4Ob7Sbz88sv685//LNM/SWxsrNasWaNx48a11RIBQBKRsMXNkZCkffv26R//+IfS09N16tQphYSEeN2Zrnv37nYtF0AHRiQAAEZ2RYID1wAAIyIBADAiEgAAIyIBADAiEgAAIyIBADAiEgAAIyIBADAiEgAAIyIBADAiEgAAIyIBADAiEgAAIyIBADAiEgAAIyIBADAiEgAAIyIBADAiEgAAIyIBADAiEgAAIyIBADAiEgAAIyIBADAiEgAAIyIBADAiEgAAIyIBADAiEgAAIyIBADAiEgAAIyIBADAiEgAAIyIBADAiEgAAIyIBADByeDwej92LAAC0T+xJAACMiAQAwIhIAACMiAQAwIhIAACMiAQAwIhIAACMiAQAwIhIAACMiAQAwIhIAACMiAQAwIhIAACMiAQAwIhIAACMiAQAwIhIAACMiAQAwIhIAACMiAQAwIhIAACMiAQAwIhIAACMiAQAwIhIAACMiAQAwIhIAACMiAQAwIhIAACMiAQAwIhIAACMiAQAwIhIAACMiAQAwIhIAACMiAQAwIhIAACMiAQAwIhIAACMiAQAwIhIAACMiAQAwIhIAACMiAQAwIhIAACMiAQAwIhIAACMiAQAwIhIAACMiAQAwIhIAACMiAQAwIhIAACMiAQAwIhIAACMiAQAwIhIAACMiAQAwIhIAACMiAQAwIhIAACMiAQAwIhIAACMiAQAwIhIAACMiAQAwIhIAACMiAQAwIhIAACMiAQAwIhIAACMiAQAwIhIAACMiAQAwIhIAACM/g9h0eKmHgJRdwAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "width, height, x, y = [1.11, 0.81, 0.17, 0.56]\n", - "ax = diagram(width, height)\n", - "bbox = frame.draw(ax, x, y)\n", - "# adjust(x, y, bbox)" - ] - }, - { - "cell_type": "markdown", - "id": "c676fde9", - "metadata": {}, - "source": [ - "The association of a variable with an object is called a **reference**.\n", - "In this example, there are two references to the same object.\n", - "\n", - "An object with more than one reference has more than one name, so we say the object is **aliased**.\n", - "If the aliased object is mutable, changes made with one name affect the other.\n", - "In this example, if we change the object `b` refers to, we are also changing the object `a` refers to." - ] - }, - { - "cell_type": "code", - "execution_count": 55, - "id": "6e3c1b24", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[5, 2, 3]" - ] - }, - "execution_count": 55, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "b[0] = 5\n", - "a" - ] - }, - { - "cell_type": "markdown", - "id": "e3ef0537", - "metadata": {}, - "source": [ - "So we would say that `a` \"sees\" this change.\n", - "Although this behavior can be useful, it is error-prone.\n", - "In general, it is safer to avoid aliasing when you are working with mutable objects.\n", - "\n", - "For immutable objects like strings, aliasing is not as much of a problem.\n", - "In this example:" - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "id": "dad8a246", - "metadata": {}, - "outputs": [], - "source": [ - "a = 'banana'\n", - "b = 'banana'" - ] - }, - { - "cell_type": "markdown", - "id": "952bbf60", - "metadata": {}, - "source": [ - "It almost never makes a difference whether `a` and `b` refer to the same\n", - "string or not." - ] - }, - { - "cell_type": "markdown", - "id": "35045bef", - "metadata": {}, - "source": [ - "## List arguments\n", - "\n", - "When you pass a list to a function, the function gets a reference to the\n", - "list. If the function modifies the list, the caller sees the change. For\n", - "example, `pop_first` uses the list method `pop` to remove the first element from a list." - ] - }, - { - "cell_type": "code", - "execution_count": 57, - "id": "613b1845", - "metadata": {}, - "outputs": [], - "source": [ - "def pop_first(lst):\n", - " return lst.pop(0)" - ] - }, - { - "cell_type": "markdown", - "id": "4953b0f9", - "metadata": {}, - "source": [ - "We can use it like this." - ] - }, - { - "cell_type": "code", - "execution_count": 58, - "id": "3aff3598", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'a'" - ] - }, - "execution_count": 58, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "letters = ['a', 'b', 'c']\n", - "pop_first(letters)" - ] - }, - { - "cell_type": "markdown", - "id": "ef5d3c1e", - "metadata": {}, - "source": [ - "The return value is the first element, which has been removed from the list -- as we can see by displaying the modified list." - ] - }, - { - "cell_type": "code", - "execution_count": 59, - "id": "c10e4dcc", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['b', 'c']" - ] - }, - "execution_count": 59, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "letters" - ] - }, - { - "cell_type": "markdown", - "id": "e5288e08", - "metadata": {}, - "source": [ - "In this example, the parameter `lst` and the variable `letters` are aliases for the same object, so the state diagram looks like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 60, - "id": "a13e72c7", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "lst = make_list('abc', dy=-0.3, offsetx=0.1)\n", - "binding1 = Binding(Value('letters'), draw_value=False)\n", - "frame1 = Frame([binding1], name='__main__', loc='left')\n", - "\n", - "binding2 = Binding(Value('lst'), draw_value=False, dx=0.61, dy=0.35)\n", - "frame2 = Frame([binding2], name='pop_first', loc='left', offsetx=0.08)\n", - "\n", - "stack = Stack([frame1, frame2], dx=-0.3, dy=-0.5)" - ] - }, - { - "cell_type": "code", - "execution_count": 61, - "id": "1a06dae9", - "metadata": { - "tags": [ - "remove-input" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "[2.04, 1.24, 1.06, 0.85]" - ] - }, - "execution_count": 61, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAqAAAAGwCAYAAAB2AtfDAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAC4jAAAuIwF4pT92AABFNklEQVR4nO3deVxU1/3/8fewq4C4oEaN4r5h1MQVxRUVUBuTZrXfGFPNbrP0l5i0+TaJJk1t0rQ11X6TxtbEJM1STTVVwKCCigIq7ivEAK4I4sK+CPP7wy/3y8iwqHCH5fV8PPJ43Jlz5s4Ho8N7zr3nHIvVarUKAAAAMImTowsAAABA00IABQAAgKkIoAAAADAVARQAAACmIoACAADAVARQAAAAmIoACgAAAFMRQAEAAGAqAigAAABMRQAFAACAqQigAAAAMBUBFAAAAKYigAIAAMBUBFAAAACYigAKAAAAUxFAAQAAYCoCKAAAAExFAAUAAICpCKAAAAAwFQEUAAAApiKAAgAAwFQEUAAAAJiKAAoAAABTEUABAABgKgIoAAAATEUABQAAgKkIoAAAADAVARQAAACmIoACAADAVARQAAAAmIoACgAAAFMRQAEAAGAqAigAAABMRQAFAACAqQigAAAAMBUBFAAAAKYigAIAAMBUBFAAAACYigAKAAAAUxFAAQAAYCoCKAAAAExFAAUAAICpCKAAAAAwFQEUAAAApiKAAgAAwFQEUAAAAJiKAAoAAABTEUABAABgKgIoAAAATEUABQAAgKkIoAAAADAVARQAAACmIoACAADAVARQAAAAmIoACgAAAFMRQAEAAGAqAigAAABMRQAFAACAqQigAAAAMBUBFAAAAKYigAIAAMBUBFAAAOoJPz8/WSwWWSwWpaSkVGifM2eO0f7JJ5+YXh9QWwigAAAAMJWLowsAAAD1j8ViMY6tVqsDK0FjxAgoAAAATGWx8rUGAIB6wc/PT6mpqZKk5ORk+fn5OawWRkBRlxgBBQAAgKkIoAAAADAVARQAgAaipsswWa1WrVmzRrNmzVKfPn3k7e0tZ2dntWjRQn5+fpo4caJeeeUVRUVFqbS01HhddHS0cf7yyp67/j97S0UBNcEseAAAGpHz58/rnnvuUWxsbIW2vLw8paamKjU1VVFRUXr33XcVGRmpoKAgB1SKpowACgBAI1FSUqJp06YpISHBeM7f31/+/v7y8fFRQUGB0tLStH//fp07d67C6zt16qRnn31WkrRs2TLj+bLnruft7V3LPwGaCgIoAACNxLp164zwedttt+nf//63RowYYbfv4cOH9dlnn9mEyF69emnp0qWSbANo2XNAbSGAAgDQSGzbts04XrRoUaXhU5IGDBigxYsXm1EWUAGTkAAAaCSysrKMY19fXwdWAlSNAAoAQCNx++23G8cff/yxSkpKHFgNUDkCKAAAjcR9990nJ6drv9rXr18vf39/vffeezp06BC7GaFeIYACANBI9OvXT++++66xjuexY8e0YMECDRw4UG3atNH06dP13nvvKTEx0cGVoqkjgAIA0Ij8v//3/xQVFaVJkybZLCh/6dIlrV+/XgsWLFCfPn0UFBSkgwcPOrBSNGUEUAAAGplx48Zp48aNOnfunL7++ms999xzuvPOO43L85K0adMmjRgxQtu3b3dgpWiqCKAAADRS7du31wMPPKAlS5YoISFBaWlp+vOf/6w2bdpIkvLz8/Xkk086uEo0RQRQAACaCF9fXz3//PNau3at8dzhw4f1448/OrAqNEUEUAAAmpjRo0erdevWxuPz589X6OPh4WEcFxcXm1IXmg4CKAAAjcSFCxdq1O/y5cvKyckxHrdr165Cn7LL9JJ05syZWy8OKIcACgBAI/HAAw9o+vTpWrVqlfLy8uz2OXPmjGbNmqWioiJJUu/evdWjR48K/fz9/Y3jf/3rX3VTMJos9oIHAKCRKC0t1fr167V+/Xq5ublpwIAB6t27t1q2bKns7GydPHlSsbGxKi0tlSQ5OztryZIlds/105/+VBs2bJAkvfLKKwoPD9eAAQPk7u5u9HnttdfUqlWruv/B0OgQQAEAaCS8vLyM46KiIu3du1d79+6127ddu3b629/+puDgYLvtc+bM0eeff66tW7fKarUqKipKUVFRNn3mz59PAMVNIYACANBIfPfdd9q7d682bdqk+Ph4HT16VKdPn1Zubq7c3d3l6+urO+64Q6GhoZo1a5a8vb0rPZerq6s2btyov//971q9erUOHTqkixcvGpfugVthsbI5LAAAAEzEJCQAAACYigAKAAAAUxFAAQAAYCoCKAAAAExFAAUAAICpCKAAAAAwFQEUAAAApiKAAgAAwFQEUAAAAJiKAAoAAABTEUABAABgKhdHFwA0FtnZ2Y4uAbDLy8vL0SUAgA0CKAAADsSXVziSo76gcgkeAAAApiKAAgAAwFQEUAAAAJiKAAoAAABTEUABAABgKgIoAAAATEUABQAAgKkIoAAAADAVARQAAACmIoACAADAVARQAAAAmIoACgAAAFMRQAEAAGAqAigAAABMRQAFAACAqQigAAAAMBUBFAAAAKYigAIAAMBUBFAAAACYigAKAAAAUxFAAQAAYCoCKAAAAExFAAUAAICpCKAAAAAwFQEUAAAApiKAAgAAwFQEUAAAAJiKAAoAAABTEUAbsZSUFFksFlksFvn5+Tm6HAAAAEkEUKBR8ff3l7e3t7y9vZWamurocgAAsIsACgAAmpzQ0FDjC7sZUlNTjfd76qmnTHnP+owACuCmlf9A9ff3r7PXAAAaFxdHF4C64+fnJ6vV6ugyAAAAbDACCgAAAFMxAgoAACRJRUVF2r17t5KSkpSVlSWLxaJWrVqpT58+GjJkiJydnR1dIhoJRkD/V3R0tLFk0fjx443n161bp3vvvVd+fn7y8PBQmzZtFBISorCwsArnKC0t1dq1azV9+nR169ZNHh4euu2223T//fcrLi6uRnXk5+drzZo1eu655zRmzBi1b99ebm5u8vT0lJ+fn+655x79/e9/V1FRUbXnqukyTGV9LBaL8dzx48f1wgsvqF+/fvL09JS3t7cGDRqkX/3qV7pw4UKNfhYAQMORlZWllStXKi4uTpmZmbJarSopKdH58+e1detWffnllyooKHB0mWgkGAGtRF5enubOnauvvvrK5vnCwkJFREQoIiJCb7zxht58801JUkZGhmbOnKkdO3bY9E9LS9OqVau0evVqffDBB5o/f36l7xkfH6+goCDl5ORUaCsuLlZubq5SU1O1Zs0avf322/r22281ZMiQW/9hr/Phhx/qhRdeUGFhoc3zBw4c0IEDB/Txxx8rIiJCQ4cOrfX3hnmKi4u1atUqRUREaO/evbpw4YJKS0vl6+uroUOH6t5779X06dNtvpiU+eKLL/T000/bPHfy5MlKZ5NmZWXd1Gsqc/z4cX311VeKiorSqVOndPnyZXl7e8vPz0+TJk3S3Llzddttt1X584eGhiomJkaStH79egUGBiotLU2ff/651q1bp9OnT+vChQvy8vLSqVOnbF57+vRpffbZZ9qyZYuSkpJ05coVWa1WeXp6qlOnTurbt68CAgI0Y8YMtW/fvso6UHcyMjK0fft2ubq6avDgwerUqZOjS6q3SktLtWbNGmVlZalFixYKDg5W165dZbValZiYqMjISKWnpys8PFz33HOPo8s1zZUrV/T9998rJiZGBw4cUHJysrKzs40BqbvuukszZszQzJkz5eTEmN6NIIBWoix8uri4aPTo0erZs6fy8vK0efNmnT9/XpK0cOFC9enTRzNnztSUKVO0b98+eXh4aOzYserSpYsuX76sTZs26dKlS7JarXruued01113adSoUXbf89KlS0b4bNeunQYMGKDOnTurRYsWysvL0w8//KCdO3fq6tWrSklJ0bhx47Rnzx717Nmz1n7uTz75xAgJffr00dChQ9WsWTMdO3ZM27dvl9VqVWZmpn7yk5/o6NGjatmyZa29N8yzbds2zZ8/X8nJyRXaUlNTlZqaqtWrV2vYsGH67LPP1LFjRwdUWVFhYaFeeeUVffrppyopKbFpy8zMVGZmphISEvSXv/xFixYt0pNPPlnjc69fv15PP/20Ll++XGW/FStW6NVXX1V+fn6FtkuXLunSpUs6dOiQVq1apW+++Ubff/99jWtA7SkpKdGXX36pS5cuSZJ2796tXr16ady4cQRROw4fPmxc3ZoxY4bxb95isahPnz6yWq0KCwtTcnKyTp48qS5dujiyXFN89913mjt3boXBGOnaF/js7GylpKRo9erVGjhwoL744gs2fbkBBFA74uLiVFhYqICAAH322Wfq3r270Zafn69HH31U//rXvyRJb7zxhmJjY7Vv3z7dc889+vDDD9WuXTuj/6VLlzRz5kxt3bpVVqtVr732mjZv3mz3fVu1aqVf//rXevjhhytdniY9PV0vvfSSPvvsM2VnZ+upp57Sxo0ba+1nf+qpp+Tr66uVK1cqODjYpm3r1q2aMWOGsrKydO7cOS1ZskSvv/56rb03zPHvf/9b8+bNU3FxsSSpWbNmGjZsmLp06SInJyebLzq7du1SUFCQoqOjbf5e9+7dW48//rhycnL05ZdfSpK8vLz00EMPVfq+N/Oa8nJzc3XPPffY3M7SrVs3DRkyRD4+Prp06ZLi4uJ07tw55efn6+WXX1Z2drZeeumlas8dHx+v3/3udyouLlbr1q01evRotWnTRhkZGTpw4IDRb926dXr++eeNx97e3ho2bJg6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2S019uTl5en55583oaLGhwBaT/Tt21ePPPKI8fj9999Xjx49dPfdd+vxxx/X5MmT1bVrV61du1ZeXl56//33HVgtGqr33nvPuB8wKipKwcHBVW6xmZSUpN///vfy9/e3uxC9u7u7cTm8uLhY69atq7aGm3nNmDFjNGvWLEnXZrTff//9ev/99ytd7qSgoEDr1q3TQw89pAcffLDa89fEvn375O/vr3feeafS/cVLSkq0evVqffTRR8ZzkydPrpX3x40pKCio9P8TwdO+li1bavbs2Ro5cqTatGkji8UiZ2dntW/fXmPHjtXDDz9scwWjMSt/FeOf//yn/vKXv1RYCeTEiROaOXOm9u3bx6DQTeAe0Hrkf/7nf5SWlmbsWHPu3LkKl+M7d+6sr776igXgcVP69++vv//973rssceUl5en3bt3a9KkSerWrZsGDx6sVq1aqaCgQBkZGTp8+LDN5LjK3H333frDH/4gSZo3b56++OILde/e3WbDgt/+9re3/JolS5YoLS1NmzdvVlFRkRYuXKj33ntPQ4cOVefOneXu7q4rV64oOTlZR44cMRaNHjJkyM39YdmRlpamxYsXa/HixWrfvr0GDhyo9u3by8XFRenp6dq3b5/NvWMBAQG67777au39UXOurq5q1aqVzch9U77Hs6bc3NwUEBCggIAAR5fiUJMmTdLo0aO1fft2Wa1Wvfbaa/r44481aNAgeXt768SJE4qPj1dJSYk6duyop59+Wr/5zW8cXXaDQgCtR5o3b67w8HD985//1Keffqq9e/cqKytLbdu2Vffu3fXTn/5Uc+bMUatWrRQdHe3octFAhYSEKDIyUvPnz9fevXsl/d/OL5Xp2rVrpb+0n3/+eX333XdKTExUcXGxzZafZa4PkzfzGnd3d61evVq/+93vtHTpUuXl5SkvL6/KFSFcXV01dOjQSttvhIeHh1xcXIzZ6OfPn6/y8v7MmTO1bNkytsF0EGdnZz388MPasWOHXFxcNHjwYIInbsinn36q++67T/v27ZMkpaSkGCsBlOnbt69WrlyphIQE8wts4CxWFpcDakV9WAfO39/fmDxw8ODBapdL2bRpk9atW6f4+HidO3dOV65ckbu7u9q2bauePXtq6NChCgoK0vDhw6ucvZ6Tk6Ply5drw4YNOn78uK5cuWIzSm9vMfmbeU2ZCxcu6Msvv1RUVJSOHz+uzMxMFRcXy8vLS126dFH//v0VGBioqVOnVrrLUWhoqGJiYiRdWy6p7P7Yqly6dEnR0dGKjY3VgQMHlJycrIsXL6qkpEReXl7q1q2bhg0bpgcffLDWgm9t8PLycnQJqEJ9+OyAfYWFhfr000+1evVqHT16VHl5efL19VWvXr1077336oEHHlDz5s1tFqKfNWuWPvzwQwdXXnOO+nwggAK1hF8iqK8IoPUbnx1wJEd9PnBtCAAAAKYigAIAAMBUBFAAAACYymGz4JOSkrRkyZKbfn3ZdnylpaW3NMt06dKlN/1a/J+LFy/q9ddfv6VzlM3C7tat2y2dZ9GiRWrduvUtnQMAANQdh01Cio6O1oQJExzx1jaYg1U7UlJSbjk41pbk5GSbXSzMwkQC1FdMQqrf+OyAIzEJCQAAAE0CyzABtYRRDNRXjIDWb3x2wJEYAQUAAECTQAAFAACAqQigAAAAMBUBFAAAAKYigAIAAMBUBFAAAACYigAKAAAAUxFAAQAAYCoCKAAAAExFAAUAAICpCKAAAAAwFQEUAAAApiKAAgAAwFQEUAAAAJiKAAoAAABTEUABAABgKgIoAAAATEUABQAAgKkIoAAAADAVARQAAACmIoACAADAVARQAAAAmIoACgAAAFMRQAEAAGAqAigAAABMRQAFAACAqQigAAAAMBUBFAAAAKZycXQBQGPh5eXl6BIAAGgQGAEFAACAqQigAAAAMBWX4AEATY7ValVhYaHy8/OVl5en/Px85ebm6vTp03JxcdG4cePk4eHh6DKBRstitVqtji4CAIDakpGRoeTkZOXn51f5X1W//po3b66XXnpJFoulzuvNzs6u8/cAKuOo+QuMgAIAGo19+/Zp7dq1t3yevLw8ZWZmqm3btrVQFYDrcQ8oAKDR2L17d62cx2KxqHXr1rVyLgAVEUABAI2Gr69vrZxn8uTJcnLiVyRQV7gEDwBoNIKDg+Xu7q7z58/L3d1dzZo1M/4rLS3VsWPHlJaWVuU5evXqpZEjR5pUMdA0MQkJANCoFRUVadu2bYqNjVVJSUmVfd3c3PTMM8+oZcuWJlXHJCQ4FpOQAACoRVarVUeOHNH333+vrKysGr1m0qRJpoZPoKkigAIAGp309HSFh4crJSXFbnuzZs2Un59v89ztt9+uYcOGmVAdAAIoAKDRKCgo0JYtWxQfH293nU8nJycNGzbMWCe0jLOzs2bMmGHKup8ACKAAgEbAarVq//792rhxo3Jzc+326d69u4KDg3X8+HGlp6fbtAUGBtbaDHoA1SOAAgAatHPnziksLEynT5+2296yZUtNnTpVffv21cWLFxUdHW3T3q5dO40ZM8aESgGUIYACABqkvLw8bd68WQkJCXbbnZ2dNXr0aI0ZM0aurq6yWq36z3/+U2Em/IwZM+Ts7GxGyQD+FwEUANCglJaWas+ePdq8eXOFiURlevfuralTp9rsZrRnzx6lpqba9BsxYoQ6d+5cp/UCqIgACgBoME6dOqWwsLBKF5Nv3bq1goOD1atXrwpt27dvt3ncsmVLTZw4sU7qBFA1AigAoN7LycnRxo0btX//frvtrq6uCgwM1KhRo+TiUvFXW2lpaYXJSdOnT5ebm1ud1AugagRQAEC9VVJSol27dik6OlqFhYV2+wwYMECTJ0+ucgF5JycnjRs3Ths3bpTVatX48ePVs2fPuiobQDXYihMAUC8lJycrPDxcGRkZdtt9fX0VEhKibt261ficV65ckcVikbe3d22VecvYihOOxFacAADoWkiMjIzU4cOH7ba7ublp/PjxGj58+A3PXmebTaB+IIACAOqFq1evKjY2Vtu2bVNxcbHdPoMGDVJQUJA8PT1Nrg5AbSKAAgAcLikpSREREbp48aLd9g4dOig0NFS33367yZUBqAsEUACAw1y6dEkRERFKTEy02+7h4aFJkybpzjvvlJOTk8nVAagrBFAAgOmKi4sVExOj7du3V9iZqMxdd92liRMnqnnz5iZXB6CuEUABAKaxWq06duyYNmzYoCtXrtjt07lzZ4WEhKhjx44mVwfALARQAIApLly4oPDwcP34449221u0aKGgoCANGjRIFovF5OoAmIkACgCoU4WFhdqyZYvi4+NVWlpaod1isWj48OEaP368PDw8HFAhUFFoaKhiYmIkSevXr1dgYKCDK2pcuKMbAFAnrFarDhw4oKVLlyo2NtZu+PTz89NTTz2l4OBgwidMFRoaKm9vb1M3Jdi2bZvxnu+8845p71sfMQIKAKh1aWlpCg8P18mTJ+22e3l5acqUKRowYACX24EmiAAKAKg1+fn5ioqK0u7du2Vvp2cnJycFBAQoMDBQbm5uDqgQQH1AAAUA3DKr1aq9e/dq06ZNysvL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r5+4UH4Wdk3OJ8lmcfTqJkLUZOvO6/u5u7s3iQBaxsfHRz/5yU/07rvvaseOHbpw4YJWrFhh3JZQUlKiZ555Rvn5+Q6utHGyWCyaPXu2du7cqYSEBH3wwQeaNWuWza0mxcXFWrlypSZMmFDtbScAANyIBhdA4+Liqu1z6NAh43K2s7OzBg0aZNM+ZMgQ43jHjh01et/y/e68884q+2ZkZOjEiRPVnrP8cjiDBw9u0pMsvL29NWfOHG3evNlYYufChQs2f0ZlmvKfU13o1auX5syZow8//FAHDhxQQkKC5s+fbyy9lJycrN/97ncOrhIA0Jg0uABatitRVVauXGkcDxs2rMK9lhMnTjSOw8LClJ6eXuX5zp49q/DwcLuvr8xnn312Q30mTJhQbf+moEePHhowYIDx+Pz58xX6eHh4GMfFxcWm1NWU9OrVS++8845+/etfG8+V//tfhi8CAICb1eACaHR0tFatWlVp+9GjR40tGyUZuw2VN2XKFHXr1k3StdnnL7zwQqXns1qt+sUvfmEEnR49eigoKKjaOv/4xz8ai93b88knnxjbY1osFs2dO7faczZkNb2EW1JSonPnzhmP27VrV6FPmzZtjOP6MnO7MQoNDTWO7X1JK78YPF8EAAA3osEFUDc3N82ePVtffvllhbbY2FhNnTpVBQUFkq7tivTII49U6Ofk5KTFixcbj7/88ks9/vjjNrPjpWuz0h977DF9++23xnPvvvtuldtwltWYnZ2tyZMn210zdMWKFXryySeNx3Pnzq3RuqEN2csvv6yxY8dq5cqVunz5st0+mZmZxh7j0rXL8vbWafX39zeOmah042o6u/306dPGsb3dq8rv817+SwMAANVpcHvBv/vuu3rhhRc0a9YsvfHGGxoxYoRcXV116NAhY0RRujbT/dNPP610DcEHHnhAW7du1bJlyyRJy5cv19dff60JEyaoffv2Sk9P16ZNm2xC6QsvvKB777232hpHjRql1q1b69///reGDh2qkSNHql+/fiosLFRsbKx+/PFHo2+/fv30hz/84Wb/OBoMq9Wqbdu2adu2bXJ2dlbfvn3Vr18/tWrVSvn5+Tpz5oy2b99uswXjH/7wB7vLPP30pz/VRx99JEn661//qoSEBN155502y189/fTTVW6F2pT1799fDz30kO6//34FBATY/UK1Z88evfzy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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "width, height, x, y = [2.04, 1.24, 1.06, 0.85]\n", - "ax = diagram(width, height)\n", - "bbox1 = stack.draw(ax, x, y)\n", - "bbox2 = lst.draw(ax, x+0.5, y)\n", - "bbox = Bbox.union([bbox1, bbox2])\n", - "adjust(x, y, bbox)" - ] - }, - { - "cell_type": "markdown", - "id": "c1a093d2", - "metadata": {}, - "source": [ - "Passing a reference to an object as an argument to a function creates a form of aliasing.\n", - "If the function modifies the object, those changes persist after the function is done." - ] - }, - { - "cell_type": "markdown", - "id": "88c07ec9", - "metadata": { - "tags": [ - "section_word_list" - ] - }, - "source": [ - "## Making a word list\n", - "\n", - "In the previous chapter, we read the file `words.txt` and searched for words with certain properties, like using the letter `e`.\n", - "But we read the entire file many times, which is not efficient.\n", - "It is better to read the file once and put the words in a list.\n", - "The following loop shows how." - ] - }, - { - "cell_type": "code", - "execution_count": 89, - "id": "6550f0b8", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "'words.txt'" - ] - }, - "execution_count": 89, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "download('https://raw.githubusercontent.com/AllenDowney/ThinkPython/v3/words.txt');" - ] - }, - { - "cell_type": "code", - "execution_count": 63, - "id": "e5a94833", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "113783" - ] - }, - "execution_count": 63, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "word_list = []\n", - "\n", - "for line in open('words.txt'):\n", - " word = line.strip()\n", - " word_list.append(word)\n", - " \n", - "len(word_list)" - ] - }, - { - "cell_type": "markdown", - "id": "44450ffa", - "metadata": {}, - "source": [ - "Before the loop, `word_list` is initialized with an empty list.\n", - "Each time through the loop, the `append` method adds a word to the end.\n", - "When the loop is done, there are more than 113,000 words in the list.\n", - "\n", - "Another way to do the same thing is to use `read` to read the entire file into a string." - ] - }, - { - "cell_type": "code", - "execution_count": 64, - "id": "32e28204", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "1016511" - ] - }, - "execution_count": 64, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "string = open('words.txt').read()\n", - "len(string)" - ] - }, - { - "cell_type": "markdown", - "id": "65718c7f", - "metadata": {}, - "source": [ - "The result is a single string with more than a million characters.\n", - "We can use the `split` method to split it into a list of words." - ] - }, - { - "cell_type": "code", - "execution_count": 65, - "id": "4e35f7ce", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "113783" - ] - }, - "execution_count": 65, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "word_list = string.split()\n", - "len(word_list)" - ] - }, - { - "cell_type": "markdown", - "id": "1b5b25a3", - "metadata": {}, - "source": [ - "Now, to check whether a string appears in the list, we can use the `in` operator.\n", - "For example, `'demotic'` is in the list." - ] - }, - { - "cell_type": "code", - "execution_count": 66, - "id": "a778a62a", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 66, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "'demotic' in word_list" - ] - }, - { - "cell_type": "markdown", - "id": "9df6674d", - "metadata": {}, - "source": [ - "But `'contrafibularities'` is not." - ] - }, - { - "cell_type": "code", - "execution_count": 67, - "id": "63341c0e", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 67, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "'contrafibularities' in word_list" - ] - }, - { - "cell_type": "markdown", - "id": "243c25b6", - "metadata": {}, - "source": [ - "And I have to say, I'm anaspeptic about it." - ] - }, - { - "cell_type": "markdown", - "id": "ce9ffd79", - "metadata": {}, - "source": [ - "## Debugging\n", - "\n", - "Note that most list methods modify the argument and return `None`.\n", - "This is the opposite of the string methods, which return a new string and leave the original alone.\n", - "\n", - "If you are used to writing string code like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 68, - "id": "88872f14", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'plumage'" - ] - }, - "execution_count": 68, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "word = 'plumage!'\n", - "word = word.strip('!')\n", - "word" - ] - }, - { - "cell_type": "markdown", - "id": "d2117582", - "metadata": {}, - "source": [ - "It is tempting to write list code like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 69, - "id": "e28e7135", - "metadata": {}, - "outputs": [], - "source": [ - "t = [1, 2, 3]\n", - "t = t.remove(3) # WRONG!" - ] - }, - { - "cell_type": "markdown", - "id": "991c439d", - "metadata": {}, - "source": [ - "`remove` modifies the list and returns `None`, so next operation you perform with `t` is likely to fail." - ] - }, - { - "cell_type": "code", - "execution_count": 70, - "id": "97cf0c61", - "metadata": { - "tags": [ - "raises-exception" - ] - }, - "outputs": [ - { - "ename": "AttributeError", - "evalue": "'NoneType' object has no attribute 'remove'", - "output_type": "error", - "traceback": [ - "\u001b[0;31mAttributeError\u001b[0m\u001b[0;31m:\u001b[0m 'NoneType' object has no attribute 'remove'\n" - ] - } - ], - "source": [ - "%%expect AttributeError\n", - "\n", - "t.remove(2)" - ] - }, - { - "cell_type": "markdown", - "id": "c500e2d8", - "metadata": {}, - "source": [ - "This error message takes some explaining.\n", - "An **attribute** of an object is a variable or method associated with it.\n", - "In this case, the value of `t` is `None`, which is a `NoneType` object, which does not have a attribute named `remove`, so the result is an `AttributeError`.\n", - "\n", - "If you see an error message like this, you should look backward through the program and see if you might have called a list method incorrectly." - ] - }, - { - "cell_type": "markdown", - "id": "f90db780", - "metadata": {}, - "source": [ - "## Glossary\n", - "\n", - "**list:**\n", - " An object that contains a sequence of values.\n", - "\n", - "**element:**\n", - " One of the values in a list or other sequence.\n", - "\n", - "**nested list:**\n", - "A list that is an element of another list.\n", - "\n", - "**delimiter:**\n", - " A character or string used to indicate where a string should be split.\n", - "\n", - "**equivalent:**\n", - " Having the same value.\n", - "\n", - "**identical:**\n", - " Being the same object (which implies equivalence).\n", - "\n", - "**reference:**\n", - " The association between a variable and its value.\n", - "\n", - "**aliased:**\n", - "If there is more than one variable that refers to an object, the object is aliased.\n", - "\n", - "**attribute:**\n", - " One of the named values associated with an object." - ] - }, - { - "cell_type": "markdown", - "id": "e67864e5", - "metadata": {}, - "source": [ - "## Exercises\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "a4e34564", - "metadata": { - "tags": [ - "remove-print" - ] - }, - "outputs": [], - "source": [ - "# This cell tells Jupyter to provide detailed debugging information\n", - "# when a runtime error occurs. Run it before working on the exercises.\n", - "\n", - "%xmode Verbose" - ] - }, - { - "cell_type": "markdown", - "id": "ae9c42da", - "metadata": {}, - "source": [ - "### Ask a virtual assistant\n", - "\n", - "In this chapter, I used the words \"contrafibularities\" and \"anaspeptic\", but they are not actually English words.\n", - "They were used in the British television show *Black Adder*, Season 3, Episode 2, \"Ink and Incapability\".\n", - "\n", - "However, when I asked ChatGPT 3.5 (August 3, 2023 version) where those words came from, it initially claimed they are from Monty Python, and later claimed they are from the Tom Stoppard play *Rosencrantz and Guildenstern Are Dead*.\n", - "\n", - "If you ask now, you might get different results.\n", - "But this example is a reminder that virtual assistants are not always accurate, so you should check whether the results are correct.\n", - "As you gain experience, you will get a sense of which questions virtual assistants can answer reliably.\n", - "In this example, a conventional web search can identify the source of these words quickly.\n", - "\n", - "If you get stuck on any of the exercises in this chapter, consider asking a virtual assistant for help.\n", - "If you get a result that uses features we haven't learned yet, you can assign the VA a \"role\".\n", - "\n", - "For example, before you ask a question try typing \"Role: Basic Python Programming Instructor\".\n", - "After that, the responses you get should use only basic features.\n", - "If you still see features we you haven't learned, you can follow up with \"Can you write that using only basic Python features?\"" - ] - }, - { - "cell_type": "markdown", - "id": "31d5b304", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "Two words are anagrams if you can rearrange the letters from one to spell the other.\n", - "For example, `tops` is an anagram of `stop`.\n", - "\n", - "One way to check whether two words are anagrams is to sort the letters in both words.\n", - "If the lists of sorted letters are the same, the words are anagrams.\n", - "\n", - "Write a function called `is_anagram` that takes two strings and returns `True` if they are anagrams." - ] - }, - { - "cell_type": "markdown", - "id": "a882bfeb", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "To get you started, here's an outline of the function with doctests." - ] - }, - { - "cell_type": "code", - "execution_count": 71, - "id": "9c5916ed", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "def is_anagram(word1, word2):\n", - " \"\"\"Checks whether two words are anagrams.\n", - " \n", - " >>> is_anagram('tops', 'stop')\n", - " True\n", - " >>> is_anagram('skate', 'takes')\n", - " True\n", - " >>> is_anagram('tops', 'takes')\n", - " False\n", - " >>> is_anagram('skate', 'stop')\n", - " False\n", - " \"\"\"\n", - " return None" - ] - }, - { - "cell_type": "code", - "execution_count": 72, - "id": "5885cbd3", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def is_anagram(word1, word2):\n", - " \"\"\"Checks whether two words are anagrams.\n", - " \n", - " >>> is_anagram('tops', 'stop')\n", - " True\n", - " >>> is_anagram('skate', 'takes')\n", - " True\n", - " >>> is_anagram('tops', 'takes')\n", - " False\n", - " >>> is_anagram('skate', 'stop')\n", - " False\n", - " \"\"\"\n", - " return sorted(word1) == sorted(word2)" - ] - }, - { - "cell_type": "markdown", - "id": "a86e7403", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "You can use `doctest` to test your function." - ] - }, - { - "cell_type": "code", - "execution_count": 73, - "id": "ce7a96ec", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "from doctest import run_docstring_examples\n", - "\n", - "def run_doctests(func):\n", - " run_docstring_examples(func, globals(), name=func.__name__)\n", - "\n", - "run_doctests(is_anagram)" - ] - }, - { - "cell_type": "markdown", - "id": "8501f3ba", - "metadata": {}, - "source": [ - "Using your function and the word list, find all the anagrams of `takes`." - ] - }, - { - "cell_type": "code", - "execution_count": 74, - "id": "75e17c7b", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "skate\n", - "stake\n", - "steak\n", - "takes\n", - "teaks\n" - ] - } - ], - "source": [ - "# Solution\n", - "\n", - "for word in word_list:\n", - " if is_anagram(word, 'takes'):\n", - " print(word)" - ] - }, - { - "cell_type": "markdown", - "id": "7f279f2f", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "Python provides a built-in function called `reversed` that takes as an argument a sequence of elements -- like a list or string -- and returns a `reversed` object that contains the elements in reverse order." - ] - }, - { - "cell_type": "code", - "execution_count": 75, - "id": "aafa5db5", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 75, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "reversed('parrot')" - ] - }, - { - "cell_type": "markdown", - "id": "0f95c76f", - "metadata": {}, - "source": [ - "If you want the reversed elements in a list, you can use the `list` function." - ] - }, - { - "cell_type": "code", - "execution_count": 76, - "id": "06cbb42a", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['t', 'o', 'r', 'r', 'a', 'p']" - ] - }, - "execution_count": 76, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "list(reversed('parrot'))" - ] - }, - { - "cell_type": "markdown", - "id": "8fc79a2f", - "metadata": {}, - "source": [ - "Or if you want them in a string, you can use the `join` method." - ] - }, - { - "cell_type": "code", - "execution_count": 77, - "id": "18a73205", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'torrap'" - ] - }, - "execution_count": 77, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "''.join(reversed('parrot'))" - ] - }, - { - "cell_type": "markdown", - "id": "ec4ce196", - "metadata": {}, - "source": [ - "So we can write a function that reverses a word like this." - ] - }, - { - "cell_type": "code", - "execution_count": 78, - "id": "408932cb", - "metadata": {}, - "outputs": [], - "source": [ - "def reverse_word(word):\n", - " return ''.join(reversed(word))" - ] - }, - { - "cell_type": "markdown", - "id": "21550b5f", - "metadata": {}, - "source": [ - "A palindrome is a word that is spelled the same backward and forward, like \"noon\" and \"rotator\".\n", - "Write a function called `is_palindrome` that takes a string argument and returns `True` if it is a palindrome and `False` otherwise." - ] - }, - { - "cell_type": "markdown", - "id": "3748b4e0", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "Here's an outline of the function with doctests you can use to check your function." - ] - }, - { - "cell_type": "code", - "execution_count": 79, - "id": "9179d51c", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "def is_palindrome(word):\n", - " \"\"\"Check if a word is a palindrome.\n", - " \n", - " >>> is_palindrome('bob')\n", - " True\n", - " >>> is_palindrome('alice')\n", - " False\n", - " >>> is_palindrome('a')\n", - " True\n", - " >>> is_palindrome('')\n", - " True\n", - " \"\"\"\n", - " return False" - ] - }, - { - "cell_type": "code", - "execution_count": 80, - "id": "16d493ad", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def is_palindrome(word):\n", - " \"\"\"Check if a word is a palindrome.\n", - " \n", - " >>> is_palindrome('bob')\n", - " True\n", - " >>> is_palindrome('alice')\n", - " False\n", - " >>> is_palindrome('a')\n", - " True\n", - " >>> is_palindrome('')\n", - " True\n", - " \"\"\"\n", - " return reverse_word(word) == word" - ] - }, - { - "cell_type": "code", - "execution_count": 81, - "id": "33c9b4ec", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "run_doctests(is_palindrome)" - ] - }, - { - "cell_type": "markdown", - "id": "ad857abf", - "metadata": {}, - "source": [ - "You can use the following loop to find all of the palindromes in the word list with at least 7 letters." - ] - }, - { - "cell_type": "code", - "execution_count": 82, - "id": "fea01394", - "metadata": { - "tags": [ - "remove-output" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "deified\n", - "halalah\n", - "reifier\n", - "repaper\n", - "reviver\n", - "rotator\n", - "sememes\n" - ] - } - ], - "source": [ - "for word in word_list:\n", - " if len(word) >= 7 and is_palindrome(word):\n", - " print(word)" - ] - }, - { - "cell_type": "markdown", - "id": "11386f70", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "Write a function called `reverse_sentence` that takes as an argument a string that contains any number of words separated by spaces.\n", - "It should return a new string that contains the same words in reverse order.\n", - "For example, if the argument is \"Reverse this sentence\", the result should be \"Sentence this reverse\".\n", - "\n", - "Hint: You can use the `capitalize` methods to capitalize the first word and convert the other words to lowercase. " - ] - }, - { - "cell_type": "markdown", - "id": "13882893", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "To get you started, here's an outline of the function with doctests." - ] - }, - { - "cell_type": "code", - "execution_count": 83, - "id": "d9b5b362", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "def reverse_sentence(input_string):\n", - " '''Reverse the words in a string and capitalize the first.\n", - " \n", - " >>> reverse_sentence('Reverse this sentence')\n", - " 'Sentence this reverse'\n", - "\n", - " >>> reverse_sentence('Python')\n", - " 'Python'\n", - "\n", - " >>> reverse_sentence('')\n", - " ''\n", - "\n", - " >>> reverse_sentence('One for all and all for one')\n", - " 'One for all and all for one'\n", - " '''\n", - " return None" - ] - }, - { - "cell_type": "code", - "execution_count": 84, - "id": "a2cb1451", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def reverse_sentence(input_string):\n", - " '''Reverse the words in a string and capitalize the first.\n", - " \n", - " >>> reverse_sentence('Reverse this sentence')\n", - " 'Sentence this reverse'\n", - "\n", - " >>> reverse_sentence('Python')\n", - " 'Python'\n", - "\n", - " >>> reverse_sentence('')\n", - " ''\n", - "\n", - " >>> reverse_sentence('One for all and all for one')\n", - " 'One for all and all for one'\n", - " '''\n", - " words = input_string.split()\n", - " reversed_words = ' '.join(reversed(words))\n", - " return reversed_words.capitalize()" - ] - }, - { - "cell_type": "code", - "execution_count": 85, - "id": "769d1c7a", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "run_doctests(reverse_sentence)" - ] - }, - { - "cell_type": "markdown", - "id": "fb5f24b1", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "Write a function called `total_length` that takes a list of strings and returns the total length of the strings.\n", - "The total length of the words in `word_list` should be $902{,}728$." - ] - }, - { - "cell_type": "code", - "execution_count": 86, - "id": "1fba5377", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def total_length(string_list):\n", - " total = 0\n", - " for string in string_list:\n", - " total += len(string)\n", - " return total" - ] - }, - { - "cell_type": "code", - "execution_count": 87, - "id": "21f4cf1c", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "902728" - ] - }, - "execution_count": 87, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Solution\n", - "\n", - "total_length(word_list)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "c3efb216", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "id": "a7f4edf8", - "metadata": { - "tags": [] - }, - "source": [ - "[Think Python: 3rd Edition](https://allendowney.github.io/ThinkPython/index.html)\n", - "\n", - "Copyright 2024 [Allen B. Downey](https://allendowney.com)\n", - "\n", - "Code license: [MIT License](https://mit-license.org/)\n", - "\n", - "Text license: [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-nc-sa/4.0/)" - ] - } - ], - "metadata": { - "celltoolbar": "Tags", - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.11" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/soln/chap10.ipynb b/soln/chap10.ipynb deleted file mode 100644 index c1b0d64..0000000 --- a/soln/chap10.ipynb +++ /dev/null @@ -1,2487 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "1331faa1", - "metadata": {}, - "source": [ - "You can order print and ebook versions of *Think Python 3e* from\n", - "[Bookshop.org](https://bookshop.org/a/98697/9781098155438) and\n", - "[Amazon](https://www.amazon.com/_/dp/1098155432?smid=ATVPDKIKX0DER&_encoding=UTF8&tag=oreilly20-20&_encoding=UTF8&tag=greenteapre01-20&linkCode=ur2&linkId=e2a529f94920295d27ec8a06e757dc7c&camp=1789&creative=9325)." - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "id": "e55de5cd", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "from os.path import basename, exists\n", - "\n", - "def download(url):\n", - " filename = basename(url)\n", - " if not exists(filename):\n", - " from urllib.request import urlretrieve\n", - "\n", - " local, _ = urlretrieve(url, filename)\n", - " print(\"Downloaded \" + str(local))\n", - " return filename\n", - "\n", - "download('https://github.com/AllenDowney/ThinkPython/raw/v3/thinkpython.py');\n", - "download('https://github.com/AllenDowney/ThinkPython/raw/v3/diagram.py');\n", - "\n", - "import thinkpython" - ] - }, - { - "cell_type": "markdown", - "id": "737e79eb", - "metadata": {}, - "source": [ - "# Dictionaries\n", - "\n", - "This chapter presents a built-in type called a dictionary.\n", - "It is one of Python's best features -- and the building block of many efficient and elegant algorithms.\n", - "\n", - "We'll use dictionaries to compute the number of unique words in a book and the number of times each one appears.\n", - "And in the exercises, we'll use dictionaries to solve word puzzles." - ] - }, - { - "cell_type": "markdown", - "id": "be7467bb", - "metadata": {}, - "source": [ - "## A dictionary is a mapping\n", - "\n", - "A **dictionary** is like a list, but more general.\n", - "In a list, the indices have to be integers; in a dictionary they can be (almost) any type.\n", - "For example, suppose we make a list of number words, like this." - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "id": "20dd9f32", - "metadata": {}, - "outputs": [], - "source": [ - "lst = ['zero', 'one', 'two']" - ] - }, - { - "cell_type": "markdown", - "id": "aa626f88", - "metadata": {}, - "source": [ - "We can use an integer as an index to get the corresponding word." - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "id": "9b6625c0", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'one'" - ] - }, - "execution_count": 38, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "lst[1]" - ] - }, - { - "cell_type": "markdown", - "id": "c38e143b", - "metadata": {}, - "source": [ - "But suppose we want to go in the other direction, and look up a word to get the corresponding integer.\n", - "We can't do that with a list, but we can with a dictionary.\n", - "We'll start by creating an empty dictionary and assigning it to `numbers`." - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "id": "138952d9", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{}" - ] - }, - "execution_count": 39, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "numbers = {}\n", - "numbers" - ] - }, - { - "cell_type": "markdown", - "id": "3acce992", - "metadata": {}, - "source": [ - "The curly braces, `{}`, represent an empty dictionary.\n", - "To add items to the dictionary, we'll use square brackets." - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "id": "007ef505", - "metadata": {}, - "outputs": [], - "source": [ - "numbers['zero'] = 0" - ] - }, - { - "cell_type": "markdown", - "id": "1dbe12c3", - "metadata": {}, - "source": [ - "This assignment adds to the dictionary an **item**, which represents the association of a **key** and a **value**.\n", - "In this example, the key is the string `'zero'` and the value is the integer `0`.\n", - "If we display the dictionary, we see that it contains one item, which contains a key and a value separated by a colon, `:`." - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "id": "753a8fbc", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'zero': 0}" - ] - }, - "execution_count": 41, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "numbers" - ] - }, - { - "cell_type": "markdown", - "id": "ad32c23d", - "metadata": {}, - "source": [ - "We can add more items like this." - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "id": "835aac1e", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'zero': 0, 'one': 1, 'two': 2}" - ] - }, - "execution_count": 42, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "numbers['one'] = 1\n", - "numbers['two'] = 2\n", - "numbers" - ] - }, - { - "cell_type": "markdown", - "id": "278901e5", - "metadata": {}, - "source": [ - "Now the dictionary contains three items.\n", - "\n", - "To look up a key and get the corresponding value, we use the bracket operator." - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "id": "c0475cee", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "2" - ] - }, - "execution_count": 43, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "numbers['two']" - ] - }, - { - "cell_type": "markdown", - "id": "df5724e6", - "metadata": {}, - "source": [ - "If the key isn't in the dictionary, we get a `KeyError`." - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "id": "30c37eef", - "metadata": { - "tags": [ - "raises-exception" - ] - }, - "outputs": [ - { - "ename": "KeyError", - "evalue": "'three'", - "output_type": "error", - "traceback": [ - "\u001b[0;31mKeyError\u001b[0m\u001b[0;31m:\u001b[0m 'three'\n" - ] - } - ], - "source": [ - "%%expect KeyError\n", - "numbers['three']\n" - ] - }, - { - "cell_type": "markdown", - "id": "2a027a6b", - "metadata": {}, - "source": [ - "The `len` function works on dictionaries; it returns the number of items." - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "id": "1b4ea0c2", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "3" - ] - }, - "execution_count": 45, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(numbers)" - ] - }, - { - "cell_type": "markdown", - "id": "58221e96", - "metadata": {}, - "source": [ - "In mathematical language, a dictionary represents a **mapping** from keys to values, so you can also say that each key \"maps to\" a value.\n", - "In this example, each number word maps to the corresponding integer.\n", - "\n", - "The following figure shows the state diagram for `numbers`." - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "id": "eba36a24", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "from diagram import make_dict, Binding, Value\n", - "\n", - "d1 = make_dict(numbers, dy=-0.3, offsetx=0.37)\n", - "binding1 = Binding(Value('numbers'), d1)" - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "id": "9016bf4b", - "metadata": { - "tags": [ - "remove-input" - ] - }, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmEAAAGwCAYAAADhf7JcAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAC4jAAAuIwF4pT92AAA5zklEQVR4nO3dd3hUVeL/8U9CDSWIIVKkhCqCQOjFhF4WpKt0BQVU2IVF0QWx7Lq6rKD+EFaJSnepUmURBAkIoSUkCpGAgEiREkILIYQUkvn9kSf3O5NMkoGUE+D9eh6e59475957Jkz5zLnnnOtms9lsAgAAQL5yN10BAACABxEhDAAAwABCGAAAgAGEMAAAAAMIYQAAAAYQwgAAAAwghAEAABhACAMAADCAEAYAAGAAIQwAAMAAQhgAAIABhDAAAAADCGEAAAAGEMIAAAAMIIQBAAAYQAgDAAAwgBAGAABgACEMAADAAEIYAACAAYQwAAAAAwhhAAAABhDCAAAADCCEAQAAGEAIAwAAMIAQBgAAYAAhDAAAwABCGAAAgAGEMAAAAAMIYQAAAAYQwgAAAAwghAEAABhACAMAADCAEAYAAGAAIQwAAMAAQhgAAIABhDAAAAADCGEAAAAGEMIAAAAMIIQBAAAYQAgDAAAwgBAGAABgACEMAADAAEIYAACAAYQwAAAAAwhhAAAABhDCAAAADCCEAQAAGEAIAwAAMIAQBgAAYAAhDAAAwABCGAAAgAGEMAAAAAMIYQAAAAYQwgAAAAwghAEAABhACAMAADCAEAYAAGAAIQwAAMAAQhgAAIABhDAAAAADCGEAAAAGEMIA3NPat28vNzc3ubm56ccff8zw+IgRI6zHFy5cmO/1A4DMEMIAAAAMKGy6AgBwP3Fzc7OWbTabwZoAKOhoCQMAADCAljAA97WFCxfSFwxAgURLGAAAgAGEMAAAAAMIYQAKpJSUFC1atEhdunRRhQoVVLx4cfn4+KhPnz5at26dy8e5mykqdu3apb/+9a9q3LixHnnkERUpUkSenp5q0KCBhg8frmXLlunWrVtW+R9//NE6h720ben/nTp1yuX6A7h/0ScMQIETGRmpvn37Kjg42GH76dOndfr0aa1fv179+vXTokWLcvW8Z8+e1Ysvvqgffvghw2M3btzQoUOHdOjQIX399ddq2bKl9u3bl6vnB/BgIYQBKFCio6PVsWNHHTlyxNpWvXp1tW7dWsWKFVNERIRCQkK0du1aubvnXmN+RESEunTpogsXLljbHnnkEbVp00be3t6Kj4/XiRMn9PPPP+vWrVuKj4+3yj366KP685//LEn6/PPPre1p29Lz9PTMtXoDuHcRwgAUKBMnTrQCWNGiRRUQEKAXX3zRoUxISIgGDBig1atXq2jRojk+Z0xMjPr162cFsHLlymnWrFkaNGhQhkuMN2/e1LfffqutW7da22rXrq3PPvtMkmMIS9sGAM4QwgAUGMeOHdOCBQus9a+++krDhw/PUK5FixbasmWLGjdurLi4uByfd/r06Tp+/LgkqUyZMtq1a5cee+wxp2VLliypIUOGaMiQITk+L4AHGx3zARQY8+bNs2aZb9GihdMAlqZOnTqaMGFCjs+ZkJDg0Hr14YcfZhrAACA3EcIAFBjbt2+3lp977rlsy2cV0ly1b98+RUdHS5JKly6dK8cEAFcQwgAUCDabTQcPHrTWW7dune0+derU0cMPP5yj89qPcGzVqpU8PDxydDwAcBUhDECBcP36dSUmJlrrVatWdWk/V8tl5uLFi9ZyjRo1cnQsALgThDAABUJsbKzDeokSJVzar2TJkjk6740bN6zlUqVK5ehYAHAnCGEACoT0AcjVUY83b97M0XlLly5tLacPggCQlwhhAAqEMmXKOMz5debMGZf2++OPP3J03vLly1vLJ0+ezNGxAOBOEMIAFAhubm5q1KiRte7KLYGOHz+uK1eu5Oi8rVq1spb37t3rcE9IAMhLhDAABUaHDh2s5cWLF2db/uuvv87xOVu1aqWyZctKSu0fltNjFi9e3FpOSkrK0bEA3N8IYQAKjJEjR1rL+/btyzKI/fbbb5oxY0aOz1msWDGNHTvWWp80aZKOHj1618fz8vKyls+dO5ejugG4vxHCABQYderU0YgRI6z1UaNGadGiRRnKhYaGqkuXLrp582au3Dvyb3/7m2rWrCkpdaoMPz8/LV++3Jq9315cXJyWLVuW4X6WaZ544glreeXKlTmuG4D7l5vN2acMABhy7do1tW7d2qE1qkaNGmrdurWKFSumiIgIhYSEyGazqX///rpy5Yp27NghKXXG/fbt2zscb8SIEVaQW7BggUPIsxceHq4uXbooKirK2la+fHm1adNG3t7eio+P14kTJ/TTTz/p1q1b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vXv31pEjR1wOArntwIEDmjJlim7duqXKlSvrySefVOnSpXXs2DEFBQXJZrPp9OnT6t69u3755RetWLFCI0eOlCTVrl1bLVq0UPHixfXLL79YrToRERF67rnnrC+47EyaNMkKYA0bNpSvr69sNpvCwsJ0+PBhSam/dDt27Ki9e/eqSpUqmR5rxowZmjhxomw2m6TUX/+tW7dW5cqVlZycrIiICIWGhspms2nDhg1q3769du/erRIlSmRZx4SEBPXu3VthYWEqXLiw2rRpo5o1ayohIUE//fSTVe7GjRvq3Lmz/vjjD0mSu7u7GjdubLWExsXF6dy5czp48KBLLaHIOxcvXnRYj4uL09atW7Vnz577MoyNHj3apXJnzpzR5s2brXVnrfAXL15Uz549dfToUWvb448/rieeeEKlSpXSpUuXtGfPHl29elXR0dEaPny4vvrqKw0cODDb869bt07vvPOOJKlixYpq1aqVPD09deHCBYdWtZSUFA0bNkwbN260tpUtW1b+/v4qW7aszp49q6CgICUmJio6OlpjxozR9evXNXbsWJf+DjAn/WfjrVu3FBQUpNDQ0DwPY/av6Xr16qlw4ezjha+vr0NofBAVuBD2yiuvyNvbW19//bX+9Kc/OTy2c+dO9erVSzExMbpw4YJmzpypd99910g9J0+erJSUFH3++ed65ZVX5O7+f1d2d+zYoaeeeko3b97UkSNHNH36dE2dOlWenp6aP3++nn76aYdjffPNNxoyZIiSk5O1efNm7dy5U23bts3y/OfPn9eMGTPk5eWlpUuXqmvXrg6P/+9//9OwYcMUExOjc+fOafTo0ZmGu8DAQL3++uuy2WwqWrSo/vnPf2rcuHEZAtaBAwc0dOhQHT58WAcOHNDrr7+u2bNnZ1nPVatW6fbt22rXrp0WLlyYYab/tF9O8+fPtwJYvXr1tGbNGj322GMZjmez2RQaGqoFCxaoWLFiWZ4beaN+/foKCwvL0IfjXg5j9oEkvU8++STb/a9fv67OnTtb608++aRatmzpUCYlJUUjR460vqyaNm2qTz/9VI0aNXIoFx8frxkzZujDDz+UzWbThAkT1LJly2zvkvHee++paNGi+vjjjzV8+HCHEGjf+j5r1iyH5/vaa69pypQpDv9XFy9e1Msvv2x1P3j77bfVvHlzNW/ePMN5q1WrppiYmCzr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zoqIiFCVKlUctoeGhhqqUcFHCAMAADlWvnx501W459AnDABy2ZkzZ/TBBx+oY8eOqlmzpry8vFSzZk117NhR//rXv3T27NlsjxEUFOR0RNmOHTs0YsQINWzYUN7e3qpWrZr+9Kc/6csvv1RSUtId1fPs2bOaNm2aunXrpjp16qhcuXKqWrWq/Pz89NZbb+n48eN3/NxhTkpKin7++Wdt2LBBYWFhSkxMNF0lZIOWMADIRR999JE++ugjxcfHO2y/dOmSLl26pNDQUM2cOVNvvvmmXn31VZePm5iYqNdff10LFy502J6QkKA9e/Zoz549WrJkidauXSsvL68sj5WSkqKpU6dq1qxZGeqZmJio6OhohYeHKyAgQBMmTNA777wjNzc3l+sKMw4fPqzt27dLko4dO6aQkBA1a9ZMvr6+KlKkiOHawRlCGADkkokTJ2rOnDnWeqlSpeTv76/y5cvr4sWLCgoKUmxsrOLj4/X3v/9dFy9e1IcffujSscePH6+lS5fK3d1dzZo1U506dZSSkqL9+/dbLVYHDhzQSy+9pNWrV2d6nOTkZI0YMULffvutta1SpUpq2rSpypUrp9jYWIWGhurkyZO6ffu2Pv74Y12+fFmzZs26y78K8svly5cd1m/duqWgoCCFhoYSxgooN5vNZjNdCQAPrhs3bpiuQq5Ys2aNRowYYa0PHTpU06ZNc5jcNSYmRhMnTtSKFSusbYsXL1bv3r0zHC8oKEhPPfWUJKlYsWJKSEhQkyZN9NVXX6lOnTpWOZvNpoCAAE2ePNnatmnTJj355JNO6/nBBx9o+vTpklL78HzyySfq1atXhpautWvXavz48bp+/bokaeHCherfv7+rfw4YcP78ea1atUq3b992+riHh4eRMDZ16lTrx4afn582btyYb+e+E6VLl873c9InDAByKCUlRf/4xz+s9X79+mn27NkZZtf39PTUV199ZYUrSXrnnXeUkpKS5fETEhJUs2ZNbdiwwSGASZKbm5vGjh2rvn37WttWrVrl9DinT5/WJ598IkkqW7asNm/erN69ezu91NivXz+HGfD//e9/i9/sBVulSpU0ePBg1ahRw+njaS1jc+fO1f79+++4DyFyHyEMAHIoMDBQp06dkiQVLVpU06dPz7QPlZubmz755BOrJeLkyZPatm1btud47733VKpUqUwfHzZsmLUcFhbmtExAQICSk5MlSZMmTcr0yzpN27Zt1alTJ0nS0aNHdfDgwWzrCbO8vb3Vt29fDRkyhDB2D6BPGADk0M6dO63lrl27ZjtUv1KlSurcubM2bdokKfXSY+fOnTMtX7x4cXXv3j3LYzZq1MhaPn36tNMyW7ZssZYHDBiQ5fHStGvXToGBgZKkvXv3ytfX16X9csJms+nWrVt5fp77maenp7p27aqoqCiFhYU5fU2khbH9+/fL19dXzZo1U9GiRQ3U9sFFCAOAHAoPD7eWW7Zs6dI+rVq1skLYgQMHsixbu3btbPvwPPzww9ays352V65c0W+//SYptbXu3//+t0v1PHr0qLV87tw5l/bJiVOnTmnLli2KjY3N83MhVXx8vPbt26fg4GD17NlTtWvXNl2lBwYhDAByyH5UWvrZwjNTtWpVa/nq1atZlk3ft8wZ+5DmrGP2xYsXreXExESHUZyuio6OvuN97tS2bdsIYIbYbDYFBgYSwvIRfcIAIIfsQ0OJEiVc2se+XHYjRHNjjq6YmJgcHyOzUXcA7g4tYQCQQ/Yd5uPi4lzax75cfgyNtw99np6eLs3ab0LHjh25HGmIm5ubNRAD+YMQBgA5VK5cOWvZ1XBz5swZa9m+P1deeeSRR6zlmJgYxcXFudxql598fHw0evRoOubnkqioKIWGhjq83tIrXry4fH191bx5cyZzzWeEMADIoYYNG1q3iwkODnZpH/ty+THisEKFCqpcubIVEoODg9WhQ4c8P+/dcHNzK5AB8V4SGRmpvXv36uTJk5mWMTV5K/4PfcIAIIfatm1rLW/ZskWXLl3KsvyFCxf0ww8/ON0/L3Xr1s1anjt3br6cE/krKipKa9eu1dKlSzMNYB4eHvL399eoUaNo/TKMEAYAOdSpUyf5+PhISp3dftKkSZmWtdlseuONN6wJMqtXr55vLVLjxo1ToUKFJEn/+9//HGbEz4796EoUTOfPn9fy5csJX/cQQhgA5JC7u7vDbYtWrVqlcePGZehcfuPGDY0ZM0br16+3tr3//vtyd8+fj+IaNWrojTfesNbHjh2rt956S1euXHFa/vbt2woMDNTo0aPl5+eXL3XE3Tt27JjTEayEr4KLPmEAkAv69++v3bt3W/NvLVq0SGvWrJG/v78eeeQRXbp0STt27HAIZmPHjnV68+689Oabb+rMmTNaunSpbDab/vOf/+jLL79U48aNVb16dZUoUUIxMTE6c+aMIiIidPPmTUn5M3gAOWM/QEQy0+fr6aefVmRkpMM2+1bUn3/+2enN5VetWqWKFSvmef0KGkIYAOSSTz75ROXLl9dHH32khIQE3bhxQxs3bsxQrnjx4po0aZImTpyY73V0c3PTF198IV9fX02dOlXR0dFKTExUcHBwpoMK3Nzc1KpVq3yuKe5UvXr1lJSUpHPnzqlSpUpq0KBBvrd6HT16NMuRmDdv3tQvv/ySYXtiYmJeVqvAIoQBQC7629/+pkGDBmnRokUKDAzU6dOndf36dZUpU0Y+Pj7q1KmThg8f7vLM+nnllVde0dChQ7V8+XJt375dhw4d0uXLlxUfH69SpUrp0UcfVd26deXv76+uXbuqcuXKRuuL7Lm7u6tx48Zq3Lix6arARW42m81muhIAHlzZzRYPAPkhPyZNTo+O+QAAAAYQwgAAAAwghAEAABhACAMAADCAEAYAAGAAIQwAAMAAQhgAAIABhDAAAAADCGEAAAAGEMIAAAAMIIQBAAAYQAgDAAAwgBAGAABgACEMAADAAEIYAACAAYQwAAAAAwhhAAAABhDCAAAADCCEAQAAGEAIAwAAMIAQBgAAYAAhDAAAwABCGAAAgAGEMAAAAAMIYQAAAAYQwgAAAAwghAEAABhACAMAADCAEAYAAGAAIQwAAMAAQhgAAIABhDAAAAADCGEAAAAGEMIAAAAMIIQBAAAYQAgDAAAwgBAGAABgACEMAADAAEIYAACAAYQwAAAAAwhhAAAABhDCAAAADCCEAQAAGEAIAwAAMIAQBgAAYAAhDAAAwABCGAAAgAGEMAAAAAMIYQAAAAYQwgAAAAwghAEAABhACAMAADCAEAYAAGAAIQwAAMAAQhgAAIABhDAAAAADCGEAAAAGEMIAAAAMIIQBAAAYQAgDAAAwgBAGAABgACEMAADAAEIYAACAAYQwAAAAAwqbrgAA3Et69OihXbt2SZJiYmIM16Zg4G+CNKdPn9b27du1a9cuHT58WGfPnlVsbKxKlSqlRx99VC1atNCzzz4rPz8/01UtEAhhAJCLXnnlFS1dulSSFBAQoKFDhxquEZD3Dh48qAkTJigsLMzp49HR0YqOjlZERIQWLFggf39/ffHFF6pSpUo+17RgIYQBAIAcOX78eIYAVqtWLdWrV09eXl66fv26goODde7cOUlSUFCQOnfurO+//17Vq1c3UeUCgRAGAAByRY0aNTR8+HANHDhQlSpVcngsJSVFS5Ys0RtvvKG4uDhduHBBo0aN0tatW+Xm5maoxmYRwgAAQI5UqFBBAQEBGjRokAoVKuS0jLu7u5577jk99NBD1mX6/fv3KzAwUJ07d87P6hYYjI4EAAA54ufnp6FDh2YawOz16tVLTZs2tdY3b96cl1Ur0AhhAJALnnjiCXl6elqd8iVpzJgx8vT0zPBv6tSpkqSQkBBrW8eOHTM9dnx8vLy9va2y7dq1y7RsYmKiypcvL09PT5UrV063bt3KtGxsbKwCAgLUt29f1a1bV97e3qpatapatmypiRMnav/+/Xfxl4ApKSkp+vnnn7VhwwaFhYUpMTHRdJUy1apVK2v5zJkzBmtiFpcjAcCQJk2aqFSpUoqNjdWBAwesofzphYSEKCEhwVoPDw/X9evXVaZMmQxlQ0NDreDVtGlTeXh4OD33pk2bNH78eF28eNFhe0JCgqKjo3XkyBHNmTNHzz77rP7zn/+oRIkSOXmqyAeHDx/W9u3bJUnHjh1TSEiImjVrJl9fXxUpUsRw7RzZ9wFLTk42WBOzCGEAkAsGDx6sq1evaseOHTp27JgkqX379qpdu3aGsmmXYgoXLqyWLVsqMDBQt2/f1p49e9S1a9cM5YOCghzWk5OTtWfPHnXv3j3LspnNxbR69WqNGjXK+vIrVKiQWrdurRo1aig2NlZ79+7VhQsXJEkrV67U6dOntWHDBhUvXtyVPwUMuXz5ssP6rVu3FBQUpNDQ0AIXxiIiIqzlypUrG6yJWYQwALgDGzdudLr9rbfekpQ6T1haCBs4cGC284T5+/srMDBQUmqAchbC0iZC9fLy0tWrV2Wz2bRz506nISytbNqx0/v99981btw4K4A1bdpUc+fOVc2aNa0yKSkpmj17tt5++22lpKQoJCRE77zzjj766COnzyGzvwnyV506dRQeHq7bt287bC9oYeyPP/7Qzp07rfX27dsbq4tp9AkDAIPsg1L6Fi8ptT9YaGioJKlr1656/PHHJTmGrTSJiYkKCQmRJBUtWlQtW7bMUGbatGmKjY2VlDqdwLp16xwCmJQ6iu0vf/mLPvjgA2vbnDlzdOrUqTt8dshPlSpV0uDBg1WjRg2nj6eFsblz52r//v1KSkrK5xqmmjJlivUjoEqVKk5/TDwoCGEAYFDjxo1VunRpSamzjqe/7U9wcLDVH8zf398Kbb/88ouuXbvmUHb//v1Wf7BmzZpl6A8WHR2tNWvWWOvvv/++035lacaOHWuFvpSUFC1cuPAuniHyk7e3t/r27ashQ4YUyDC2ZMkSffvtt9b63//+dxUrVizfzl/QcDkSAAxK6xe2detWJScna/fu3Q4tA/atY/7+/vL09NSXX36plJQU7d69Wz179nRa1ll/MPtA5+XllW0LRNq8TlOmTJEkh0tIeclms2U5qhPZ8/T0VNeuXRUVFaWwsDCdPn06Q5m0MLZ//375+vqqWbNmKlq0aJ7V6aefftKrr75qrT/zzDMaMGBAnp3vXkAIAwDD/P39tXXrVkmpQco+HKVddqxWrZqqVaumUqVKyc3NzeoXZh/CsusPFh4ebi03bdpUhQtn/xVgf0kzPDxcNpstT2c3P3XqlLZs2WJdMkXei4+P1759+xQcHKyePXs6HUySU6dOndLAgQMVHx8vKXVKl08//TTXz3Ov4XIkABhm32plH6Ru3bpl3Y8vrYyXl5fq16+foWxCQoI1r1exYsXUokWLDOexHz3n6o2Tq1WrZi0nJibqxo0bLu13t7Zt20YAM8Rms1mDRHJTZGSk+vTpY02H4uPjozVr1sjT0zPXz3WvIYQBgGH2/cLCw8MVHR0tyXF+MPuWrbRAFhERoStXrkhynB/MWX8wSbp586a1XLJkSZfqln5+MAIS7sSVK1fUp08fnTx5UlLq7Y3Wr1+vChUqGK5ZwUAIAwDDChcubM0gntbXS3Lsg9W2bdsMyzabzWoNsy+b2fxg9sHLPpBlJS4uzmHd2WSyualjx455fg445+bmpk6dOuXa8WJiYtS/f38dOXJEUmor7vr16+Xj45Nr57jX0ScMAAoAf39//fDDD5JSA9VTTz1lBazq1as7TGjZpk0bh35hffr0ybY/mCSVK1fOWj579qxL9bLv0F20aFGrxS6v+Pj4aPTo0XTMzyVRUVEKDQ3N8tZAxYsXl6+vr5o3b55r84fdvHlTzzzzjH7++WdJUpkyZbRmzRrVrVs3V45/vyCEAUAuuttO6+n7hdn3B0sfqh5++GE1aNBA4eHh2rVrl0v9wSSpYcOG1nJYWJiSk5OzveFycHCww/552Sk/jZubG7dJyqHIyEjt3bvXugzojIeHR55M3hofH69BgwZp3759klIvaa9cuVKNGzfOtXPcLwhhAJCL7G/tcyfzL6X1C7tx44YOHTqkTZs2WTdgdtay5efnp/DwcB05ckQbN260Rp01a9Ys09sLtWzZUsWKFVNCQoIuX76szZs3q0ePHpnWKSUlRUuWLLHWs7pxOAqGqKgo7d6920j4klJf88OGDdOOHTskpf4oWLZsmcMNu/F/6BMGALmobNmy1vL58+dd3i/t/o1Sal+v6dOnW4/Z9wdztm3atGnWcmaXIiXpoYceUv/+/a31t99+O8vRjl9++aV1jz93d3eNGDEi+ycCY86fP6/ly5dnGsA8PDzk7++vUaNG5eqlxzTJyckaOXKktmzZIim1r+OiRYvUoUOHXD3P/YQQBgC5qF69etbyxo0brdYsV9gHqMOHD0uSatasqYoVK2Yo26ZNG7m7uzuUTX8MZyZNmmR1fP/tt9/Ur1+/DF/aafeOTJukVZJGjx7tMF0FCp5jx45luG+klPfhS0r94fDnP/9Z69atk5Qa2r/66qssW1ohudlsNpvpSgB4cOX1vFP57fr166pTp47VsdzHx0f+/v4qU6aM1Z+qY8eOTkehhYWFZWg1eOGFFzRz5kyn52rbtq0OHDhgrRcrVkx//PFHppcj06xevVqjRo2y7t9XuHBhtWnTRtWrV1dsbKz27t3r0IrXvHlzfffdd9keF2YdOnTIaoWS8vayY3pz5szRxIkTrfWaNWuqY8eOLu//ySef5EW17kheDzpxhj5hAJCLypQpo6lTp+q1116TzWbTqVOnMtz4umTJkk5DmK+vrzw9PR3uH5lVy5afn59DCGvevLlLQenpp59WiRIlNG7cOEVFRen27dvauXOn09sSPfPMM/rss88IYPeAevXqKSkpSefOnVOlSpXUoEGDPA9faS5duuSwfuLECZ04ccLl/QtCCDOBy5EAkMtGjhypzZs3a9CgQapVq5ZKlizp0qhC+35habIKYekfy2x+MGe6d++uAwcOaNq0aerQoYMqVqyookWLqkyZMnrsscc0atQoBQYGav78+YxUvEe4u7urcePG6tmzp5o0aZJvAQx3j8uRAIy63y5HArg3mbgcSUsYAACAAYQwAAAAAwhhAAAABhDCAAAADCCEAQAAGEAIAwAAMIAQBgAAYAAhDAAAwABCGAAAgAGEMAAAAAMIYQAAAAYQwgAAAAwghAEAABhACAMAADCAEAYAAGAAIQwAAMAAQhgAAIABhDAAAAADCGEAAAAGEMIAAAAMIIQBAAAYQAgDAAAwgBAGAABgACEMAADAAEIYAACAAYQwAAAAAwhhAAAABhDCAAAADCCEAQAAGEAIAwAAMIAQBgAAYAAhDAAAwABCGAAAgAGEMAAAAAMIYQAAAAYQwgAAAAxws9lsNtOVAAAAeNDQEgYAAGAAIQwAAMAAQhgAAIABhDAAAAADCGEAAAAGEMIAAAAMIIQBAAAYQAgDAAAwgBAGAABgACEMAADAAEIYAACAAYQwAAAAAwhhAAAABhDCAAAADCCEAQAAGEAIAwAAMIAQBgAAYAAhDAAAwABCGAAAgAGEMAAAAAMIYQAAAAYQwgAAAAwghAEAABhACAMAADCAEAYAAGAAIQwAAMAAQhgAAIABhDAAAAADCGEAAAAGEMIAAAAMIIQBAAAYQAgDAAAwgBAGAABgACEMAADAAEIYAACAAYQwAAAAAwhhAAAABhDCAAAADCCEAQAAGEAIAwAAMIAQBgAAYAAhDAAAwABCGAAAgAGEMAAAAAMIYQAAAAYQwgAAAAwghAEAABhACAMAADCAEAYAAGAAIQwAAMAAQhgAAIABhDAAAAADCGEAAAAGEMIAAAAMIIQBAAAYQAgDAAAwgBAGAABgwP8HkHoZJxjLAVEAAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from diagram import diagram, adjust, Bbox\n", - "\n", - "width, height, x, y = [1.83, 1.24, 0.49, 0.85]\n", - "ax = diagram(width, height)\n", - "bbox = binding1.draw(ax, x, y)\n", - "# adjust(x, y, bbox)" - ] - }, - { - "cell_type": "markdown", - "id": "b092aa61", - "metadata": {}, - "source": [ - "A dictionary is represented by a box with the word \"dict\" outside and the items inside.\n", - "Each item is represented by a key and an arrow pointing to a value.\n", - "The quotation marks indicate that the keys here are strings, not variable names." - ] - }, - { - "cell_type": "markdown", - "id": "2a0a128a", - "metadata": {}, - "source": [ - "## Creating dictionaries\n", - "\n", - "In the previous section we created an empty dictionary and added items one at a time using the bracket operator.\n", - "Instead, we could have created the dictionary all at once like this." - ] - }, - { - "cell_type": "code", - "execution_count": 48, - "id": "19dfeecb", - "metadata": {}, - "outputs": [], - "source": [ - "numbers = {'zero': 0, 'one': 1, 'two': 2}" - ] - }, - { - "cell_type": "markdown", - "id": "31ded5b2", - "metadata": {}, - "source": [ - "Each item consists of a key and a value separated by a colon.\n", - "The items are separated by commas and enclosed in curly braces.\n", - "\n", - "Another way to create a dictionary is to use the `dict` function.\n", - "We can make an empty dictionary like this." - ] - }, - { - "cell_type": "code", - "execution_count": 49, - "id": "39b81034", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{}" - ] - }, - "execution_count": 49, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "empty = dict()\n", - "empty" - ] - }, - { - "cell_type": "markdown", - "id": "bfb215c9", - "metadata": {}, - "source": [ - "And we can make a copy of a dictionary like this." - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "id": "88fa12c5", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'zero': 0, 'one': 1, 'two': 2}" - ] - }, - "execution_count": 50, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "numbers_copy = dict(numbers)\n", - "numbers_copy" - ] - }, - { - "cell_type": "markdown", - "id": "966c5539", - "metadata": {}, - "source": [ - "It is often useful to make a copy before performing operations that modify dictionaries." - ] - }, - { - "cell_type": "markdown", - "id": "2a948f62", - "metadata": { - "tags": [ - "section_dictionary_in_operator" - ] - }, - "source": [ - "## The in operator\n", - "\n", - "The `in` operator works on dictionaries, too; it tells you whether something appears as a *key* in the dictionary." - ] - }, - { - "cell_type": "code", - "execution_count": 51, - "id": "025cad92", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 51, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "'one' in numbers" - ] - }, - { - "cell_type": "markdown", - "id": "80f6b264", - "metadata": {}, - "source": [ - "The `in` operator does *not* check whether something appears as a value." - ] - }, - { - "cell_type": "code", - "execution_count": 52, - "id": "65de12ab", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 52, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "1 in numbers" - ] - }, - { - "cell_type": "markdown", - "id": "84856c8b", - "metadata": {}, - "source": [ - "To see whether something appears as a value in a dictionary, you can use the method `values`, which returns a sequence of values, and then use the `in` operator." - ] - }, - { - "cell_type": "code", - "execution_count": 53, - "id": "87ddc1b2", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 53, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "1 in numbers.values()" - ] - }, - { - "cell_type": "markdown", - "id": "45dc3d16", - "metadata": {}, - "source": [ - "The items in a Python dictionary are stored in a **hash table**, which is a way of organizing data that has a remarkable property: the `in` operator takes about the same amount of time no matter how many items are in the dictionary.\n", - "That makes it possible to write some remarkably efficient algorithms." - ] - }, - { - "cell_type": "code", - "execution_count": 54, - "id": "4849b563", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "download('https://raw.githubusercontent.com/AllenDowney/ThinkPython/v3/words.txt');" - ] - }, - { - "cell_type": "markdown", - "id": "bba0522c", - "metadata": {}, - "source": [ - "To demonstrate, we'll compare two algorithms for finding pairs of words where one is the reverse of another -- like `stressed` and `desserts`.\n", - "We'll start by reading the word list." - ] - }, - { - "cell_type": "code", - "execution_count": 55, - "id": "830b1208", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "113783" - ] - }, - "execution_count": 55, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "word_list = open('words.txt').read().split()\n", - "len(word_list)" - ] - }, - { - "cell_type": "markdown", - "id": "ab29fb8a", - "metadata": {}, - "source": [ - "And here's `reverse_word` from the previous chapter." - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "id": "49231201", - "metadata": {}, - "outputs": [], - "source": [ - "def reverse_word(word):\n", - " return ''.join(reversed(word))" - ] - }, - { - "cell_type": "markdown", - "id": "93f7ac1b", - "metadata": {}, - "source": [ - "The following function loops through the words in the list.\n", - "For each one, it reverses the letters and then checks whether the reversed word is in the word list." - ] - }, - { - "cell_type": "code", - "execution_count": 57, - "id": "a41759fb", - "metadata": {}, - "outputs": [], - "source": [ - "def too_slow():\n", - " count = 0\n", - " for word in word_list:\n", - " if reverse_word(word) in word_list:\n", - " count += 1\n", - " return count" - ] - }, - { - "cell_type": "markdown", - "id": "d4ebb84d", - "metadata": {}, - "source": [ - "This function takes more than a minute to run.\n", - "The problem is that the `in` operator checks the words in the list one at a time, starting at the beginning.\n", - "If it doesn't find what it's looking for -- which happens most of the time -- it has to search all the way to the end." - ] - }, - { - "cell_type": "markdown", - "id": "fac41347", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "To measure how long a function takes, we can use `%time` which is one of Jupyter's \"built-in magic commands\".\n", - "These commands are not part of the Python language, so they might not work in other development environments." - ] - }, - { - "cell_type": "code", - "execution_count": 58, - "id": "33bcddf8", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "# %time too_slow()" - ] - }, - { - "cell_type": "markdown", - "id": "2acb6c50", - "metadata": {}, - "source": [ - "And the `in` operator is inside the loop, so it runs once for each word.\n", - "Since there are more than 100,000 words in the list, and for each one we check more than 100,000 words, the total number of comparisons is the number of words squared -- roughly -- which is almost 13 billion. " - ] - }, - { - "cell_type": "code", - "execution_count": 59, - "id": "f2869dd0", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "12946571089" - ] - }, - "execution_count": 59, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(word_list)**2" - ] - }, - { - "cell_type": "markdown", - "id": "5dbf01b7", - "metadata": {}, - "source": [ - "We can make this function much faster with a dictionary.\n", - "The following loop creates a dictionary that contains the words as keys." - ] - }, - { - "cell_type": "code", - "execution_count": 60, - "id": "300416d9", - "metadata": {}, - "outputs": [], - "source": [ - "word_dict = {}\n", - "for word in word_list:\n", - " word_dict[word] = 1" - ] - }, - { - "cell_type": "markdown", - "id": "b7f6a1b7", - "metadata": {}, - "source": [ - "The values in `word_dict` are all `1`, but they could be anything, because we won't ever look them up -- we will only use this dictionary to check whether a key exists.\n", - "\n", - "Now here's a version of the previous function that replaces `word_list` with `word_dict`." - ] - }, - { - "cell_type": "code", - "execution_count": 61, - "id": "9d3dfd8d", - "metadata": {}, - "outputs": [], - "source": [ - "def much_faster():\n", - " count = 0\n", - " for word in word_dict:\n", - " if reverse_word(word) in word_dict:\n", - " count += 1\n", - " return count" - ] - }, - { - "cell_type": "markdown", - "id": "5f41e54c", - "metadata": {}, - "source": [ - "This function takes less than one hundredth of a second, so it's about 10,000 times faster than the previous version." - ] - }, - { - "cell_type": "markdown", - "id": "4cd91c99", - "metadata": {}, - "source": [ - "In general, the time it takes to find an element in a list is proportional to the length of the list.\n", - "The time it takes to find a key in a dictionary is almost constant -- regardless of the number of items." - ] - }, - { - "cell_type": "code", - "execution_count": 62, - "id": "82b36568", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: user 59.4 ms, sys: 0 ns, total: 59.4 ms\n", - "Wall time: 59.1 ms\n" - ] - }, - { - "data": { - "text/plain": [ - "885" - ] - }, - "execution_count": 62, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "%time much_faster()" - ] - }, - { - "cell_type": "markdown", - "id": "b3bfa8a5", - "metadata": {}, - "source": [ - "## A collection of counters\n", - "\n", - "Suppose you are given a string and you want to count how many times each letter appears.\n", - "A dictionary is a good tool for this job.\n", - "We'll start with an empty dictionary." - ] - }, - { - "cell_type": "code", - "execution_count": 64, - "id": "7c21ff00", - "metadata": {}, - "outputs": [], - "source": [ - "counter = {}" - ] - }, - { - "cell_type": "markdown", - "id": "34a9498a", - "metadata": {}, - "source": [ - "As we loop through the letters in the string, suppose we see the letter `'a'` for the first time.\n", - "We can add it to the dictionary like this." - ] - }, - { - "cell_type": "code", - "execution_count": 65, - "id": "7d0afb00", - "metadata": {}, - "outputs": [], - "source": [ - "counter['a'] = 1" - ] - }, - { - "cell_type": "markdown", - "id": "bca9fa11", - "metadata": {}, - "source": [ - "The value `1` indicates that we have seen the letter once.\n", - "Later, if we see the same letter again, we can increment the counter like this." - ] - }, - { - "cell_type": "code", - "execution_count": 66, - "id": "ba97b5ea", - "metadata": {}, - "outputs": [], - "source": [ - "counter['a'] += 1" - ] - }, - { - "cell_type": "markdown", - "id": "274ea014", - "metadata": {}, - "source": [ - "Now the value associated with `'a'` is `2`, because we've seen the letter twice." - ] - }, - { - "cell_type": "code", - "execution_count": 67, - "id": "30ffe9b4", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'a': 2}" - ] - }, - "execution_count": 67, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "counter" - ] - }, - { - "cell_type": "markdown", - "id": "2ca8f99d", - "metadata": {}, - "source": [ - "The following function uses these features to count the number of times each letter appears in a string." - ] - }, - { - "cell_type": "code", - "execution_count": 68, - "id": "36f95332", - "metadata": {}, - "outputs": [], - "source": [ - "def value_counts(string):\n", - " counter = {}\n", - " for letter in string:\n", - " if letter not in counter:\n", - " counter[letter] = 1\n", - " else:\n", - " counter[letter] += 1\n", - " return counter" - ] - }, - { - "cell_type": "markdown", - "id": "735c758b", - "metadata": {}, - "source": [ - "Each time through the loop, if `letter` is not in the dictionary, we create a new item with key `letter` and value `1`.\n", - "If `letter` is already in the dictionary we increment the value associated with `letter`.\n", - "\n", - "Here's an example." - ] - }, - { - "cell_type": "code", - "execution_count": 69, - "id": "d6f1048e", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'b': 1, 'r': 2, 'o': 2, 'n': 1, 't': 1, 's': 2, 'a': 1, 'u': 2}" - ] - }, - "execution_count": 69, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "counter = value_counts('brontosaurus')\n", - "counter" - ] - }, - { - "cell_type": "markdown", - "id": "8ac1fea4", - "metadata": {}, - "source": [ - "The items in `counter` show that the letter `'b'` appears once, `'r'` appears twice, and so on." - ] - }, - { - "cell_type": "markdown", - "id": "912bdf5d", - "metadata": {}, - "source": [ - "## Looping and dictionaries\n", - "\n", - "If you use a dictionary in a `for` statement, it traverses the keys of the dictionary.\n", - "To demonstrate, let's make a dictionary that counts the letters in `'banana'`." - ] - }, - { - "cell_type": "code", - "execution_count": 70, - "id": "310e1489", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'b': 1, 'a': 3, 'n': 2}" - ] - }, - "execution_count": 70, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "counter = value_counts('banana')\n", - "counter" - ] - }, - { - "cell_type": "markdown", - "id": "fe263f3d", - "metadata": {}, - "source": [ - "The following loop prints the keys, which are the letters." - ] - }, - { - "cell_type": "code", - "execution_count": 71, - "id": "da4ec7fd", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "b\n", - "a\n", - "n\n" - ] - } - ], - "source": [ - "for key in counter:\n", - " print(key)" - ] - }, - { - "cell_type": "markdown", - "id": "bf1b7824", - "metadata": {}, - "source": [ - "To print the values, we can use the `values` method." - ] - }, - { - "cell_type": "code", - "execution_count": 72, - "id": "859fe1ad", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1\n", - "3\n", - "2\n" - ] - } - ], - "source": [ - "for value in counter.values():\n", - " print(value)" - ] - }, - { - "cell_type": "markdown", - "id": "721135be", - "metadata": {}, - "source": [ - "To print the keys and values, we can loop through the keys and look up the corresponding values." - ] - }, - { - "cell_type": "code", - "execution_count": 73, - "id": "7242ab5b", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "b 1\n", - "a 3\n", - "n 2\n" - ] - } - ], - "source": [ - "for key in counter:\n", - " value = counter[key]\n", - " print(key, value)" - ] - }, - { - "cell_type": "markdown", - "id": "efa1bce5", - "metadata": {}, - "source": [ - "In the next chapter, we'll see a more concise way to do the same thing." - ] - }, - { - "cell_type": "markdown", - "id": "a160c0ef", - "metadata": {}, - "source": [ - "## Lists and dictionaries\n", - "\n", - "You can put a list in a dictionary as a value.\n", - "For example, here's a dictionary that maps from the number `4` to a list of four letters." - ] - }, - { - "cell_type": "code", - "execution_count": 74, - "id": "29cd8207", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{4: ['r', 'o', 'u', 's']}" - ] - }, - "execution_count": 74, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "d = {4: ['r', 'o', 'u', 's']}\n", - "d" - ] - }, - { - "cell_type": "markdown", - "id": "815a829f", - "metadata": {}, - "source": [ - "But you can't put a list in a dictionary as a key.\n", - "Here's what happens if we try." - ] - }, - { - "cell_type": "code", - "execution_count": 76, - "id": "ca9ff511", - "metadata": { - "tags": [ - "raises-exception" - ] - }, - "outputs": [ - { - "ename": "TypeError", - "evalue": "unhashable type: 'list'", - "output_type": "error", - "traceback": [ - "\u001b[0;31mTypeError\u001b[0m\u001b[0;31m:\u001b[0m unhashable type: 'list'\n" - ] - } - ], - "source": [ - "%%expect TypeError\n", - "letters = list('abcd')\n", - "d[letters] = 4" - ] - }, - { - "cell_type": "markdown", - "id": "2469b08a", - "metadata": {}, - "source": [ - "I mentioned earlier that dictionaries use hash tables, and that means that the keys have to be **hashable**.\n", - "\n", - "A **hash** is a function that takes a value (of any kind) and returns an integer.\n", - "Dictionaries use these integers, called hash values, to store and look up keys.\n", - "\n", - "This system only works if a key is immutable, so its hash value is always the same.\n", - "But if a key is mutable, its hash value could change, and the dictionary would not work.\n", - "That's why keys have to be hashable, and why mutable types like lists aren't.\n", - "\n", - "Since dictionaries are mutable, they can't be used as keys, either.\n", - "But they *can* be used as values." - ] - }, - { - "cell_type": "markdown", - "id": "acfd2720", - "metadata": { - "tags": [ - "section_palindrome_list" - ] - }, - "source": [ - "## Accumulating a list\n", - "\n", - "For many programming tasks, it is useful to loop through one list or dictionary while building another.\n", - "As an example, we'll loop through the words in `word_dict` and make a list of palindromes -- that is, words that are spelled the same backward and forward, like \"noon\" and \"rotator\".\n", - "\n", - "In the previous chapter, one of the exercises asked you to write a function that checks whether a word is a palindrome.\n", - "Here's a solution that uses `reverse_word`." - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "id": "0647278e", - "metadata": {}, - "outputs": [], - "source": [ - "def is_palindrome(word):\n", - " \"\"\"Check if a word is a palindrome.\"\"\"\n", - " return reverse_word(word) == word" - ] - }, - { - "cell_type": "markdown", - "id": "af545fcd", - "metadata": {}, - "source": [ - "If we loop through the words in `word_dict`, we can count the number of palindromes like this." - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "id": "9eff9f2c", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "91" - ] - }, - "execution_count": 42, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "count = 0\n", - "\n", - "for word in word_dict:\n", - " if is_palindrome(word):\n", - " count +=1\n", - " \n", - "count" - ] - }, - { - "cell_type": "markdown", - "id": "73c1ce1e", - "metadata": {}, - "source": [ - "By now, this pattern is familiar.\n", - "\n", - "* Before the loop, `count` is initialized to `0`.\n", - "\n", - "* Inside the loop, if `word` is a palindrome, we increment `count`.\n", - "\n", - "* When the loop ends, `count` contains the total number of palindromes.\n", - "\n", - "We can use a similar pattern to make a list of palindromes." - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "id": "609bdd9a", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['aa', 'aba', 'aga', 'aha', 'ala', 'alula', 'ama', 'ana', 'anna', 'ava']" - ] - }, - "execution_count": 43, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "palindromes = []\n", - "\n", - "for word in word_dict:\n", - " if is_palindrome(word):\n", - " palindromes.append(word)\n", - "\n", - "palindromes[:10]" - ] - }, - { - "cell_type": "markdown", - "id": "be909f3b", - "metadata": {}, - "source": [ - "Here's how it works:\n", - "\n", - "* Before the loop, `palindromes` is initialized with an empty list.\n", - "\n", - "* Inside the loop, if `word` is a palindrome, we append it to the end of `palindromes`.\n", - "\n", - "* When the loop ends, `palindromes` is a list of palindromes.\n", - "\n", - "In this loop, `palindromes` is used as an **accumulator**, which is a variable that collects or accumulates data during a computation.\n", - "\n", - "Now suppose we want to select only palindromes with seven or more letters.\n", - "We can loop through `palindromes` and make a new list that contains only long palindromes." - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "id": "c2db1187", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['deified', 'halalah', 'reifier', 'repaper', 'reviver', 'rotator', 'sememes']" - ] - }, - "execution_count": 44, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "long_palindromes = []\n", - "\n", - "for word in palindromes:\n", - " if len(word) >= 7:\n", - " long_palindromes.append(word)\n", - " \n", - "long_palindromes" - ] - }, - { - "cell_type": "markdown", - "id": "fa8ed275", - "metadata": {}, - "source": [ - "Looping through a list like this, selecting some elements and omitting others, is called **filtering**." - ] - }, - { - "cell_type": "markdown", - "id": "8ed50837", - "metadata": { - "tags": [ - "section_memos" - ] - }, - "source": [ - "## Memos\n", - "\n", - "If you ran the `fibonacci` function from [Chapter 6](section_fibonacci), maybe you noticed that the bigger the argument you provide, the longer the function takes to run." - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "id": "13a7ed35", - "metadata": {}, - "outputs": [], - "source": [ - "def fibonacci(n):\n", - " if n == 0:\n", - " return 0\n", - " \n", - " if n == 1:\n", - " return 1\n", - "\n", - " return fibonacci(n-1) + fibonacci(n-2)" - ] - }, - { - "cell_type": "markdown", - "id": "1b5203c2", - "metadata": {}, - "source": [ - "Furthermore, the run time increases quickly.\n", - "To understand why, consider the following figure, which shows the **call graph** for\n", - "`fibonacci` with `n=4`:" - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "id": "7ed6137a", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "from diagram import make_binding, Frame, Arrow\n", - "\n", - "bindings = [make_binding('n', i) for i in range(5)]\n", - "frames = [Frame([binding]) for binding in bindings]" - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "id": "a9374c39", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "arrowprops = dict(arrowstyle=\"-\", color='gray', alpha=0.5, ls='-', lw=0.5)\n", - "\n", - "def left_arrow(ax, bbox1, bbox2):\n", - " x = bbox1.xmin + 0.1\n", - " y = bbox1.ymin\n", - " dx = bbox2.xmax - x - 0.1\n", - " dy = bbox2.ymax - y\n", - " arrow = Arrow(dx=dx, dy=dy, arrowprops=arrowprops)\n", - " return arrow.draw(ax, x, y)\n", - "\n", - "def right_arrow(ax, bbox1, bbox2):\n", - " x = bbox1.xmax - 0.1\n", - " y = bbox1.ymin\n", - " dx = bbox2.xmin - x + 0.1\n", - " dy = bbox2.ymax - y\n", - " arrow = Arrow(dx=dx, dy=dy, arrowprops=arrowprops)\n", - " return arrow.draw(ax, x, y)" - ] - }, - { - "cell_type": "code", - "execution_count": 48, - "id": "12098be7", - "metadata": { - "tags": [ - "remove-input" - ] - }, - "outputs": [ - { - "data": { - "image/png": "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y7oAWA3GxsayLgGS09ramnUJVAHjM6w84zMnwvgMK8/4zIkwPsPKy2p8tmIAAAAAAAASIhgAAAAAAICECAYAAAAAACAhggEAAAAAAEiIYAAAAAAAABIiGAAAAAAAgIQIBgAAAAAAICGCAQAAAAAASIhgAAAAAAAAEiIYAAAAAACAhAgGAAAAAAAgIYIBAAAAAABIiGAAAAAAAAASIhgAAAAAAICECAYAAAAAACAhggEAAAAAAEiIYAAAAAAAABIiGAAAAAAAgIQIBgAAAAAAICGCAQAAAAAASIhgAAAAAAAAEiIYAAAAAACAhAgGAAAAAAAgIYIBAAAAAABIiGAAAAAAAAASIhgAAAAAAICECAYAAAAAACAhggEAAAAAAEiIYAAAAAAAABIiGAAAAAAAgITUZV0AANl67rnn4sc//nH85Cc/iSeeeCJefPHFGB8fj5aWljj99NNj8+bN8cEPfjAuvfTSrEsFSMrCwkI8+eST8eijj8auXbvi0UcfjT179sTc3FxERFx66aXxve99L+MqAdJjfAaoXLOzs/HP//zPsX379njqqaeiUChEe3t7vO51r4v3vve9cfXVV0dnZ2fWZVYEwQBAoh577LG4/vrr45FHHjnm+ZGRkRgZGYm9e/fG//gf/yPe/OY3x9///d/HGWecscKVAqTnrrvuiuuuuy4mJyezLgWAwxifASrX008/Hddee2387Gc/O+J4Pp+PfD4fDz30UHzta1+Lr3/96/HOd74zoyorh2AAIFH79u07KhR4/etfH+eee250dnbGoUOH4sEHH4z9+/dHRMR9990XV1xxRXz/+9+PDRs2ZFEyQDIOHTrkSyeACmR8BqhM+/fvj/e85z1x4MCBiIjI5XJxySWXxIYNG2JwcDDuueeemJqaioGBgfjIRz4St99+e1x22WUZV50twQBA4n7zN38z/uiP/ii2bt0av/Ebv3HEuWKxGNu2bYvPfvazMTk5GQcOHIjrrrsu/uVf/iVyuVxGFQOko6enJy688MLyf3fffXfceOONWZcFkDzjM0Bl+cQnPlEOBV772tfGbbfdFm984xvL54eGhuLjH/943HPPPTE3Nxd/+Id/GI899li0t7dnVHH2BAMAierr64sbb7wxrrrqqqitrT3mZ2pqauKjH/1otLe3x9VXXx0REQ8//HDcfffdccUVV6xkuQBJueKK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AAAAAJAQwQAAAAAAACREMAAAAAAAAAkRDAAAAAAAQEIEAwAAAAAAkBDBAAAAAAAAJEQwAAAAAAAACREMAAAAAABAQgQDAAAAAACQEMEAAAAAAAAkRDAAAAAAAAAJEQwAAAAAAEBCBAMAAAAAAJAQwQAAAAAAACREMAAAAAAAAAnJlUqlUtZFAAAAAAAAK8OKAQAAAAAASIhgAAAAAAAAEiIYAAAAAACAhAgGAAAAAAAgIYIBAAAAAABIiGAAAAAAAAASIhgAAAAAAICECAYAAAAAACAhggEAAAAAAEiIYAAAAAAAABIiGAAAAAAAgIQIBgAAAAAAICGCAQAAAAAASIhgAAAAAAAAEiIYAAAAAACAhAgGAAAAAAAgIYIBAAAAAABIiGAAAAAAAAASIhgAAAAAAICECAYAAAAAACAhggEAAAAAAEiIYAAAAAAAABIiGAAAAAAAgIQIBgAAAAAAICGCAQAAAAAASIhgAAAAAAAAEiIYAAAAAACAhAgGAAAAAAAgIYIBAAAAAABIiGAAAAAAAAASIhgAAAAAAICECAYAAAAAACAhggEAAAAAAEiIYAAAAAAAABIiGAAAAAAAgIQIBgAAAAAAICGCAQAAAAAASIhgAAAAAAAAEiIYAAAAAACAhAgGAAAAAAAgIYIBAAAAAABIiGAAAAAAAAASIhgAAAAAAICECAYAAAAAACAhggEAAAAAAEiIYAAAAAAAABIiGAAAAAAAgIQIBgAAAAAAICGCAQAAAAAASIhgAAAAAAAAEiIYAAAAAACAhAgGAAAAAAAgIYIBAAAAAABIiGAAAAAAAAASIhgAAAAAAICECAYAAAAAACAhggEAAAAAAEiIYAAAAAAAABIiGAAAAAAAgIQIBgAAAAAAICH/HwOaWw8YR9m0AAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from diagram import diagram, adjust, Bbox\n", - "\n", - "width, height, x, y = [4.94, 2.16, -1.03, 1.91]\n", - "ax = diagram(width, height)\n", - "\n", - "dx = 0.6\n", - "dy = 0.55\n", - "\n", - "bboxes = []\n", - "bboxes.append(frames[4].draw(ax, x+6*dx, y))\n", - "\n", - "bboxes.append(frames[3].draw(ax, x+4*dx, y-dy))\n", - "bboxes.append(frames[2].draw(ax, x+8*dx, y-dy))\n", - "\n", - "bboxes.append(frames[2].draw(ax, x+3*dx, y-2*dy))\n", - "bboxes.append(frames[1].draw(ax, x+5*dx, y-2*dy))\n", - "bboxes.append(frames[1].draw(ax, x+7*dx, y-2*dy))\n", - "bboxes.append(frames[0].draw(ax, x+9*dx, y-2*dy))\n", - "\n", - "bboxes.append(frames[1].draw(ax, x+2*dx, y-3*dy))\n", - "bboxes.append(frames[0].draw(ax, x+4*dx, y-3*dy))\n", - "\n", - "left_arrow(ax, bboxes[0], bboxes[1])\n", - "left_arrow(ax, bboxes[1], bboxes[3])\n", - "left_arrow(ax, bboxes[3], bboxes[7])\n", - "left_arrow(ax, bboxes[2], bboxes[5])\n", - "\n", - "right_arrow(ax, bboxes[0], bboxes[2])\n", - "right_arrow(ax, bboxes[1], bboxes[4])\n", - "right_arrow(ax, bboxes[2], bboxes[6])\n", - "right_arrow(ax, bboxes[3], bboxes[8])\n", - "\n", - "bbox = Bbox.union(bboxes)\n", - "# adjust(x, y, bbox)" - ] - }, - { - "cell_type": "markdown", - "id": "4ee2a87c", - "metadata": {}, - "source": [ - "A call graph shows a set of function frames, with lines connecting each frame to the frames of the functions it calls.\n", - "At the top of the graph, `fibonacci` with `n=4` calls `fibonacci` with ` n=3` and `n=2`.\n", - "In turn, `fibonacci` with `n=3` calls `fibonacci` with `n=2` and `n=1`. And so on.\n", - "\n", - "Count how many times `fibonacci(0)` and `fibonacci(1)` are called. \n", - "This is an inefficient solution to the problem, and it gets worse as the argument gets bigger.\n", - "\n", - "One solution is to keep track of values that have already been computed by storing them in a dictionary.\n", - "A previously computed value that is stored for later use is called a **memo**.\n", - "Here is a \"memoized\" version of `fibonacci`:" - ] - }, - { - "cell_type": "code", - "execution_count": 49, - "id": "28e443f5", - "metadata": {}, - "outputs": [], - "source": [ - "known = {0:0, 1:1}\n", - "\n", - "def fibonacci_memo(n):\n", - " if n in known:\n", - " return known[n]\n", - "\n", - " res = fibonacci_memo(n-1) + fibonacci_memo(n-2)\n", - " known[n] = res\n", - " return res" - ] - }, - { - "cell_type": "markdown", - "id": "d2ac4dd7", - "metadata": {}, - "source": [ - "`known` is a dictionary that keeps track of the Fibonacci numbers we already know\n", - "It starts with two items: `0` maps to `0` and `1` maps to `1`.\n", - "\n", - "Whenever `fibonacci_memo` is called, it checks `known`.\n", - "If the result is already there, it can return immediately.\n", - "Otherwise it has to compute the new value, add it to the dictionary, and return it.\n", - "\n", - "Comparing the two functions, `fibonacci(40)` takes about 30 seconds to run.\n", - "`fibonacci_memo(40)` takes about 30 microseconds, so it's a million times faster.\n", - "In the notebook for this chapter, you'll see where these measurements come from." - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "id": "af818c11", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "# %time fibonacci(40)" - ] - }, - { - "cell_type": "code", - "execution_count": 51, - "id": "7316d721", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: user 13 µs, sys: 9 µs, total: 22 µs\n", - "Wall time: 24.3 µs\n" - ] - }, - { - "data": { - "text/plain": [ - "102334155" - ] - }, - "execution_count": 51, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "%time fibonacci_memo(40)" - ] - }, - { - "cell_type": "markdown", - "id": "ec969e51", - "metadata": {}, - "source": [ - "## Debugging\n", - "\n", - "As you work with bigger datasets it can become unwieldy to debug by printing and checking the output by hand. Here are some suggestions for debugging large datasets:\n", - "\n", - "1. Scale down the input: If possible, reduce the size of the dataset. For example if the\n", - " program reads a text file, start with just the first 10 lines, or\n", - " with the smallest example you can find. You can either edit the\n", - " files themselves, or (better) modify the program so it reads only\n", - " the first `n` lines.\n", - "\n", - " If there is an error, you can reduce `n` to the smallest value where the error occurs.\n", - " As you find and correct errors, you can increase `n` gradually." - ] - }, - { - "cell_type": "markdown", - "id": "1a62288b", - "metadata": {}, - "source": [ - "2. Check summaries and types: Instead of printing and checking the entire dataset, consider\n", - " printing summaries of the data -- for example, the number of items in\n", - " a dictionary or the total of a list of numbers.\n", - "\n", - " A common cause of runtime errors is a value that is not the right type. For debugging this kind of error, it is often enough to print the type of a value." - ] - }, - { - "cell_type": "markdown", - "id": "c749ea3c", - "metadata": {}, - "source": [ - "3. Write self-checks: Sometimes you can write code to check for errors automatically. For\n", - " example, if you are computing the average of a list of numbers, you\n", - " could check that the result is not greater than the largest element\n", - " in the list or less than the smallest. This is called a \"sanity\n", - " check\" because it detects results that are \"insane\".\n", - "\n", - " Another kind of check compares the results of two different computations to see if they are consistent. This is called a \"consistency check\"." - ] - }, - { - "cell_type": "markdown", - "id": "749b91e9", - "metadata": {}, - "source": [ - "4. Format the output: Formatting debugging output can make it easier to spot an error. We saw an example in [Chapter 6](section_debugging_factorial). Another tool you might find useful is the `pprint` module, which provides a `pprint` function that displays built-in types in a more human-readable format (`pprint` stands for \"pretty print\").\n", - "\n", - " Again, time you spend building scaffolding can reduce the time you spend debugging." - ] - }, - { - "cell_type": "markdown", - "id": "9820175f", - "metadata": {}, - "source": [ - "## Glossary\n", - "\n", - "**dictionary:**\n", - " An object that contains key-value pairs, also called items.\n", - "\n", - "**item:**\n", - " In a dictionary, another name for a key-value pair.\n", - "\n", - "**key:**\n", - " An object that appears in a dictionary as the first part of a key-value pair.\n", - "\n", - "**value:**\n", - " An object that appears in a dictionary as the second part of a key-value pair. This is more specific than our previous use of the word \"value\".\n", - "\n", - "**mapping:**\n", - " A relationship in which each element of one set corresponds to an element of another set.\n", - "\n", - "**hash table:**\n", - "A collection of key-value pairs organized so that we can look up a key and find its value efficiently.\n", - "\n", - "**hashable:**\n", - " Immutable types like integers, floats and strings are hashable.\n", - " Mutable types like lists and dictionaries are not.\n", - "\n", - "**hash function:**\n", - "A function that takes an object and computes an integer that is used to locate a key in a hash table.\n", - "\n", - "**accumulator:**\n", - " A variable used in a loop to add up or accumulate a result.\n", - "\n", - "**filtering:**\n", - "Looping through a sequence and selecting or omitting elements.\n", - "\n", - "**call graph:**\n", - "A diagram that shows every frame created during the execution of a program, with an arrow from each caller to each callee.\n", - "\n", - "**memo:**\n", - " A computed value stored to avoid unnecessary future computation." - ] - }, - { - "cell_type": "markdown", - "id": "906c1236", - "metadata": {}, - "source": [ - "## Exercises" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "1e3c12ec", - "metadata": { - "tags": [ - "remove-print" - ] - }, - "outputs": [], - "source": [ - "# This cell tells Jupyter to provide detailed debugging information\n", - "# when a runtime error occurs. Run it before working on the exercises.\n", - "\n", - "%xmode Verbose" - ] - }, - { - "cell_type": "markdown", - "id": "170f1deb", - "metadata": {}, - "source": [ - "### Ask a virtual assistant\n", - "\n", - "In this chapter, I said the keys in a dictionary have to be hashable and I gave a short explanation. If you would like more details, ask a virtual assistant, \"Why do keys in Python dictionaries have to be hashable?\"\n", - "\n", - "In [a previous section](section_dictionary_in_operator), we stored a list of words as keys in a dictionary so that we could use an efficient version of the `in` operator.\n", - "We could have done the same thing using a `set`, which is another built-in data type.\n", - "Ask a virtual assistant, \"How do I make a Python set from a list of strings and check whether a string is an element of the set?\"" - ] - }, - { - "cell_type": "markdown", - "id": "badf7d65", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "Dictionaries have a method called `get` that takes a key and a default value. \n", - "If the key appears in the dictionary, `get` returns the corresponding value; otherwise it returns the default value.\n", - "For example, here's a dictionary that maps from the letters in a string to the number of times they appear." - ] - }, - { - "cell_type": "code", - "execution_count": 52, - "id": "06e437d9", - "metadata": {}, - "outputs": [], - "source": [ - "counter = value_counts('brontosaurus')" - ] - }, - { - "cell_type": "markdown", - "id": "c3f6458d", - "metadata": {}, - "source": [ - "If we look up a letter that appears in the word, `get` returns the number of times it appears." - ] - }, - { - "cell_type": "code", - "execution_count": 53, - "id": "fc328161", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "1" - ] - }, - "execution_count": 53, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "counter.get('b', 0)" - ] - }, - { - "cell_type": "markdown", - "id": "49bbff3e", - "metadata": {}, - "source": [ - "If we look up a letter that doesn't appear, we get the default value, `0`." - ] - }, - { - "cell_type": "code", - "execution_count": 54, - "id": "674b6663", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0" - ] - }, - "execution_count": 54, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "counter.get('c', 0)" - ] - }, - { - "cell_type": "markdown", - "id": "4ac3210f", - "metadata": {}, - "source": [ - "Use `get` to write a more concise version of `value_counts`.\n", - "You should be able to eliminate the `if` statement." - ] - }, - { - "cell_type": "markdown", - "id": "5413af6e", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "What is the longest word you can think of where each letter appears only once?\n", - "Let's see if we can find one longer than `unpredictably`.\n", - "\n", - "Write a function named `has_duplicates` that takes a sequence -- like a list or string -- as a parameter and returns `True` if there is any element that appears in the sequence more than once." - ] - }, - { - "cell_type": "markdown", - "id": "9879d9e7", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "To get you started, here's an outline of the function with doctests." - ] - }, - { - "cell_type": "code", - "execution_count": 55, - "id": "1744d3e9", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "def has_duplicates(t):\n", - " \"\"\"Check whether any element in a sequence appears more than once.\n", - " \n", - " >>> has_duplicates('banana')\n", - " True\n", - " >>> has_duplicates('ambidextrously')\n", - " False\n", - " >>> has_duplicates([1, 2, 2])\n", - " True\n", - " >>> has_duplicates([1, 2, 3])\n", - " False\n", - " \"\"\"\n", - " return None" - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "id": "061e2903", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def has_duplicates(t):\n", - " \"\"\"Check whether any element in a sequence appears more than once.\n", - " \n", - " >>> has_duplicates('banana')\n", - " True\n", - " >>> has_duplicates('ambidextrously')\n", - " False\n", - " >>> has_duplicates([1, 2, 2])\n", - " True\n", - " >>> has_duplicates([1, 2, 3])\n", - " False\n", - " \"\"\"\n", - " d = {}\n", - " for x in t:\n", - " d[x] = True\n", - " return len(d) < len(t)" - ] - }, - { - "cell_type": "markdown", - "id": "d8c85906", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "You can use `doctest` to test your function." - ] - }, - { - "cell_type": "code", - "execution_count": 57, - "id": "62dcdf4d", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "from doctest import run_docstring_examples\n", - "\n", - "def run_doctests(func):\n", - " run_docstring_examples(func, globals(), name=func.__name__)\n", - "\n", - "run_doctests(has_duplicates)" - ] - }, - { - "cell_type": "markdown", - "id": "ce4df190", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "You can use this loop to find the longest words with no repeated letters." - ] - }, - { - "cell_type": "code", - "execution_count": 58, - "id": "a1143193", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "['ambidextrously',\n", - " 'lycanthropies',\n", - " 'metalworkings',\n", - " 'multibranched',\n", - " 'unpredictably']" - ] - }, - "execution_count": 58, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "no_repeats = []\n", - "\n", - "for word in word_list:\n", - " if len(word) > 12 and not has_duplicates(word):\n", - " no_repeats.append(word)\n", - " \n", - "no_repeats" - ] - }, - { - "cell_type": "markdown", - "id": "afd5f3b6", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "Write a function called `find_repeats` that takes a dictionary that maps from each key to a counter, like the result from `value_counts`.\n", - "It should loop through the dictionary and return a list of keys that have counts greater than `1`.\n", - "You can use the following outline to get started." - ] - }, - { - "cell_type": "code", - "execution_count": 59, - "id": "9ea333ff", - "metadata": {}, - "outputs": [], - "source": [ - "def find_repeats(counter):\n", - " \"\"\"Makes a list of keys with values greater than 1.\n", - " \n", - " counter: dictionary that maps from keys to counts\n", - " \n", - " returns: list of keys\n", - " \"\"\"\n", - " return []" - ] - }, - { - "cell_type": "code", - "execution_count": 60, - "id": "bbd6d241", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def find_repeats(counter):\n", - " \"\"\"Makes a list of keys with values greater than 1.\n", - " \n", - " counter: dictionary that maps from keys to counts\n", - " \n", - " returns: list of keys\n", - " \"\"\"\n", - " repeats = []\n", - " for key, count in counter.items():\n", - " if count > 1:\n", - " repeats.append(key)\n", - " return repeats" - ] - }, - { - "cell_type": "markdown", - "id": "b9b0cbec", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "You can use the following examples to test your code.\n", - "First, we'll make a dictionary that maps from letters to counts." - ] - }, - { - "cell_type": "code", - "execution_count": 61, - "id": "ac983c6f", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "{'b': 1, 'a': 3, 'n': 2}" - ] - }, - "execution_count": 61, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "counter1 = value_counts('banana')\n", - "counter1" - ] - }, - { - "cell_type": "markdown", - "id": "3aa62942", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "The result from `find_repeats` should be `['a', 'n']`." - ] - }, - { - "cell_type": "code", - "execution_count": 62, - "id": "214345d8", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "['a', 'n']" - ] - }, - "execution_count": 62, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "repeats = find_repeats(counter1)\n", - "repeats" - ] - }, - { - "cell_type": "markdown", - "id": "3eaf77f8", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "Here's another example that starts with a list of numbers.\n", - "The result should be `[1, 2]`." - ] - }, - { - "cell_type": "code", - "execution_count": 63, - "id": "10e9d54a", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "[1, 2]" - ] - }, - "execution_count": 63, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "counter1 = value_counts([1, 2, 3, 2, 1])\n", - "repeats = find_repeats(counter1)\n", - "repeats" - ] - }, - { - "cell_type": "markdown", - "id": "1c700d84", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "Suppose you run `value_counts` with two different words and save the results in two dictionaries." - ] - }, - { - "cell_type": "code", - "execution_count": 64, - "id": "c97e2419", - "metadata": {}, - "outputs": [], - "source": [ - "counter1 = value_counts('brontosaurus')\n", - "counter2 = value_counts('apatosaurus')" - ] - }, - { - "cell_type": "markdown", - "id": "deb14c7a", - "metadata": {}, - "source": [ - "Each dictionary maps from a set of letters to the number of times they appear.\n", - "Write a function called `add_counters` that takes two dictionaries like this and returns a new dictionary that contains all of the letters and the total number of times they appear in either word.\n", - "\n", - "There are many ways to solve this problem.\n", - "Once you have a working solution, consider asking a virtual assistant for different solutions." - ] - }, - { - "cell_type": "code", - "execution_count": 65, - "id": "6cf70355", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def add_counters(counter1, counter2):\n", - " result = dict(counter1)\n", - " for letter, count in counter2.items():\n", - " result[letter] = result.get(letter, 0) + count\n", - " return result" - ] - }, - { - "cell_type": "code", - "execution_count": 66, - "id": "6a729a14", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'b': 1, 'r': 3, 'o': 3, 'n': 1, 't': 2, 's': 4, 'a': 4, 'u': 4, 'p': 1}" - ] - }, - "execution_count": 66, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Solution\n", - "\n", - "add_counters(counter1, counter2)" - ] - }, - { - "cell_type": "markdown", - "id": "f88110a9", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "A word is \"interlocking\" if we can split it into two words by taking alternating letters.\n", - "For example, \"schooled\" is an interlocking word because it can be split into \"shoe\" and \"cold\".\n", - "\n", - "To select alternating letters from a string, you can use a slice operator with three components that indicate where to start, where to stop, and the \"step size\" between the letters.\n", - "\n", - "In the following slice, the first component is `0`, so we start with the first letter.\n", - "The second component is `None`, which means we should go all the way to the end of the string.\n", - "And the third component is `2`, so there are two steps between the letters we select." - ] - }, - { - "cell_type": "code", - "execution_count": 67, - "id": "56783358", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'shoe'" - ] - }, - "execution_count": 67, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "word = 'schooled'\n", - "first = word[0:None:2]\n", - "first" - ] - }, - { - "cell_type": "markdown", - "id": "d432332d", - "metadata": {}, - "source": [ - "Instead of providing `None` as the second component, we can get the same effect by leaving it out altogether.\n", - "For example, the following slice selects alternating letters, starting with the second letter." - ] - }, - { - "cell_type": "code", - "execution_count": 68, - "id": "77fa8483", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'cold'" - ] - }, - "execution_count": 68, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "second = word[1::2]\n", - "second" - ] - }, - { - "cell_type": "markdown", - "id": "c8c4e3ba", - "metadata": {}, - "source": [ - "Write a function called `is_interlocking` that takes a word as an argument and returns `True` if it can be split into two interlocking words." - ] - }, - { - "cell_type": "code", - "execution_count": 69, - "id": "e5e1030c", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def is_interlocking(word):\n", - " first = word[0::2]\n", - " second = word[1::2]\n", - " return first in word_dict and second in word_dict" - ] - }, - { - "cell_type": "markdown", - "id": "2787f786", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "You can use the following loop to find the interlocking words in the word list." - ] - }, - { - "cell_type": "code", - "execution_count": 70, - "id": "e04a5c73", - "metadata": { - "tags": [ - "remove-output", - "remove-print" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "adroitly aril doty\n", - "agrarians arras gain\n", - "alienees aine lees\n", - "arrestee arse rete\n", - "arrestees arses rete\n", - "ballooned blond aloe\n", - "barmaids brad amis\n", - "baudrons burn ados\n", - "beakless bals ekes\n", - "beamless bals emes\n", - "bloodred bode lord\n", - "blueness buns lees\n", - "booklets bolt okes\n", - "burseeds bred uses\n", - "calliope clip aloe\n", - "calliopes clips aloe\n", - "cellules clue ells\n", - "cheerier cere heir\n", - "colludes clue olds\n", - "cookless cols okes\n", - "coolness cons oles\n", - "countess cuts ones\n", - "couplets cult opes\n", - "dainties dite anis\n", - "doorless dols ores\n", - "dourness duns ores\n", - "fairness fins ares\n", - "fleetest fets leet\n", - "fleetness fetes lens\n", - "foulness funs oles\n", - "freeness fens rees\n", - "friended fine redd\n", - "furrings frig urns\n", - "goalless gals oles\n", - "greeniest genet reis\n", - "greyness gens ryes\n", - "grounded gone rudd\n", - "hooklets holt okes\n", - "ignitron into girn\n", - "isleless ills sees\n", - "mailless mils ales\n", - "moonless mols ones\n", - "moonlets molt ones\n", - "moonsets most ones\n", - "neutrals nurl etas\n", - "oghamist ohms gait\n", - "parietes pree aits\n", - "peakless pals ekes\n", - "plainness panes lins\n", - "playless pals lyes\n", - "pleonasm pens loam\n", - "poorness pons ores\n", - "psalmist pams slit\n", - "rainouts riot anus\n", - "ruinable rial unbe\n", - "sapiences specs aine\n", - "schooled shoe cold\n", - "scurries sure cris\n", - "seamless sals emes\n", - "seigneurs sinus eger\n", - "shoalest sols haet\n", - "shoalier sole hair\n", - "skerries sere kris\n", - "smearier sere mair\n", - "soapless sals opes\n", - "sourness suns ores\n", - "spoonies sone pois\n", - "spurning sunn prig\n", - "stainless sanes tils\n", - "sweetest sets weet\n", - "tailless tils ales\n", - "tautness tuns ates\n", - "terrenes tree erns\n", - "theorems term hoes\n", - "trientes tine rets\n", - "triolets tilt roes\n", - "trueness tuns rees\n", - "vainness vins anes\n", - "voidness vins odes\n", - "weakness wans ekes\n", - "weirdness wides erns\n", - "weirdoes wide eros\n" - ] - } - ], - "source": [ - "for word in word_list:\n", - " if len(word) >= 8 and is_interlocking(word):\n", - " first = word[0::2]\n", - " second = word[1::2]\n", - " print(word, first, second)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "ced5aa90", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "id": "a7f4edf8", - "metadata": { - "tags": [] - }, - "source": [ - "[Think Python: 3rd Edition](https://allendowney.github.io/ThinkPython/index.html)\n", - "\n", - "Copyright 2024 [Allen B. Downey](https://allendowney.com)\n", - "\n", - "Code license: [MIT License](https://mit-license.org/)\n", - "\n", - "Text license: [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-nc-sa/4.0/)" - ] - } - ], - "metadata": { - "celltoolbar": "Tags", - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.11" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/soln/chap11.ipynb b/soln/chap11.ipynb deleted file mode 100644 index 5d28fbe..0000000 --- a/soln/chap11.ipynb +++ /dev/null @@ -1,3526 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "1331faa1", - "metadata": {}, - "source": [ - "You can order print and ebook versions of *Think Python 3e* from\n", - "[Bookshop.org](https://bookshop.org/a/98697/9781098155438) and\n", - "[Amazon](https://www.amazon.com/_/dp/1098155432?smid=ATVPDKIKX0DER&_encoding=UTF8&tag=oreilly20-20&_encoding=UTF8&tag=greenteapre01-20&linkCode=ur2&linkId=e2a529f94920295d27ec8a06e757dc7c&camp=1789&creative=9325)." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "295ac6d7", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "from os.path import basename, exists\n", - "\n", - "def download(url):\n", - " filename = basename(url)\n", - " if not exists(filename):\n", - " from urllib.request import urlretrieve\n", - "\n", - " local, _ = urlretrieve(url, filename)\n", - " print(\"Downloaded \" + str(local))\n", - " return filename\n", - "\n", - "download('https://github.com/AllenDowney/ThinkPython/raw/v3/thinkpython.py');\n", - "download('https://github.com/AllenDowney/ThinkPython/raw/v3/diagram.py');\n", - "\n", - "import thinkpython" - ] - }, - { - "cell_type": "markdown", - "id": "5705b2a6", - "metadata": { - "tags": [ - "chapter_tuples" - ] - }, - "source": [ - "# Tuples\n", - "\n", - "This chapter introduces one more built-in type, the tuple, and then shows how lists, dictionaries, and tuples work together.\n", - "It also presents tuple assignment and a useful feature for functions with variable-length argument lists: the packing and unpacking operators.\n", - "\n", - "In the exercises, we'll use tuples, along with lists and dictionaries, to solve more word puzzles and implement efficient algorithms.\n", - "\n", - "One note: There are two ways to pronounce \"tuple\".\n", - "Some people say \"tuh-ple\", which rhymes with \"supple\".\n", - "But in the context of programming, most people say \"too-ple\", which rhymes with \"quadruple\"." - ] - }, - { - "cell_type": "markdown", - "id": "19474596", - "metadata": {}, - "source": [ - "## Tuples are like lists\n", - "\n", - "A tuple is a sequence of values. The values can be any type, and they are indexed by integers, so tuples are a lot like lists.\n", - "The important difference is that tuples are immutable.\n", - "\n", - "To create a tuple, you can write a comma-separated list of values." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "fb0bdca2", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "tuple" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "t = 'l', 'u', 'p', 'i', 'n'\n", - "type(t)" - ] - }, - { - "cell_type": "markdown", - "id": "a2ec15d8", - "metadata": {}, - "source": [ - "Although it is not necessary, it is common to enclose tuples in parentheses." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "5a6da881", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "tuple" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "t = ('l', 'u', 'p', 'i', 'n')\n", - "type(t)" - ] - }, - { - "cell_type": "markdown", - "id": "9194a159", - "metadata": {}, - "source": [ - "To create a tuple with a single element, you have to include a final comma." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "e2596ca7", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "tuple" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "t1 = 'p',\n", - "type(t1)" - ] - }, - { - "cell_type": "markdown", - "id": "e39b95a5", - "metadata": {}, - "source": [ - "A single value in parentheses is not a tuple." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "a0d350a6", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "str" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "t2 = ('p')\n", - "type(t2)" - ] - }, - { - "cell_type": "markdown", - "id": "a64bfb64", - "metadata": {}, - "source": [ - "Another way to create a tuple is the built-in function `tuple`. With no\n", - "argument, it creates an empty tuple." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "c9100ee4", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "()" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "t = tuple()\n", - "t" - ] - }, - { - "cell_type": "markdown", - "id": "f3447831", - "metadata": {}, - "source": [ - "If the argument is a sequence (string, list or tuple), the result is a\n", - "tuple with the elements of the sequence." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "44bd3d83", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "('l', 'u', 'p', 'i', 'n')" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "t = tuple('lupin')\n", - "t" - ] - }, - { - "cell_type": "markdown", - "id": "2e48b980", - "metadata": {}, - "source": [ - "Because `tuple` is the name of a built-in function, you should avoid using it as a variable name.\n", - "\n", - "Most list operators also work with tuples.\n", - "For example, the bracket operator indexes an element." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "92e55b2c", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'l'" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "t[0]" - ] - }, - { - "cell_type": "markdown", - "id": "2f702785", - "metadata": {}, - "source": [ - "And the slice operator selects a range of elements." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "38ee5c2a", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "('u', 'p')" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "t[1:3]" - ] - }, - { - "cell_type": "markdown", - "id": "c9ed9af2", - "metadata": {}, - "source": [ - "The `+` operator concatenates tuples." - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "2e0e311a", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "('l', 'u', 'p', 'i', 'n')" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "tuple('lup') + ('i', 'n')" - ] - }, - { - "cell_type": "markdown", - "id": "1d7dcd6d", - "metadata": {}, - "source": [ - "And the `*` operator duplicates a tuple a given number of times." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "8bb7d715", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "('s', 'p', 'a', 'm', 's', 'p', 'a', 'm')" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "tuple('spam') * 2 " - ] - }, - { - "cell_type": "markdown", - "id": "a53ce8bd", - "metadata": {}, - "source": [ - "The `sorted` function works with tuples -- but the result is a list, not a tuple." - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "e653e00f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['i', 'l', 'n', 'p', 'u']" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "sorted(t)" - ] - }, - { - "cell_type": "markdown", - "id": "50e5cadc", - "metadata": {}, - "source": [ - "The `reversed` function also works with tuples." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "8969188d", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "reversed(t)" - ] - }, - { - "cell_type": "markdown", - "id": "f6d973c5", - "metadata": {}, - "source": [ - "The result is a `reversed` object, which we can convert to a list or tuple." - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "65d7ebaa", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "('n', 'i', 'p', 'u', 'l')" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "tuple(reversed(t))" - ] - }, - { - "cell_type": "markdown", - "id": "a7cb9ee6", - "metadata": {}, - "source": [ - "Based on the examples so far, it might seem like tuples are the same as lists." - ] - }, - { - "cell_type": "markdown", - "id": "8c3f381e", - "metadata": {}, - "source": [ - "## But tuples are immutable\n", - "\n", - "If you try to modify a tuple with the bracket operator, you get a `TypeError`." - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "b4970fe0", - "metadata": { - "tags": [ - "raises-exception" - ] - }, - "outputs": [ - { - "ename": "TypeError", - "evalue": "'tuple' object does not support item assignment", - "output_type": "error", - "traceback": [ - "\u001b[0;31mTypeError\u001b[0m\u001b[0;31m:\u001b[0m 'tuple' object does not support item assignment\n" - ] - } - ], - "source": [ - "%%expect TypeError\n", - "t[0] = 'L'" - ] - }, - { - "cell_type": "markdown", - "id": "592ce99c", - "metadata": {}, - "source": [ - "And tuples don't have any of the methods that modify lists, like `append` and `remove`." - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "772738cc", - "metadata": { - "tags": [ - "raises-exception" - ] - }, - "outputs": [ - { - "ename": "AttributeError", - "evalue": "'tuple' object has no attribute 'remove'", - "output_type": "error", - "traceback": [ - "\u001b[0;31mAttributeError\u001b[0m\u001b[0;31m:\u001b[0m 'tuple' object has no attribute 'remove'\n" - ] - } - ], - "source": [ - "%%expect AttributeError\n", - "\n", - "t.remove('l')" - ] - }, - { - "cell_type": "markdown", - "id": "70772ba2", - "metadata": {}, - "source": [ - "Recall that an \"attribute\" is a variable or method associated with an object -- this error message means that tuples don't have a method named `remove`.\n", - "\n", - "Because tuples are immutable, they are hashable, which means they can be used as keys in a dictionary.\n", - "For example, the following dictionary contains two tuples as keys that map to integers." - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "37e67042", - "metadata": {}, - "outputs": [], - "source": [ - "d = {}\n", - "d[1, 2] = 3\n", - "d[3, 4] = 7" - ] - }, - { - "cell_type": "markdown", - "id": "47ba17ab", - "metadata": {}, - "source": [ - "We can look up a tuple in a dictionary like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "d809a490", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "3" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "d[1, 2]" - ] - }, - { - "cell_type": "markdown", - "id": "f2c0a354", - "metadata": {}, - "source": [ - "Or if we have a variable that refers to a tuple, we can use it as a key." - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "dfc42a8b", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "7" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "t = (3, 4)\n", - "d[t]" - ] - }, - { - "cell_type": "markdown", - "id": "2ea8fc3c", - "metadata": {}, - "source": [ - "Tuples can also appear as values in a dictionary." - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "2debf30c", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'key': ('a', 'b', 'c')}" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "t = tuple('abc')\n", - "d = {'key': t}\n", - "d" - ] - }, - { - "cell_type": "markdown", - "id": "25655ab3", - "metadata": {}, - "source": [ - "## Tuple assignment\n", - "\n", - "You can put a tuple of variables on the left side of an assignment, and a tuple of values on the right." - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "1e94ea37", - "metadata": {}, - "outputs": [], - "source": [ - "a, b = 1, 2" - ] - }, - { - "cell_type": "markdown", - "id": "92c00ceb", - "metadata": {}, - "source": [ - "The values are assigned to the variables from left to right -- in this example, `a` gets the value `1` and `b` gets the value `2`.\n", - "We can display the results like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "99c96c7f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(1, 2)" - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "a, b" - ] - }, - { - "cell_type": "markdown", - "id": "6362b36e", - "metadata": {}, - "source": [ - "More generally, if the left side of an assignment is a tuple, the right side can be any kind of sequence -- string, list or tuple. \n", - "For example, to split an email address into a user name and a domain, you could write:" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "b67881ed", - "metadata": {}, - "outputs": [], - "source": [ - "email = 'monty@python.org'\n", - "username, domain = email.split('@')" - ] - }, - { - "cell_type": "markdown", - "id": "d134a94c", - "metadata": {}, - "source": [ - "The return value from `split` is a list with two elements -- the first element is assigned to `username`, the second to `domain`." - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "b4515e2b", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "('monty', 'python.org')" - ] - }, - "execution_count": 25, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "username, domain" - ] - }, - { - "cell_type": "markdown", - "id": "5a7e3c62", - "metadata": {}, - "source": [ - "The number of variables on the left and the number of values on the\n", - "right have to be the same -- otherwise you get a `ValueError`." - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "8e5b4a14", - "metadata": { - "tags": [ - "raises-exception" - ] - }, - "outputs": [ - { - "ename": "ValueError", - "evalue": "too many values to unpack (expected 2)", - "output_type": "error", - "traceback": [ - "\u001b[0;31mValueError\u001b[0m\u001b[0;31m:\u001b[0m too many values to unpack (expected 2)\n" - ] - } - ], - "source": [ - "%%expect ValueError\n", - "a, b = 1, 2, 3" - ] - }, - { - "cell_type": "markdown", - "id": "808c2928", - "metadata": {}, - "source": [ - "Tuple assignment is useful if you want to swap the values of two variables.\n", - "With conventional assignments, you have to use a temporary variable, like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "2389d6de", - "metadata": {}, - "outputs": [], - "source": [ - "temp = a\n", - "a = b\n", - "b = temp" - ] - }, - { - "cell_type": "markdown", - "id": "98496d02", - "metadata": {}, - "source": [ - "That works, but with tuple assignment we can do the same thing without a temporary variable." - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "5512edec", - "metadata": {}, - "outputs": [], - "source": [ - "a, b = b, a" - ] - }, - { - "cell_type": "markdown", - "id": "a66a87bc", - "metadata": {}, - "source": [ - "This works because all of the expressions on the right side are evaluated before any of the assignments.\n", - "\n", - "We can also use tuple assignment in a `for` statement.\n", - "For example, to loop through the items in a dictionary, we can use the `items` method." - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "651ab417", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "one -> 1\n", - "two -> 2\n" - ] - } - ], - "source": [ - "d = {'one': 1, 'two': 2}\n", - "\n", - "for item in d.items():\n", - " key, value = item\n", - " print(key, '->', value)" - ] - }, - { - "cell_type": "markdown", - "id": "dd0d4feb", - "metadata": {}, - "source": [ - "Each time through the loop, `item` is assigned a tuple that contains a key and the corresponding value.\n", - "\n", - "We can write this loop more concisely, like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "id": "2c0b7d47", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "one -> 1\n", - "two -> 2\n" - ] - } - ], - "source": [ - "for key, value in d.items():\n", - " print(key, '->', value)" - ] - }, - { - "cell_type": "markdown", - "id": "f0513578", - "metadata": {}, - "source": [ - "Each time through the loop, a key and the corresponding value are assigned directly to `key` and `value`." - ] - }, - { - "cell_type": "markdown", - "id": "efedeb37", - "metadata": {}, - "source": [ - "## Tuples as return values\n", - "\n", - "Strictly speaking, a function can only return one value, but if the\n", - "value is a tuple, the effect is the same as returning multiple values.\n", - "For example, if you want to divide two integers and compute the quotient\n", - "and remainder, it is inefficient to compute `x//y` and then `x%y`. It is\n", - "better to compute them both at the same time.\n", - "\n", - "The built-in function `divmod` takes two arguments and returns a tuple\n", - "of two values, the quotient and remainder." - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "id": "fff80eaa", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(2, 1)" - ] - }, - "execution_count": 31, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "divmod(7, 3)" - ] - }, - { - "cell_type": "markdown", - "id": "33f3c57d", - "metadata": {}, - "source": [ - "We can use tuple assignment to store the elements of the tuple in two variables. " - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "id": "4a0eb2a9", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "2" - ] - }, - "execution_count": 32, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "quotient, remainder = divmod(7, 3)\n", - "quotient" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "id": "d74ba1b6", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "1" - ] - }, - "execution_count": 33, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "remainder" - ] - }, - { - "cell_type": "markdown", - "id": "15079805", - "metadata": {}, - "source": [ - "Here is an example of a function that returns a tuple." - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "id": "dad3b3bb", - "metadata": {}, - "outputs": [], - "source": [ - "def min_max(t):\n", - " return min(t), max(t)" - ] - }, - { - "cell_type": "markdown", - "id": "43c4e1e0", - "metadata": {}, - "source": [ - "`max` and `min` are built-in functions that find the largest and smallest elements of a sequence. \n", - "`min_max` computes both and returns a tuple of two values." - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "id": "fbd90b0e", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(1, 4)" - ] - }, - "execution_count": 35, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "min_max([2, 4, 1, 3])" - ] - }, - { - "cell_type": "markdown", - "id": "86b60e71", - "metadata": {}, - "source": [ - "We can assign the results to variables like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "id": "5a101efb", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(1, 4)" - ] - }, - "execution_count": 36, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "low, high = min_max([2, 4, 1, 3])\n", - "low, high" - ] - }, - { - "cell_type": "markdown", - "id": "112b5aa2", - "metadata": { - "tags": [ - "section_argument_pack" - ] - }, - "source": [ - "## Argument packing\n", - "\n", - "Functions can take a variable number of arguments. \n", - "A parameter name that begins with the `*` operator **packs** arguments into a tuple.\n", - "For example, the following function takes any number of arguments and computes their arithmetic mean -- that is, their sum divided by the number of arguments. " - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "id": "0a33e2d0", - "metadata": {}, - "outputs": [], - "source": [ - "def mean(*args):\n", - " return sum(args) / len(args)" - ] - }, - { - "cell_type": "markdown", - "id": "6044fc1b", - "metadata": {}, - "source": [ - "The parameter can have any name you like, but `args` is conventional.\n", - "We can call the function like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "id": "336a08ca", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "2.0" - ] - }, - "execution_count": 38, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "mean(1, 2, 3)" - ] - }, - { - "cell_type": "markdown", - "id": "a5e8b158", - "metadata": {}, - "source": [ - "If you have a sequence of values and you want to pass them to a function as multiple arguments, you can use the `*` operator to **unpack** the tuple.\n", - "For example, `divmod` takes exactly two arguments -- if you pass a tuple as a parameter, you get an error." - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "id": "991810bc", - "metadata": { - "tags": [ - "raises-exception" - ] - }, - "outputs": [ - { - "ename": "TypeError", - "evalue": "divmod expected 2 arguments, got 1", - "output_type": "error", - "traceback": [ - "\u001b[0;31mTypeError\u001b[0m\u001b[0;31m:\u001b[0m divmod expected 2 arguments, got 1\n" - ] - } - ], - "source": [ - "%%expect TypeError\n", - "t = (7, 3)\n", - "divmod(t)" - ] - }, - { - "cell_type": "markdown", - "id": "5a9110db", - "metadata": {}, - "source": [ - "Even though the tuple contains two elements, it counts as a single argument.\n", - "But if you unpack the tuple, it is treated as two arguments." - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "id": "f25ebee1", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(2, 1)" - ] - }, - "execution_count": 40, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "divmod(*t)" - ] - }, - { - "cell_type": "markdown", - "id": "da554863", - "metadata": {}, - "source": [ - "Packing and unpacking can be useful if you want to adapt the behavior of an existing function.\n", - "For example, this function takes any number of arguments, removes the lowest and highest, and computes the mean of the rest." - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "id": "7ad64412", - "metadata": {}, - "outputs": [], - "source": [ - "def trimmed_mean(*args):\n", - " low, high = min_max(args)\n", - " trimmed = list(args)\n", - " trimmed.remove(low)\n", - " trimmed.remove(high)\n", - " return mean(*trimmed)" - ] - }, - { - "cell_type": "markdown", - "id": "d1e05e49", - "metadata": {}, - "source": [ - "First it uses `min_max` to find the lowest and highest elements.\n", - "Then it converts `args` to a list so it can use the `remove` method.\n", - "Finally it unpacks the list so the elements are passed to `mean` as separate arguments, rather than as a single list.\n", - "\n", - "Here's an example that shows the effect." - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "id": "b2863701", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "4.0" - ] - }, - "execution_count": 42, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "mean(1, 2, 3, 10)" - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "id": "cc1afa29", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "2.5" - ] - }, - "execution_count": 43, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "trimmed_mean(1, 2, 3, 10)" - ] - }, - { - "cell_type": "markdown", - "id": "35e04996", - "metadata": {}, - "source": [ - "This kind of \"trimmed\" mean is used in some sports with subjective judging -- like diving and gymnastics -- to reduce the effect of a judge whose score deviates from the others. " - ] - }, - { - "cell_type": "markdown", - "id": "c4572cd2", - "metadata": {}, - "source": [ - "## Zip\n", - "\n", - "Tuples are useful for looping through the elements of two sequences and performing operations on corresponding elements.\n", - "For example, suppose two teams play a series of seven games, and we record their scores in two lists, one for each team." - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "id": "ad3e6f81", - "metadata": {}, - "outputs": [], - "source": [ - "scores1 = [1, 2, 4, 5, 1, 5, 2]\n", - "scores2 = [5, 5, 2, 2, 5, 2, 3]" - ] - }, - { - "cell_type": "markdown", - "id": "b44f228b", - "metadata": {}, - "source": [ - "Let's see how many games each team won.\n", - "We'll use `zip`, which is a built-in function that takes two or more sequences and returns a **zip object**, so-called because it pairs up the elements of the sequences like the teeth of a zipper." - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "id": "9ce313ce", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 45, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "zip(scores1, scores2)" - ] - }, - { - "cell_type": "markdown", - "id": "9adcf8f9", - "metadata": {}, - "source": [ - "We can use the zip object to loop through the values in the sequences pairwise." - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "id": "321d9c30", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "(1, 5)\n", - "(2, 5)\n", - "(4, 2)\n", - "(5, 2)\n", - "(1, 5)\n", - "(5, 2)\n", - "(2, 3)\n" - ] - } - ], - "source": [ - "for pair in zip(scores1, scores2):\n", - " print(pair)" - ] - }, - { - "cell_type": "markdown", - "id": "51d1dabb", - "metadata": {}, - "source": [ - "Each time through the loop, `pair` gets assigned a tuple of scores.\n", - "So we can assign the scores to variables, and count the victories for the first team, like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "id": "7eb73d5d", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "3" - ] - }, - "execution_count": 47, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "wins = 0\n", - "for team1, team2 in zip(scores1, scores2):\n", - " if team1 > team2:\n", - " wins += 1\n", - " \n", - "wins" - ] - }, - { - "cell_type": "markdown", - "id": "ad740fcd", - "metadata": {}, - "source": [ - "Sadly, the first team won only three games and lost the series.\n", - "\n", - "If you have two lists and you want a list of pairs, you can use `zip` and `list`." - ] - }, - { - "cell_type": "code", - "execution_count": 48, - "id": "9529baa8", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[(1, 5), (2, 5), (4, 2), (5, 2), (1, 5), (5, 2), (2, 3)]" - ] - }, - "execution_count": 48, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "t = list(zip(scores1, scores2))\n", - "t" - ] - }, - { - "cell_type": "markdown", - "id": "ec4249fa", - "metadata": {}, - "source": [ - "The result is a list of tuples, so we can get the result of the last game like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 49, - "id": "dbde77b8", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(2, 3)" - ] - }, - "execution_count": 49, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "t[-1]" - ] - }, - { - "cell_type": "markdown", - "id": "436486b9", - "metadata": {}, - "source": [ - "If you have a list of keys and a list of values, you can use `zip` and `dict` to make a dictionary.\n", - "For example, here's how we can make a dictionary that maps from each letter to its position in the alphabet." - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "id": "dbb7d0b3", - "metadata": {}, - "outputs": [], - "source": [ - "letters = 'abcdefghijklmnopqrstuvwxyz'\n", - "numbers = range(len(letters))\n", - "letter_map = dict(zip(letters, numbers))" - ] - }, - { - "cell_type": "markdown", - "id": "b4de6974", - "metadata": {}, - "source": [ - "Now we can look up a letter and get its index in the alphabet." - ] - }, - { - "cell_type": "code", - "execution_count": 51, - "id": "49e3fd8e", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(0, 25)" - ] - }, - "execution_count": 51, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "letter_map['a'], letter_map['z']" - ] - }, - { - "cell_type": "markdown", - "id": "cc632542", - "metadata": {}, - "source": [ - "In this mapping, the index of `'a'` is `0` and the index of `'z'` is `25`.\n", - "\n", - "If you need to loop through the elements of a sequence and their indices, you can use the built-in function `enumerate`." - ] - }, - { - "cell_type": "code", - "execution_count": 52, - "id": "9e4f3e51", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 52, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "enumerate('abc')" - ] - }, - { - "cell_type": "markdown", - "id": "92ad45bb", - "metadata": {}, - "source": [ - "The result is an **enumerate object** that loops through a sequence of pairs, where each pair contains an index (starting from 0) and an element from the given sequence." - ] - }, - { - "cell_type": "code", - "execution_count": 53, - "id": "c1dcb46d", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0 a\n", - "1 b\n", - "2 c\n" - ] - } - ], - "source": [ - "for index, element in enumerate('abc'):\n", - " print(index, element)" - ] - }, - { - "cell_type": "markdown", - "id": "cf0b55d7", - "metadata": {}, - "source": [ - "## Comparing and Sorting\n", - "\n", - "The relational operators work with tuples and other sequences.\n", - "For example, if you use the `<` operator with tuples, it starts by comparing the first element from each sequence.\n", - "If they are equal, it goes on to the next pair of elements, and so on, until it finds a pair that differ. " - ] - }, - { - "cell_type": "code", - "execution_count": 54, - "id": "aed20c28", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 54, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "(0, 1, 2) < (0, 3, 4)" - ] - }, - { - "cell_type": "markdown", - "id": "65ceea86", - "metadata": {}, - "source": [ - "Subsequent elements are not considered -- even if they are really big." - ] - }, - { - "cell_type": "code", - "execution_count": 55, - "id": "4d9e73b3", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 55, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "(0, 1, 2000000) < (0, 3, 4)" - ] - }, - { - "cell_type": "markdown", - "id": "55e4a35e", - "metadata": {}, - "source": [ - "This way of comparing tuples is useful for sorting a list of tuples, or finding the minimum or maximum.\n", - "As an example, let's find the most common letter in a word.\n", - "In the previous chapter, we wrote `value_counts`, which takes a string and returns a dictionary that maps from each letter to the number of times it appears." - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "id": "2077dfa9", - "metadata": {}, - "outputs": [], - "source": [ - "def value_counts(string):\n", - " counter = {}\n", - " for letter in string:\n", - " if letter not in counter:\n", - " counter[letter] = 1\n", - " else:\n", - " counter[letter] += 1\n", - " return counter" - ] - }, - { - "cell_type": "markdown", - "id": "a80012c1", - "metadata": {}, - "source": [ - "Here is the result for the string `'banana'`." - ] - }, - { - "cell_type": "code", - "execution_count": 57, - "id": "b3d40516", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'b': 1, 'a': 3, 'n': 2}" - ] - }, - "execution_count": 57, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "counter = value_counts('banana')\n", - "counter" - ] - }, - { - "cell_type": "markdown", - "id": "cc1ea4a7", - "metadata": {}, - "source": [ - "With only three items, we can easily see that the most frequent letter is `'a'`, which appears three times.\n", - "But if there were more items, it would be useful to sort them automatically.\n", - "\n", - "We can get the items from `counter` like this." - ] - }, - { - "cell_type": "code", - "execution_count": 58, - "id": "8288c28f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "dict_items([('b', 1), ('a', 3), ('n', 2)])" - ] - }, - "execution_count": 58, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "items = counter.items()\n", - "items" - ] - }, - { - "cell_type": "markdown", - "id": "ac8dea7a", - "metadata": {}, - "source": [ - "The result is a `dict_items` object that behaves like a list of tuples, so we can sort it like this." - ] - }, - { - "cell_type": "code", - "execution_count": 59, - "id": "bbbade35", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[('a', 3), ('b', 1), ('n', 2)]" - ] - }, - "execution_count": 59, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "sorted(items)" - ] - }, - { - "cell_type": "markdown", - "id": "b690d17a", - "metadata": {}, - "source": [ - "The default behavior is to use the first element from each tuple to sort the list, and use the second element to break ties.\n", - "\n", - "However, to find the items with the highest counts, we want to use the second element to sort the list.\n", - "We can do that by writing a function that takes a tuple and returns the second element." - ] - }, - { - "cell_type": "code", - "execution_count": 60, - "id": "a4c31795", - "metadata": {}, - "outputs": [], - "source": [ - "def second_element(t):\n", - " return t[1]" - ] - }, - { - "cell_type": "markdown", - "id": "b964aa14", - "metadata": {}, - "source": [ - "Then we can pass that function to `sorted` as an optional argument called `key`, which indicates that this function should be used to compute the **sort key** for each item." - ] - }, - { - "cell_type": "code", - "execution_count": 61, - "id": "f3d3619a", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[('b', 1), ('n', 2), ('a', 3)]" - ] - }, - "execution_count": 61, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "sorted_items = sorted(items, key=second_element)\n", - "sorted_items" - ] - }, - { - "cell_type": "markdown", - "id": "4dc96848", - "metadata": {}, - "source": [ - "The sort key determines the order of the items in the list.\n", - "The letter with the lowest count appears first, and the letter with the highest count appears last.\n", - "So we can find the most common letter like this." - ] - }, - { - "cell_type": "code", - "execution_count": 62, - "id": "f078c8a6", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "('a', 3)" - ] - }, - "execution_count": 62, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "sorted_items[-1]" - ] - }, - { - "cell_type": "markdown", - "id": "d0d8b999", - "metadata": {}, - "source": [ - "If we only want the maximum, we don't have to sort the list.\n", - "We can use `max`, which also takes `key` as an optional argument." - ] - }, - { - "cell_type": "code", - "execution_count": 63, - "id": "54030d8f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "('a', 3)" - ] - }, - "execution_count": 63, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "max(items, key=second_element)" - ] - }, - { - "cell_type": "markdown", - "id": "8a8327df", - "metadata": {}, - "source": [ - "To find the letter with the lowest count, we could use `min` the same way." - ] - }, - { - "cell_type": "markdown", - "id": "a62394a5", - "metadata": {}, - "source": [ - "## Inverting a dictionary\n", - "\n", - "Suppose you want to invert a dictionary so you can look up a value and get the corresponding key.\n", - "For example, if you have a word counter that maps from each word to the number of times it appears, you could make a dictionary that maps from integers to the words that appear that number of times.\n", - "\n", - "But there's a problem -- the keys in a dictionary have to be unique, but the values don't. For example, in a word counter, there could be many words with the same count.\n", - "\n", - "So one way to invert a dictionary is to create a new dictionary where the values are lists of keys from the original.\n", - "As an example, let's count the letters in `parrot`." - ] - }, - { - "cell_type": "code", - "execution_count": 64, - "id": "ef158f81", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'p': 1, 'a': 1, 'r': 2, 'o': 1, 't': 1}" - ] - }, - "execution_count": 64, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "d = value_counts('parrot')\n", - "d" - ] - }, - { - "cell_type": "markdown", - "id": "f4570eae", - "metadata": {}, - "source": [ - "If we invert this dictionary, the result should be `{1: ['p', 'a', 'o', 't'], 2: ['r']}`, which indicates that the letters that appear once are `'p'`, `'a'`, `'o'`, and `'t'`, and the letter than appears twice is `'r'`.\n", - "\n", - "The following function takes a dictionary and returns its inverse as a new dictionary." - ] - }, - { - "cell_type": "code", - "execution_count": 65, - "id": "d3607b8d", - "metadata": {}, - "outputs": [], - "source": [ - "def invert_dict(d):\n", - " new = {}\n", - " for key, value in d.items():\n", - " if value not in new:\n", - " new[value] = [key]\n", - " else:\n", - " new[value].append(key)\n", - " return new" - ] - }, - { - "cell_type": "markdown", - "id": "ca5fa025", - "metadata": {}, - "source": [ - "The `for` statement loops through the keys and values in `d`.\n", - "If the value is not already in the new dictionary, it is added and associated with a list that contains a single element.\n", - "Otherwise it is appended to the existing list.\n", - "\n", - "We can test it like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 66, - "id": "692d9cf8", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{1: ['p', 'a', 'o', 't'], 2: ['r']}" - ] - }, - "execution_count": 66, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "invert_dict(d)" - ] - }, - { - "cell_type": "markdown", - "id": "4cfb1693", - "metadata": {}, - "source": [ - "And we get the result we expected.\n", - "\n", - "This is the first example we've seen where the values in the dictionary are lists.\n", - "We will see more!" - ] - }, - { - "cell_type": "markdown", - "id": "6d138cd7", - "metadata": { - "tags": [ - "section_debugging_11" - ] - }, - "source": [ - "## Debugging\n", - "\n", - "Lists, dictionaries and tuples are **data structures**.\n", - "In this chapter we are starting to see compound data structures, like lists of tuples, or dictionaries that contain tuples as keys and lists as values.\n", - "Compound data structures are useful, but they are prone to errors caused when a data structure has the wrong type, size, or structure.\n", - "For example, if a function expects a list of integers and you give it a plain old integer\n", - "(not in a list), it probably won't work.\n", - "\n", - "To help debug these kinds of errors, I wrote a module called `structshape` that provides a function, also called `structshape`, that takes any kind of data structure as an argument and returns a string that summarizes its structure.\n", - "You can download it from\n", - "." - ] - }, - { - "cell_type": "code", - "execution_count": 67, - "id": "e9f03e91", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "download('https://raw.githubusercontent.com/AllenDowney/ThinkPython/v3/structshape.py');" - ] - }, - { - "cell_type": "markdown", - "id": "646f4d55", - "metadata": {}, - "source": [ - "We can import it like this." - ] - }, - { - "cell_type": "code", - "execution_count": 68, - "id": "90ab624a", - "metadata": {}, - "outputs": [], - "source": [ - "from structshape import structshape" - ] - }, - { - "cell_type": "markdown", - "id": "86cc6ccc", - "metadata": {}, - "source": [ - "Here's an example with a simple list." - ] - }, - { - "cell_type": "code", - "execution_count": 69, - "id": "6794330f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'list of 3 int'" - ] - }, - "execution_count": 69, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "t = [1, 2, 3]\n", - "structshape(t)" - ] - }, - { - "cell_type": "markdown", - "id": "9de4f6ec", - "metadata": {}, - "source": [ - "Here's a list of lists." - ] - }, - { - "cell_type": "code", - "execution_count": 70, - "id": "54cd185b", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'list of 3 list of 2 int'" - ] - }, - "execution_count": 70, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "t2 = [[1,2], [3,4], [5,6]]\n", - "structshape(t2)" - ] - }, - { - "cell_type": "markdown", - "id": "aced9984", - "metadata": {}, - "source": [ - "If the elements of the list are not the same type, `structshape` groups\n", - "them by type." - ] - }, - { - "cell_type": "code", - "execution_count": 71, - "id": "04028afd", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'list of (3 int, float, 2 str, 2 list of int, int)'" - ] - }, - "execution_count": 71, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "t3 = [1, 2, 3, 4.0, '5', '6', [7], [8], 9]\n", - "structshape(t3)" - ] - }, - { - "cell_type": "markdown", - "id": "f63ff690", - "metadata": {}, - "source": [ - "Here's a list of tuples." - ] - }, - { - "cell_type": "code", - "execution_count": 72, - "id": "b5d45c88", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'list of 3 tuple of (int, str)'" - ] - }, - "execution_count": 72, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "s = 'abc'\n", - "lt = list(zip(t, s))\n", - "structshape(lt)" - ] - }, - { - "cell_type": "markdown", - "id": "c9ec67eb", - "metadata": {}, - "source": [ - "And here's a dictionary with three items that map integers to strings." - ] - }, - { - "cell_type": "code", - "execution_count": 73, - "id": "15131907", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'dict of 3 int->str'" - ] - }, - "execution_count": 73, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "d = dict(lt) \n", - "structshape(d)" - ] - }, - { - "cell_type": "markdown", - "id": "f29bb82b", - "metadata": {}, - "source": [ - "If you are having trouble keeping track of your data structures,\n", - "`structshape` can help." - ] - }, - { - "cell_type": "markdown", - "id": "79d93082", - "metadata": {}, - "source": [ - "## Glossary\n", - "\n", - "**pack:**\n", - "Collect multiple arguments into a tuple.\n", - "\n", - "**unpack:**\n", - "Treat a tuple (or other sequence) as multiple arguments.\n", - "\n", - "**zip object:**\n", - "The result of calling the built-in function `zip`, can be used to loop through a sequence of tuples.\n", - "\n", - "**enumerate object:**\n", - "The result of calling the built-in function `enumerate`, can be used to loop through a sequence of tuples.\n", - "\n", - "**sort key:**\n", - "A value, or function that computes a value, used to sort the elements of a collection.\n", - "\n", - "**data structure:**\n", - "A collection of values, organized to perform certain operations efficiently." - ] - }, - { - "cell_type": "markdown", - "id": "1471b3c0", - "metadata": {}, - "source": [ - "## Exercises" - ] - }, - { - "cell_type": "code", - "execution_count": 74, - "id": "c65d68d2", - "metadata": { - "tags": [ - "remove-print" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Exception reporting mode: Verbose\n" - ] - } - ], - "source": [ - "# This cell tells Jupyter to provide detailed debugging information\n", - "# when a runtime error occurs. Run it before working on the exercises.\n", - "\n", - "%xmode Verbose" - ] - }, - { - "cell_type": "markdown", - "id": "97a0352d", - "metadata": {}, - "source": [ - "### Ask a virtual assistant\n", - "\n", - "The exercises in this chapter might be more difficult than exercises in previous chapters, so I encourage you to get help from a virtual assistant.\n", - "When you pose more difficult questions, you might find that the answers are not correct on the first attempt, so this is a chance to practice crafting good prompts and following up with good refinements.\n", - "\n", - "One strategy you might consider is to break a big problems into pieces that can be solved with simple functions.\n", - "Ask the virtual assistant to write the functions and test them.\n", - "Then, once they are working, ask for a solution to the original problem.\n", - "\n", - "For some of the exercises below, I make suggestions about which data structures and algorithms to use.\n", - "You might find these suggestions useful when you work on the problems, but they are also good prompts to pass along to a virtual assistant." - ] - }, - { - "cell_type": "markdown", - "id": "f90e011f", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "In this chapter I said that tuples can be used as keys in dictionaries because they are hashable, and they are hashable because they are immutable.\n", - "But that is not always true.\n", - "\n", - "If a tuple contains a mutable value, like a list or a dictionary, the tuple is no longer hashable because it contains elements that are not hashable. As an example, here's a tuple that contains two lists of integers." - ] - }, - { - "cell_type": "code", - "execution_count": 75, - "id": "4416fe4a", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "([1, 2, 3], [4, 5])" - ] - }, - "execution_count": 75, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "list0 = [1, 2, 3]\n", - "list1 = [4, 5]\n", - "\n", - "t = (list0, list1)\n", - "t" - ] - }, - { - "cell_type": "markdown", - "id": "02799077", - "metadata": {}, - "source": [ - "Write a line of code that appends the value `6` to the end of the second list in `t`. If you display `t`, the result should be `([1, 2, 3], [4, 5, 6])`." - ] - }, - { - "cell_type": "code", - "execution_count": 76, - "id": "e6eda0e4", - "metadata": { - "tags": [ - "solution" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "([1, 2, 3], [4, 5, 6])" - ] - }, - "execution_count": 76, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "t[1].append(6)\n", - "t" - ] - }, - { - "cell_type": "markdown", - "id": "644b1dfb", - "metadata": {}, - "source": [ - "Try to create a dictionary that maps from `t` to a string, and confirm that you get a `TypeError`." - ] - }, - { - "cell_type": "code", - "execution_count": 77, - "id": "4fae1acc", - "metadata": { - "tags": [ - "solution", - "raises-exception" - ] - }, - "outputs": [ - { - "ename": "TypeError", - "evalue": "unhashable type: 'list'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[77], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m d \u001b[38;5;241m=\u001b[39m {t: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mthis tuple contains two lists\u001b[39m\u001b[38;5;124m'\u001b[39m}\n d \u001b[0;34m= {1: 'a', 2: 'b', 3: 'c'}\u001b[0m\u001b[0;34m\n \u001b[0mt \u001b[0;34m= ([1, 2, 3], [4, 5, 6])\u001b[0m\n", - "\u001b[0;31mTypeError\u001b[0m: unhashable type: 'list'" - ] - } - ], - "source": [ - "%%expect TypeError\n", - "\n", - "d = {t: 'this tuple contains two lists'}" - ] - }, - { - "cell_type": "markdown", - "id": "fb77a352", - "metadata": {}, - "source": [ - "For more on this topic, ask a virtual assistant, \"Are Python tuples always hashable?\"" - ] - }, - { - "cell_type": "markdown", - "id": "bdfc8c27", - "metadata": { - "tags": [ - "section_exercise_11" - ] - }, - "source": [ - "### Exercise\n", - "\n", - "In this chapter we made a dictionary that maps from each letter to its index in the alphabet." - ] - }, - { - "cell_type": "code", - "execution_count": 78, - "id": "855c7ed2", - "metadata": {}, - "outputs": [], - "source": [ - "letters = 'abcdefghijklmnopqrstuvwxyz'\n", - "numbers = range(len(letters))\n", - "letter_map = dict(zip(letters, numbers))" - ] - }, - { - "cell_type": "markdown", - "id": "a8cd720b", - "metadata": {}, - "source": [ - "For example, the index of `'a'` is `0`." - ] - }, - { - "cell_type": "code", - "execution_count": 79, - "id": "3c921f68", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0" - ] - }, - "execution_count": 79, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "letter_map['a']" - ] - }, - { - "cell_type": "markdown", - "id": "a04c25db", - "metadata": {}, - "source": [ - "To go in the other direction, we can use list indexing.\n", - "For example, the letter at index `1` is `'b'`." - ] - }, - { - "cell_type": "code", - "execution_count": 80, - "id": "b029b0da", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'b'" - ] - }, - "execution_count": 80, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "letters[1]" - ] - }, - { - "cell_type": "markdown", - "id": "165ab770", - "metadata": {}, - "source": [ - "We can use `letter_map` and `letters` to encode and decode words using a Caesar cipher.\n", - "\n", - "A Caesar cipher is a weak form of encryption that involves shifting each letter\n", - "by a fixed number of places in the alphabet, wrapping around to the beginning if necessary. For example, `'a'` shifted by 2 is `'c'` and `'z'` shifted by 1 is `'a'`.\n", - "\n", - "Write a function called `shift_word` that takes as parameters a string and an integer, and returns a new string that contains the letters from the string shifted by the given number of places.\n", - "\n", - "To test your function, confirm that \"cheer\" shifted by 7 is \"jolly\" and \"melon\" shifted by 16 is \"cubed\".\n", - "\n", - "Hints: Use the modulus operator to wrap around from `'z'` back to `'a'`. \n", - "Loop through the letters of the word, shift each one, and append the result to a list of letters.\n", - "Then use `join` to concatenate the letters into a string." - ] - }, - { - "cell_type": "markdown", - "id": "e7478b18", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "You can use this outline to get started." - ] - }, - { - "cell_type": "code", - "execution_count": 81, - "id": "1cc07036", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "def shift_word(word, n):\n", - " \"\"\"Shift the letters of `word` by `n` places.\n", - " \n", - " >>> shift_word('cheer', 7)\n", - " 'jolly'\n", - " >>> shift_word('melon', 16)\n", - " 'cubed'\n", - " \"\"\"\n", - " return None" - ] - }, - { - "cell_type": "code", - "execution_count": 82, - "id": "96560a0e", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def shift_word(word, n):\n", - " \"\"\"Shift the letters of `word` by `n` places.\n", - " \n", - " >>> shift_word('cheer', 7)\n", - " 'jolly'\n", - " >>> shift_word('melon', 16)\n", - " 'cubed'\n", - " \"\"\"\n", - " t = []\n", - " for letter in word:\n", - " index = (letter_map[letter] + n) % 26\n", - " t.append(letters[index])\n", - " return ''.join(t)" - ] - }, - { - "cell_type": "code", - "execution_count": 83, - "id": "c026c6d1", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "'jolly'" - ] - }, - "execution_count": 83, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "shift_word('cheer', 7)" - ] - }, - { - "cell_type": "code", - "execution_count": 84, - "id": "5814999d", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "'cubed'" - ] - }, - "execution_count": 84, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "shift_word('melon', 16)" - ] - }, - { - "cell_type": "markdown", - "id": "39a67af9", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "You can use `doctest` to test your function." - ] - }, - { - "cell_type": "code", - "execution_count": 85, - "id": "9464d140", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "from doctest import run_docstring_examples\n", - "\n", - "def run_doctests(func):\n", - " run_docstring_examples(func, globals(), name=func.__name__)\n", - "\n", - "run_doctests(shift_word)" - ] - }, - { - "cell_type": "markdown", - "id": "779f13af", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "Write a function called `most_frequent_letters` that takes a string and prints the letters in decreasing order of frequency.\n", - "\n", - "To get the items in decreasing order, you can use `reversed` along with `sorted` or you can pass `reverse=True` as a keyword parameter to `sorted`." - ] - }, - { - "cell_type": "markdown", - "id": "d71923e6", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "You can use this outline of the function to get started." - ] - }, - { - "cell_type": "code", - "execution_count": 86, - "id": "4309d0b5", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "def most_frequent_letters(string):\n", - " return None" - ] - }, - { - "cell_type": "code", - "execution_count": 87, - "id": "52228828", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def most_frequent_letters(string):\n", - " counter = value_counts(string)\n", - " pairs = sorted(counter.items(), key=second_element, reverse=True)\n", - " for key, value in pairs:\n", - " print(key, value)" - ] - }, - { - "cell_type": "markdown", - "id": "c6354c44", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "And this example to test your function." - ] - }, - { - "cell_type": "code", - "execution_count": 88, - "id": "3bf2aa0d", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "r 2\n", - "o 2\n", - "s 2\n", - "u 2\n", - "b 1\n", - "n 1\n", - "t 1\n", - "a 1\n" - ] - } - ], - "source": [ - "most_frequent_letters('brontosaurus')" - ] - }, - { - "cell_type": "markdown", - "id": "2ca1e337", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "Once your function is working, you can use the following code to print the most common letters in *Dracula*, which we can download from Project Gutenberg." - ] - }, - { - "cell_type": "code", - "execution_count": 89, - "id": "e4fbf5d9", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "download('https://www.gutenberg.org/cache/epub/345/pg345.txt');" - ] - }, - { - "cell_type": "code", - "execution_count": 90, - "id": "817ec689", - "metadata": { - "tags": [ - "remove-output", - "remove-cell" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " 156330\n", - "e 81324\n", - "t 58340\n", - "a 52582\n", - "o 51637\n", - "n 44576\n", - "h 42426\n", - "s 39637\n", - "i 38366\n", - "r 36158\n", - "d 28683\n", - "l 26097\n", - "u 18481\n", - "w 17436\n", - "m 17249\n", - "\n", - " 15869\n", - "f 14212\n", - "c 13656\n", - "y 12826\n", - "g 12649\n", - ", 11397\n", - "p 9173\n", - "b 8834\n", - ". 8531\n", - "k 6310\n", - "I 5739\n", - "v 5633\n", - "- 3918\n", - "\" 2953\n", - "T 1848\n", - "; 1683\n", - "H 1681\n", - "' 1620\n", - "A 1225\n", - "W 1047\n", - "M 1011\n", - "_ 995\n", - "S 984\n", - "x 814\n", - "! 752\n", - "L 749\n", - "* 671\n", - ": 650\n", - "C 586\n", - "D 582\n", - "P 547\n", - "G 546\n", - "q 546\n", - "B 494\n", - "j 493\n", - "? 492\n", - "E 454\n", - "J 433\n", - "V 431\n", - "O 425\n", - "R 388\n", - "N 388\n", - "Y 344\n", - "z 279\n", - "F 263\n", - "1 162\n", - "U 158\n", - "2 105\n", - "Q 95\n", - "K 74\n", - "3 67\n", - "0 61\n", - "X 59\n", - "5 49\n", - "( 48\n", - ") 48\n", - "4 45\n", - "7 40\n", - "9 38\n", - "8 36\n", - "6 33\n", - "’ 25\n", - "& 21\n", - "{ 12\n", - "} 12\n", - "è 10\n", - "æ 9\n", - "ö 9\n", - "= 9\n", - "> 9\n", - "/ 6\n", - "Z 5\n", - "[ 4\n", - "] 4\n", - "ë 3\n", - "£ 3\n", - "é 3\n", - "â 2\n", - "ï 2\n", - "$ 2\n", - " 1\n", - "# 1\n", - "— 1\n", - "“ 1\n", - "” 1\n", - "á 1\n", - "ô 1\n", - "à 1\n", - "% 1\n" - ] - } - ], - "source": [ - "string = open('pg345.txt').read()\n", - "most_frequent_letters(string)" - ] - }, - { - "cell_type": "markdown", - "id": "211c09c9", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "According to Zim's \"Codes and Secret Writing\", the sequence of letters in decreasing order of frequency in English starts with \"ETAONRISH\".\n", - "How does this sequence compare with the results from *Dracula*?" - ] - }, - { - "cell_type": "markdown", - "id": "cbe9933e", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "In a previous exercise, we tested whether two strings are anagrams by sorting the letters in both words and checking whether the sorted letters are the same.\n", - "Now let's make the problem a little more challenging.\n", - "\n", - "We'll write a program that takes a list of words and prints all the sets of words that are anagrams.\n", - "Here is an example of what the output might look like:\n", - "\n", - " ['deltas', 'desalt', 'lasted', 'salted', 'slated', 'staled']\n", - " ['retainers', 'ternaries']\n", - " ['generating', 'greatening']\n", - " ['resmelts', 'smelters', 'termless']\n", - "\n", - "Hint: For each word in the word list, sort the letters and join them back into a string. Make a dictionary that maps from this sorted string to a list of words that are anagrams of it." - ] - }, - { - "cell_type": "markdown", - "id": "4b9ed2a8", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "The following cells download `words.txt` and read the words into a list." - ] - }, - { - "cell_type": "code", - "execution_count": 91, - "id": "941719c1", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "download('https://raw.githubusercontent.com/AllenDowney/ThinkPython/v3/words.txt');" - ] - }, - { - "cell_type": "code", - "execution_count": 92, - "id": "d2ec641b", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "word_list = open('words.txt').read().split()" - ] - }, - { - "cell_type": "markdown", - "id": "e4cc2c8c", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "Here's the `sort_word` function we've used before." - ] - }, - { - "cell_type": "code", - "execution_count": 93, - "id": "7ae29f73", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "def sort_word(word):\n", - " return ''.join(sorted(word))" - ] - }, - { - "cell_type": "code", - "execution_count": 94, - "id": "013819a5", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "anagram_dict = {}\n", - "for word in word_list:\n", - " key = sort_word(word)\n", - " if key not in anagram_dict:\n", - " anagram_dict[key] = [word]\n", - " else:\n", - " anagram_dict[key].append(word)" - ] - }, - { - "cell_type": "markdown", - "id": "70faa9f5", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "To find the longest list of anagrams, you can use the following function, which takes a key-value pair where the key is a string and the value is a list of words.\n", - "It returns the length of the list." - ] - }, - { - "cell_type": "code", - "execution_count": 95, - "id": "fbf9ede3", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "def value_length(pair):\n", - " key, value = pair\n", - " return len(value)" - ] - }, - { - "cell_type": "markdown", - "id": "dcda6e28", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "We can use this function as a sort key to find the longest lists of anagrams." - ] - }, - { - "cell_type": "code", - "execution_count": 96, - "id": "55435050", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['carets', 'cartes', 'caster', 'caters', 'crates', 'reacts', 'recast', 'traces']\n", - "['earings', 'erasing', 'gainers', 'reagins', 'regains', 'reginas', 'searing', 'seringa']\n", - "['lapse', 'leaps', 'pales', 'peals', 'pleas', 'salep', 'sepal', 'spale']\n", - "['palest', 'palets', 'pastel', 'petals', 'plates', 'pleats', 'septal', 'staple']\n", - "['peris', 'piers', 'pries', 'prise', 'ripes', 'speir', 'spier', 'spire']\n", - "['capers', 'crapes', 'escarp', 'pacers', 'parsec', 'recaps', 'scrape', 'secpar', 'spacer']\n", - "['estrin', 'inerts', 'insert', 'inters', 'niters', 'nitres', 'sinter', 'triens', 'trines']\n", - "['least', 'setal', 'slate', 'stale', 'steal', 'stela', 'taels', 'tales', 'teals', 'tesla']\n", - "['alerts', 'alters', 'artels', 'estral', 'laster', 'ratels', 'salter', 'slater', 'staler', 'stelar', 'talers']\n", - "['apers', 'asper', 'pares', 'parse', 'pears', 'prase', 'presa', 'rapes', 'reaps', 'spare', 'spear']\n" - ] - } - ], - "source": [ - "anagram_items = sorted(anagram_dict.items(), key=value_length)\n", - "for key, value in anagram_items[-10:]:\n", - " print(value)" - ] - }, - { - "cell_type": "markdown", - "id": "0b6d5add", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "If you want to know the longest words that have anagrams, you can use the following loop to print some of them." - ] - }, - { - "cell_type": "code", - "execution_count": 97, - "id": "6a9320c2", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['abasement', 'entamebas']\n", - "['abreacting', 'acerbating']\n", - "['altercations', 'intercoastal']\n", - "['certification', 'rectification']\n", - "['certifications', 'rectifications']\n", - "['impressivenesses', 'permissivenesses']\n" - ] - } - ], - "source": [ - "longest = 7\n", - "\n", - "for key, value in anagram_items:\n", - " if len(value) > 1:\n", - " word_len = len(value[0])\n", - " if word_len > longest:\n", - " longest = word_len\n", - " print(value)" - ] - }, - { - "cell_type": "markdown", - "id": "4fbe939e", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "Write a function called `word_distance` that takes two words with the same length and returns the number of places where the two words differ.\n", - "\n", - "Hint: Use `zip` to loop through the corresponding letters of the words." - ] - }, - { - "cell_type": "markdown", - "id": "8b48dbdc", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "Here's an outline of the function with doctests you can use to check your function." - ] - }, - { - "cell_type": "code", - "execution_count": 98, - "id": "3d5a75f8", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "def word_distance(word1, word2):\n", - " \"\"\"Computes the number of places where two word differ.\n", - "\n", - " >>> word_distance(\"hello\", \"hxllo\")\n", - " 1\n", - " >>> word_distance(\"ample\", \"apply\")\n", - " 2\n", - " >>> word_distance(\"kitten\", \"mutton\")\n", - " 3\n", - " \"\"\"\n", - " return None" - ] - }, - { - "cell_type": "code", - "execution_count": 99, - "id": "a9816dde", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def word_distance(word1, word2):\n", - " \"\"\"Computes the number of places where two word differ.\n", - "\n", - " >>> word_distance(\"hello\", \"hxllo\")\n", - " 1\n", - " >>> word_distance(\"ample\", \"apply\")\n", - " 2\n", - " >>> word_distance(\"kitten\", \"mutton\")\n", - " 3\n", - " \"\"\"\n", - " assert len(word1) == len(word2)\n", - "\n", - " count = 0\n", - " for c1, c2 in zip(word1, word2):\n", - " if c1 != c2:\n", - " count += 1\n", - "\n", - " return count" - ] - }, - { - "cell_type": "code", - "execution_count": 100, - "id": "753a23c1", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "from doctest import run_docstring_examples\n", - "\n", - "def run_doctests(func):\n", - " run_docstring_examples(func, globals(), name=func.__name__)\n", - " \n", - "run_doctests(word_distance)" - ] - }, - { - "cell_type": "markdown", - "id": "066eec59", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "\"Metathesis\" is the transposition of letters in a word.\n", - "Two words form a \"metathesis pair\" if you can transform one into the other by swapping two letters, like `converse` and `conserve`.\n", - "Write a program that finds all of the metathesis pairs in the word list. \n", - "\n", - "Hint: The words in a metathesis pair must be anagrams of each other.\n", - "\n", - "Credit: This exercise is inspired by an example at ." - ] - }, - { - "cell_type": "code", - "execution_count": 101, - "id": "57649075", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "aerologies areologies\n", - "antimonies antinomies\n", - "bedrugging begrudging\n", - "certification rectification\n", - "certifications rectifications\n", - "certifiers rectifiers\n", - "certifying rectifying\n", - "certitudes rectitudes\n", - "concerting concreting\n", - "conservation conversation\n", - "conservations conversations\n", - "conserving conversing\n", - "deification edification\n", - "deifications edifications\n", - "denotation detonation\n", - "denotations detonations\n", - "discanting distancing\n", - "dissention distension\n", - "dissentions distensions\n", - "dormancies mordancies\n", - "livenesses vilenesses\n", - "frumenties furmenties\n", - "garmenting margenting\n", - "lamenesses malenesses\n", - "limestones milestones\n", - "misdealing misleading\n", - "molarities moralities\n", - "monarchies nomarchies\n", - "monologies nomologies\n", - "performing preforming\n", - "portending protending\n", - "presetting pretesting\n", - "questionnaire questionniare\n", - "questionnaires questionniares\n", - "regelating relegating\n", - "repertoires repertories\n", - "rowdinesses wordinesses\n", - "sepulchers sepulchres\n", - "solitaires solitaries\n", - "spotlights stoplights\n" - ] - } - ], - "source": [ - "# Solution\n", - "\n", - "for anagrams in anagram_dict.values():\n", - " for word1 in anagrams:\n", - " for word2 in anagrams:\n", - " if len(word1) >= 10 and word1 < word2 and word_distance(word1, word2) == 2:\n", - " print(word1, word2)" - ] - }, - { - "cell_type": "markdown", - "id": "6a028806", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "### Exercise\n", - "\n", - "This is a bonus exercise that is not in the book.\n", - "It is more challenging than the other exercises in this chapter, so you might want to ask a virtual assistant for help, or come back to it after you've read a few more chapters.\n", - "\n", - "Here's another Car Talk Puzzler\n", - "():\n", - "\n", - "> What is the longest English word, that remains a valid English word,\n", - "> as you remove its letters one at a time?\n", - ">\n", - "> Now, letters can be removed from either end, or the middle, but you\n", - "> can't rearrange any of the letters. Every time you drop a letter, you\n", - "> wind up with another English word. If you do that, you're eventually\n", - "> going to wind up with one letter and that too is going to be an\n", - "> English word---one that's found in the dictionary. I want to know\n", - "> what's the longest word and how many letters does it have?\n", - ">\n", - "> I'm going to give you a little modest example: Sprite. Ok? You start\n", - "> off with sprite, you take a letter off, one from the interior of the\n", - "> word, take the r away, and we're left with the word spite, then we\n", - "> take the e off the end, we're left with spit, we take the s off, we're\n", - "> left with pit, it, and I.\n", - "\n", - "Write a program to find all words that can be reduced in this way, and\n", - "then find the longest one.\n", - "\n", - "This exercise is a little more challenging than most, so here are some\n", - "suggestions:\n", - "\n", - "1. You might want to write a function that takes a word and computes a\n", - " list of all the words that can be formed by removing one letter.\n", - " These are the \"children\" of the word.\n", - "\n", - "2. Recursively, a word is reducible if any of its children are\n", - " reducible. As a base case, you can consider the empty string\n", - " reducible.\n", - "\n", - "3. The word list we've been using doesn't contain single letter\n", - " words. So you might have to add \"I\" and \"a\".\n", - "\n", - "4. To improve the performance of your program, you might want to\n", - " memoize the words that are known to be reducible." - ] - }, - { - "cell_type": "code", - "execution_count": 102, - "id": "c19bf833", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def children(word):\n", - " \"\"\"Returns a list of all words that can be formed by removing one letter.\n", - "\n", - " word: string\n", - "\n", - " Returns: list of strings\n", - " \"\"\"\n", - " res = []\n", - " for i in range(len(word)):\n", - " child = word[:i] + word[i+1:]\n", - " if child in word_dict:\n", - " res.append(child)\n", - " return res" - ] - }, - { - "cell_type": "code", - "execution_count": 103, - "id": "2d9764d6", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "\"\"\"memo is a dictionary that maps from each word that is known\n", - "to be reducible to a list of its reducible children. \n", - "It starts with the empty string.\"\"\"\n", - "\n", - "memo = {}\n", - "memo[''] = ['']\n", - "\n", - "\n", - "def reduce_word(word):\n", - " \"\"\"If word is reducible, returns a list of its reducible children.\n", - "\n", - " Also adds an entry to the memo dictionary.\n", - "\n", - " A string is reducible if it has at least one child that is \n", - " reducible. The empty string is also reducible.\n", - "\n", - " word: string\n", - " \"\"\"\n", - " # if have already checked this word, return the answer\n", - " if word in memo:\n", - " return memo[word]\n", - "\n", - " # check each of the children and make a list of the reducible ones\n", - " res = []\n", - " for child in children(word):\n", - " if reduce_word(child):\n", - " res.append(child)\n", - "\n", - " # memoize and return the result\n", - " memo[word] = res\n", - " return res" - ] - }, - { - "cell_type": "code", - "execution_count": 104, - "id": "5e4f5d8e", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def print_trail(word):\n", - " \"\"\"Prints the sequence of words that reduces this word to the empty string.\n", - "\n", - " If there is more than one choice, it chooses the first.\n", - "\n", - " word: string\n", - " \"\"\"\n", - " if len(word) == 0:\n", - " return\n", - " print(word, end=' ')\n", - " t = reduce_word(word)\n", - " print_trail(t[0])" - ] - }, - { - "cell_type": "code", - "execution_count": 105, - "id": "27d311dd", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def all_reducible():\n", - " \"\"\"Checks all words in the word_dict; returns a list of reducible ones.\n", - " \"\"\"\n", - " res = []\n", - " for word in word_dict:\n", - " t = reduce_word(word)\n", - " if len(t) > 0:\n", - " res.append(word)\n", - " return res" - ] - }, - { - "cell_type": "code", - "execution_count": 106, - "id": "68c27c7e", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "wranglers wanglers anglers angers agers ages age ae a \n", - "wrappings wrapping rapping raping aping ping pig pi i \n", - "carrousels carousels carouses arouses arouse arose arse are ae a \n", - "completing competing compting comping coping oping ping pig pi i \n", - "insolating isolating solating slating sating sting ting tin in i \n", - "restarting restating estating stating sating sting ting tin in i \n", - "staunchest stanchest stanches stances stanes sanes anes ane ae a \n", - "stranglers strangers stranger strange strang stang tang tag ta a \n", - "twitchiest witchiest withiest withies withes wites wits its is i \n", - "complecting completing competing compting comping coping oping ping pig pi i \n" - ] - } - ], - "source": [ - "# Solution\n", - "\n", - "word_dict = {}\n", - "for word in word_list:\n", - " word_dict[word] = 1\n", - "\n", - "# have to add single letter words to the word list;\n", - "# also, the empty string is considered a word.\n", - "for word in ['a', 'i', '']:\n", - " word_dict[word] = 1\n", - "\n", - "# find the reducible words and sort by length\n", - "words = all_reducible()\n", - "sorted_words = sorted(words, key=len)\n", - "\n", - "# print the longest words\n", - "for word in sorted_words[-10:]:\n", - " print_trail(word)\n", - " print('')" - ] - }, - { - "cell_type": "markdown", - "id": "a7f4edf8", - "metadata": { - "tags": [] - }, - "source": [ - "[Think Python: 3rd Edition](https://allendowney.github.io/ThinkPython/index.html)\n", - "\n", - "Copyright 2024 [Allen B. Downey](https://allendowney.com)\n", - "\n", - "Code license: [MIT License](https://mit-license.org/)\n", - "\n", - "Text license: [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-nc-sa/4.0/)" - ] - } - ], - "metadata": { - "celltoolbar": "Tags", - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.11" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/soln/chap12.ipynb b/soln/chap12.ipynb deleted file mode 100644 index e7cbeab..0000000 --- a/soln/chap12.ipynb +++ /dev/null @@ -1,2757 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "1331faa1", - "metadata": {}, - "source": [ - "You can order print and ebook versions of *Think Python 3e* from\n", - "[Bookshop.org](https://bookshop.org/a/98697/9781098155438) and\n", - "[Amazon](https://www.amazon.com/_/dp/1098155432?smid=ATVPDKIKX0DER&_encoding=UTF8&tag=oreilly20-20&_encoding=UTF8&tag=greenteapre01-20&linkCode=ur2&linkId=e2a529f94920295d27ec8a06e757dc7c&camp=1789&creative=9325)." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "6c6265de", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "from os.path import basename, exists\n", - "\n", - "def download(url):\n", - " filename = basename(url)\n", - " if not exists(filename):\n", - " from urllib.request import urlretrieve\n", - "\n", - " local, _ = urlretrieve(url, filename)\n", - " print(\"Downloaded \" + str(local))\n", - " return filename\n", - "\n", - "download('https://github.com/AllenDowney/ThinkPython/raw/v3/thinkpython.py');\n", - "download('https://github.com/AllenDowney/ThinkPython/raw/v3/diagram.py');\n", - "\n", - "import thinkpython" - ] - }, - { - "cell_type": "markdown", - "id": "59a8621b", - "metadata": {}, - "source": [ - "# Text Analysis and Generation\n", - "\n", - "At this point we have covered Python's core data structures -- lists, dictionaries, and tuples -- and some algorithms that use them.\n", - "In this chapter, we'll use them to explore text analysis and Markov generation:\n", - "\n", - "* Text analysis is a way to describe the statistical relationships between the words in a document, like the probability that one word is followed by another, and\n", - "\n", - "* Markov generation is a way to generate new text with words and phrases similar to the original text.\n", - "\n", - "These algorithms are similar to parts of a Large Language Model (LLM), which is the key component of a chatbot.\n", - "\n", - "We'll start by counting the number of times each word appears in a book.\n", - "Then we'll look at pairs of words, and make a list of the words that can follow each word.\n", - "We'll make a simple version of a Markov generator, and as an exercise, you'll have a chance to make a more general version." - ] - }, - { - "cell_type": "markdown", - "id": "0e3811b8", - "metadata": {}, - "source": [ - "## Unique words\n", - "\n", - "As a first step toward text analysis, let's read a book -- *The Strange Case Of Dr. Jekyll And Mr. Hyde* by Robert Louis Stevenson -- and count the number of unique words.\n", - "Instructions for downloading the book are in the notebook for this chapter." - ] - }, - { - "cell_type": "markdown", - "id": "6567e1bf", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "The following cell downloads the book from Project Gutenberg." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "4cd1c980", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "download('https://www.gutenberg.org/cache/epub/43/pg43.txt');" - ] - }, - { - "cell_type": "markdown", - "id": "5465ab1d", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "The version available from Project Gutenberg includes information about the book at the beginning and license information at the end.\n", - "We'll use `clean_file` from Chapter 8 to remove this material and write a \"clean\" file that contains only the text of the book." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "52ebfe94", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "def is_special_line(line):\n", - " return line.strip().startswith('*** ')" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "49cfc352", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "def clean_file(input_file, output_file):\n", - " reader = open(input_file, encoding='utf-8')\n", - " writer = open(output_file, 'w')\n", - "\n", - " for line in reader:\n", - " if is_special_line(line):\n", - " break\n", - "\n", - " for line in reader:\n", - " if is_special_line(line):\n", - " break\n", - " writer.write(line)\n", - " \n", - " reader.close()\n", - " writer.close()" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "44e53ce6", - "metadata": {}, - "outputs": [], - "source": [ - "filename = 'dr_jekyll.txt'" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "50d1fafa", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "clean_file('pg43.txt', filename)" - ] - }, - { - "cell_type": "markdown", - "id": "bc66d7e2", - "metadata": {}, - "source": [ - "We'll use a `for` loop to read lines from the file and `split` to divide the lines into words.\n", - "Then, to keep track of unique words, we'll store each word as a key in a dictionary." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "16d24028", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "6040" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "unique_words = {}\n", - "for line in open(filename):\n", - " seq = line.split()\n", - " for word in seq:\n", - " unique_words[word] = 1\n", - "\n", - "len(unique_words)" - ] - }, - { - "cell_type": "markdown", - "id": "85171a3a", - "metadata": {}, - "source": [ - "The length of the dictionary is the number of unique words -- about `6000` by this way of counting.\n", - "But if we inspect them, we'll see that some are not valid words.\n", - "\n", - "For example, let's look at the longest words in `unique_words`.\n", - "We can use `sorted` to sort the words, passing the `len` function as a keyword argument so the words are sorted by length." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "1668e6bd", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['chocolate-coloured',\n", - " 'superiors—behold!”',\n", - " 'coolness—frightened',\n", - " 'gentleman—something',\n", - " 'pocket-handkerchief.']" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "sorted(unique_words, key=len)[-5:]" - ] - }, - { - "cell_type": "markdown", - "id": "795f5327", - "metadata": {}, - "source": [ - "The slice index, `[-5:]`, selects the last `5` elements of the sorted list, which are the longest words. \n", - "\n", - "The list includes some legitimately long words, like \"circumscription\", and some hyphenated words, like \"chocolate-coloured\".\n", - "But some of the longest \"words\" are actually two words separated by a dash.\n", - "And other words include punctuation like periods, exclamation points, and quotation marks.\n", - "\n", - "So, before we move on, let's deal with dashes and other punctuation." - ] - }, - { - "cell_type": "markdown", - "id": "bf89fafa", - "metadata": {}, - "source": [ - "## Punctuation\n", - "\n", - "To identify the words in the text, we need to deal with two issues:\n", - "\n", - "* When a dash appears in a line, we should replace it with a space -- then when we use `split`, the words will be separated.\n", - "\n", - "* After splitting the words, we can use `strip` to remove punctuation.\n", - "\n", - "To handle the first issue, we can use the following function, which takes a string, replaces dashes with spaces, splits the string, and returns the resulting list." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "ed5f0a43", - "metadata": {}, - "outputs": [], - "source": [ - "def split_line(line):\n", - " return line.replace('—', ' ').split()" - ] - }, - { - "cell_type": "markdown", - "id": "d5decdec", - "metadata": {}, - "source": [ - "Notice that `split_line` only replaces dashes, not hyphens.\n", - "Here's an example." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "a9df2aeb", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['coolness', 'frightened']" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "split_line('coolness—frightened')" - ] - }, - { - "cell_type": "markdown", - "id": "0d9eb318", - "metadata": {}, - "source": [ - "Now, to remove punctuation from the beginning and end of each word, we can use `strip`, but we need a list of characters that are considered punctuation.\n", - "\n", - "Characters in Python strings are in Unicode, which is an international standard used to represent letters in nearly every alphabet, numbers, symbols, punctuation marks, and more.\n", - "The `unicodedata` module provides a `category` function we can use to tell which characters are punctuation.\n", - "Given a letter, it returns a string with information about what category the letter is in." - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "b138b123", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'Lu'" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "import unicodedata\n", - "\n", - "unicodedata.category('A')" - ] - }, - { - "cell_type": "markdown", - "id": "994835ea", - "metadata": {}, - "source": [ - "The category string of `'A'` is `'Lu'` -- the `'L'` means it is a letter and the `'u'` means it is uppercase.\n", - "\n", - "The category string of `'.'` is `'Po'` -- the `'P'` means it is punctuation and the `'o'` means its subcategory is \"other\"." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "fe65df44", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'Po'" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "unicodedata.category('.')" - ] - }, - { - "cell_type": "markdown", - "id": "03773b9b", - "metadata": {}, - "source": [ - "We can find the punctuation marks in the book by checking for characters with categories that begin with `'P'`.\n", - "The following loop stores the unique punctuation marks in a dictionary." - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "b47a87cf", - "metadata": {}, - "outputs": [], - "source": [ - "punc_marks = {}\n", - "for line in open(filename):\n", - " for char in line:\n", - " category = unicodedata.category(char)\n", - " if category.startswith('P'):\n", - " punc_marks[char] = 1" - ] - }, - { - "cell_type": "markdown", - "id": "e6741dfa", - "metadata": {}, - "source": [ - "To make a list of punctuation marks, we can join the keys of the dictionary into a string." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "348949be", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - ".’;,-“”:?—‘!()_\n" - ] - } - ], - "source": [ - "punctuation = ''.join(punc_marks)\n", - "print(punctuation)" - ] - }, - { - "cell_type": "markdown", - "id": "6af8d5a2", - "metadata": {}, - "source": [ - "Now that we know which characters in the book are punctuation, we can write a function that takes a word, strips punctuation from the beginning and end, and converts it to lower case." - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "06121901", - "metadata": {}, - "outputs": [], - "source": [ - "def clean_word(word):\n", - " return word.strip(punctuation).lower()" - ] - }, - { - "cell_type": "markdown", - "id": "58a78cb1", - "metadata": {}, - "source": [ - "Here's an example." - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "881ed9f8", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'behold'" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "clean_word('“Behold!”')" - ] - }, - { - "cell_type": "markdown", - "id": "314e4fbd", - "metadata": {}, - "source": [ - "Because `strip` removes characters from the beginning and end, it leaves hyphenated words alone." - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "ab5d2fed", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'pocket-handkerchief'" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "clean_word('pocket-handkerchief')" - ] - }, - { - "cell_type": "markdown", - "id": "99050f8a", - "metadata": {}, - "source": [ - "Now here's a loop that uses `split_line` and `clean_word` to identify the unique words in the book." - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "2fdfb936", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "4005" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "unique_words2 = {}\n", - "for line in open(filename):\n", - " for word in split_line(line):\n", - " word = clean_word(word)\n", - " unique_words2[word] = 1\n", - "\n", - "len(unique_words2)" - ] - }, - { - "cell_type": "markdown", - "id": "992e5466", - "metadata": {}, - "source": [ - "With this stricter definition of what a word is, there are about 4000 unique words.\n", - "And we can confirm that the list of longest words has been cleaned up." - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "3104d191", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['circumscription',\n", - " 'unimpressionable',\n", - " 'fellow-creatures',\n", - " 'chocolate-coloured',\n", - " 'pocket-handkerchief']" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "sorted(unique_words2, key=len)[-5:]" - ] - }, - { - "cell_type": "markdown", - "id": "8014c330", - "metadata": {}, - "source": [ - "Now let's see how many times each word is used." - ] - }, - { - "cell_type": "markdown", - "id": "7ef40180", - "metadata": {}, - "source": [ - "## Word frequencies\n", - "\n", - "The following loop computes the frequency of each unique word." - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "4fba7d1c", - "metadata": {}, - "outputs": [], - "source": [ - "word_counter = {}\n", - "for line in open(filename):\n", - " for word in split_line(line):\n", - " word = clean_word(word)\n", - " if word not in word_counter:\n", - " word_counter[word] = 1\n", - " else:\n", - " word_counter[word] += 1" - ] - }, - { - "cell_type": "markdown", - "id": "bd680b81", - "metadata": {}, - "source": [ - "The first time we see a word, we initialize its frequency to `1`. If we see the same word again later, we increment its frequency.\n", - "\n", - "To see which words appear most often, we can use `items` to get the key-value pairs from `word_counter`, and sort them by the second element of the pair, which is the frequency.\n", - "First we'll define a function that selects the second element." - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "4be34c95", - "metadata": {}, - "outputs": [], - "source": [ - "def second_element(t):\n", - " return t[1]" - ] - }, - { - "cell_type": "markdown", - "id": "b15a5bd6", - "metadata": {}, - "source": [ - "Now we can use `sorted` with two keyword arguments:\n", - "\n", - "* `key=second_element` means the items will be sorted according to the frequencies of the words.\n", - "\n", - "* `reverse=True` means the items will be sorted in reverse order, with the most frequent words first." - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "8efe7c4c", - "metadata": {}, - "outputs": [], - "source": [ - "items = sorted(word_counter.items(), key=second_element, reverse=True)" - ] - }, - { - "cell_type": "markdown", - "id": "db6812e2", - "metadata": {}, - "source": [ - "Here are the five most frequent words." - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "79c17341", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1614\tthe\n", - "972\tand\n", - "941\tof\n", - "640\tto\n", - "640\ti\n" - ] - } - ], - "source": [ - "for word, freq in items[:5]:\n", - " print(freq, word, sep='\\t')" - ] - }, - { - "cell_type": "markdown", - "id": "551e81bb", - "metadata": {}, - "source": [ - "In the next section, we'll encapsulate this loop in a function.\n", - "And we'll use it to demonstrate a new feature -- optional parameters." - ] - }, - { - "cell_type": "markdown", - "id": "45243ccc", - "metadata": {}, - "source": [ - "## Optional parameters\n", - "\n", - "We've used built-in functions that take optional parameters.\n", - "For example, `round` takes an optional parameters called `ndigits` that indicates how many decimal places to keep." - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "838bcb4f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "3.142" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "round(3.141592653589793, ndigits=3)" - ] - }, - { - "cell_type": "markdown", - "id": "6ae60945", - "metadata": {}, - "source": [ - "But it's not just built-in functions -- we can write functions with optional parameters, too.\n", - "For example, the following function takes two parameters, `word_counter` and `num`." - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "90c45e7e", - "metadata": {}, - "outputs": [], - "source": [ - "def print_most_common(word_counter, num=5):\n", - " items = sorted(word_counter.items(), key=second_element, reverse=True)\n", - "\n", - " for word, freq in items[:num]:\n", - " print(freq, word, sep='\\t')" - ] - }, - { - "cell_type": "markdown", - "id": "78cb1531", - "metadata": {}, - "source": [ - "The second parameter looks like an assignment statement, but it's not -- it's an optional parameter.\n", - "\n", - "If you call this function with one argument, `num` gets the **default value**, which is `5`." - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "e106be95", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1614\tthe\n", - "972\tand\n", - "941\tof\n", - "640\tto\n", - "640\ti\n" - ] - } - ], - "source": [ - "print_most_common(word_counter)" - ] - }, - { - "cell_type": "markdown", - "id": "29753ad6", - "metadata": {}, - "source": [ - "If you call this function with two arguments, the second argument gets assigned to `num` instead of the default value." - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "8101a510", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1614\tthe\n", - "972\tand\n", - "941\tof\n" - ] - } - ], - "source": [ - "print_most_common(word_counter, 3)" - ] - }, - { - "cell_type": "markdown", - "id": "e9bf907b", - "metadata": {}, - "source": [ - "In that case, we would say the optional argument **overrides** the default value.\n", - "\n", - "If a function has both required and optional parameters, all of the required parameters have to come first, followed by the optional ones." - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "c046117b", - "metadata": { - "tags": [ - "remove-cell", - "raises-exception" - ] - }, - "outputs": [ - { - "ename": "SyntaxError", - "evalue": "non-default argument follows default argument (3116647453.py, line 1)", - "output_type": "error", - "traceback": [ - "\u001b[0;36m Cell \u001b[0;32mIn[28], line 1\u001b[0;36m\u001b[0m\n\u001b[0;31m def bad_function(n=5, word_counter):\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m non-default argument follows default argument\n" - ] - } - ], - "source": [ - "%%expect SyntaxError\n", - "\n", - "def bad_function(n=5, word_counter):\n", - " return None" - ] - }, - { - "cell_type": "markdown", - "id": "3f450df2", - "metadata": { - "tags": [ - "section_dictionary_subtraction" - ] - }, - "source": [ - "## Dictionary subtraction\n", - "\n", - "Suppose we want to spell-check a book -- that is, find a list of words that might be misspelled.\n", - "One way to do that is to find words in the book that don't appear in a list of valid words.\n", - "In previous chapters, we've used a list of words that are considered valid in word games like Scrabble.\n", - "Now we'll use this list to spell-check Robert Louis Stevenson.\n", - "\n", - "We can think of this problem as set subtraction -- that is, we want to find all the words from one set (the words in the book) that are not in the other (the words in the list)." - ] - }, - { - "cell_type": "markdown", - "id": "a3804d82", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "The following cell downloads the word list." - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "edd8ff1c", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "download('https://raw.githubusercontent.com/AllenDowney/ThinkPython/v3/words.txt');" - ] - }, - { - "cell_type": "markdown", - "id": "2a46556c", - "metadata": {}, - "source": [ - "As we've done before, we can read the contents of `words.txt` and split it into a list of strings." - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "id": "67ef3e08", - "metadata": {}, - "outputs": [], - "source": [ - "word_list = open('words.txt').read().split()" - ] - }, - { - "cell_type": "markdown", - "id": "22becbab", - "metadata": {}, - "source": [ - "Then we'll store the words as keys in a dictionary so we can use the `in` operator to check quickly whether a word is valid." - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "id": "471d58e9", - "metadata": {}, - "outputs": [], - "source": [ - "valid_words = {}\n", - "for word in word_list:\n", - " valid_words[word] = 1" - ] - }, - { - "cell_type": "markdown", - "id": "94cc7c61", - "metadata": {}, - "source": [ - "Now, to identify words that appear in the book but not in the word list, we'll use `subtract`, which takes two dictionaries as parameters and returns a new dictionary that contains all the keys from one that are not in the other." - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "id": "4d4c3538", - "metadata": {}, - "outputs": [], - "source": [ - "def subtract(d1, d2):\n", - " res = {}\n", - " for key in d1:\n", - " if key not in d2:\n", - " res[key] = d1[key]\n", - " return res" - ] - }, - { - "cell_type": "markdown", - "id": "e70c63b4", - "metadata": {}, - "source": [ - "Here's how we use it." - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "id": "8b42e014", - "metadata": {}, - "outputs": [], - "source": [ - "diff = subtract(word_counter, valid_words)" - ] - }, - { - "cell_type": "markdown", - "id": "f8ada7bd", - "metadata": {}, - "source": [ - "To get a sample of words that might be misspelled, we can print the most common words in `diff`." - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "id": "f48be152", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "640\ti\n", - "628\ta\n", - "128\tutterson\n", - "124\tmr\n", - "98\thyde\n" - ] - } - ], - "source": [ - "print_most_common(diff)" - ] - }, - { - "cell_type": "markdown", - "id": "deeec418", - "metadata": {}, - "source": [ - "The most common \"misspelled\" words are mostly names and a few single-letter words (Mr. Utterson is Dr. Jekyll's friend and lawyer).\n", - "\n", - "If we select words that only appear once, they are more likely to be actual misspellings.\n", - "We can do that by looping through the items and making a list of words with frequency `1`." - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "id": "5716f967", - "metadata": {}, - "outputs": [], - "source": [ - "singletons = []\n", - "for word, freq in diff.items():\n", - " if freq == 1:\n", - " singletons.append(word)" - ] - }, - { - "cell_type": "markdown", - "id": "98ae9281", - "metadata": {}, - "source": [ - "Here are the last few elements of the list." - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "id": "b37219f5", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['gesticulated', 'abjection', 'circumscription', 'reindue', 'fearstruck']" - ] - }, - "execution_count": 36, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "singletons[-5:]" - ] - }, - { - "cell_type": "markdown", - "id": "c5040834", - "metadata": {}, - "source": [ - "Most of them are valid words that are not in the word list.\n", - "But `'reindue'` appears to be a misspelling of `'reinduce'`, so at least we found one legitimate error." - ] - }, - { - "cell_type": "markdown", - "id": "afcbbe19", - "metadata": {}, - "source": [ - "## Random numbers\n", - "\n", - "As a step toward Markov text generation, next we'll choose a random sequence of words from `word_counter`.\n", - "But first let's talk about randomness.\n", - "\n", - "Given the same inputs, most computer programs are **deterministic**, which means they generate the same outputs every time.\n", - "Determinism is usually a good thing, since we expect the same calculation to yield the same result.\n", - "For some applications, though, we want the computer to be unpredictable.\n", - "Games are one example, but there are more.\n", - "\n", - "Making a program truly nondeterministic turns out to be difficult, but there are ways to fake it.\n", - "One is to use algorithms that generate **pseudorandom** numbers.\n", - "Pseudorandom numbers are not truly random because they are generated by a deterministic computation, but just by looking at the numbers it is all but impossible to distinguish them from random.\n", - "\n", - "The `random` module provides functions that generate pseudorandom numbers -- which I will simply call \"random\" from here on.\n", - "We can import it like this." - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "id": "75b548a9", - "metadata": {}, - "outputs": [], - "source": [ - "import random" - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "id": "2bfa31ae", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "# this cell initializes the random number generator so it \n", - "# generates the same sequence each time the notebook runs.\n", - "\n", - "random.seed(4)" - ] - }, - { - "cell_type": "markdown", - "id": "8cbbd7f8", - "metadata": {}, - "source": [ - "The `random` module provides a function called `choice` that chooses an element from a list at random, with every element having the same probability of being chosen." - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "id": "6f5d5c1c", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "1" - ] - }, - "execution_count": 39, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "t = [1, 2, 3]\n", - "random.choice(t)" - ] - }, - { - "cell_type": "markdown", - "id": "57c15af2", - "metadata": {}, - "source": [ - "If you call the function again, you might get the same element again, or a different one." - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "id": "1445068b", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "2" - ] - }, - "execution_count": 40, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "random.choice(t)" - ] - }, - { - "cell_type": "markdown", - "id": "6f0c2572", - "metadata": {}, - "source": [ - "In the long run, we expect to get every element about the same number of times.\n", - "\n", - "If you use `choice` with a dictionary, you get a `KeyError`." - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "id": "4fc47ecd", - "metadata": { - "tags": [ - "raises-exception" - ] - }, - "outputs": [ - { - "ename": "KeyError", - "evalue": "422", - "output_type": "error", - "traceback": [ - "\u001b[0;31mKeyError\u001b[0m\u001b[0;31m:\u001b[0m 422\n" - ] - } - ], - "source": [ - "%%expect KeyError\n", - "\n", - "random.choice(word_counter)" - ] - }, - { - "cell_type": "markdown", - "id": "592722f3", - "metadata": {}, - "source": [ - "To choose a random key, you have to put the keys in a list and then call `choice`." - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "id": "91ae9d4c", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'posture'" - ] - }, - "execution_count": 42, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "words = list(word_counter)\n", - "random.choice(words)" - ] - }, - { - "cell_type": "markdown", - "id": "172d72f6", - "metadata": {}, - "source": [ - "If we generate a random sequence of words, it doesn't make much sense." - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "id": "8bf595c1", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ill-contained written apocryphal nor busy spoke " - ] - } - ], - "source": [ - "for i in range(6):\n", - " word = random.choice(words)\n", - " print(word, end=' ')" - ] - }, - { - "cell_type": "markdown", - "id": "e0e2fbc4", - "metadata": {}, - "source": [ - "Part of the problem is that we are not taking into account that some words are more common than others.\n", - "The results will be better if we choose words with different \"weights\", so that some are chosen more often than others.\n", - "\n", - "If we use the values from `word_counter` as weights, each word is chosen with a probability that depends on its frequency." - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "id": "22953b65", - "metadata": {}, - "outputs": [], - "source": [ - "weights = word_counter.values()" - ] - }, - { - "cell_type": "markdown", - "id": "5098bf93", - "metadata": {}, - "source": [ - "The `random` module provides another function called `choices` that takes weights as an optional argument." - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "id": "1c7cdf4d", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['than']" - ] - }, - "execution_count": 45, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "random.choices(words, weights=weights)" - ] - }, - { - "cell_type": "markdown", - "id": "a3341e84", - "metadata": {}, - "source": [ - "And it takes another optional argument, `k`, that specifies the number of words to select." - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "id": "a7a3aa42", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['reach', 'streets', 'edward', 'a', 'said', 'to']" - ] - }, - "execution_count": 46, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "random_words = random.choices(words, weights=weights, k=6)\n", - "random_words" - ] - }, - { - "cell_type": "markdown", - "id": "e57e6f3d", - "metadata": {}, - "source": [ - "The result is a list of strings that we can join into something that's looks more like a sentence." - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "id": "c4286fb3", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'reach streets edward a said to'" - ] - }, - "execution_count": 47, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "' '.join(random_words)" - ] - }, - { - "cell_type": "markdown", - "id": "c7a35dff", - "metadata": {}, - "source": [ - "If you choose words from the book at random, you get a sense of the vocabulary, but a series of random words seldom makes sense because there is no relationship between successive words.\n", - "For example, in a real sentence you expect an article like \"the\" to be followed by an adjective or a noun, and probably not a verb or adverb.\n", - "So the next step is to look at these relationships between words." - ] - }, - { - "cell_type": "markdown", - "id": "0921dd53", - "metadata": {}, - "source": [ - "## Bigrams\n", - "\n", - "Instead of looking at one word at a time, now we'll look at sequences of two words, which are called **bigrams**.\n", - "A sequence of three words is called a **trigram**, and a sequence with some unspecified number of words is called an **n-gram**.\n", - "\n", - "Let's write a program that finds all of the bigrams in the book and the number of times each one appears.\n", - "To store the results, we'll use a dictionary where\n", - "\n", - "* The keys are tuples of strings that represent bigrams, and \n", - "\n", - "* The values are integers that represent frequencies.\n", - "\n", - "Let's call it `bigram_counter`." - ] - }, - { - "cell_type": "code", - "execution_count": 48, - "id": "d8ee02f6", - "metadata": {}, - "outputs": [], - "source": [ - "bigram_counter = {}" - ] - }, - { - "cell_type": "markdown", - "id": "33f97a2a", - "metadata": {}, - "source": [ - "The following function takes a list of two strings as a parameter.\n", - "First it makes a tuple of the two strings, which can be used as a key in a dictionary.\n", - "Then it adds the key to `bigram_counter`, if it doesn't exist, or increments the frequency if it does." - ] - }, - { - "cell_type": "code", - "execution_count": 49, - "id": "bfdb1de1", - "metadata": {}, - "outputs": [], - "source": [ - "def count_bigram(bigram):\n", - " key = tuple(bigram)\n", - " if key not in bigram_counter:\n", - " bigram_counter[key] = 1\n", - " else:\n", - " bigram_counter[key] += 1" - ] - }, - { - "cell_type": "markdown", - "id": "5c30f429", - "metadata": {}, - "source": [ - "As we go through the book, we have to keep track of each pair of consecutive words.\n", - "So if we see the sequence \"man is not truly one\", we would add the bigrams \"man is\", \"is not\", \"not truly\", and so on.\n", - "\n", - "To keep track of these bigrams, we'll use a list called `window`, because it is like a window that slides over the pages of the book, showing only two words at a time.\n", - "Initially, `window` is empty." - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "id": "2e73df79", - "metadata": {}, - "outputs": [], - "source": [ - "window = []" - ] - }, - { - "cell_type": "markdown", - "id": "9376558c", - "metadata": {}, - "source": [ - "We'll use the following function to process the words one at a time." - ] - }, - { - "cell_type": "code", - "execution_count": 51, - "id": "495ad429", - "metadata": {}, - "outputs": [], - "source": [ - "def process_word(word):\n", - " window.append(word)\n", - " \n", - " if len(window) == 2:\n", - " count_bigram(window)\n", - " window.pop(0)" - ] - }, - { - "cell_type": "markdown", - "id": "56895591", - "metadata": {}, - "source": [ - "The first time this function is called, it appends the given word to `window`.\n", - "Since there is only one word in the window, we don't have a bigram yet, so the function ends.\n", - "\n", - "The second time it's called -- and every time thereafter -- it appends a second word to `window`.\n", - "Since there are two words in the window, it calls `count_bigram` to keep track of how many times each bigram appears.\n", - "Then it uses `pop` to remove the first word from the window.\n", - "\n", - "The following program loops through the words in the book and processes them one at a time." - ] - }, - { - "cell_type": "code", - "execution_count": 52, - "id": "c1224061", - "metadata": {}, - "outputs": [], - "source": [ - "for line in open(filename):\n", - " for word in split_line(line):\n", - " word = clean_word(word)\n", - " process_word(word)" - ] - }, - { - "cell_type": "markdown", - "id": "20c4627a", - "metadata": {}, - "source": [ - "The result is a dictionary that maps from each bigram to the number of times it appears.\n", - "We can use `print_most_common` to see the most common bigrams." - ] - }, - { - "cell_type": "code", - "execution_count": 53, - "id": "4296485a", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "178\t('of', 'the')\n", - "139\t('in', 'the')\n", - "94\t('it', 'was')\n", - "80\t('and', 'the')\n", - "73\t('to', 'the')\n" - ] - } - ], - "source": [ - "print_most_common(bigram_counter)" - ] - }, - { - "cell_type": "markdown", - "id": "757bd309", - "metadata": {}, - "source": [ - "Looking at these results, we can get a sense of which pairs of words are most likely to appear together.\n", - "We can also use the results to generate random text, like this." - ] - }, - { - "cell_type": "code", - "execution_count": 54, - "id": "e03fd803", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "random.seed(0)" - ] - }, - { - "cell_type": "code", - "execution_count": 55, - "id": "f6ee1840", - "metadata": {}, - "outputs": [], - "source": [ - "bigrams = list(bigram_counter)\n", - "weights = bigram_counter.values()\n", - "random_bigrams = random.choices(bigrams, weights=weights, k=6)" - ] - }, - { - "cell_type": "markdown", - "id": "eda80407", - "metadata": {}, - "source": [ - "`bigrams` is a list of the bigrams that appear in the books.\n", - "`weights` is a list of their frequencies, so `random_bigrams` is a sample where the probability a bigram is selected is proportional to its frequency. \n", - "\n", - "Here are the results." - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "id": "d6c65d79", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "to suggest this preface to detain fact is above all the laboratory " - ] - } - ], - "source": [ - "for pair in random_bigrams:\n", - " print(' '.join(pair), end=' ')" - ] - }, - { - "cell_type": "markdown", - "id": "5f24c3b6", - "metadata": {}, - "source": [ - "This way of generating text is better than choosing random words, but still doesn't make a lot of sense." - ] - }, - { - "cell_type": "markdown", - "id": "a13d93b5", - "metadata": {}, - "source": [ - "## Markov analysis\n", - "\n", - "We can do better with Markov chain text analysis, which computes, for each word in a text, the list of words that come next.\n", - "As an example, we'll analyze these lyrics from the Monty Python song *Eric, the Half a Bee*:" - ] - }, - { - "cell_type": "code", - "execution_count": 57, - "id": "3171d592", - "metadata": {}, - "outputs": [], - "source": [ - "song = \"\"\"\n", - "Half a bee, philosophically,\n", - "Must, ipso facto, half not be.\n", - "But half the bee has got to be\n", - "Vis a vis, its entity. D'you see?\n", - "\"\"\"" - ] - }, - { - "cell_type": "markdown", - "id": "583ab9f0", - "metadata": {}, - "source": [ - "To store the results, we'll use a dictionary that maps from each word to the list of words that follow it." - ] - }, - { - "cell_type": "code", - "execution_count": 58, - "id": "3321e6a4", - "metadata": {}, - "outputs": [], - "source": [ - "successor_map = {}" - ] - }, - { - "cell_type": "markdown", - "id": "d5d85b09", - "metadata": {}, - "source": [ - "As an example, let's start with the first two words of the song." - ] - }, - { - "cell_type": "code", - "execution_count": 59, - "id": "e4e55c71", - "metadata": {}, - "outputs": [], - "source": [ - "first = 'half'\n", - "second = 'a'" - ] - }, - { - "cell_type": "markdown", - "id": "0349fe78", - "metadata": {}, - "source": [ - "If the first word is not in `successor_map`, we have to add a new item that maps from the first word to a list containing the second word." - ] - }, - { - "cell_type": "code", - "execution_count": 60, - "id": "f25dcb5e", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'half': ['a']}" - ] - }, - "execution_count": 60, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "successor_map[first] = [second]\n", - "successor_map" - ] - }, - { - "cell_type": "markdown", - "id": "55bb8df9", - "metadata": {}, - "source": [ - "If the first word is already in the dictionary, we can look it up to get the list of successors we've seen so far, and append the new one." - ] - }, - { - "cell_type": "code", - "execution_count": 61, - "id": "990354a0", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'half': ['a', 'not']}" - ] - }, - "execution_count": 61, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "first = 'half'\n", - "second = 'not'\n", - "\n", - "successor_map[first].append(second)\n", - "successor_map" - ] - }, - { - "cell_type": "markdown", - "id": "6289cc32", - "metadata": {}, - "source": [ - "The following function encapsulates these steps." - ] - }, - { - "cell_type": "code", - "execution_count": 62, - "id": "b9371452", - "metadata": {}, - "outputs": [], - "source": [ - "def add_bigram(bigram):\n", - " first, second = bigram\n", - " \n", - " if first not in successor_map:\n", - " successor_map[first] = [second]\n", - " else:\n", - " successor_map[first].append(second)" - ] - }, - { - "cell_type": "markdown", - "id": "74a51700", - "metadata": {}, - "source": [ - "If the same bigram appears more that once, the second word is added to the list more than once.\n", - "In this way, `successor_map` keeps track of how many times each successor appears.\n", - "\n", - "As we did in the previous section, we'll use a list called `window` to store pairs of consecutive words.\n", - "And we'll use the following function to process the words one at a time." - ] - }, - { - "cell_type": "code", - "execution_count": 63, - "id": "8c3f45c2", - "metadata": {}, - "outputs": [], - "source": [ - "def process_word_bigram(word):\n", - " window.append(word)\n", - " \n", - " if len(window) == 2:\n", - " add_bigram(window)\n", - " window.pop(0)" - ] - }, - { - "cell_type": "markdown", - "id": "861a60d9", - "metadata": {}, - "source": [ - "Here's how we use it to process the words in the song." - ] - }, - { - "cell_type": "code", - "execution_count": 64, - "id": "641990a3", - "metadata": {}, - "outputs": [], - "source": [ - "successor_map = {}\n", - "window = []\n", - "\n", - "for word in song.split():\n", - " word = clean_word(word)\n", - " process_word_bigram(word)" - ] - }, - { - "cell_type": "markdown", - "id": "bf490d67", - "metadata": {}, - "source": [ - "And here are the results." - ] - }, - { - "cell_type": "code", - "execution_count": 65, - "id": "9322a49a", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'half': ['a', 'not', 'the'],\n", - " 'a': ['bee', 'vis'],\n", - " 'bee': ['philosophically', 'has'],\n", - " 'philosophically': ['must'],\n", - " 'must': ['ipso'],\n", - " 'ipso': ['facto'],\n", - " 'facto': ['half'],\n", - " 'not': ['be'],\n", - " 'be': ['but', 'vis'],\n", - " 'but': ['half'],\n", - " 'the': ['bee'],\n", - " 'has': ['got'],\n", - " 'got': ['to'],\n", - " 'to': ['be'],\n", - " 'vis': ['a', 'its'],\n", - " 'its': ['entity'],\n", - " 'entity': [\"d'you\"],\n", - " \"d'you\": ['see']}" - ] - }, - "execution_count": 65, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "successor_map" - ] - }, - { - "cell_type": "markdown", - "id": "ff7bad74", - "metadata": {}, - "source": [ - "The word `'half'` can be followed by `'a'`, `'not'`, or `'the'`.\n", - "The word `'a'` can be followed by `'bee'` or `'vis'`.\n", - "Most of the other words appear only once, so they are followed by only a single word.\n", - "\n", - "Now let's analyze the book." - ] - }, - { - "cell_type": "code", - "execution_count": 66, - "id": "45a60c52", - "metadata": {}, - "outputs": [], - "source": [ - "successor_map = {}\n", - "window = []\n", - "\n", - "for line in open(filename):\n", - " for word in split_line(line):\n", - " word = clean_word(word)\n", - " process_word_bigram(word)" - ] - }, - { - "cell_type": "markdown", - "id": "2676e2fb", - "metadata": {}, - "source": [ - "We can look up any word and find the words that can follow it." - ] - }, - { - "cell_type": "code", - "execution_count": 67, - "id": "3e86102c", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "story ['of', 'of', 'indeed', 'but', 'for', 'of', 'that']\n", - "incident ['of', 'of', 'at', 'of', 'of', 'at', 'this']\n", - "lanyon’s ['narrative', 'there', 'face', 'manner', 'narrative', 'the', 'condemnation']\n", - "common ['it', 'interest', 'friends', 'friends', 'observers', 'but', 'quarry']\n", - "relief ['the', 'to', 'when', 'that', 'that', 'of', 'it']\n", - "appearance ['of', 'well', 'something', 'he', 'amply', 'of', 'which']\n", - "going ['east', 'in', 'to', 'to', 'up', 'to', 'of']\n", - "till ['at', 'the', 'i', 'yesterday', 'the', 'that', 'weariness']\n", - "walk ['and', 'into', 'with', 'all', 'steadfastly', 'attired', 'with']\n", - "sounds ['nothing', 'carried', 'out', 'the', 'of', 'of', 'with']\n", - "really ['like', 'damnable', 'can', 'a', 'a', 'not', 'be']\n", - "does ['not', 'not', 'indeed', 'not', 'the', 'not', 'not']\n", - "reply ['i', 'but', 'whose', 'i', 'some', 'that’s', 'i']\n", - "continued ['mr', 'the', 'the', 'the', 'the', 'poole', 'utterson']\n", - "seems ['scarcely', 'hardly', 'to', 'she', 'much', 'he', 'to']\n", - "walked ['on', 'over', 'some', 'was', 'on', 'with', 'fast']\n", - "that’s ['a', 'it', 'talking', 'very', 'not', 'such', 'not']\n", - "although ['i', 'a', 'it', 'the', 'we', 'they', 'i']\n", - "until ['the', 'the', 'they', 'they', 'the', 'to-morrow', 'i']\n", - "disappearance ['or', 'the', 'of', 'of', 'here', 'and', 'but']\n", - "step ['into', 'or', 'back', 'natural', 'into', 'of', 'leaping']\n", - "wish ['the', 'you', 'to', 'you', 'to', 'i', 'to']\n", - "aware ['of', 'of', 'of', 'that', 'jekyll’s', 'that', 'of']\n", - "thank ['you', 'you', 'you', 'you', 'you', 'god', 'you']\n", - "maid ['servant', 'described', 'fainted', 'had', 'calls', 'had', 'lifted']\n", - "besides ['were', 'was', 'for', 'a', 'with', 'with', 'which']\n", - "observed ['the', 'utterson', 'with', 'the', 'that', 'that', 'that']\n", - "among ['other', 'the', 'the', 'the', 'my', 'my', 'temptations']\n" - ] - } - ], - "source": [ - "# I used this cell to find a predecessor with a good number of possible successors\n", - "# and at least one repeated word.\n", - "\n", - "def has_duplicates(t):\n", - " return len(set(t)) < len(t)\n", - "\n", - "for key, value in successor_map.items():\n", - " if len(value) == 7 and has_duplicates(value):\n", - " print(key, value)" - ] - }, - { - "cell_type": "code", - "execution_count": 68, - "id": "e49d52f7", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['east', 'in', 'to', 'to', 'up', 'to', 'of']" - ] - }, - "execution_count": 68, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "successor_map['going']" - ] - }, - { - "cell_type": "markdown", - "id": "7b777a9c", - "metadata": {}, - "source": [ - "In this list of successors, notice that the word `'to'` appears three times -- the other successors only appear once." - ] - }, - { - "cell_type": "markdown", - "id": "e8bf85fc", - "metadata": {}, - "source": [ - "## Generating text\n", - "\n", - "We can use the results from the previous section to generate new text with the same relationships between consecutive words as in the original.\n", - "Here's how it works:\n", - "\n", - "* Starting with any word that appears in the text, we look up its possible successors and choose one at random.\n", - "\n", - "* Then, using the chosen word, we look up its possible successors, and choose one at random.\n", - "\n", - "We can repeat this process to generate as many words as we want.\n", - "As an example, let's start with the word `'although'`.\n", - "Here are the words that can follow it." - ] - }, - { - "cell_type": "code", - "execution_count": 69, - "id": "15108884", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['i', 'a', 'it', 'the', 'we', 'they', 'i']" - ] - }, - "execution_count": 69, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "word = 'although'\n", - "successors = successor_map[word]\n", - "successors" - ] - }, - { - "cell_type": "code", - "execution_count": 70, - "id": "747a41be", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "# this cell initializes the random number generator so it \n", - "# starts at the same point in the sequence each time this\n", - "# notebook runs.\n", - "\n", - "random.seed(2)" - ] - }, - { - "cell_type": "markdown", - "id": "b26a2ead", - "metadata": {}, - "source": [ - "We can use `choice` to choose from the list with equal probability." - ] - }, - { - "cell_type": "code", - "execution_count": 71, - "id": "5a4682dc", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'i'" - ] - }, - "execution_count": 71, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "word = random.choice(successors)\n", - "word" - ] - }, - { - "cell_type": "markdown", - "id": "9741beca", - "metadata": {}, - "source": [ - "If the same word appears more than once in the list, it is more likely to be selected.\n", - "\n", - "Repeating these steps, we can use the following loop to generate a longer series." - ] - }, - { - "cell_type": "code", - "execution_count": 72, - "id": "36ee0f76", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "continue to hesitate and swallowed the smile withered from that " - ] - } - ], - "source": [ - "for i in range(10):\n", - " successors = successor_map[word]\n", - " word = random.choice(successors)\n", - " print(word, end=' ')" - ] - }, - { - "cell_type": "markdown", - "id": "38a2d79a", - "metadata": {}, - "source": [ - "The result sounds more like a real sentence, but it still doesn't make much sense.\n", - "\n", - "We can do better using more than one word as a key in `successor_map`.\n", - "For example, we can make a dictionary that maps from each bigram -- or trigram -- to the list of words that come next.\n", - "As an exercise, you'll have a chance to implement this analysis and see what the results look like." - ] - }, - { - "cell_type": "markdown", - "id": "c59dff45", - "metadata": { - "tags": [ - "section_debugging_12" - ] - }, - "source": [ - "## Debugging\n", - "\n", - "At this point we are writing more substantial programs, and you might find that you are spending more time debugging.\n", - "If you are stuck on a difficult bug, here are a few things to try:\n", - "\n", - "* Reading: Examine your code, read it back to yourself, and check that it says what you meant to say.\n", - "\n", - "* Running: Experiment by making changes and running different versions. Often if you display the right thing at the right place in the program, the problem becomes obvious, but sometimes you have to build scaffolding.\n", - "\n", - "* Ruminating: Take some time to think! What kind of error is it: syntax, runtime,\n", - " or semantic? What information can you get from the error messages,\n", - " or from the output of the program? What kind of error could cause\n", - " the problem you're seeing? What did you change last, before the\n", - " problem appeared?\n", - "\n", - "* Rubberducking: If you explain the problem to someone else, you sometimes find the\n", - " answer before you finish asking the question. Often you don't need\n", - " the other person; you could just talk to a rubber duck. And that's\n", - " the origin of the well-known strategy called **rubber duck\n", - " debugging**. I am not making this up -- see\n", - " .\n", - "\n", - "* Retreating: At some point, the best thing to do is back up -- undoing recent\n", - " changes -- until you get to a program that works. Then you can start rebuilding.\n", - " \n", - "* Resting: If you give your brain a break, sometime it will find the problem for you." - ] - }, - { - "cell_type": "markdown", - "id": "12c2cd32", - "metadata": {}, - "source": [ - "Beginning programmers sometimes get stuck on one of these activities and forget the others. Each activity comes with its own failure mode.\n", - "\n", - "For example, reading your code works if the problem is a typographical error, but not if the problem is a conceptual misunderstanding.\n", - "If you don't understand what your program does, you can read it 100 times and never see the error, because the error is in your head.\n", - "\n", - "Running experiments can work, especially if you run small, simple tests.\n", - "But if you run experiments without thinking or reading your code, it can take a long time to figure out what's happening.\n", - "\n", - "You have to take time to think. Debugging is like an experimental science. You should have at least one hypothesis about what the problem is. If there are two or more possibilities, try to think of a test that would eliminate one of them." - ] - }, - { - "cell_type": "markdown", - "id": "a55036e1", - "metadata": {}, - "source": [ - "But even the best debugging techniques will fail if there are too many\n", - "errors, or if the code you are trying to fix is too big and complicated.\n", - "Sometimes the best option is to retreat, simplifying the program until\n", - "you get back to something that works.\n", - "\n", - "Beginning programmers are often reluctant to retreat because they can't\n", - "stand to delete a line of code (even if it's wrong). If it makes you\n", - "feel better, copy your program into another file before you start\n", - "stripping it down. Then you can copy the pieces back one at a time.\n", - "\n", - "Finding a hard bug requires reading, running, ruminating, retreating, and sometimes resting.\n", - "If you get stuck on one of these activities, try the others." - ] - }, - { - "cell_type": "markdown", - "id": "25d091af", - "metadata": {}, - "source": [ - "## Glossary\n", - "\n", - "**default value:**\n", - "The value assigned to a parameter if no argument is provided.\n", - "\n", - "**override:**\n", - " To replace a default value with an argument.\n", - "\n", - "**deterministic:**\n", - " A deterministic program does the same thing each time it runs, given the same inputs.\n", - "\n", - "**pseudorandom:**\n", - " A pseudorandom sequence of numbers appears to be random, but is generated by a deterministic program.\n", - "\n", - "**bigram:**\n", - "A sequence of two elements, often words.\n", - "\n", - "**trigram:**\n", - "A sequence of three elements.\n", - "\n", - "**n-gram:**\n", - "A sequence of an unspecified number of elements.\n", - "\n", - "**rubber duck debugging:**\n", - "A way of debugging by explaining a problem aloud to an inanimate object." - ] - }, - { - "cell_type": "markdown", - "id": "cde18229", - "metadata": {}, - "source": [ - "## Exercises" - ] - }, - { - "cell_type": "code", - "execution_count": 73, - "id": "05752b6d", - "metadata": { - "tags": [ - "remove-print" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Exception reporting mode: Verbose\n" - ] - } - ], - "source": [ - "# This cell tells Jupyter to provide detailed debugging information\n", - "# when a runtime error occurs. Run it before working on the exercises.\n", - "\n", - "%xmode Verbose" - ] - }, - { - "cell_type": "markdown", - "id": "9b0efab8", - "metadata": {}, - "source": [ - "### Ask a virtual assistant\n", - "\n", - "In `add_bigram`, the `if` statement creates a new list or appends an element to an existing list, depending on whether the key is already in the dictionary." - ] - }, - { - "cell_type": "code", - "execution_count": 74, - "id": "a4365ac0", - "metadata": {}, - "outputs": [], - "source": [ - "def add_bigram(bigram):\n", - " first, second = bigram\n", - " \n", - " if first not in successor_map:\n", - " successor_map[first] = [second]\n", - " else:\n", - " successor_map[first].append(second)" - ] - }, - { - "cell_type": "markdown", - "id": "30d9e549", - "metadata": {}, - "source": [ - "Dictionaries provide a method called `setdefault` that we can use to do the same thing more concisely.\n", - "Ask a virtual assistant how it works, or copy `add_bigram` into a virtual assistant and ask \"Can you rewrite this using `setdefault`?\"\n", - "\n", - "In this chapter we implemented Markov chain text analysis and generation.\n", - "If you are curious, you can ask a virtual assistant for more information on the topic.\n", - "One of the things you might learn is that virtual assistants use algorithms that are similar in many ways -- but also different in important ways.\n", - "Ask a VA, \"What are the differences between large language models like GPT and Markov chain text analysis?\"" - ] - }, - { - "cell_type": "markdown", - "id": "060c9ef6", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "Write a function that counts the number of times each trigram (sequence of three words) appears. \n", - "If you test your function with the text of _Dr. Jekyll and Mr. Hyde_, you should find that the most common trigram is \"said the lawyer\".\n", - "\n", - "Hint: Write a function called `count_trigram` that is similar to `count_bigram`. Then write a function called `process_word_trigram` that is similar to `process_word_bigram`." - ] - }, - { - "cell_type": "code", - "execution_count": 75, - "id": "f38a61ff", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def count_trigram(trigram):\n", - " key = tuple(trigram)\n", - " \n", - " if key not in trigram_counter:\n", - " trigram_counter[key] = 1\n", - " else:\n", - " trigram_counter[key] += 1" - ] - }, - { - "cell_type": "code", - "execution_count": 76, - "id": "d047e546", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def process_word_trigram(word):\n", - " window.append(word)\n", - " \n", - " if len(window) == 3:\n", - " count_trigram(window)\n", - " window.pop(0)" - ] - }, - { - "cell_type": "markdown", - "id": "ca1f8a79", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "You can use the following loop to read the book and process the words." - ] - }, - { - "cell_type": "code", - "execution_count": 77, - "id": "6b8932ee", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "trigram_counter = {}\n", - "window = []\n", - "\n", - "for line in open(filename):\n", - " for word in split_line(line):\n", - " word = clean_word(word)\n", - " process_word_trigram(word)" - ] - }, - { - "cell_type": "markdown", - "id": "35d37fa1", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "Then use `print_most_common` to find the most common trigrams in the book." - ] - }, - { - "cell_type": "code", - "execution_count": 78, - "id": "44c3f0d8", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "20\t('said', 'the', 'lawyer')\n", - "16\t('said', 'mr', 'utterson')\n", - "15\t('of', 'edward', 'hyde')\n", - "13\t('the', 'name', 'of')\n", - "11\t('it', 'was', 'a')\n" - ] - } - ], - "source": [ - "print_most_common(trigram_counter)" - ] - }, - { - "cell_type": "markdown", - "id": "4bd07bb7", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "Now let's implement Markov chain text analysis with a mapping from each bigram to a list of possible successors.\n", - "\n", - "Starting with `add_bigram`, write a function called `add_trigram` that takes a list of three words and either adds or updates an item in `successor_map`, using the first two words as the key and the third word as a possible successor." - ] - }, - { - "cell_type": "code", - "execution_count": 79, - "id": "3fcf85f4", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def add_trigram(trigram):\n", - " first, second, third = trigram\n", - " key = first, second\n", - " \n", - " if key not in successor_map:\n", - " successor_map[key] = [third]\n", - " else:\n", - " successor_map[key].append(third)" - ] - }, - { - "cell_type": "markdown", - "id": "94d683fe", - "metadata": {}, - "source": [ - "Here's a version of `process_word_trigram` that calls `add_trigram`." - ] - }, - { - "cell_type": "code", - "execution_count": 80, - "id": "d9e554e3", - "metadata": {}, - "outputs": [], - "source": [ - "def process_word_trigram(word):\n", - " window.append(word)\n", - " \n", - " if len(window) == 3:\n", - " add_trigram(window)\n", - " window.pop(0)" - ] - }, - { - "cell_type": "markdown", - "id": "82eeed41", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "You can use the following loop to test your function with the lyrics of \"Eric, the Half a Bee\"." - ] - }, - { - "cell_type": "code", - "execution_count": 81, - "id": "8c2ee21c", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "successor_map = {}\n", - "window = []\n", - "\n", - "for string in song.split():\n", - " word = string.strip(punctuation).lower()\n", - " process_word_trigram(word)" - ] - }, - { - "cell_type": "markdown", - "id": "8829d4c2", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "If your function works as intended, the predecessor `('half', 'a')` should map to a list with the single element `'bee'`.\n", - "In fact, as it happens, each bigram in this song appear only once, so all of the values in `successor_map` have a single element." - ] - }, - { - "cell_type": "code", - "execution_count": 82, - "id": "b13384e3", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "{('half', 'a'): ['bee'],\n", - " ('a', 'bee'): ['philosophically'],\n", - " ('bee', 'philosophically'): ['must'],\n", - " ('philosophically', 'must'): ['ipso'],\n", - " ('must', 'ipso'): ['facto'],\n", - " ('ipso', 'facto'): ['half'],\n", - " ('facto', 'half'): ['not'],\n", - " ('half', 'not'): ['be'],\n", - " ('not', 'be'): ['but'],\n", - " ('be', 'but'): ['half'],\n", - " ('but', 'half'): ['the'],\n", - " ('half', 'the'): ['bee'],\n", - " ('the', 'bee'): ['has'],\n", - " ('bee', 'has'): ['got'],\n", - " ('has', 'got'): ['to'],\n", - " ('got', 'to'): ['be'],\n", - " ('to', 'be'): ['vis'],\n", - " ('be', 'vis'): ['a'],\n", - " ('vis', 'a'): ['vis'],\n", - " ('a', 'vis'): ['its'],\n", - " ('vis', 'its'): ['entity'],\n", - " ('its', 'entity'): [\"d'you\"],\n", - " ('entity', \"d'you\"): ['see']}" - ] - }, - "execution_count": 82, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "successor_map" - ] - }, - { - "cell_type": "markdown", - "id": "886212b5", - "metadata": {}, - "source": [ - "You can use the following loop to test your function with the words from the book." - ] - }, - { - "cell_type": "code", - "execution_count": 83, - "id": "62c2177f", - "metadata": {}, - "outputs": [], - "source": [ - "successor_map = {}\n", - "window = []\n", - "\n", - "for line in open(filename):\n", - " for word in split_line(line):\n", - " word = clean_word(word)\n", - " process_word_trigram(word)" - ] - }, - { - "cell_type": "markdown", - "id": "3e1d073e", - "metadata": {}, - "source": [ - "In the next exercise, you'll use the results to generate new random text." - ] - }, - { - "cell_type": "markdown", - "id": "04d7a6ee", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "For this exercise, we'll assume that `successor_map` is a dictionary that maps from each bigram to the list of words that follow it." - ] - }, - { - "cell_type": "code", - "execution_count": 84, - "id": "64e11f26", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "# this cell initializes the random number generator so it \n", - "# starts at the same point in the sequence each time this\n", - "# notebook runs.\n", - "\n", - "random.seed(3)" - ] - }, - { - "cell_type": "markdown", - "id": "fb0f8f7d", - "metadata": {}, - "source": [ - "To generate random text, we'll start by choosing a random key from `successor_map`." - ] - }, - { - "cell_type": "code", - "execution_count": 85, - "id": "fe2d93fa", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "('doubted', 'if')" - ] - }, - "execution_count": 85, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "successors = list(successor_map)\n", - "bigram = random.choice(successors)\n", - "bigram" - ] - }, - { - "cell_type": "markdown", - "id": "83ed6c7e", - "metadata": {}, - "source": [ - "Now write a loop that generates 50 more words following these steps:\n", - "\n", - "1. In `successor_map`, look up the list of words that can follow `bigram`.\n", - "\n", - "2. Choose one of them at random and print it.\n", - "\n", - "3. For the next iteration, make a new bigram that contains the second word from `bigram` and the chosen successor.\n", - "\n", - "For example, if we start with the bigram `('doubted', 'if')` and choose `'from'` as its successor, the next bigram is `('if', 'from')`." - ] - }, - { - "cell_type": "code", - "execution_count": 86, - "id": "22210a5c", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "from that day forth utterson desired the society of his ape-like spite and indeed when the night was fully come he set it down to dinner why do you think before you answer for it god bless me the deadliest terror sits by me at the table and still he " - ] - } - ], - "source": [ - "# Solution\n", - "\n", - "for i in range(50):\n", - " successors = successor_map[bigram]\n", - " word = random.choice(successors) \n", - " print(word, end=' ')\n", - " \n", - " first, second = bigram\n", - " bigram = second, word" - ] - }, - { - "cell_type": "markdown", - "id": "c71d8a89", - "metadata": {}, - "source": [ - "If everything is working, you should find that the generated text is recognizably similar in style to the original, and some phrases make sense, but the text might wander from one topic to another.\n", - "\n", - "As a bonus exercise, modify your solution to the last two exercises to use trigrams as keys in `successor_map`, and see what effect it has on the results." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "3d4efda7", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "id": "a7f4edf8", - "metadata": { - "tags": [] - }, - "source": [ - "[Think Python: 3rd Edition](https://allendowney.github.io/ThinkPython/index.html)\n", - "\n", - "Copyright 2024 [Allen B. Downey](https://allendowney.com)\n", - "\n", - "Code license: [MIT License](https://mit-license.org/)\n", - "\n", - "Text license: [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-nc-sa/4.0/)" - ] - } - ], - "metadata": { - "celltoolbar": "Tags", - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.11" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/soln/chap13.ipynb b/soln/chap13.ipynb deleted file mode 100644 index b20b542..0000000 --- a/soln/chap13.ipynb +++ /dev/null @@ -1,2653 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "1331faa1", - "metadata": {}, - "source": [ - "You can order print and ebook versions of *Think Python 3e* from\n", - "[Bookshop.org](https://bookshop.org/a/98697/9781098155438) and\n", - "[Amazon](https://www.amazon.com/_/dp/1098155432?smid=ATVPDKIKX0DER&_encoding=UTF8&tag=oreilly20-20&_encoding=UTF8&tag=greenteapre01-20&linkCode=ur2&linkId=e2a529f94920295d27ec8a06e757dc7c&camp=1789&creative=9325)." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "31b6f97a", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "from os.path import basename, exists\n", - "\n", - "def download(url):\n", - " filename = basename(url)\n", - " if not exists(filename):\n", - " from urllib.request import urlretrieve\n", - "\n", - " local, _ = urlretrieve(url, filename)\n", - " print(\"Downloaded \" + str(local))\n", - " return filename\n", - "\n", - "download('https://github.com/AllenDowney/ThinkPython/raw/v3/thinkpython.py');\n", - "download('https://github.com/AllenDowney/ThinkPython/raw/v3/diagram.py');\n", - "\n", - "import thinkpython" - ] - }, - { - "cell_type": "markdown", - "id": "c3ee5c27", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "Credit: Photos downloaded from [Lorem Picsum](https://picsum.photos/), a service that provides placeholder images.\n", - "The name is a reference to \"lorem ipsum\", which is a name for placeholder text.\n" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "9b246dc6", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "# This cell downloads an archive file that contains the the files we'll\n", - "# use for the examples in this chapter.\n", - "\n", - "download('https://github.com/AllenDowney/ThinkPython/raw/v3/photos.zip');" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "23792899", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "# WARNING: This cell removes the photos/ directory if it already exists.\n", - "# Any files already in the photos/ directory will be deleted.\n", - "\n", - "# !rm -rf photos/" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "713dfeb0", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Archive: photos.zip\r\n", - " inflating: photos/notes.txt \r\n", - " inflating: photos/mar-2023/photo2.jpg \r\n", - " inflating: photos/mar-2023/photo1.jpg \r\n", - " inflating: photos/jan-2023/photo3.jpg \r\n", - " inflating: photos/jan-2023/photo2.jpg \r\n", - " inflating: photos/jan-2023/photo1.jpg \r\n", - " inflating: photos/feb-2023/photo2.jpg \r\n", - " inflating: photos/feb-2023/photo1.jpg \r\n" - ] - } - ], - "source": [ - "!unzip -o photos.zip" - ] - }, - { - "cell_type": "markdown", - "id": "92934cb0", - "metadata": {}, - "source": [ - "# Files and Databases\n", - "\n", - "Most of the programs we have seen so far are **ephemeral** in the sense that they run for a short time and produce output, but when they end, their data disappears.\n", - "Each time you run an ephemeral program, it starts with a clean slate.\n", - "\n", - "Other programs are **persistent**: they run for a long time (or all the time); they keep at least some of their data in long-term storage; and if they shut down and restart, they pick up where they left off.\n", - "\n", - "A simple way for programs to maintain their data is by reading and writing text files.\n", - "A more versatile alternative is to store data in a database.\n", - "Databases are specialized files that can be read and written more efficiently than text files, and they provide additional capabilities.\n", - "\n", - "In this chapter, we'll write programs that read and write text files and databases, and as an exercise you'll write a program that searches a collection of photos for duplicates.\n", - "But before you can work with a file, you have to find it, so we'll start with file names, paths, and directories." - ] - }, - { - "cell_type": "markdown", - "id": "75cec7ca", - "metadata": {}, - "source": [ - "## Filenames and paths\n", - "\n", - "Files are organized into **directories**, also called \"folders\".\n", - "Every running program has a **current working directory**, which is the default directory for most operations.\n", - "For example, when you open a file, Python looks for it in the current working directory.\n", - "\n", - "The `os` module provides functions for working with files and directories (\"os\" stands for \"operating system\"). \n", - "It provides a function called `getcwd` that gets the name of the current working directory." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "4fdb528a", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "# this cell replaces `os.cwd` with a function that returns a fake path\n", - "\n", - "import os\n", - "\n", - "def getcwd():\n", - " return \"/home/dinsdale\"\n", - "\n", - "os.getcwd = getcwd" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "c7b209f6", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'/home/dinsdale'" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "import os\n", - "\n", - "os.getcwd()" - ] - }, - { - "cell_type": "markdown", - "id": "6c55575f", - "metadata": {}, - "source": [ - "The result in this example is the home directory of a user named `dinsdale`.\n", - "A string like `'/home/dinsdale'` that identifies a file or directory is called a **path**.\n", - "\n", - "A simple filename like `'memo.txt'` is also considered a path, but it is a **relative path** because it specifies a file name relative to the current directory.\n", - "In this example, the current directory is `/home/dinsdale`, so `'memo.txt'` is equivalent to the complete path `'/home/dinsdale/memo.txt'`.\n", - "\n", - "A path that begins with `/` does not depend on the current directory -- it is called an **absolute path**. \n", - "To find the absolute path to a file, you can use `abspath`." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "66a15e44", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'/home/dinsdale/memo.txt'" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "os.path.abspath('memo.txt')" - ] - }, - { - "cell_type": "markdown", - "id": "f1a0cf04", - "metadata": {}, - "source": [ - "The `os` module provides other functions for working with filenames and paths.\n", - "`listdir` returns a list of the contents of the given directory, including files and other directories.\n", - "Here's an example that lists the contents of a directory named `photos`." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "a22d2675", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['digests.dat',\n", - " 'digests.dir',\n", - " 'notes.txt',\n", - " 'new_notes.txt',\n", - " 'mar-2023',\n", - " 'digests.bak',\n", - " 'jan-2023',\n", - " 'feb-2023']" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "os.listdir('photos')" - ] - }, - { - "cell_type": "markdown", - "id": "ab160f29", - "metadata": {}, - "source": [ - "This directory contains a text file named `notes.txt` and three directories.\n", - "The directories contain image files in the JPEG format." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "a217eac7", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['photo3.jpg', 'photo2.jpg', 'photo1.jpg']" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "os.listdir('photos/jan-2023')" - ] - }, - { - "cell_type": "markdown", - "id": "06b27c85", - "metadata": {}, - "source": [ - "To check whether a file or directory exists, we can use `os.path.exists`." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "aa56aeac", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "os.path.exists('photos')" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "9049009a", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "os.path.exists('photos/apr-2023')" - ] - }, - { - "cell_type": "markdown", - "id": "d41f235c", - "metadata": {}, - "source": [ - "To check whether a path refers to a file or directory, we can use `isdir`, which return `True` if a path refers to a directory." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "0feddb06", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "os.path.isdir('photos')" - ] - }, - { - "cell_type": "markdown", - "id": "4bd70cc9", - "metadata": {}, - "source": [ - "And `isfile` which returns `True` if a path refers to a file." - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "e9f6a762", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "os.path.isfile('photos/notes.txt')" - ] - }, - { - "cell_type": "markdown", - "id": "c6933c18", - "metadata": {}, - "source": [ - "One challenge of working with paths is that they look different on different operating systems.\n", - "On macOS and UNIX systems like Linux, the directory and file names in a path are separated by a forward slash, `/`.\n", - "Windows uses a backward slash, `\\`.\n", - "So, if you you run these examples on Windows, you will see backward slashes in the paths, and you'll have to replace the forward slashes in the examples.\n", - "\n", - "Or, to write code that works on both systems, you can use `os.path.join`, which joins directory and filenames into a path using a forward or backward slash, depending on which operating system you are using." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "eb738376", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'photos/jan-2023/photo1.jpg'" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "os.path.join('photos', 'jan-2023', 'photo1.jpg')" - ] - }, - { - "cell_type": "markdown", - "id": "0a665cf9", - "metadata": {}, - "source": [ - "Later in this chapter we'll use these functions to search a set of directories and find all of the image files." - ] - }, - { - "cell_type": "markdown", - "id": "31a96ba4", - "metadata": {}, - "source": [ - "## f-strings\n", - "\n", - "One way for programs to store data is to write it to a text file.\n", - "For example, suppose you are a camel spotter, and you want to record the number of camels you have seen during a period of observation.\n", - "And suppose that in one and a half years, you have spotted `23` camels.\n", - "The data in your camel-spotting book might look like this." - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "23e7a6a4", - "metadata": {}, - "outputs": [], - "source": [ - "num_years = 1.5\n", - "num_camels = 23" - ] - }, - { - "cell_type": "markdown", - "id": "f652aaac", - "metadata": {}, - "source": [ - "To write this data to a file, you can use the `write` method, which we saw in Chapter 8.\n", - "The argument of `write` has to be a string, so if we want to put other values in a file, we have to convert them to strings.\n", - "The easiest way to do that is with the built-in function `str`.\n", - "\n", - "Here's what that looks like:" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "174d4f83", - "metadata": {}, - "outputs": [], - "source": [ - "writer = open('camel-spotting-book.txt', 'w')\n", - "writer.write(str(num_years))\n", - "writer.write(str(num_camels))\n", - "writer.close()" - ] - }, - { - "cell_type": "markdown", - "id": "307c22d2", - "metadata": {}, - "source": [ - "That works, but `write` doesn't add a space or newline unless you include it explicitly.\n", - "If we read back the file, we see that the two numbers are run together." - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "5209eda3", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'1.523'" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "open('camel-spotting-book.txt').read()" - ] - }, - { - "cell_type": "markdown", - "id": "8008ecdc", - "metadata": {}, - "source": [ - "At the very least, we should add whitespace between the numbers.\n", - "And while we're at it, let's add some explanatory text.\n", - "\n", - "To write a combination of strings and other values, we can use an **f-string**, which is a string that has the letter `f` before the opening quotation mark, and contains one or more Python expressions in curly braces.\n", - "The following f-string contains one expression, which is a variable name." - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "0f202d66", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'I have spotted 23 camels'" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "f'I have spotted {num_camels} camels'" - ] - }, - { - "cell_type": "markdown", - "id": "a3fb0556", - "metadata": {}, - "source": [ - "The result is a string where the expression has been evaluated and replaced with the result.\n", - "There can be more than one expression." - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "33c5f77f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'In 1.5 years I have spotted 23 camels'" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "f'In {num_years} years I have spotted {num_camels} camels'" - ] - }, - { - "cell_type": "markdown", - "id": "bace1539", - "metadata": {}, - "source": [ - "And the expressions can contain operators and function calls." - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "1fe7111c", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'In 18 months I have spotted 23 camels'" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "line = f'In {round(num_years * 12)} months I have spotted {num_camels} camels'\n", - "line" - ] - }, - { - "cell_type": "markdown", - "id": "bc6fa094", - "metadata": {}, - "source": [ - "So we could write the data to a text file like this." - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "bc06e90a", - "metadata": {}, - "outputs": [], - "source": [ - "writer = open('camel-spotting-book.txt', 'w')\n", - "writer.write(f'Years of observation: {num_years}\\n')\n", - "writer.write(f'Camels spotted: {num_camels}\\n')\n", - "writer.close()" - ] - }, - { - "cell_type": "markdown", - "id": "f916d561", - "metadata": {}, - "source": [ - "Both f-strings end with the sequence `\\n`, which adds a newline character.\n", - "\n", - "We can read the file back like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "8d9eaf8d", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Years of observation: 1.5\n", - "Camels spotted: 23\n", - "\n" - ] - } - ], - "source": [ - "data = open('camel-spotting-book.txt').read()\n", - "print(data)" - ] - }, - { - "cell_type": "markdown", - "id": "c3bf6913", - "metadata": {}, - "source": [ - "In an f-string, an expression in curly brace is converted to a string, so you can include lists, dictionaries, and other types." - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "ae3060c1", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "\"Here is a list [1, 2, 3] and a dictionary {'one': 1}\"" - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "t = [1, 2, 3]\n", - "d = {'one': 1}\n", - "f'Here is a list {t} and a dictionary {d}'" - ] - }, - { - "cell_type": "markdown", - "id": "838ef132", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "If a f-string contains an invalid expression, the result is an error." - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "26ca3d1b", - "metadata": { - "tags": [ - "remove-cell", - "raises-exception" - ] - }, - "outputs": [ - { - "ename": "TypeError", - "evalue": "can only concatenate list (not \"int\") to list", - "output_type": "error", - "traceback": [ - "\u001b[0;31mTypeError\u001b[0m\u001b[0;31m:\u001b[0m can only concatenate list (not \"int\") to list\n" - ] - } - ], - "source": [ - "%%expect TypeError\n", - "\n", - "f'This is not a valid expression {t + 2}'" - ] - }, - { - "cell_type": "markdown", - "id": "cbbaaed3", - "metadata": {}, - "source": [ - "## YAML\n", - "\n", - "One of the reasons programs read and write files is to store **configuration data**, which is information that specifies what the program should do and how.\n", - "\n", - "For example, in a program that searches for duplicate photos, we might have a dictionary called `config` that contains the name of the directory to search, the name of another directory where it should store the results, and a list of file extensions it should use to identify image files.\n", - "\n", - "Here's what it might look like:" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "5bb69e1a", - "metadata": {}, - "outputs": [], - "source": [ - "config = {\n", - " 'photo_dir': 'photos',\n", - " 'data_dir': 'photo_info',\n", - " 'extensions': ['jpg', 'jpeg'],\n", - "}" - ] - }, - { - "cell_type": "markdown", - "id": "1667bb96", - "metadata": {}, - "source": [ - "To write this data in a text file, we could use f-strings, as in the previous section. But it is easier to use a module called `yaml` that is designed for just this sort of thing.\n", - "\n", - "The `yaml` module provides functions to work with YAML files, which are text files formatted to be easy for humans *and* programs to read and write.\n", - "\n", - "Here's an example that uses the `dump` function to write the `config` dictionary to a YAML file. " - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "0090a29f", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "# this cell installs the pyyaml package, which provides the yaml module\n", - "\n", - "try:\n", - " import yaml\n", - "except ImportError:\n", - " !pip install pyyaml" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "97079479", - "metadata": {}, - "outputs": [], - "source": [ - "import yaml\n", - "\n", - "config_filename = 'config.yaml'\n", - "writer = open(config_filename, 'w')\n", - "yaml.dump(config, writer)\n", - "writer.close()" - ] - }, - { - "cell_type": "markdown", - "id": "92d1b7ff", - "metadata": {}, - "source": [ - "If we read back the contents of the file, we can see what the YAML format looks like." - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "8646dd2f", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "data_dir: photo_info\n", - "extensions:\n", - "- jpg\n", - "- jpeg\n", - "photo_dir: photos\n", - "\n" - ] - } - ], - "source": [ - "readback = open(config_filename).read()\n", - "print(readback)" - ] - }, - { - "cell_type": "markdown", - "id": "33cdfd2c", - "metadata": {}, - "source": [ - "Now, we can use `safe_load` to read back the YAML file." - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "e8ce2e4f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'data_dir': 'photo_info',\n", - " 'extensions': ['jpg', 'jpeg'],\n", - " 'photo_dir': 'photos'}" - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "reader = open(config_filename)\n", - "config_readback = yaml.safe_load(reader)\n", - "config_readback" - ] - }, - { - "cell_type": "markdown", - "id": "ca55764f", - "metadata": {}, - "source": [ - "The result is new dictionary that contains the same information as the original, but it is not the same dictionary." - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "id": "871d6ad5", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 30, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "config is config_readback" - ] - }, - { - "cell_type": "markdown", - "id": "969ad306", - "metadata": {}, - "source": [ - "Converting an object like a dictionary to a string is called **serialization**.\n", - "Converting the string back to an object is called **deserialization**.\n", - "If you serialize and then deserialize an object, the result should be equivalent to the original." - ] - }, - { - "cell_type": "markdown", - "id": "5e130cf8", - "metadata": {}, - "source": [ - "## Shelve\n", - "\n", - "So far we've been reading and writing text files -- now let's consider databases.\n", - "A **database** is a file that is organized for storing data.\n", - "Some databases are organized like a table with rows and columns of information.\n", - "Others are organized like a dictionary that maps from keys to values; they are sometimes called **key-value stores**.\n", - "\n", - "The `shelve` module provides functions for creating and updating a key-value store called a \"shelf\".\n", - "As an example, we'll create a shelf to contain captions for the figures in the `photos` directory.\n", - "We'll use the `config` dictionary to get the name of the directory where we should put the shelf." - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "id": "70a6d625", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'photo_info'" - ] - }, - "execution_count": 31, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "config['data_dir']" - ] - }, - { - "cell_type": "markdown", - "id": "3e6cfb65", - "metadata": {}, - "source": [ - "We can use `os.makedirs` to create this directory, if it doesn't already exist." - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "id": "fd070fa7", - "metadata": {}, - "outputs": [], - "source": [ - "os.makedirs(config['data_dir'], exist_ok=True)" - ] - }, - { - "cell_type": "markdown", - "id": "6352f83f", - "metadata": {}, - "source": [ - "And `os.path.join` to make a path that includes the name of the directory and the name of the shelf file, `captions`." - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "id": "f5aeb7ab", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'photo_info/captions'" - ] - }, - "execution_count": 33, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "db_file = os.path.join(config['data_dir'], 'captions')\n", - "db_file" - ] - }, - { - "cell_type": "markdown", - "id": "cbb08679", - "metadata": {}, - "source": [ - "Now we can use `shelve.open` to open the shelf file.\n", - "The argument `c` indicates that the file should be created if necessary." - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "id": "291ea875", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 34, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "import shelve\n", - "\n", - "db = shelve.open(db_file, 'c')\n", - "db" - ] - }, - { - "cell_type": "markdown", - "id": "0e4a2fb3", - "metadata": {}, - "source": [ - "The return value is officially a `DbfilenameShelf` object, more casually called a shelf object.\n", - "\n", - "The shelf object behaves in many ways like a dictionary.\n", - "For example, we can use the bracket operator to add an item, which is a mapping from a key to a value." - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "id": "b3f6d6ce", - "metadata": {}, - "outputs": [], - "source": [ - "key = 'jan-2023/photo1.jpg' \n", - "db[key] = 'Cat nose'" - ] - }, - { - "cell_type": "markdown", - "id": "36fd5e3a", - "metadata": {}, - "source": [ - "In this example, the key is the path to an image file and the value is a string that describes the image.\n", - "\n", - "We also use the bracket operator to look up a key and get the corresponding value." - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "id": "d4e06b19", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'Cat nose'" - ] - }, - "execution_count": 36, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "value = db[key]\n", - "value" - ] - }, - { - "cell_type": "markdown", - "id": "e9b252a7", - "metadata": {}, - "source": [ - "If you make another assignment to an existing key, `shelve` replaces the old value." - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "id": "89a0936c", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'Close up view of a cat nose'" - ] - }, - "execution_count": 37, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "db[key] = 'Close up view of a cat nose'\n", - "db[key]" - ] - }, - { - "cell_type": "markdown", - "id": "003eacbc", - "metadata": {}, - "source": [ - "Some dictionary methods, like `keys`, `values` and `items`, also work with shelf objects." - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "id": "7d0c4cff", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['jan-2023/photo1.jpg']" - ] - }, - "execution_count": 38, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "list(db.keys())" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "id": "a9db327d", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['Close up view of a cat nose']" - ] - }, - "execution_count": 39, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "list(db.values())" - ] - }, - { - "cell_type": "markdown", - "id": "056e0bd9", - "metadata": {}, - "source": [ - "We can use the `in` operator to check whether a key appears in the shelf." - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "id": "cc81ed95", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 40, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "key in db" - ] - }, - { - "cell_type": "markdown", - "id": "982740b4", - "metadata": {}, - "source": [ - "And we can use a `for` statement to loop through the keys." - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "id": "68ff774e", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "jan-2023/photo1.jpg : Close up view of a cat nose\n" - ] - } - ], - "source": [ - "for key in db:\n", - " print(key, ':', db[key])" - ] - }, - { - "cell_type": "markdown", - "id": "b67a0ddc", - "metadata": {}, - "source": [ - "As with other files, you should close the database when you are done." - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "id": "2b411885", - "metadata": {}, - "outputs": [], - "source": [ - "db.close()" - ] - }, - { - "cell_type": "markdown", - "id": "a1e08b41", - "metadata": {}, - "source": [ - "Now if we list the contents of the data directory, we see two files." - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "id": "4806720c", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "# When you open a shelve file, a backup file is created that has the suffix `.bak`.\n", - "# If you run this notebook more than once, you might see that file left behind.\n", - "# This cell removes it so the output shown in the book is correct.\n", - "\n", - "!rm -f photo_info/captions.bak" - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "id": "59eb2dde", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['captions.dir', 'captions.dat']" - ] - }, - "execution_count": 44, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "os.listdir(config['data_dir'])" - ] - }, - { - "cell_type": "markdown", - "id": "97453006", - "metadata": {}, - "source": [ - "`captions.dat` contains the data we just stored.\n", - "`captions.dir` contains information about the organization of the database that makes it more efficient to access.\n", - "The suffix `dir` stands for \"directory\", but it has nothing to do with the directories we've been working with that contain files." - ] - }, - { - "cell_type": "markdown", - "id": "0033e4f5", - "metadata": { - "tags": [ - "section_storing_data_structure" - ] - }, - "source": [ - "## Storing data structures\n", - "\n", - "In the previous example, the keys and values in the shelf are strings.\n", - "But we can also use a shelf to contain data structures like lists and dictionaries.\n", - "\n", - "As an example, let's revisit the anagram example from an exercise in [Chapter 11](section_exercise_11).\n", - "Recall that we made a dictionary that maps from a sorted string of letters to the\n", - "list of words that can be spelled with those letters.\n", - "For example, the key `'opst'` maps to the list `['opts', 'post', 'pots', 'spot', 'stop', 'tops']`.\n", - "\n", - "We'll use the following function to sort the letters in a word." - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "id": "8819b211", - "metadata": {}, - "outputs": [], - "source": [ - "def sort_word(word):\n", - " return ''.join(sorted(word))" - ] - }, - { - "cell_type": "markdown", - "id": "8c24316c", - "metadata": {}, - "source": [ - "And here's an example." - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "id": "fc8f1434", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'opst'" - ] - }, - "execution_count": 46, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "word = 'pots'\n", - "key = sort_word(word)\n", - "key" - ] - }, - { - "cell_type": "markdown", - "id": "7c5d7555", - "metadata": {}, - "source": [ - "Now let's open a shelf called `anagram_map`.\n", - "The argument `'n'` means we should always create a new, empty shelf, even if one already exists." - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "id": "f2f17f05", - "metadata": {}, - "outputs": [], - "source": [ - "db = shelve.open('anagram_map', 'n')" - ] - }, - { - "cell_type": "markdown", - "id": "6b495e79", - "metadata": {}, - "source": [ - "Now we can add an item to the shelf like this." - ] - }, - { - "cell_type": "code", - "execution_count": 48, - "id": "b918dcfe", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['pots']" - ] - }, - "execution_count": 48, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "db[key] = [word]\n", - "db[key]" - ] - }, - { - "cell_type": "markdown", - "id": "f058dff1", - "metadata": {}, - "source": [ - "In this item, the key is a string and the value is a list of strings.\n", - "\n", - "Now suppose we find another word that contains the same letters, like `tops`" - ] - }, - { - "cell_type": "code", - "execution_count": 49, - "id": "e0d728e6", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'opst'" - ] - }, - "execution_count": 49, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "word = 'tops'\n", - "key = sort_word(word)\n", - "key" - ] - }, - { - "cell_type": "markdown", - "id": "a215367d", - "metadata": {}, - "source": [ - "The key is the same as in the previous example, so we want to append a second word to the same list of strings.\n", - "Here's how we would do it if `db` were a dictionary." - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "id": "12e39086", - "metadata": {}, - "outputs": [], - "source": [ - "db[key].append(word) # INCORRECT" - ] - }, - { - "cell_type": "markdown", - "id": "e1a83f39", - "metadata": {}, - "source": [ - "But if we run that and then look up the key in the shelf, it looks like it has not been updated." - ] - }, - { - "cell_type": "code", - "execution_count": 51, - "id": "b0dc42e0", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['pots']" - ] - }, - "execution_count": 51, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "db[key]" - ] - }, - { - "cell_type": "markdown", - "id": "32a56de9", - "metadata": {}, - "source": [ - "Here's the problem: when we look up the key, we get a list of strings, but if we modify the list of strings, it does not affect the shelf.\n", - "If we want to update the shelf, we have to read the old value, update it, and then write the new value back to the shelf." - ] - }, - { - "cell_type": "code", - "execution_count": 52, - "id": "b4105610", - "metadata": {}, - "outputs": [], - "source": [ - "anagram_list = db[key]\n", - "anagram_list.append(word)\n", - "db[key] = anagram_list" - ] - }, - { - "cell_type": "markdown", - "id": "a054f537", - "metadata": {}, - "source": [ - "Now the value in the shelf is updated." - ] - }, - { - "cell_type": "code", - "execution_count": 53, - "id": "4f737cd9", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['pots', 'tops']" - ] - }, - "execution_count": 53, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "db[key]" - ] - }, - { - "cell_type": "markdown", - "id": "ca02c0d7", - "metadata": {}, - "source": [ - "As an exercise, you can finish this example by reading the word list and storing all of the anagrams in a shelf." - ] - }, - { - "cell_type": "code", - "execution_count": 54, - "id": "5395780f", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "db.close()" - ] - }, - { - "cell_type": "markdown", - "id": "b1336e56", - "metadata": { - "tags": [ - "section_md5_digest" - ] - }, - "source": [ - "## Checking for equivalent files\n", - "\n", - "Now let's get back to the goal of this chapter: searching for different files that contain the same data.\n", - "One way to check is to read the contents of both files and compare.\n", - "\n", - "If the files contain images, we have to open them with mode `'rb'`, where `'r'` means we want to read the contents and `'b'` indicates **binary mode**.\n", - "In binary mode, the contents are not interpreted as text -- they are treated as a sequence of bytes.\n", - "\n", - "Here's an example that opens and reads an image file." - ] - }, - { - "cell_type": "code", - "execution_count": 55, - "id": "a3104fc7", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "bytes" - ] - }, - "execution_count": 55, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "path1 = 'photos/jan-2023/photo1.jpg'\n", - "data1 = open(path1, 'rb').read()\n", - "type(data1)" - ] - }, - { - "cell_type": "markdown", - "id": "36687da2", - "metadata": {}, - "source": [ - "The result from `read` is a `bytes` object -- as the name suggests, it contains a sequence of bytes.\n", - "\n", - "In general the contents of an image file and not human-readable.\n", - "But if we read the contents from a second file, we can use the `==` operator to compare." - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "id": "fd6dd21d", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 56, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "path2 = 'photos/jan-2023/photo2.jpg'\n", - "data2 = open(path2, 'rb').read()\n", - "data1 == data2" - ] - }, - { - "cell_type": "markdown", - "id": "36006cd4", - "metadata": {}, - "source": [ - "These two files are not equivalent.\n", - "\n", - "Let's encapsulate what we have so far in a function." - ] - }, - { - "cell_type": "code", - "execution_count": 57, - "id": "b1c8643c", - "metadata": {}, - "outputs": [], - "source": [ - "def same_contents(path1, path2):\n", - " data1 = open(path1, 'rb').read()\n", - " data2 = open(path2, 'rb').read()\n", - " return data1 == data2" - ] - }, - { - "cell_type": "markdown", - "id": "b4e08850", - "metadata": {}, - "source": [ - "If we have only two files, this function is a good option.\n", - "But suppose we have a large number of files and we want to know whether any two of them contain the same data.\n", - "It would be inefficient to compare every pair of files.\n", - "\n", - "An alternative is to use a **hash function**, which takes the contents of a file and computes a **digest**, which is usually a large integer.\n", - "If two files contain the same data, they will have the same digest.\n", - "If two files differ, they will *almost always* have different digests.\n", - "\n", - "The `hashlib` module provides several hash functions -- the one we'll use is called `md5`.\n", - "We'll start by using `hashlib.md5` to create a `HASH` object." - ] - }, - { - "cell_type": "code", - "execution_count": 58, - "id": "c03198fc", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "_hashlib.HASH" - ] - }, - "execution_count": 58, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "import hashlib\n", - "\n", - "md5_hash = hashlib.md5()\n", - "type(md5_hash)" - ] - }, - { - "cell_type": "markdown", - "id": "a8e480f0", - "metadata": {}, - "source": [ - "The `HASH` object provides an `update` method that takes the contents of the file as an argument." - ] - }, - { - "cell_type": "code", - "execution_count": 59, - "id": "1567ec9e", - "metadata": {}, - "outputs": [], - "source": [ - "md5_hash.update(data1)" - ] - }, - { - "cell_type": "markdown", - "id": "86bd6bc0", - "metadata": {}, - "source": [ - "Now we can use `hexdigest` to get the digest as a string of hexadecimal digits that represent an integer in base 16." - ] - }, - { - "cell_type": "code", - "execution_count": 60, - "id": "b2e61e76", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'aa1d2fc25b7ae247b2931f5a0882fa37'" - ] - }, - "execution_count": 60, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "digest = md5_hash.hexdigest()\n", - "digest" - ] - }, - { - "cell_type": "markdown", - "id": "b9b4b347", - "metadata": {}, - "source": [ - "The following function encapsulates these steps." - ] - }, - { - "cell_type": "code", - "execution_count": 61, - "id": "330def4e", - "metadata": {}, - "outputs": [], - "source": [ - "def md5_digest(filename):\n", - " data = open(filename, 'rb').read()\n", - " md5_hash = hashlib.md5()\n", - " md5_hash.update(data)\n", - " digest = md5_hash.hexdigest()\n", - " return digest" - ] - }, - { - "cell_type": "markdown", - "id": "914b85b2", - "metadata": {}, - "source": [ - "If we hash the contents of a different file, we can confirm that we get a different digest." - ] - }, - { - "cell_type": "code", - "execution_count": 62, - "id": "eae2d207", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'6a501b11b01f89af9c3f6591d7f02c49'" - ] - }, - "execution_count": 62, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "filename2 = 'photos/feb-2023/photo2.jpg'\n", - "md5_digest(filename2)" - ] - }, - { - "cell_type": "markdown", - "id": "deeabdde", - "metadata": {}, - "source": [ - "Now we have almost everything we need to find equivalent files.\n", - "The last step is to search a directory and find all of the images files." - ] - }, - { - "cell_type": "markdown", - "id": "129475df", - "metadata": { - "tags": [ - "section_walking_directories" - ] - }, - "source": [ - "## Walking directories\n", - "\n", - "The following function takes as an argument the directory we want to search.\n", - "It uses `listdir` to loop through the contents of the directory.\n", - "When it finds a file, it prints its complete path.\n", - "When it finds a directory, it calls itself recursively to search the subdirectory." - ] - }, - { - "cell_type": "code", - "execution_count": 63, - "id": "c84a64db", - "metadata": {}, - "outputs": [], - "source": [ - "def walk(dirname):\n", - " for name in os.listdir(dirname):\n", - " path = os.path.join(dirname, name)\n", - "\n", - " if os.path.isfile(path):\n", - " print(path)\n", - " elif os.path.isdir(path):\n", - " walk(path)" - ] - }, - { - "cell_type": "markdown", - "id": "faaf5b25", - "metadata": {}, - "source": [ - "We can use it like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 64, - "id": "f1c60f6b", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "photos/digests.dat\n", - "photos/digests.dir\n", - "photos/notes.txt\n", - "photos/new_notes.txt\n", - "photos/mar-2023/photo2.jpg\n", - "photos/mar-2023/photo1.jpg\n", - "photos/digests.bak\n", - "photos/jan-2023/photo3.jpg\n", - "photos/jan-2023/photo2.jpg\n", - "photos/jan-2023/photo1.jpg\n", - "photos/feb-2023/photo2.jpg\n", - "photos/feb-2023/photo1.jpg\n" - ] - } - ], - "source": [ - "walk('photos')" - ] - }, - { - "cell_type": "markdown", - "id": "897c66bf", - "metadata": {}, - "source": [ - "The order of the results depends on details of the operating system." - ] - }, - { - "cell_type": "markdown", - "id": "c7853f18", - "metadata": {}, - "source": [ - "## Debugging\n", - "\n", - "When you are reading and writing files, you might run into problems with whitespace.\n", - "These errors can be hard to debug because whitespace characters are normally invisible.\n", - "For example, here's a string that contains spaces, a tab represented by the sequence `\\t`, and a newline represented by the sequence `\\n`.\n", - "When we print it, we don't see the whitespace characters." - ] - }, - { - "cell_type": "code", - "execution_count": 65, - "id": "15d7425a", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1 2\t 3\n", - " 4\n" - ] - } - ], - "source": [ - "s = '1 2\\t 3\\n 4'\n", - "print(s)" - ] - }, - { - "cell_type": "markdown", - "id": "49bbebe6", - "metadata": {}, - "source": [ - "The built-in function `repr` can help. It takes any object as an argument and returns a string representation of the object.\n", - "For strings, it represents whitespace characters with backslash sequences." - ] - }, - { - "cell_type": "code", - "execution_count": 66, - "id": "61feff85", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "'1 2\\t 3\\n 4'\n" - ] - } - ], - "source": [ - "print(repr(s))" - ] - }, - { - "cell_type": "markdown", - "id": "790cf8dd", - "metadata": {}, - "source": [ - "This can be helpful for debugging.\n", - "\n", - "One other problem you might run into is that different systems use different characters to indicate the end of a line. Some systems use a newline, represented `\\n`. Others use a return character, represented `\\r`. \n", - "Some use both. If you move files between different systems, these\n", - "inconsistencies can cause problems.\n", - "\n", - "File name capitalization is another issue you might encounter if you work with different operating systems.\n", - "In macOS and UNIX, file names can contain lowercase and uppercase letters, digits, and most symbols.\n", - "But many Windows applications ignore the difference between lowercase and uppercase letters, and several symbols that are allowed in macOS and UNIX are not allowed in Windows." - ] - }, - { - "cell_type": "markdown", - "id": "cf063639", - "metadata": {}, - "source": [ - "## Glossary\n", - "\n", - "**ephemeral:**\n", - "An ephemeral program typically runs for a short time and, when it ends, its data are lost.\n", - "\n", - "**persistent:**\n", - " A persistent program runs indefinitely and keeps at least some of its data in permanent storage.\n", - "\n", - "**directory:**\n", - "A collection of files and other directories.\n", - "\n", - "**current working directory:**\n", - "The default directory used by a program unless another directory is specified.\n", - "\n", - "**path:**\n", - " A string that specifies a sequence of directories, often leading to a file.\n", - "\n", - "**relative path:**\n", - "A path that starts from the current working directory, or some other specified directory.\n", - "\n", - "**absolute path:**\n", - "A path that does not depend on the current directory.\n", - "\n", - "**f-string:**\n", - "A string that has the letter `f` before the opening quotation mark, and contains one or more expressions in curly braces.\n", - "\n", - "**configuration data:**\n", - "Data, often stored in a file, that specifies what a program should do and how.\n", - "\n", - "**serialization:**\n", - "Converting an object to a string.\n", - "\n", - "**deserialization:**\n", - "Converting a string to an object.\n", - "\n", - "**database:**\n", - " A file whose contents are organized to perform certain operations efficiently.\n", - "\n", - "**key-value stores:**\n", - "A database whose contents are organized like a dictionary with keys that correspond to values.\n", - "\n", - "**binary mode:**\n", - "A way of opening a file so the contents are interpreted as sequence of bytes rather than a sequence of characters.\n", - "\n", - "**hash function:**\n", - "A function that takes and object and computes an integer, which is sometimes called a digest.\n", - "\n", - "**digest:**\n", - "The result of a hash function, especially when it is used to check whether two objects are the same." - ] - }, - { - "cell_type": "markdown", - "id": "67941fdd", - "metadata": {}, - "source": [ - "## Exercises" - ] - }, - { - "cell_type": "code", - "execution_count": 67, - "id": "bd885ba1", - "metadata": { - "tags": [ - "remove-print" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Exception reporting mode: Verbose\n" - ] - } - ], - "source": [ - "# This cell tells Jupyter to provide detailed debugging information\n", - "# when a runtime error occurs. Run it before working on the exercises.\n", - "\n", - "%xmode Verbose" - ] - }, - { - "cell_type": "markdown", - "id": "9a537173", - "metadata": {}, - "source": [ - "### Ask a virtual assistant\n", - "\n", - "There are several topics that came up in this chapter that I did not explain in detail.\n", - "Here are some questions you can ask a virtual assistant to get more information. \n", - "\n", - "* \"What are the differences between ephemeral and persistent programs?\"\n", - "\n", - "* \"What are some examples of persistent programs?\"\n", - "\n", - "* \"What's the difference between a relative path and an absolute path?\"\n", - "\n", - "* \"Why does the `yaml` module have functions called `load` and `safe_load`?\"\n", - "\n", - "* \"When I write a Python shelf, what are the files with suffixes `dat` and `dir`?\"\n", - "\n", - "* \"Other than key-values stores, what other kinds of databases are there?\"\n", - "\n", - "* \"When I read a file, what's the difference between binary mode and text mode?\"\n", - "\n", - "* \"What are the differences between a bytes object and a string?\"\n", - "\n", - "* \"What is a hash function?\"\n", - "\n", - "* \"What is an MD5 digest?\"\n", - "\n", - "As always, if you get stuck on any of the following exercises, consider asking a VA for help. Along with your question, you might want to paste in the relevant functions from this chapter." - ] - }, - { - "cell_type": "markdown", - "id": "7586e1e9", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "Write a function called `replace_all` that takes as arguments a pattern string, a replacement string, and two filenames.\n", - "It should read the first file and write the contents into the second file (creating it if necessary).\n", - "If the pattern string appears anywhere in the contents, it should be replaced with the replacement string." - ] - }, - { - "cell_type": "markdown", - "id": "85844afb", - "metadata": {}, - "source": [ - "Here's an outline of the function to get you started." - ] - }, - { - "cell_type": "code", - "execution_count": 68, - "id": "1e598e70", - "metadata": {}, - "outputs": [], - "source": [ - "def replace_all(old, new, source_path, dest_path):\n", - " # read the contents of the source file\n", - " reader = open(source_path)\n", - "\n", - " # replace the old string with the new\n", - " \n", - " # write the result into the destination file\n", - " " - ] - }, - { - "cell_type": "code", - "execution_count": 69, - "id": "d3774d1a", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def replace_all(old, new, source_path, dest_path):\n", - " reader = open(source_path)\n", - " contents = reader.read()\n", - " reader.close()\n", - " \n", - " contents = contents.replace(old, new)\n", - " \n", - " writer = open(dest_path, 'w')\n", - " writer.write(contents)\n", - " writer.close()" - ] - }, - { - "cell_type": "markdown", - "id": "7f37245c", - "metadata": {}, - "source": [ - "To test your function, read the file `photos/notes.txt`, replace `'photos'` with `'images'`, and write the result to the file `photos/new_notes.txt`." - ] - }, - { - "cell_type": "code", - "execution_count": 70, - "id": "3b80dfd8", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "'These photos are from Lorem Picsum at https://picsum.photos\\n'" - ] - }, - "execution_count": 70, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "source_path = 'photos/notes.txt'\n", - "open(source_path).read()" - ] - }, - { - "cell_type": "code", - "execution_count": 71, - "id": "4b67579f", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "dest_path = 'photos/new_notes.txt'\n", - "old = 'photos'\n", - "new = 'images'\n", - "replace_all(old, new, source_path, dest_path)" - ] - }, - { - "cell_type": "code", - "execution_count": 72, - "id": "1d990225", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "'These images are from Lorem Picsum at https://picsum.images\\n'" - ] - }, - "execution_count": 72, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "open(dest_path).read()" - ] - }, - { - "cell_type": "markdown", - "id": "7b2589a4", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "In [a previous section](section_storing_data_structure), we used the `shelve` module to make a key-value store that maps from a sorted string of letters to a list of anagrams.\n", - "To finish the example, write a function called `add_word` that takes as arguments a string and a shelf object.\n", - "\n", - "It should sort the letters of the word to make a key, then check whether the key is already in the shelf. If not, it should make a list that contains the new word and add it to the shelf. If so, it should append the new word to the existing value. " - ] - }, - { - "cell_type": "code", - "execution_count": 73, - "id": "1c2fff95", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def add_word(word, db):\n", - " key = sort_word(word)\n", - "\n", - " if key not in db:\n", - " db[key] = [word]\n", - " else:\n", - " anagrams = db[key]\n", - " anagrams.append(word)\n", - " db[key] = anagrams" - ] - }, - { - "cell_type": "markdown", - "id": "07cb454f", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "You can use this loop to test your function." - ] - }, - { - "cell_type": "code", - "execution_count": 74, - "id": "8008cde6", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "download('https://raw.githubusercontent.com/AllenDowney/ThinkPython/v3/words.txt');" - ] - }, - { - "cell_type": "code", - "execution_count": 75, - "id": "a6b5e51a", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "word_list = open('words.txt').read().split()\n", - "\n", - "db = shelve.open('anagram_map', 'n')\n", - "for word in word_list:\n", - " add_word(word, db)" - ] - }, - { - "cell_type": "markdown", - "id": "40342366", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "If everything is working, you should be able to look up a key like `'opst'` and get a list of words that can be spelled with those letters." - ] - }, - { - "cell_type": "code", - "execution_count": 76, - "id": "ffefe13e", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "['opts', 'post', 'pots', 'spot', 'stop', 'tops']" - ] - }, - "execution_count": 76, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "db['opst']" - ] - }, - { - "cell_type": "code", - "execution_count": 77, - "id": "7eb54fbc", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['alerts', 'alters', 'artels', 'estral', 'laster', 'ratels', 'salter', 'slater', 'staler', 'stelar', 'talers']\n", - "['apers', 'asper', 'pares', 'parse', 'pears', 'prase', 'presa', 'rapes', 'reaps', 'spare', 'spear']\n", - "['capers', 'crapes', 'escarp', 'pacers', 'parsec', 'recaps', 'scrape', 'secpar', 'spacer']\n", - "['estrin', 'inerts', 'insert', 'inters', 'niters', 'nitres', 'sinter', 'triens', 'trines']\n", - "['least', 'setal', 'slate', 'stale', 'steal', 'stela', 'taels', 'tales', 'teals', 'tesla']\n" - ] - } - ], - "source": [ - "for key, value in db.items():\n", - " if len(value) > 8:\n", - " print(value)" - ] - }, - { - "cell_type": "code", - "execution_count": 78, - "id": "ac784df7", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "db.close()" - ] - }, - { - "cell_type": "markdown", - "id": "228e977c", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "In a large collection of files, there may be more than one copy of the same file, stored in different directories or with different file names.\n", - "The goal of this exercise is to search for duplicates.\n", - "As an example, we'll work with image files in the `photos` directory.\n", - "\n", - "Here's how it will work:\n", - "\n", - "* We'll use the `walk` function from [](section_walking_directories) to search this directory for files that end with one of the extensions in `config['extensions']`.\n", - "\n", - "* For each file, we'll use `md5_digest` from [](section_md5_digest) to compute a digest of the contents.\n", - "\n", - "* Using a shelf, we'll make a mapping from each digest to a list of paths with that digest.\n", - "\n", - "* Finally, we'll search the shelf for any digests that map to multiple files.\n", - "\n", - "* If we find any, we'll use `same_contents` to confirm that the files contain the same data." - ] - }, - { - "cell_type": "markdown", - "id": "8f5365da", - "metadata": {}, - "source": [ - "I'll suggest some functions to write first, then we'll bring it all together.\n", - "\n", - "1. To identify image files, write a function called `is_image` that takes a path and a list of file extensions, and returns `True` if the path ends with one of the extensions in the list. Hint: Use `os.path.splitext` -- or ask a virtual assistant to write this function for you." - ] - }, - { - "cell_type": "code", - "execution_count": 79, - "id": "03b6acf9", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def is_image(path, extensions):\n", - " \"\"\"Checks whether the path ends with one of the extensions.\n", - " \n", - " path: string file path\n", - " extensions: list of extensions\n", - " \n", - " >>> is_image('photo.jpg', ['jpg', 'jpeg'])\n", - " True\n", - " >>> is_image('PHOTO.JPG', ['jpg', 'jpeg'])\n", - " True\n", - " >>> is_image('notes.txt', ['jpg', 'jpeg'])\n", - " False\n", - " \"\"\"\n", - " _, extension = os.path.splitext(path)\n", - " return extension.strip('.').lower() in extensions" - ] - }, - { - "cell_type": "markdown", - "id": "dde4b5c8", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "You can use `doctest` to test your function." - ] - }, - { - "cell_type": "code", - "execution_count": 80, - "id": "21c33092", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "from doctest import run_docstring_examples\n", - "\n", - "def run_doctests(func):\n", - " run_docstring_examples(func, globals(), name=func.__name__)\n", - "\n", - "run_doctests(is_image)" - ] - }, - { - "cell_type": "markdown", - "id": "1a7c8f49", - "metadata": {}, - "source": [ - "2. Write a function called `add_path` that takes as arguments a path and a shelf. It should use `md5_digest` to compute a digest of the file contents. Then it should update the shelf, either creating a new item that maps from the digest to a list containing the path, or appending the path to the list if it exists." - ] - }, - { - "cell_type": "code", - "execution_count": 81, - "id": "31c056a9", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def add_path(path, db):\n", - " digest = md5_digest(path)\n", - " \n", - " if digest not in db:\n", - " paths = [path]\n", - " else:\n", - " paths = db[digest]\n", - " paths.append(path)\n", - " \n", - " db[digest] = paths" - ] - }, - { - "cell_type": "markdown", - "id": "08223a21", - "metadata": {}, - "source": [ - "3. Write a version of `walk` called `walk_images` that takes a directory and walks through the files in the directory and its subdirectories. For each file, it should use `is_image` to check whether it's an image file and `add_path` to add it to the shelf." - ] - }, - { - "cell_type": "code", - "execution_count": 87, - "id": "e54d6993", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def walk_images(dirname):\n", - " for name in os.listdir(dirname):\n", - " path = os.path.join(dirname, name)\n", - "\n", - " if os.path.isfile(path):\n", - " if is_image(path, config['extensions']):\n", - " add_path(path, db)\n", - " else:\n", - " walk_images(path) " - ] - }, - { - "cell_type": "markdown", - "id": "1ea76a52", - "metadata": {}, - "source": [ - "When everything is working, you can use the following program to create the shelf, search the `photos` directory and add paths to the shelf, and then check whether there are multiple files with the same digest." - ] - }, - { - "cell_type": "code", - "execution_count": 88, - "id": "c31ba5b6", - "metadata": { - "tags": [ - "remove-output" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['photos/mar-2023/photo2.jpg', 'photos/jan-2023/photo1.jpg']\n" - ] - } - ], - "source": [ - "db = shelve.open('photos/digests', 'n')\n", - "walk_images('photos')\n", - "\n", - "for digest, paths in db.items():\n", - " if len(paths) > 1:\n", - " print(paths)" - ] - }, - { - "cell_type": "markdown", - "id": "102d4d10", - "metadata": {}, - "source": [ - "You should find one pair of files that have the same digest.\n", - "Use `same_contents` to check whether they contain the same data." - ] - }, - { - "cell_type": "code", - "execution_count": 89, - "id": "d7c7e679", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 89, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Solution\n", - "\n", - "path1, path2 = ['photos/mar-2023/photo2.jpg', 'photos/jan-2023/photo1.jpg']\n", - "same_contents(path1, path2)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "c6a6b5a7", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "id": "a7f4edf8", - "metadata": { - "tags": [] - }, - "source": [ - "[Think Python: 3rd Edition](https://allendowney.github.io/ThinkPython/index.html)\n", - "\n", - "Copyright 2024 [Allen B. Downey](https://allendowney.com)\n", - "\n", - "Code license: [MIT License](https://mit-license.org/)\n", - "\n", - "Text license: [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-nc-sa/4.0/)" - ] - } - ], - "metadata": { - "celltoolbar": "Tags", - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.11" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/soln/chap14.ipynb b/soln/chap14.ipynb deleted file mode 100644 index 9af89fc..0000000 --- a/soln/chap14.ipynb +++ /dev/null @@ -1,2202 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "1331faa1", - "metadata": {}, - "source": [ - "You can order print and ebook versions of *Think Python 3e* from\n", - "[Bookshop.org](https://bookshop.org/a/98697/9781098155438) and\n", - "[Amazon](https://www.amazon.com/_/dp/1098155432?smid=ATVPDKIKX0DER&_encoding=UTF8&tag=oreilly20-20&_encoding=UTF8&tag=greenteapre01-20&linkCode=ur2&linkId=e2a529f94920295d27ec8a06e757dc7c&camp=1789&creative=9325)." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "ae5a86f8", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "from os.path import basename, exists\n", - "\n", - "def download(url):\n", - " filename = basename(url)\n", - " if not exists(filename):\n", - " from urllib.request import urlretrieve\n", - "\n", - " local, _ = urlretrieve(url, filename)\n", - " print(\"Downloaded \" + str(local))\n", - " return filename\n", - "\n", - "download('https://github.com/AllenDowney/ThinkPython/raw/v3/thinkpython.py');\n", - "download('https://github.com/AllenDowney/ThinkPython/raw/v3/diagram.py');\n", - "\n", - "import thinkpython" - ] - }, - { - "cell_type": "markdown", - "id": "e826e661", - "metadata": {}, - "source": [ - "# Classes and Functions\n", - "\n", - "At this point you know how to use functions to organize code and how to use built-in types to organize data.\n", - "The next step is **object-oriented programming**, which uses programmer-defined types to organize both code and data.\n", - "\n", - "Object-oriented programming is a big topic, so we will proceed gradually.\n", - "In this chapter, we'll start with code that is not idiomatic -- that is, it is not the kind of code experienced programmers write -- but it is a good place to start.\n", - "In the next two chapters, we will use additional features to write more idiomatic code." - ] - }, - { - "cell_type": "markdown", - "id": "6b414d4a", - "metadata": {}, - "source": [ - "## Programmer-defined types\n", - "\n", - "We have used many of Python's built-in types -- now we will define a new type.\n", - "As a first example, we'll create a type called `Time` that represents a time of day.\n", - "A programmer-defined type is also called a **class**.\n", - "A class definition looks like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "c9c99d2c", - "metadata": {}, - "outputs": [], - "source": [ - "class Time:\n", - " \"\"\"Represents a time of day.\"\"\"" - ] - }, - { - "cell_type": "markdown", - "id": "e2414cd2", - "metadata": {}, - "source": [ - "The header indicates that the new class is called `Time`.\n", - "The body is a docstring that explains what the class is for.\n", - "Defining a class creates a **class object**.\n", - "\n", - "The class object is like a factory for creating objects.\n", - "To create a `Time` object, you call `Time` as if it were a function." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "d318001a", - "metadata": {}, - "outputs": [], - "source": [ - "lunch = Time()" - ] - }, - { - "cell_type": "markdown", - "id": "f63247d4", - "metadata": {}, - "source": [ - "The result is a new object whose type is `__main__.Time`, where `__main__` is the name of the module where `Time` is defined." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "f37d67fd", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "__main__.Time" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "type(lunch)" - ] - }, - { - "cell_type": "markdown", - "id": "14d0c96a", - "metadata": {}, - "source": [ - "When you print an object, Python tells you what type it is and where it is stored in memory (the prefix `0x` means that the following number is in hexadecimal)." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "e2bd114a", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "<__main__.Time object at 0x7f31440ad0c0>\n" - ] - } - ], - "source": [ - "print(lunch)" - ] - }, - { - "cell_type": "markdown", - "id": "b6445414", - "metadata": {}, - "source": [ - "Creating a new object is called **instantiation**, and the object is an **instance** of the class." - ] - }, - { - "cell_type": "markdown", - "id": "4c3768ec", - "metadata": {}, - "source": [ - "## Attributes\n", - "\n", - "An object can contain variables, which are called **attributes** and pronounced with the emphasis on the first syllable, like \"AT-trib-ute\", rather than the second syllable, like \"a-TRIB-ute\".\n", - "We can create attributes using dot notation." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "e166701a", - "metadata": {}, - "outputs": [], - "source": [ - "lunch.hour = 11\n", - "lunch.minute = 59\n", - "lunch.second = 1" - ] - }, - { - "cell_type": "markdown", - "id": "b3fd8858", - "metadata": {}, - "source": [ - "This example creates attributes called `hour`, `minute`, and `second`, which contain the hours, minutes, and seconds of the time `11:59:01`, which is lunch time as far as I am concerned.\n", - "\n", - "The following diagram shows the state of `lunch` and its attributes after these assignments. " - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "3eb47826", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "from diagram import make_frame, make_binding\n", - "\n", - "d1 = dict(hour=11, minute=59, second=1)\n", - "frame = make_frame(d1, name='Time', dy=-0.3, offsetx=0.48)\n", - "binding = make_binding('lunch', frame)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "6702a353", - "metadata": { - "tags": [ - "remove-input" - ] - }, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAMoAAACQCAYAAABJcPQ5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAAANHElEQVR4nO3de0zV9R/H8ScXQUUPKHltOsnA20EBk4moEKGUt6A2xMQkxUuX5S3dnF3oYs1pko61qDbKI3OZbFkSUBoy5wUi84oJKtZqijXAEZqCnN8fzZP+FP2gcMB6PTY2v4dzvudzjj75fg/C+7jY7XY7InJLrq29AJF7gUIRMaBQRAwoFBEDCkXEgEIRMaBQRAwoFBEDCkXEgEIRMaBQRAwoFBEDCkXEgEIRMaBQRAwoFBEDCkXEgEIRMaBQRAwoFBED7q29gHtZUFAQAJcvX+b48eMEBgYCMGDAAMfH9OnTW3GF0lxcNIXl7p0+fZqgoCCqq6tbeynSQnTq1UKSkpJ47733AEhJSSE+Pp7JkycTEBDApEmTOHLkCDExMQQEBDBt2jQaGhoAqKmpYc6cOYSGhjJ06FDmzp3L5cuXW/GRCCgUpykuLmbDhg0cP36cmpoakpOT2bJlCyUlJRw7doycnBwAlixZwpgxYygqKuLgwYM0NDSwbt26Vl696DWKk4wfP54uXboAEBISgqenJ507dwYgODiYsrIyAL744gv27t3L2rVrAbh48SJubm6ts2hxUChO0r59e8ef3dzcbtiur68HwG63k5WVRUBAgNPXKI3TqVcbExsby6pVqxzhVFVVceLEiVZelSiUNiY1NZUOHToQFBTE0KFDeeSRRzh9+nRrL+s/T98eFjGgI4qIAYUiYkChiBjQt4fvQk1NTWsvQZrB1f/PuhUdUUQMKBQRAwpFxIBCETGgUEQMKBQRAwpFxIBCETGgUEQMNCkUFxeXFhugkJKSwsKFC1tk3/cyi8WioRXA0qVLsVqtWCwWDh06dNvLm5uOKP9xV39BrK2LjY0lLy+Pvn37Gl3e3O44lH79+nHgwAHH9kMPPcTOnTsBiIyM5KWXXmLMmDH079+f+fPnO653/vx5kpOTsVqtDBs2jFmzZjk+d+bMGSZPnszgwYOJioqisrLyTpfXLLKzs/n888+pqKho1XV8/PHHREZGEhgYyMaNGx2X79+/n+joaMLCwoiMjGTfvn0A/Pzzz/Tp08dxvT///BOLxeLYtlgsrFy5koiICFJSUpz2OP7fjh07+Oqrr/j9999ve93w8HDuv/9+48ubW4v9UOTJkyfJz8+nrq6OwYMHs3fvXsLCwli4cCEdOnTg0KFDuLq6XvckFRYW8sMPP+Dr60tCQgLp6eksX768pZZ4W/7+/uTm5vLBBx8waNAgIiIi6NGjh9PX4enpyc6dOyktLSUyMpKEhAQaGhpITExk/fr1REdHs3fvXhITE6/74nUrbm5uFBQUtOzCb8PPz4/8/HxsNhv+/v6MHDmSbt26teqaGtNioUydOhV3d3fc3d0JCgri5MmThIWFsW3bNgoLC3F1/ftgdu0T8+ijj+Lr6wtAWFgYhw8fvmG/tbW15ObmOm3W1X333YeHhwcnTpzg2LFj9OrVi7lz5zrlvq+Kj48HICAgAHd3dyoqKqiursbV1ZXo6Gjg7+ere/fuHD58mN69e992nzNmzLjp5RcuXHB8gXOGrl274uHhQXl5OWVlZXTv3p3ExESn3HdT3PGpl7u7O1euXHFs//XXX9d9vrEpI7dyJ7f5L/D09HT82dXVtdHnxcXFBbjx7+bSpUs3XNfLy6uZV3nn7oXfRr/jI8qDDz5IYWEhw4cPp6ioiOPHjxvdbsqUKaxZs4a0tDTHqVdTDrdeXl48+eSTd7rsJiktLSUnJ4fq6upWPfW6GX9/fxoaGvjuu++IioqisLCQiooKAgMDad++PXa7nZ9++omBAweyadMm4/127NiRiRMntuDK/3Hq1Cny8/M5f/78v/fU66233mLmzJmkp6cTFhbGkCFDjG6XmprKokWLCAwMpF27dowYMYKPPvroTpfRosrKyujduzcJCQltJpCrPDw82LhxI8uWLWPFihV4enpis9no1KkTAKtXryY+Pp4uXboQGxvbuottRHl5Od27d2fKlCm3DWTBggXk5eVRUVFBXFwcnTp14uDBg41e3tw0heUu6Dcc/x30G44izUShiBhQKCIGFIqIAYUiYkChiBhQKCIGFIqIAYUiYkChiBhQKCIGFIqIAYUiYkChiBhQKCIGFIqIAYUiYkChiBhQKCIGFIqIAYUiYkChtDFnzpwhJibmrveTmZlJaWlpM6yobbBarYSEhBAeHk54eDhZWVkAfPvtt0RERBAWFkZUVNRNp4s2hxYbqSp3plevXuTl5d31fjIzM/H29iYgIKAZVtU2fPLJJwwdOtSxXVVVRXJyMrm5uQwaNIg9e/aQnJxMYWFhs9+3jihOYrFYWL16NQ8//DBWq5Vt27bx7rvvEhERQVBQELt27QJunERvsVhYs2bNTafZW63W694TJCIigl27dvHpp5/y448/snz5csLDwx3hrV+/nsjISMaMGUNcXBy//PKLkx79zTVlmv3NlJeX07VrVwYNGgTAqFGj+PXXX40HlTeFQnEiLy8v8vPzSUtLY86cOfTs2ZOCggJee+01Xn755UZvd3WafVZWFsuWLbvtTOaZM2cSHBzMO++8w+7du4mJiWHz5s2UlZWxY8cOdu3aRXx8PIsXL27uh9gkfn5+nDt3DpvNZhTMvHnzGDlyJM8//zx//PEH/fv3p7Ky0nEE+frrr6mpqWmRLwA69XKiqzOTg4ODqa2tdWwPHz6cU6dONXq7m02zb+p7gmRnZ7N//37Gjh0LcN0Q72u11Wn2OTk59OnTh7q6Ot58803mzZtHVlYWNpuNlJQUamtrGTFiBAMHDsTdvfn/WSsUJ7o6ld7NzQ34Z3r/7Sb3NzbN3s3N7ZbvKHAtu93O4sWLeeaZZ+78AbQQk6m+V09H27Vrx3PPPUdISAgAY8eOdcR/6dIl/P39GTBgQLOvUaHcwx544AGKi4sJDg6muLiYsrIyx+c6d+7M+fPnHdsTJ04kLS2Nxx9/nK5du1JXV0dJSQnDhg27bp9tcZp9bW0tdXV1+Pj4ALBlyxbHi/qzZ8/Ss2dPAFatWsXYsWPp379/s69VodzDXnnlFebPn09GRgahoaGOF7UASUlJrFixgvfff59XX32VqVOnUllZyaRJk4C/37txxowZN4TiTKbT7M+dO8eMGTO4cuUKdrudfv36kZ6eDsDKlSvZs2cP9fX1hIaGkpaW1iJr1TT7u6Bp9v8OmmYv0kwUiogBhSJiQKGIGFAoIgYUiogBhSJiQKGIGFAoIgYUiogBhSJiQKGIGFAoIgYUiogBhSJiQKGIGFAoIgYUiogBhSJiQKGIGFAoIgYUyn9QTk4OEyZMaO1lNMnSpUuxWq1YLJbr5i07i0KRe0JsbCx5eXn07du3Ve5fA/Cc4OLFizz77LMcPXqUdu3a0a1bN7Zu3cqmTZv48MMPqa+vx8vLi9WrVxMYGAhAamoqn332Ga6urrRv355t27bRsWNH1q1bR2ZmJq6urgwZMoS1a9fi7e3N22+/TWlpKRcuXKC8vJwePXqwYcMGx1TIZcuWkZ+fj4+PD6NGjWrlZ+RvO3bs4MKFC41OiLxWeHi4k1Z1cwrFCbZv3051dTXff/89AJWVlezbt48tW7aQm5uLp6cne/bsYfbs2RQVFZGZmcnWrVvJy8vD29ubqqoqPD09+eabb7DZbGzfvh0fHx9efPFFUlJSSE1NBaC4uJiCggJ8fX1JSkoiIyODJUuWkJGRwYkTJygqKgIgLi6u1Z6La/n5+ZGfn4/NZrvlSNW2QKE4gdVqpbS0lEWLFjF69GjGjx9PdnY2R44cISoqynG9qqoqLl68SF5eHrNnz8bb2xuALl26ALBz506eeOIJxwze2bNn8/TTTztuHx0dja+vLwChoaGUlJQAUFBQQEJCAh4eHgAkJiZis9luuta2Os2+tek1ihP4+flRVFTEuHHj2LdvHyNHjqS6upqnnnqK3bt3Oz7Kysro0KGD8X5dXFyu27526v2tJuT//+1a270w1VdHFCf47bff8PHxYcKECURHR5Odnc3UqVOZO3cus2bNok+fPjQ0NHDgwAFCQkJ47LHHSE9PZ8qUKXh7e1NdXU3nzp2JjIxkxYoVvPDCC1gsFjIyMq47IjUmMjKSzZs3Ex8fj91uJzMzs9HrtsVp9m2BQnGCo0eP8vrrr2O326mvrychIYHRo0fzxhtvMH36dOrr67l8+TIxMTGEhIQwbdo0zp49y7hx43B3d6djx458+eWXjB8/nmPHjhEdHX3di/nbSUpKoqSkhBEjRjhezLfE27c1lek0e4AFCxaQl5dHRUUFcXFxdOrUiYMHDzpppZpmf1c0zf7fQdPsRZqJQhExoFBEDCgUEQMKRcSAQhExoFBEDCgUEQMKRcSAQhExoFBEDOhnvUQM6IgiYkChiBhQKCIGFIqIAYUiYkChiBhQKCIGFIqIAYUiYkChiBhQKCIGFIqIAYUiYkChiBhQKCIGFIqIAYUiYkChiBhQKCIGFIqIgf8BMCZxmSkMisYAAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from diagram import diagram, adjust\n", - "\n", - "width, height, x, y = [1.77, 1.24, 0.25, 0.86]\n", - "ax = diagram(width, height)\n", - "bbox = binding.draw(ax, x, y)\n", - "#adjust(x, y, bbox)" - ] - }, - { - "cell_type": "markdown", - "id": "d9df5b48", - "metadata": {}, - "source": [ - "The variable `lunch` refers to a `Time` object, which contains three attributes. \n", - "Each attribute refers to an integer.\n", - "A state diagram like this -- which shows an object and its attributes -- is called an **object diagram**.\n", - "\n", - "You can read the value of an attribute using the dot operator." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "4c4eff2b", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "11" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "lunch.hour" - ] - }, - { - "cell_type": "markdown", - "id": "5ccfaea0", - "metadata": {}, - "source": [ - "You can use an attribute as part of any expression." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "7ac6db21", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "719" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "total_minutes = lunch.hour * 60 + lunch.minute\n", - "total_minutes" - ] - }, - { - "cell_type": "markdown", - "id": "c5e6725b", - "metadata": {}, - "source": [ - "And you can use the dot operator in an expression in an f-string." - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "1ecdc091", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'11:59:1'" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "f'{lunch.hour}:{lunch.minute}:{lunch.second}'" - ] - }, - { - "cell_type": "markdown", - "id": "e70671d2", - "metadata": {}, - "source": [ - "But notice that the previous example is not in the standard format.\n", - "To fix it, we have to print the `minute` and `second` attributes with a leading zero.\n", - "We can do that by extending the expressions in curly braces with a **format specifier**.\n", - "In the following example, the format specifiers indicate that `minute` and `second` should be displayed with at least two digits and a leading zero if needed." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "a8a45573", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'11:59:01'" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "f'{lunch.hour}:{lunch.minute:02d}:{lunch.second:02d}'" - ] - }, - { - "cell_type": "markdown", - "id": "bcbea13a", - "metadata": {}, - "source": [ - "We'll use this f-string to write a function that displays the value of a `Time`object.\n", - "You can pass an object as an argument in the usual way.\n", - "For example, the following function takes a `Time` object as an argument. " - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "fc77feb2", - "metadata": {}, - "outputs": [], - "source": [ - "def print_time(time):\n", - " s = f'{time.hour:02d}:{time.minute:02d}:{time.second:02d}'\n", - " print(s)" - ] - }, - { - "cell_type": "markdown", - "id": "3b8ccbed", - "metadata": {}, - "source": [ - "When we call it, we can pass `lunch` as an argument." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "59b7f4f4", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "11:59:01\n" - ] - } - ], - "source": [ - "print_time(lunch)" - ] - }, - { - "cell_type": "markdown", - "id": "18826e53", - "metadata": {}, - "source": [ - "## Objects as return values\n", - "\n", - "Functions can return objects. For example, `make_time` takes parameters called `hour`, `minute`, and `second`, stores them as attributes in a `Time` object, and returns the new object." - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "fde15b59", - "metadata": {}, - "outputs": [], - "source": [ - "def make_time(hour, minute, second):\n", - " time = Time()\n", - " time.hour = hour\n", - " time.minute = minute\n", - " time.second = second\n", - " return time" - ] - }, - { - "cell_type": "markdown", - "id": "d8a6acca", - "metadata": {}, - "source": [ - "It might be surprising that the parameters have the same names as the attributes, but that's a common way to write a function like this.\n", - "Here's how we use `make_time` to create a `Time` object." - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "f4199d7f", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "11:59:01\n" - ] - } - ], - "source": [ - "time = make_time(11, 59, 1)\n", - "print_time(time)" - ] - }, - { - "cell_type": "markdown", - "id": "05720bcb", - "metadata": {}, - "source": [ - "## Objects are mutable\n", - "\n", - "Suppose you are going to a screening of a movie, like *Monty Python and the Holy Grail*, which starts at `9:20 PM` and runs for `92` minutes, which is one hour `32` minutes.\n", - "What time will the movie end?\n", - "\n", - "First, we'll create a `Time` object that represents the start time." - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "57847af3", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "09:20:00\n" - ] - } - ], - "source": [ - "start = make_time(9, 20, 0)\n", - "print_time(start)" - ] - }, - { - "cell_type": "markdown", - "id": "001bcda9", - "metadata": {}, - "source": [ - "To find the end time, we can modify the attributes of the `Time` object, adding the duration of the movie." - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "f3637b10", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "10:52:00\n" - ] - } - ], - "source": [ - "start.hour += 1\n", - "start.minute += 32\n", - "print_time(start)" - ] - }, - { - "cell_type": "markdown", - "id": "7007ab61", - "metadata": {}, - "source": [ - "The movie will be over at 10:52 PM.\n", - "\n", - "Let's encapsulate this computation in a function and generalize it to take the duration of the movie in three parameters: `hours`, `minutes`, and `seconds`." - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "3468f4d0", - "metadata": {}, - "outputs": [], - "source": [ - "def increment_time(time, hours, minutes, seconds):\n", - " time.hour += hours\n", - " time.minute += minutes\n", - " time.second += seconds" - ] - }, - { - "cell_type": "markdown", - "id": "a51913e2", - "metadata": {}, - "source": [ - "Here is an example that demonstrates the effect." - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "ad8177ad", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "10:52:00\n" - ] - } - ], - "source": [ - "start = make_time(9, 20, 0)\n", - "increment_time(start, 1, 32, 0)\n", - "print_time(start)" - ] - }, - { - "cell_type": "markdown", - "id": "42d7de02", - "metadata": {}, - "source": [ - "The following stack diagram shows the state of the program just before `increment_time` modifies the object." - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "6f90c060", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "from diagram import Frame, Binding, Value, Stack\n", - "\n", - "d1 = dict(hour=9, minute=20, second=0)\n", - "obj1 = make_frame(d1, name='Time', dy=-0.25, offsetx=0.78)\n", - "\n", - "binding1 = make_binding('start', frame, draw_value=False, dx=0.7)\n", - "frame1 = Frame([binding1], name='__main__', loc='left', offsetx=-0.2)\n", - "\n", - "binding2 = Binding(Value('time'), draw_value=False, dx=0.7, dy=0.35)\n", - "binding3 = make_binding('hours', 1)\n", - "binding4 = make_binding('minutes',32)\n", - "binding5 = make_binding('seconds', 0)\n", - "frame2 = Frame([binding2, binding3, binding4, binding5], name='increment_time', \n", - " loc='left', dy=-0.25, offsetx=0.08)\n", - "\n", - "stack = Stack([frame1, frame2], dx=-0.3, dy=-0.5)" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "93a1db71", - "metadata": { - "tags": [ - "remove-input" - ] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from diagram import Bbox\n", - "\n", - "width, height, x, y = [3.4, 1.89, 1.75, 1.5]\n", - "ax = diagram(width, height)\n", - "bbox1 = stack.draw(ax, x, y)\n", - "bbox2 = obj1.draw(ax, x+0.23, y)\n", - "bbox = Bbox.union([bbox1, bbox2])\n", - "# adjust(x, y, bbox)" - ] - }, - { - "cell_type": "markdown", - "id": "d1e27667", - "metadata": {}, - "source": [ - "Inside the function, `time` is an alias for `start`, so when `time` is modified, `start` changes.\n", - "\n", - "This function works, but after it runs, we're left with a variable named `start` that refers to an object that represents the *end* time, and we no longer have an object that represents the start time.\n", - "It would be better to leave `start` unchanged and make a new object to represent the end time.\n", - "We can do that by copying `start` and modifying the copy." - ] - }, - { - "cell_type": "markdown", - "id": "0128f850", - "metadata": {}, - "source": [ - "## Copying\n", - "\n", - "The `copy` module provides a function called `copy` that can duplicate any object.\n", - "We can import it like this." - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "9f74834d", - "metadata": {}, - "outputs": [], - "source": [ - "from copy import copy" - ] - }, - { - "cell_type": "markdown", - "id": "940adbeb", - "metadata": {}, - "source": [ - "To see how it works, let's start with a new `Time` object that represents the start time of the movie." - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "770c077a", - "metadata": {}, - "outputs": [], - "source": [ - "start = make_time(9, 20, 0)" - ] - }, - { - "cell_type": "markdown", - "id": "514f05b9", - "metadata": {}, - "source": [ - "And make a copy." - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "edced6e5", - "metadata": {}, - "outputs": [], - "source": [ - "end = copy(start)" - ] - }, - { - "cell_type": "markdown", - "id": "87d8956b", - "metadata": {}, - "source": [ - "Now `start` and `end` contain the same data." - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "509c3640", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "09:20:00\n", - "09:20:00\n" - ] - } - ], - "source": [ - "print_time(start)\n", - "print_time(end)" - ] - }, - { - "cell_type": "markdown", - "id": "e75c1e09", - "metadata": {}, - "source": [ - "But the `is` operator confirms that they are not the same object." - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "60d812f7", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 27, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "start is end" - ] - }, - { - "cell_type": "markdown", - "id": "22b68a3f", - "metadata": {}, - "source": [ - "Let's see what the `==` operator does." - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "4d504362", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "start == end" - ] - }, - { - "cell_type": "markdown", - "id": "78ebf931", - "metadata": {}, - "source": [ - "You might expect `==` to yield `True` because the objects contain the same data.\n", - "But for programmer-defined classes, the default behavior of the `==` operator is the same as the `is` operator -- it checks identity, not equivalence." - ] - }, - { - "cell_type": "markdown", - "id": "a3934fdd-d4cd-41e0-86e6-5bb78d0886a7", - "metadata": {}, - "source": [ - "## Pure functions\n", - "\n", - "We can use `copy` to write pure functions that don't modify their parameters.\n", - "For example, here's a function that takes a `Time` object and a duration in hours, minutes and seconds.\n", - "It makes a copy of the original object, uses `increment_time` to modify the copy, and returns it." - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "85090d3e", - "metadata": {}, - "outputs": [], - "source": [ - "def add_time(time, hours, minutes, seconds):\n", - " total = copy(time)\n", - " increment_time(total, hours, minutes, seconds)\n", - " return total" - ] - }, - { - "cell_type": "markdown", - "id": "c181af12", - "metadata": {}, - "source": [ - "Here's how we use it." - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "id": "1d9cf4da", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "10:52:00\n" - ] - } - ], - "source": [ - "end = add_time(start, 1, 32, 0)\n", - "print_time(end)" - ] - }, - { - "cell_type": "markdown", - "id": "54b1ca4a", - "metadata": {}, - "source": [ - "The return value is a new object representing the end time of the movie.\n", - "And we can confirm that `start` is unchanged." - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "id": "9fe30d71", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "09:20:00\n" - ] - } - ], - "source": [ - "print_time(start)" - ] - }, - { - "cell_type": "markdown", - "id": "1233b2db", - "metadata": {}, - "source": [ - "`add_time` is a **pure function** because it does not modify any of the objects passed to it as arguments and its only effect is to return a value.\n", - "\n", - "Anything that can be done with impure functions can also be done with pure functions.\n", - "In fact, some programming languages only allow pure functions.\n", - "Programs that use pure functions might be less error-prone, but impure functions are sometimes convenient and can be more efficient.\n", - "\n", - "In general, I suggest you write pure functions whenever it is reasonable and resort to impure functions only if there is a compelling advantage.\n", - "This approach might be called a **functional programming style**." - ] - }, - { - "cell_type": "markdown", - "id": "9d9fabbc", - "metadata": {}, - "source": [ - "## Prototype and patch\n", - "\n", - "In the previous example, `increment_time` and `add_time` seem to work, but if we try another example, we'll see that they are not quite correct.\n", - "\n", - "Suppose you arrive at the theater and discover that the movie starts at `9:40`, not `9:20`.\n", - "Here's what happens when we compute the updated end time." - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "id": "57a96bf9-7d7b-4715-a4b3-2dfad1beb670", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "10:72:00\n" - ] - } - ], - "source": [ - "start = make_time(9, 40, 0)\n", - "end = add_time(start, 1, 32, 0)\n", - "print_time(end)" - ] - }, - { - "cell_type": "markdown", - "id": "c712ebf7-7e52-490e-91d7-5f1c83334de0", - "metadata": {}, - "source": [ - "The result is not a valid time.\n", - "The problem is that `increment_time` does not deal with cases where the number of seconds or minutes adds up to more than `60`.\n", - "\n", - "Here's an improved version that checks whether `second` exceeds or equals `60` -- if so, it increments `minute` -- then checks whether `minute` exceeds or equals `60` -- if so, it increments `hour`." - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "id": "5bada1df-be0a-4f6a-8fe3-d92bd937dc70", - "metadata": {}, - "outputs": [], - "source": [ - "def increment_time(time, hours, minutes, seconds):\n", - " time.hour += hours\n", - " time.minute += minutes\n", - " time.second += seconds\n", - "\n", - " if time.second >= 60:\n", - " time.second -= 60\n", - " time.minute += 1\n", - "\n", - " if time.minute >= 60:\n", - " time.minute -= 60\n", - " time.hour += 1" - ] - }, - { - "cell_type": "markdown", - "id": "c133c5d8", - "metadata": {}, - "source": [ - "Fixing `increment_time` also fixes `add_time`, which uses it.\n", - "So now the previous example works correctly." - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "id": "a139b64b", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "11:12:00\n" - ] - } - ], - "source": [ - "end = add_time(start, 1, 32, 0)\n", - "print_time(end)" - ] - }, - { - "cell_type": "markdown", - "id": "a2f644a6-ca43-494e-af14-6e845b3d7973", - "metadata": {}, - "source": [ - "But this function is still not correct, because the arguments might be bigger than `60`.\n", - "For example, suppose we are given the run time as `92` minutes, rather than `1` hours and `32` minutes.\n", - "We might call `add_time` like this." - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "id": "8c9384cb", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "10:72:00\n" - ] - } - ], - "source": [ - "end = add_time(start, 0, 92, 0)\n", - "print_time(end)" - ] - }, - { - "cell_type": "markdown", - "id": "72e0a08b", - "metadata": {}, - "source": [ - "The result is not a valid time.\n", - "So let's try a different approach, using the `divmod` function.\n", - "We'll make a copy of `start` and modify it by incrementing the `minute` attribute." - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "id": "47b04507", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "132" - ] - }, - "execution_count": 36, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "end = copy(start)\n", - "end.minute = start.minute + 92\n", - "end.minute" - ] - }, - { - "cell_type": "markdown", - "id": "c56355bc", - "metadata": {}, - "source": [ - "Now `minute` is `132`, which is `2` hours and `12` minutes.\n", - "We can use `divmod` to divide by `60` and return the number of whole hours and the number of minutes left over." - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "id": "8ce8f8bc", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(2, 12)" - ] - }, - "execution_count": 37, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "carry, end.minute = divmod(end.minute, 60)\n", - "carry, end.minute" - ] - }, - { - "cell_type": "markdown", - "id": "43204703", - "metadata": {}, - "source": [ - "Now `minute` is correct, and we can add the hours to `hour`." - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "id": "90445645", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "11:12:00\n" - ] - } - ], - "source": [ - "end.hour += carry\n", - "print_time(end)" - ] - }, - { - "cell_type": "markdown", - "id": "a68ae1cd", - "metadata": {}, - "source": [ - "The result is a valid time.\n", - "We can do the same thing with `hour` and `second`, and encapsulate the whole process in a function." - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "id": "0a9653a2", - "metadata": {}, - "outputs": [], - "source": [ - "def increment_time(time, hours, minutes, seconds):\n", - " time.hour += hours\n", - " time.minute += minutes\n", - " time.second += seconds\n", - " \n", - " carry, time.second = divmod(time.second, 60)\n", - " carry, time.minute = divmod(time.minute + carry, 60)\n", - " carry, time.hour = divmod(time.hour + carry, 24)" - ] - }, - { - "cell_type": "markdown", - "id": "7437113a", - "metadata": {}, - "source": [ - "With this version of `increment_time`, `add_time` works correctly, even if the arguments exceed `60`." - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "id": "694cfdd1", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "11:12:00\n" - ] - } - ], - "source": [ - "end = add_time(start, 0, 90, 120)\n", - "print_time(end)" - ] - }, - { - "cell_type": "markdown", - "id": "7c6329b2", - "metadata": {}, - "source": [ - "This section demonstrates a program development plan I call **prototype and patch**.\n", - "We started with a simple prototype that worked correctly for the first example.\n", - "Then we tested it with more difficult examples -- when we found an error, we modified the program to fix it, like putting a patch on tire with a puncture.\n", - "\n", - "This approach can be effective, especially if you don't yet have a deep understanding of the problem.\n", - "But incremental corrections can generate code that is unnecessarily complicated -- since it deals with many special cases -- and unreliable -- since it is hard to know if you have\n", - "found all the errors." - ] - }, - { - "cell_type": "markdown", - "id": "39031461-49a9-4eba-a075-ef49a6f5552b", - "metadata": {}, - "source": [ - "## Design-first development\n", - "\n", - "An alternative plan is **design-first development**, which involves more planning before prototyping. In a design-first process, sometimes a high-level insight into the problem makes the programming much easier.\n", - "\n", - "In this case, the insight is that we can think of a `Time` object as a three-digit number in base 60 -- also known as sexagesimal.\n", - "The `second` attribute is the \"ones column\", the `minute` attribute is the \"sixties column\",\n", - "and the `hour` attribute is the \"thirty-six hundreds column\".\n", - "When we wrote `increment_time`, we were effectively doing addition in base 60, which is why we had to carry from one column to the next.\n", - "\n", - "This observation suggests another approach to the whole problem -- we can convert `Time` objects to integers and take advantage of the fact that Python knows how to do integer arithmetic.\n", - "\n", - "Here is a function that converts from a `Time` to an integer." - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "id": "a4427f06-10f3-478f-af4b-888297ee59ac", - "metadata": {}, - "outputs": [], - "source": [ - "def time_to_int(time):\n", - " minutes = time.hour * 60 + time.minute\n", - " seconds = minutes * 60 + time.second\n", - " return seconds" - ] - }, - { - "cell_type": "markdown", - "id": "c7e7789e", - "metadata": {}, - "source": [ - "The result is the number of seconds since the beginning of the day.\n", - "For example, `01:01:01` is `1` hour, `1` minute and `1` second from the beginning of the day, which is the sum of `3600` seconds, `60` seconds, and `1` second." - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "id": "e71f9661", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "01:01:01\n" - ] - }, - { - "data": { - "text/plain": [ - "3661" - ] - }, - "execution_count": 42, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "time = make_time(1, 1, 1)\n", - "print_time(time)\n", - "time_to_int(time)" - ] - }, - { - "cell_type": "markdown", - "id": "6ea525c8-4547-4bde-91c3-17f45add1bf8", - "metadata": {}, - "source": [ - "And here's a function that goes in the other direction -- converting an integer to a `Time` object -- using the `divmod` function." - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "id": "7a93edcc-de21-43b1-b0a9-1bcbc7f6125c", - "metadata": {}, - "outputs": [], - "source": [ - "def int_to_time(seconds):\n", - " minute, second = divmod(seconds, 60)\n", - " hour, minute = divmod(minute, 60)\n", - " return make_time(hour, minute, second)" - ] - }, - { - "cell_type": "markdown", - "id": "4706b5df", - "metadata": {}, - "source": [ - "We can test it by converting the previous example back to a `Time`." - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "id": "967fc3c2", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "01:01:01\n" - ] - } - ], - "source": [ - "time = int_to_time(3661)\n", - "print_time(time)" - ] - }, - { - "cell_type": "markdown", - "id": "0c2b8469-d4a7-46f9-a0a1-f2a6c1595183", - "metadata": {}, - "source": [ - "Using these functions, we can write a more concise version of `add_time`." - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "id": "0278a042-9e5b-460f-bd26-2fa319e7193a", - "metadata": {}, - "outputs": [], - "source": [ - "def add_time(time, hours, minutes, seconds):\n", - " duration = make_time(hours, minutes, seconds)\n", - " seconds = time_to_int(time) + time_to_int(duration)\n", - " return int_to_time(seconds)" - ] - }, - { - "cell_type": "markdown", - "id": "cb560257", - "metadata": {}, - "source": [ - "The first line converts the arguments to a `Time` object called `duration`.\n", - "The second line converts `time` and `duration` to seconds and adds them.\n", - "The third line converts the sum to a `Time` object and returns it.\n", - "\n", - "Here's how it works." - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "id": "ee78ffbc", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "11:12:00\n" - ] - } - ], - "source": [ - "start = make_time(9, 40, 0)\n", - "end = add_time(start, 1, 32, 0)\n", - "print_time(end)" - ] - }, - { - "cell_type": "markdown", - "id": "db762aa8-4aab-4c17-a88d-72c5048f18c0", - "metadata": {}, - "source": [ - "In some ways, converting from base 60 to base 10 and back is harder than\n", - "just dealing with times. Base conversion is more abstract; our intuition\n", - "for dealing with time values is better.\n", - "\n", - "But if we have the insight to treat times as base 60 numbers -- and invest the effort to write the conversion functions `time_to_int` and `int_to_time` -- we get a program that is shorter, easier to read and debug, and more reliable.\n", - "\n", - "It is also easier to add features later. For example, imagine subtracting two `Time` objects to find the duration between them.\n", - "The naive approach is to implement subtraction with borrowing.\n", - "Using the conversion functions is easier and more likely to be correct.\n", - "\n", - "Ironically, sometimes making a problem harder -- or more general -- makes it easier, because there are fewer special cases and fewer opportunities for error." - ] - }, - { - "cell_type": "markdown", - "id": "a0d23d08", - "metadata": { - "tags": [ - "section_debugging_14" - ] - }, - "source": [ - "## Debugging\n", - "\n", - "Python provides several built-in functions that are useful for testing and debugging programs that work with objects.\n", - "For example, if you are not sure what type an object is, you can ask." - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "id": "652bee8f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "__main__.Time" - ] - }, - "execution_count": 47, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "type(start)" - ] - }, - { - "cell_type": "markdown", - "id": "7ec0eabf", - "metadata": {}, - "source": [ - "You can also use `isinstance` to check whether an object is an instance of a particular class." - ] - }, - { - "cell_type": "code", - "execution_count": 48, - "id": "3ab974e4", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 48, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "isinstance(end, Time)" - ] - }, - { - "cell_type": "markdown", - "id": "4f453fe9", - "metadata": {}, - "source": [ - "If you are not sure whether an object has a particular attribute, you\n", - "can use the built-in function `hasattr`." - ] - }, - { - "cell_type": "code", - "execution_count": 49, - "id": "5f80e5ad", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 49, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "hasattr(start, 'hour')" - ] - }, - { - "cell_type": "markdown", - "id": "a0131d84", - "metadata": {}, - "source": [ - "To get all of the attributes, and their values, in a dictionary, you can use `vars`." - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "id": "2a102f0f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'hour': 9, 'minute': 40, 'second': 0}" - ] - }, - "execution_count": 50, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "vars(start)" - ] - }, - { - "cell_type": "markdown", - "id": "f1a443c8", - "metadata": {}, - "source": [ - "The `structshape` module, which we saw in [Chapter 11](section_debugging_11), also works with programmer-defined types." - ] - }, - { - "cell_type": "code", - "execution_count": 51, - "id": "b71f46d8", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "download('https://raw.githubusercontent.com/AllenDowney/ThinkPython/v3/structshape.py');" - ] - }, - { - "cell_type": "code", - "execution_count": 52, - "id": "1e6498a8", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'tuple of 2 Time'" - ] - }, - "execution_count": 52, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from structshape import structshape\n", - "\n", - "t = start, end\n", - "structshape(t)" - ] - }, - { - "cell_type": "markdown", - "id": "501436c0-6634-415f-be84-2d130232b2b8", - "metadata": {}, - "source": [ - "## Glossary\n", - "\n", - "**object-oriented programming:**\n", - "A style of programming that uses objects to organize code and data.\n", - "\n", - "**class:**\n", - " A programmer-defined type. A class definition creates a new class object.\n", - "\n", - "**class object:**\n", - "An object that represents a class -- it is the result of a class definition.\n", - "\n", - "**instantiation:**\n", - "The process of creating an object that belongs to a class.\n", - "\n", - "**instance:**\n", - " An object that belongs to a class.\n", - "\n", - "**attribute:**\n", - " A variable associated with an object, also called an instance variable.\n", - "\n", - "**object diagram:**\n", - "A graphical representation of an object, its attributes, and their values.\n", - "\n", - "**format specifier:**\n", - "In an f-string, a format specifier determines how a value is converted to a string.\n", - "\n", - "**pure function:**\n", - "A function that does not modify its parameters or have any effect other than returning a value.\n", - "\n", - "**functional programming style:**\n", - "A way of programming that uses pure functions whenever possible.\n", - "\n", - "**prototype and patch:**\n", - "A way of developing programs by starting with a rough draft and gradually adding features and fixing bugs.\n", - "\n", - "**design-first development:**\n", - "A way of developing programs with more careful planning that prototype and patch." - ] - }, - { - "cell_type": "markdown", - "id": "09dd41c1", - "metadata": {}, - "source": [ - "## Exercises" - ] - }, - { - "cell_type": "code", - "execution_count": 53, - "id": "ab3d0104", - "metadata": { - "tags": [ - "remove-print" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Exception reporting mode: Verbose\n" - ] - } - ], - "source": [ - "# This cell tells Jupyter to provide detailed debugging information\n", - "# when a runtime error occurs. Run it before working on the exercises.\n", - "\n", - "%xmode Verbose" - ] - }, - { - "cell_type": "markdown", - "id": "da0aea86", - "metadata": {}, - "source": [ - "### Ask a virtual assistant\n", - "\n", - "There is a lot of new vocabulary in this chapter.\n", - "A conversation with a virtual assistant can help solidify your understanding.\n", - "Consider asking:\n", - "\n", - "* \"What is the difference between a class and a type?\"\n", - "\n", - "* \"What is the difference between an object and an instance?\"\n", - "\n", - "* \"What is the difference between a variable and an attribute?\"\n", - "\n", - "* \"What are the pros and cons of pure functions compared to impure functions?\"\n", - "\n", - "Because we are just getting started with object oriented programming, the code in this chapter is not idiomatic -- it is not the kind of code experienced programmers write.\n", - "If you ask a virtual assistant for help with the exercises, you will probably see features we have not covered yet.\n", - "In particular, you are likely to see a method called `__init__` used to initialize the attributes of an instance.\n", - "\n", - "If these features make sense to you, go ahead and use them.\n", - "But if not, be patient -- we will get there soon.\n", - "In the meantime, see if you can solve the following exercises using only the features we have covered so far.\n", - "\n", - "Also, in this chapter we saw one example of a format specifier. For more information, ask \"What format specifiers can be used in a Python f-string?\"" - ] - }, - { - "cell_type": "markdown", - "id": "bcdab7d6", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "Write a function called `subtract_time` that takes two `Time` objects and returns the interval between them in seconds -- assuming that they are two times during the same day." - ] - }, - { - "cell_type": "markdown", - "id": "5033ee5f", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "Here's an outline of the function to get you started." - ] - }, - { - "cell_type": "code", - "execution_count": 54, - "id": "7d898f43", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "def subtract_time(t1, t2):\n", - " \"\"\"Compute the difference between two times in seconds.\n", - " \n", - " >>> subtract_time(make_time(3, 2, 1), make_time(3, 2, 0))\n", - " 1\n", - " >>> subtract_time(make_time(3, 2, 1), make_time(3, 0, 0))\n", - " 121\n", - " >>> subtract_time(make_time(11, 12, 0), make_time(9, 40, 0))\n", - " 5520\n", - " \"\"\"\n", - " return None" - ] - }, - { - "cell_type": "code", - "execution_count": 55, - "id": "f1b54959", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def subtract_time(t1, t2):\n", - " \"\"\"Compute the difference between two times in seconds.\n", - " \n", - " >>> subtract_time(make_time(3, 2, 1), make_time(3, 2, 0))\n", - " 1\n", - " >>> subtract_time(make_time(3, 2, 1), make_time(3, 0, 0))\n", - " 121\n", - " >>> subtract_time(make_time(11, 12, 0), make_time(9, 40, 0))\n", - " 5520\n", - " \"\"\"\n", - " return time_to_int(t1) - time_to_int(t2)" - ] - }, - { - "cell_type": "markdown", - "id": "73334265", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "You can use `doctest` to test your function." - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "id": "5a25a3de", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "from doctest import run_docstring_examples\n", - "\n", - "def run_doctests(func):\n", - " run_docstring_examples(func, globals(), name=func.__name__)\n", - "\n", - "run_doctests(subtract_time)" - ] - }, - { - "cell_type": "markdown", - "id": "c3189549", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "Write a function called `is_after` that takes two `Time` objects and returns `True` if the first time is later in the day than the second, and `False` otherwise." - ] - }, - { - "cell_type": "markdown", - "id": "fd4ac340", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "Here's an outline of the function to get you started." - ] - }, - { - "cell_type": "code", - "execution_count": 57, - "id": "05499ffa", - "metadata": {}, - "outputs": [], - "source": [ - "def is_after(t1, t2):\n", - " \"\"\"Checks whether `t1` is after `t2`.\n", - " \n", - " >>> is_after(make_time(3, 2, 1), make_time(3, 2, 0))\n", - " True\n", - " >>> is_after(make_time(3, 2, 1), make_time(3, 2, 1))\n", - " False\n", - " >>> is_after(make_time(11, 12, 0), make_time(9, 40, 0))\n", - " True\n", - " \"\"\"\n", - " return None" - ] - }, - { - "cell_type": "code", - "execution_count": 58, - "id": "12b4ad17", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def is_after(t1, t2):\n", - " \"\"\"Checks whether `t1` is after `t2`.\n", - " \n", - " >>> is_after(make_time(3, 2, 1), make_time(3, 2, 0))\n", - " True\n", - " >>> is_after(make_time(3, 2, 1), make_time(3, 2, 1))\n", - " False\n", - " >>> is_after(make_time(11, 12, 0), make_time(9, 40, 0))\n", - " True\n", - " \"\"\"\n", - " return time_to_int(t1) > time_to_int(t2)" - ] - }, - { - "cell_type": "markdown", - "id": "f9da8ede", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "You can use `doctest` to test your function." - ] - }, - { - "cell_type": "code", - "execution_count": 59, - "id": "4e580404", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "run_doctests(is_after)" - ] - }, - { - "cell_type": "markdown", - "id": "16dff862", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "Here's a definition for a `Date` class that represents a date -- that is, a year, month, and day of the month." - ] - }, - { - "cell_type": "code", - "execution_count": 60, - "id": "c5de60ed", - "metadata": {}, - "outputs": [], - "source": [ - "class Date:\n", - " \"\"\"Represents a year, month, and day\"\"\"" - ] - }, - { - "cell_type": "markdown", - "id": "3311fa97", - "metadata": {}, - "source": [ - "1. Write a function called `make_date` that takes `year`, `month`, and `day` as parameters, makes a `Date` object, assigns the parameters to attributes, and returns the result the new object. Create an object that represents June 22, 1933.\n", - "\n", - "2. Write a function called `print_date` that takes a `Date` object, uses an f-string to format the attributes, and prints the result. If you test it with the `Date` you created, the result should be `1933-06-22`.\n", - "\n", - "3. Write a function called `is_after` that takes two `Date` objects as parameters and returns `True` if the first comes after the second. Create a second object that represents September 17, 1933, and check whether it comes after the first object.\n", - "\n", - "Hint: You might find it useful to write a function called `date_to_tuple` that takes a `Date` object and returns a tuple that contains its attributes in year, month, day order." - ] - }, - { - "cell_type": "markdown", - "id": "90b10ca5", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "You can use this function outline to get started." - ] - }, - { - "cell_type": "code", - "execution_count": 61, - "id": "9e16bcde", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "def make_date(year, month, day):\n", - " return None" - ] - }, - { - "cell_type": "code", - "execution_count": 62, - "id": "ff95300b", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def make_date(year, month, day):\n", - " date = Date()\n", - " date.year = year\n", - " date.month = month\n", - " date.day = day\n", - " return date" - ] - }, - { - "cell_type": "markdown", - "id": "20c5edf8", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "You can use these examples to test `make_date`." - ] - }, - { - "cell_type": "code", - "execution_count": 63, - "id": "62180007", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "birthday1 = make_date(1933, 6, 22)" - ] - }, - { - "cell_type": "code", - "execution_count": 64, - "id": "2d70104e", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "birthday2 = make_date(1933, 9, 17)" - ] - }, - { - "cell_type": "markdown", - "id": "16ff5bef", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "You can use this function outline to get started." - ] - }, - { - "cell_type": "code", - "execution_count": 65, - "id": "2cc0653e", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "def print_date(date):\n", - " print('')" - ] - }, - { - "cell_type": "code", - "execution_count": 66, - "id": "0b8f63df", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def print_date(date):\n", - " s = f'{date.year}-{date.month:02d}-{date.day:02d}'\n", - " print(s)" - ] - }, - { - "cell_type": "markdown", - "id": "c36c432e", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "You can use this example to test `print_date`." - ] - }, - { - "cell_type": "code", - "execution_count": 67, - "id": "2d0a026d", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1933-06-22\n" - ] - } - ], - "source": [ - "print_date(birthday1)" - ] - }, - { - "cell_type": "markdown", - "id": "17565b1e", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "You can use this function outline to get started." - ] - }, - { - "cell_type": "code", - "execution_count": 68, - "id": "70413f48", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "def is_after(date1, date2):\n", - " return None" - ] - }, - { - "cell_type": "code", - "execution_count": 69, - "id": "b244a057", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def date_to_tuple(date):\n", - " return date.year, date.month, date.day" - ] - }, - { - "cell_type": "code", - "execution_count": 70, - "id": "5fab04bd", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def is_after(date1, date2):\n", - " t1 = date_to_tuple(date1)\n", - " t2 = date_to_tuple(date2)\n", - " return t1 > t2" - ] - }, - { - "cell_type": "markdown", - "id": "d9b5dd67", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "You can use these examples to test `is_after`." - ] - }, - { - "cell_type": "code", - "execution_count": 71, - "id": "59166d30", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 71, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "is_after(birthday1, birthday2) # should be False" - ] - }, - { - "cell_type": "code", - "execution_count": 72, - "id": "c33706ee", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 72, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "is_after(birthday2, birthday1) # should be True" - ] - }, - { - "cell_type": "markdown", - "id": "d6f1cc2f", - "metadata": {}, - "source": [] - }, - { - "cell_type": "markdown", - "id": "a7f4edf8", - "metadata": { - "tags": [] - }, - "source": [ - "[Think Python: 3rd Edition](https://allendowney.github.io/ThinkPython/index.html)\n", - "\n", - "Copyright 2024 [Allen B. Downey](https://allendowney.com)\n", - "\n", - "Code license: [MIT License](https://mit-license.org/)\n", - "\n", - "Text license: [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-nc-sa/4.0/)" - ] - } - ], - "metadata": { - "celltoolbar": "Tags", - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.11" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/soln/chap15.ipynb b/soln/chap15.ipynb deleted file mode 100644 index b61ac32..0000000 --- a/soln/chap15.ipynb +++ /dev/null @@ -1,1324 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "1331faa1", - "metadata": {}, - "source": [ - "You can order print and ebook versions of *Think Python 3e* from\n", - "[Bookshop.org](https://bookshop.org/a/98697/9781098155438) and\n", - "[Amazon](https://www.amazon.com/_/dp/1098155432?smid=ATVPDKIKX0DER&_encoding=UTF8&tag=oreilly20-20&_encoding=UTF8&tag=greenteapre01-20&linkCode=ur2&linkId=e2a529f94920295d27ec8a06e757dc7c&camp=1789&creative=9325)." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "3161b50b", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "from os.path import basename, exists\n", - "\n", - "def download(url):\n", - " filename = basename(url)\n", - " if not exists(filename):\n", - " from urllib.request import urlretrieve\n", - "\n", - " local, _ = urlretrieve(url, filename)\n", - " print(\"Downloaded \" + str(local))\n", - " return filename\n", - "\n", - "download('https://github.com/AllenDowney/ThinkPython/raw/v3/thinkpython.py');\n", - "download('https://github.com/AllenDowney/ThinkPython/raw/v3/diagram.py');\n", - "\n", - "import thinkpython" - ] - }, - { - "cell_type": "markdown", - "id": "fa22117f", - "metadata": {}, - "source": [ - "# Classes and Methods\n", - "\n", - "Python is an **object-oriented language** -- that is, it provides features that support object-oriented programming, which has these defining characteristics:\n", - "\n", - "- Most of the computation is expressed in terms of operations on objects.\n", - "\n", - "- Objects often represent things in the real world, and methods often correspond to the ways things in the real world interact.\n", - "\n", - "- Programs include class and method definitions.\n", - "\n", - "For example, in the previous chapter we defined a `Time` class that corresponds to the way people record the time of day, and we defined functions that correspond to the kinds of things people do with times.\n", - "But there was no explicit connection between the definition of the `Time` class and the function definitions that follow.\n", - "We can make the connection explicit by rewriting a function as a **method**, which is defined inside a class definition." - ] - }, - { - "cell_type": "markdown", - "id": "9857823a", - "metadata": {}, - "source": [ - "## Defining methods\n", - "\n", - "In the previous chapter we defined a class named `Time` and wrote a function named `print_time` that displays a time of day." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "ee093ca4", - "metadata": {}, - "outputs": [], - "source": [ - "class Time:\n", - " \"\"\"Represents the time of day.\"\"\"\n", - "\n", - "def print_time(time):\n", - " s = f'{time.hour:02d}:{time.minute:02d}:{time.second:02d}'\n", - " print(s)" - ] - }, - { - "cell_type": "markdown", - "id": "a89ddf58", - "metadata": {}, - "source": [ - "To make `print_time` a method, all we have to do is move the function\n", - "definition inside the class definition. Notice the change in\n", - "indentation.\n", - "\n", - "At the same time, we'll change the name of the parameter from `time` to `self`.\n", - "This change is not necessary, but it is conventional for the first parameter of a method to be named `self`." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "fd26a1bc", - "metadata": {}, - "outputs": [], - "source": [ - "class Time:\n", - " \"\"\"Represents the time of day.\"\"\" \n", - "\n", - " def print_time(self):\n", - " s = f'{self.hour:02d}:{self.minute:02d}:{self.second:02d}'\n", - " print(s)" - ] - }, - { - "cell_type": "markdown", - "id": "8da4079c", - "metadata": {}, - "source": [ - "To call this method, you have to pass a `Time` object as an argument.\n", - "Here's the function we'll use to make a `Time` object." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "5fc157ea", - "metadata": {}, - "outputs": [], - "source": [ - "def make_time(hour, minute, second):\n", - " time = Time()\n", - " time.hour = hour\n", - " time.minute = minute\n", - " time.second = second\n", - " return time" - ] - }, - { - "cell_type": "markdown", - "id": "c6ad4e12", - "metadata": {}, - "source": [ - "And here's a `Time` instance." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "35acd8e6", - "metadata": {}, - "outputs": [], - "source": [ - "start = make_time(9, 40, 0)" - ] - }, - { - "cell_type": "markdown", - "id": "bbbcd333", - "metadata": {}, - "source": [ - "Now there are two ways to call `print_time`. The first (and less common)\n", - "way is to use function syntax." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "f755081c", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "09:40:00\n" - ] - } - ], - "source": [ - "Time.print_time(start)" - ] - }, - { - "cell_type": "markdown", - "id": "2eb0847e", - "metadata": {}, - "source": [ - "In this version, `Time` is the name of the class, `print_time` is the name of the method, and `start` is passed as a parameter.\n", - "The second (and more idiomatic) way is to use method syntax:" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "d6f91aec", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "09:40:00\n" - ] - } - ], - "source": [ - "start.print_time()" - ] - }, - { - "cell_type": "markdown", - "id": "c80c40f0", - "metadata": {}, - "source": [ - "In this version, `start` is the object the method is invoked on, which is called the **receiver**, based on the analogy that invoking a method is like sending a message to an object.\n", - "\n", - "Regardless of the syntax, the behavior of the method is the same.\n", - "The receiver is assigned to the first parameter, so inside the method, `self` refers to the same object as `start`." - ] - }, - { - "cell_type": "markdown", - "id": "8deb6c34", - "metadata": {}, - "source": [ - "## Another method\n", - "\n", - "Here's the `time_to_int` function from the previous chapter." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "24c4c985", - "metadata": {}, - "outputs": [], - "source": [ - "def time_to_int(time):\n", - " minutes = time.hour * 60 + time.minute\n", - " seconds = minutes * 60 + time.second\n", - " return seconds" - ] - }, - { - "cell_type": "markdown", - "id": "144e043f", - "metadata": {}, - "source": [ - "And here's a version rewritten as a method.\n" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "dde6f15f", - "metadata": {}, - "outputs": [], - "source": [ - "%%add_method_to Time\n", - "\n", - " def time_to_int(self):\n", - " minutes = self.hour * 60 + self.minute\n", - " seconds = minutes * 60 + self.second\n", - " return seconds" - ] - }, - { - "cell_type": "markdown", - "id": "e3a721ab", - "metadata": {}, - "source": [ - "The first line uses the special command `add_method_to`, which adds a method to a previously-defined class.\n", - "This command works in a Jupyter notebook, but it is not part of Python, so it won't work in other environments.\n", - "Normally, all methods of a class are inside the class definition, so they get defined at the same time as the class.\n", - "But for this book, it is helpful to define one method at a time.\n", - "\n", - "As in the previous example, the method definition is indented and the name of the parameter is `self`.\n", - "Other than that, the method is identical to the function.\n", - "Here's how we invoke it." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "8943fa0a", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "34800" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "start.time_to_int()" - ] - }, - { - "cell_type": "markdown", - "id": "14565505", - "metadata": {}, - "source": [ - "It is common to say that we \"call\" a function and \"invoke\" a method, but they mean the same thing." - ] - }, - { - "cell_type": "markdown", - "id": "7bc24683", - "metadata": {}, - "source": [ - "## Static methods\n", - "\n", - "As another example, let's consider the `int_to_time` function.\n", - "Here's the version from the previous chapter." - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "8547b1c2", - "metadata": {}, - "outputs": [], - "source": [ - "def int_to_time(seconds):\n", - " minute, second = divmod(seconds, 60)\n", - " hour, minute = divmod(minute, 60)\n", - " return make_time(hour, minute, second)" - ] - }, - { - "cell_type": "markdown", - "id": "2b77c2a0", - "metadata": {}, - "source": [ - "This function takes `seconds` as a parameter and returns a new `Time` object.\n", - "If we transform it into a method of the `Time` class, we have to invoke it on a `Time` object.\n", - "But if we're trying to create a new `Time` object, what are we supposed to invoke it on?\n", - "\n", - "We can solve this chicken-and-egg problem using a **static method**, which is a method that does not require an instance of the class to be invoked.\n", - "Here's how we rewrite this function as a static method." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "b233669c", - "metadata": {}, - "outputs": [], - "source": [ - "%%add_method_to Time\n", - "\n", - " def int_to_time(seconds):\n", - " minute, second = divmod(seconds, 60)\n", - " hour, minute = divmod(minute, 60)\n", - " return make_time(hour, minute, second)" - ] - }, - { - "cell_type": "markdown", - "id": "a7e2e788", - "metadata": {}, - "source": [ - "Because it is a static method, it does not have `self` as a parameter.\n", - "To invoke it, we use `Time`, which is the class object." - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "7e88f06b", - "metadata": {}, - "outputs": [], - "source": [ - "start = Time.int_to_time(34800)" - ] - }, - { - "cell_type": "markdown", - "id": "d2f4fd5a", - "metadata": {}, - "source": [ - "The result is a new object that represents 9:40." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "8c9f66b0", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "09:40:00\n" - ] - } - ], - "source": [ - "start.print_time()" - ] - }, - { - "cell_type": "markdown", - "id": "e6a18c76", - "metadata": {}, - "source": [ - "Now that we have `Time.from_seconds`, we can use it to write `add_time` as a method.\n", - "Here's the function from the previous chapter." - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "c600d536", - "metadata": {}, - "outputs": [], - "source": [ - "def add_time(time, hours, minutes, seconds):\n", - " duration = make_time(hours, minutes, seconds)\n", - " seconds = time_to_int(time) + time_to_int(duration)\n", - " return int_to_time(seconds)" - ] - }, - { - "cell_type": "markdown", - "id": "8e56da48", - "metadata": {}, - "source": [ - "And here's a version rewritten as a method." - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "c6fa0176", - "metadata": {}, - "outputs": [], - "source": [ - "%%add_method_to Time\n", - "\n", - " def add_time(self, hours, minutes, seconds):\n", - " duration = make_time(hours, minutes, seconds)\n", - " seconds = time_to_int(self) + time_to_int(duration)\n", - " return Time.int_to_time(seconds)" - ] - }, - { - "cell_type": "markdown", - "id": "b784a4ea", - "metadata": {}, - "source": [ - "`add_time` has `self` as a parameter because it is not a static method.\n", - "It is an ordinary method -- also called an **instance method**.\n", - "To invoke it, we need a `Time` instance." - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "e17b2ad7", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "11:12:00\n" - ] - } - ], - "source": [ - "end = start.add_time(1, 32, 0)\n", - "print_time(end)" - ] - }, - { - "cell_type": "markdown", - "id": "f1c806a9", - "metadata": {}, - "source": [ - "## Comparing Time objects\n", - "\n", - "As one more example, let's write `is_after` as a method.\n", - "Here's the `is_after` function, which is a solution to an exercise in the previous chapter." - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "971eebbb", - "metadata": {}, - "outputs": [], - "source": [ - "def is_after(t1, t2):\n", - " return time_to_int(t1) > time_to_int(t2)" - ] - }, - { - "cell_type": "markdown", - "id": "8e7153e8", - "metadata": {}, - "source": [ - "And here it is as a method." - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "90d7234d", - "metadata": {}, - "outputs": [], - "source": [ - "%%add_method_to Time\n", - "\n", - " def is_after(self, other):\n", - " return self.time_to_int() > other.time_to_int()" - ] - }, - { - "cell_type": "markdown", - "id": "50815aec", - "metadata": {}, - "source": [ - "Because we're comparing two objects, and the first parameter is `self`, we'll call the second parameter `other`.\n", - "To use this method, we have to invoke it on one object and pass the\n", - "other as an argument." - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "19e3d639", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "end.is_after(start)" - ] - }, - { - "cell_type": "markdown", - "id": "cf97e358", - "metadata": {}, - "source": [ - "One nice thing about this syntax is that it almost reads like a question,\n", - "\"`end` is after `start`?\"" - ] - }, - { - "cell_type": "markdown", - "id": "15a17fce", - "metadata": {}, - "source": [ - "## The `__str__` method\n", - "\n", - "When you write a method, you can choose almost any name you want.\n", - "However, some names have special meanings.\n", - "For example, if an object has a method named `__str__`, Python uses that method to convert the object to a string.\n", - "For example, here is a `__str__` method for a time object." - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "f935a999", - "metadata": {}, - "outputs": [], - "source": [ - "%%add_method_to Time\n", - "\n", - " def __str__(self):\n", - " s = f'{self.hour:02d}:{self.minute:02d}:{self.second:02d}'\n", - " return s" - ] - }, - { - "cell_type": "markdown", - "id": "b056b729", - "metadata": {}, - "source": [ - "This method is similar to `print_time`, from the previous chapter, except that it returns the string rather than printing it.\n", - "\n", - "You can invoke this method in the usual way." - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "61d7275d", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'11:12:00'" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "end.__str__()" - ] - }, - { - "cell_type": "markdown", - "id": "76092a0c", - "metadata": {}, - "source": [ - "But Python can also invoke it for you.\n", - "If you use the built-in function `str` to convert a `Time` object to a string, Python uses the `__str__` method in the `Time` class." - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "b6dcc0c2", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'11:12:00'" - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "str(end)" - ] - }, - { - "cell_type": "markdown", - "id": "8a26caa8", - "metadata": {}, - "source": [ - "And it does the same if you print a `Time` object." - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "6e1e6fb3", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "11:12:00\n" - ] - } - ], - "source": [ - "print(end)" - ] - }, - { - "cell_type": "markdown", - "id": "97eb30c2", - "metadata": {}, - "source": [ - "Methods like `__str__` are called **special methods**.\n", - "You can identify them because their names begin and end with two underscores." - ] - }, - { - "cell_type": "markdown", - "id": "e01e9673", - "metadata": {}, - "source": [ - "## The init method\n", - "\n", - "The most special of the special methods is `__init__`, so-called because it initializes the attributes of a new object.\n", - "An `__init__` method for the `Time` class might look like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "7ddcca8a", - "metadata": {}, - "outputs": [], - "source": [ - "%%add_method_to Time\n", - "\n", - " def __init__(self, hour=0, minute=0, second=0):\n", - " self.hour = hour\n", - " self.minute = minute\n", - " self.second = second" - ] - }, - { - "cell_type": "markdown", - "id": "8ba624c3", - "metadata": {}, - "source": [ - "Now when we instantiate a `Time` object, Python invokes `__init__`, and passes along the arguments.\n", - "So we can create an object and initialize the attributes at the same time." - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "afd652c6", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "09:40:00\n" - ] - } - ], - "source": [ - "time = Time(9, 40, 0)\n", - "print(time)" - ] - }, - { - "cell_type": "markdown", - "id": "55e0e296", - "metadata": {}, - "source": [ - "In this example, the parameters are optional, so if you call `Time` with no arguments,\n", - "you get the default values." - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "8a852588", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "00:00:00\n" - ] - } - ], - "source": [ - "time = Time()\n", - "print(time)" - ] - }, - { - "cell_type": "markdown", - "id": "bacb036d", - "metadata": {}, - "source": [ - "If you provide one argument, it overrides `hour`:" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "0ff75ace", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "09:00:00\n" - ] - } - ], - "source": [ - "time = Time(9)\n", - "print(time)" - ] - }, - { - "cell_type": "markdown", - "id": "37edb221", - "metadata": {}, - "source": [ - "If you provide two arguments, they override `hour` and `minute`." - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "b8e948bc", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "09:45:00\n" - ] - } - ], - "source": [ - "time = Time(9, 45)\n", - "print(time)" - ] - }, - { - "cell_type": "markdown", - "id": "277de217", - "metadata": {}, - "source": [ - "And if you provide three arguments, they override all three default\n", - "values.\n", - "\n", - "When I write a new class, I almost always start by writing `__init__`, which makes it easier to create objects, and `__str__`, which is useful for debugging." - ] - }, - { - "cell_type": "markdown", - "id": "94bbbd7d", - "metadata": {}, - "source": [ - "## Operator overloading\n", - "\n", - "By defining other special methods, you can specify the behavior of\n", - "operators on programmer-defined types. For example, if you define a\n", - "method named `__add__` for the `Time` class, you can use the `+`\n", - "operator on Time objects.\n", - "\n", - "Here is an `__add__` method." - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "id": "0d140036", - "metadata": {}, - "outputs": [], - "source": [ - "%%add_method_to Time\n", - "\n", - " def __add__(self, other):\n", - " seconds = self.time_to_int() + other.time_to_int()\n", - " return Time.int_to_time(seconds)" - ] - }, - { - "cell_type": "markdown", - "id": "0221c9ad", - "metadata": {}, - "source": [ - "We can use it like this." - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "id": "280acfce", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "11:12:00\n" - ] - } - ], - "source": [ - "duration = Time(1, 32)\n", - "end = start + duration\n", - "print(end)" - ] - }, - { - "cell_type": "markdown", - "id": "7cc7866e", - "metadata": {}, - "source": [ - "There is a lot happening when we run these three lines of code:\n", - "\n", - "* When we instantiate a `Time` object, the `__init__` method is invoked.\n", - "\n", - "* When we use the `+` operator with a `Time` object, its `__add__` method is invoked.\n", - "\n", - "* And when we print a `Time` object, its `__str__` method is invoked.\n", - "\n", - "Changing the behavior of an operator so that it works with programmer-defined types is called **operator overloading**.\n", - "For every operator, like `+`, there is a corresponding special method, like `__add__`. " - ] - }, - { - "cell_type": "markdown", - "id": "b7299e62", - "metadata": {}, - "source": [ - "## Debugging\n", - "\n", - "A `Time` object is valid if the values of `minute` and `second` are between `0` and `60` -- including `0` but not `60` -- and if `hour` is positive.\n", - "Also, `hour` and `minute` should be integer values, but we might allow `second` to have a fraction part.\n", - "Requirements like these are called **invariants** because they should always be true.\n", - "To put it a different way, if they are not true, something has gone wrong.\n", - "\n", - "Writing code to check invariants can help detect errors and find their causes.\n", - "For example, you might have a method like `is_valid` that takes a Time object and returns `False` if it violates an invariant." - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "id": "6eb34442", - "metadata": {}, - "outputs": [], - "source": [ - "%%add_method_to Time\n", - "\n", - " def is_valid(self):\n", - " if self.hour < 0 or self.minute < 0 or self.second < 0:\n", - " return False\n", - " if self.minute >= 60 or self.second >= 60:\n", - " return False\n", - " if not isinstance(self.hour, int):\n", - " return False\n", - " if not isinstance(self.minute, int):\n", - " return False\n", - " return True" - ] - }, - { - "cell_type": "markdown", - "id": "a10ad3db", - "metadata": {}, - "source": [ - "Then, at the beginning of each method you can check the arguments to make sure they are valid." - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "id": "57d86843", - "metadata": {}, - "outputs": [], - "source": [ - "%%add_method_to Time\n", - "\n", - " def is_after(self, other):\n", - " assert self.is_valid(), 'self is not a valid Time'\n", - " assert other.is_valid(), 'self is not a valid Time'\n", - " return self.time_to_int() > other.time_to_int()" - ] - }, - { - "cell_type": "markdown", - "id": "e7c78e9a", - "metadata": {}, - "source": [ - "The `assert` statement evaluates the expression that follows. If the result is `True`, it does nothing; if the result is `False`, it causes an `AssertionError`.\n", - "Here's an example." - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "id": "5452888b", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "00:132:00\n" - ] - } - ], - "source": [ - "duration = Time(minute=132)\n", - "print(duration)" - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "id": "56680d97", - "metadata": { - "tags": [ - "raises-exception" - ] - }, - "outputs": [ - { - "ename": "AssertionError", - "evalue": "self is not a valid Time", - "output_type": "error", - "traceback": [ - "\u001b[0;31mAssertionError\u001b[0m\u001b[0;31m:\u001b[0m self is not a valid Time\n" - ] - } - ], - "source": [ - "%%expect AssertionError\n", - "\n", - "start.is_after(duration)" - ] - }, - { - "cell_type": "markdown", - "id": "18bd34ad", - "metadata": {}, - "source": [ - "`assert` statements are useful because they distinguish code that deals with normal conditions from code that checks for errors." - ] - }, - { - "cell_type": "markdown", - "id": "58b86fbe", - "metadata": {}, - "source": [ - "## Glossary\n", - "\n", - "**object-oriented language:**\n", - "A language that provides features to support object-oriented programming, notably user-defined types.\n", - "\n", - "**method:**\n", - "A function that is defined inside a class definition and is invoked on instances of that class.\n", - "\n", - "**receiver:**\n", - "The object a method is invoked on.\n", - "\n", - "**static method:**\n", - "A method that can be invoked without an object as receiver.\n", - "\n", - "**instance method:**\n", - "A method that must be invoked with an object as receiver.\n", - "\n", - "**special method:**\n", - "A method that changes the way operators and some functions work with an object.\n", - "\n", - "**operator overloading:**\n", - "The process of using special methods to change the way operators with with user-defined types.\n", - "\n", - "**invariant:**\n", - " A condition that should always be true during the execution of a program." - ] - }, - { - "cell_type": "markdown", - "id": "796adf5c", - "metadata": {}, - "source": [ - "## Exercises" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "3115ea33", - "metadata": { - "tags": [ - "remove-print" - ] - }, - "outputs": [], - "source": [ - "# This cell tells Jupyter to provide detailed debugging information\n", - "# when a runtime error occurs. Run it before working on the exercises.\n", - "\n", - "%xmode Verbose" - ] - }, - { - "cell_type": "markdown", - "id": "25cd6888", - "metadata": {}, - "source": [ - "### Ask a virtual assistant\n", - "\n", - "For more information about static methods, ask a virtual assistant:\n", - "\n", - "* \"What's the difference between an instance method and a static method?\"\n", - "\n", - "* \"Why are static methods called static?\"\n", - "\n", - "If you ask a virtual assistant to generate a static method, the result will probably begin with `@staticmethod`, which is a \"decorator\" that indicates that it is a static method.\n", - "Decorators are not covered in this book, but if you are curious, you can ask a VA for more information.\n", - "\n", - "In this chapter we rewrote several functions as methods.\n", - "Virtual assistants are generally good at this kind of code transformation.\n", - "As an example, paste the following function into a VA and ask it, \"Rewrite this function as a method of the `Time` class.\"" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "id": "133d7679", - "metadata": {}, - "outputs": [], - "source": [ - "def subtract_time(t1, t2):\n", - " return time_to_int(t1) - time_to_int(t2)" - ] - }, - { - "cell_type": "markdown", - "id": "fc9f135b-e242-4ef6-83eb-8e028235c07b", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "In the previous chapter, a series of exercises asked you to write a `Date` class and several functions that work with `Date` objects.\n", - "Now let's practice rewriting those functions as methods.\n", - "\n", - "1. Write a definition for a `Date` class that represents a date -- that is, a year, month, and day of the month.\n", - "\n", - "2. Write an `__init__` method that takes `year`, `month`, and `day` as parameters and assigns the parameters to attributes. Create an object that represents June 22, 1933.\n", - "\n", - "3. Write `__str__` method that uses an f-string to format the attributes and returns the result. If you test it with the `Date` you created, the result should be `1933-06-22`.\n", - "\n", - "4. Write a method called `is_after` that takes two `Date` objects and returns `True` if the first comes after the second. Create a second object that represents September 17, 1933, and check whether it comes after the first object.\n", - "\n", - "Hint: You might find it useful write a method called `to_tuple` that returns a tuple that contains the attributes of a `Date` object in year-month-day order." - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "id": "3c9f3777-4869-481e-9f4e-4223d6028913", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "class Date:\n", - " \n", - " def __init__(self, year, month, day):\n", - " self.year = year\n", - " self.month = month\n", - " self.day = day\n", - "\n", - " def __str__(date):\n", - " s = f'{date.year}-{date.month:02d}-{date.day:02d}'\n", - " return s\n", - "\n", - " def to_tuple(self):\n", - " return self.year, self.month, self.day\n", - "\n", - " def is_after(self, other):\n", - " t1 = self.to_tuple()\n", - " t2 = other.to_tuple()\n", - " return t1 > t2" - ] - }, - { - "cell_type": "markdown", - "id": "1122620d-f3f6-4746-8675-13ce0b7f3ee9", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "You can use these examples to test your solution." - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "id": "fd4b2521-aa71-45da-97eb-ce62ce2714ad", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1933-06-22\n" - ] - } - ], - "source": [ - "birthday1 = Date(1933, 6, 22)\n", - "print(birthday1)" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "id": "ee3f1294-cad1-406b-a574-045ad2b84294", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1933-09-17\n" - ] - } - ], - "source": [ - "birthday2 = Date(1933, 9, 17)\n", - "print(birthday2)" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "id": "ac093f7b-83cf-4488-8842-5c71bcfa35ec", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 40, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "birthday1.is_after(birthday2) # should be False" - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "id": "7e7cb5e1-631f-4b1e-874f-eb16d4792625", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 41, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "birthday2.is_after(birthday1) # should be True" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "5b92712d", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "id": "a7f4edf8", - "metadata": { - "tags": [] - }, - "source": [ - "[Think Python: 3rd Edition](https://allendowney.github.io/ThinkPython/index.html)\n", - "\n", - "Copyright 2024 [Allen B. Downey](https://allendowney.com)\n", - "\n", - "Code license: [MIT License](https://mit-license.org/)\n", - "\n", - "Text license: [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-nc-sa/4.0/)" - ] - } - ], - "metadata": { - "celltoolbar": "Tags", - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.11" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/soln/chap16.ipynb b/soln/chap16.ipynb deleted file mode 100644 index 4c329f5..0000000 --- a/soln/chap16.ipynb +++ /dev/null @@ -1,2607 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "1331faa1", - "metadata": {}, - "source": [ - "You can order print and ebook versions of *Think Python 3e* from\n", - "[Bookshop.org](https://bookshop.org/a/98697/9781098155438) and\n", - "[Amazon](https://www.amazon.com/_/dp/1098155432?smid=ATVPDKIKX0DER&_encoding=UTF8&tag=oreilly20-20&_encoding=UTF8&tag=greenteapre01-20&linkCode=ur2&linkId=e2a529f94920295d27ec8a06e757dc7c&camp=1789&creative=9325)." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "ae5a86f8", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "from os.path import basename, exists\n", - "\n", - "def download(url):\n", - " filename = basename(url)\n", - " if not exists(filename):\n", - " from urllib.request import urlretrieve\n", - "\n", - " local, _ = urlretrieve(url, filename)\n", - " print(\"Downloaded \" + str(local))\n", - " return filename\n", - "\n", - "download('https://github.com/AllenDowney/ThinkPython/raw/v3/thinkpython.py');\n", - "download('https://github.com/AllenDowney/ThinkPython/raw/v3/diagram.py');\n", - "download('https://github.com/ramalho/jupyturtle/releases/download/2024-03/jupyturtle.py');\n", - "\n", - "import thinkpython" - ] - }, - { - "cell_type": "markdown", - "id": "e826e661", - "metadata": {}, - "source": [ - "# Classes and Objects\n", - "\n", - "At this point we have defined classes and created objects that represent the time of day and the day of the year.\n", - "And we've defined methods that create, modify, and perform computations with these objects.\n", - "\n", - "In this chapter we'll continue our tour of object-oriented programming (OOP) by defining classes that represent geometric objects, including points, lines, rectangles, and circles.\n", - "We'll write methods that create and modify these objects, and we'll use the `jupyturtle` module to draw them.\n", - "\n", - "I'll use these classes to demonstrate OOP topics including object identity and equivalence, shallow and deep copying, and polymorphism." - ] - }, - { - "cell_type": "markdown", - "id": "6b414d4a", - "metadata": { - "tags": [ - "section_create_point" - ] - }, - "source": [ - "## Creating a Point\n", - "\n", - "In computer graphics a location on the screen is often represented using a pair of coordinates in an `x`-`y` plane.\n", - "By convention, the point `(0, 0)` usually represents the upper-left corner of the screen, and `(x, y)` represents the point `x` units to the right and `y` units down from the origin.\n", - "Compared to the Cartesian coordinate system you might have seen in a math class, the `y` axis is upside-down.\n", - "\n", - "There are several ways we might represent a point in Python:\n", - "\n", - "- We can store the coordinates separately in two variables, `x` and `y`.\n", - "\n", - "- We can store the coordinates as elements in a list or tuple.\n", - "\n", - "- We can create a new type to represent points as objects.\n", - "\n", - "In object-oriented programming, it would be most idiomatic to create a new type.\n", - "To do that, we'll start with a class definition for `Point`." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "c9c99d2c", - "metadata": {}, - "outputs": [], - "source": [ - "class Point:\n", - " \"\"\"Represents a point in 2-D space.\"\"\"\n", - " \n", - " def __init__(self, x, y):\n", - " self.x = x\n", - " self.y = y\n", - " \n", - " def __str__(self):\n", - " return f'Point({self.x}, {self.y})'" - ] - }, - { - "cell_type": "markdown", - "id": "3d35a095", - "metadata": {}, - "source": [ - "The `__init__` method takes the coordinates as parameters and assigns them to attributes `x` and `y`.\n", - "The `__str__` method returns a string representation of the `Point`.\n", - "\n", - "Now we can instantiate and display a `Point` object like this." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "d318001a", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Point(0, 0)\n" - ] - } - ], - "source": [ - "start = Point(0, 0)\n", - "print(start)" - ] - }, - { - "cell_type": "markdown", - "id": "b3fd8858", - "metadata": {}, - "source": [ - "The following diagram shows the state of the new object. " - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "3eb47826", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "from diagram import make_frame, make_binding\n", - "\n", - "d1 = vars(start)\n", - "frame = make_frame(d1, name='Point', dy=-0.25, offsetx=0.18)\n", - "binding = make_binding('start', frame)" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "6702a353", - "metadata": { - "tags": [ - "remove-input" - ] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from diagram import diagram, adjust\n", - "\n", - "width, height, x, y = [1.41, 0.89, 0.26, 0.5]\n", - "ax = diagram(width, height)\n", - "bbox = binding.draw(ax, x, y)\n", - "#adjust(x, y, bbox)" - ] - }, - { - "cell_type": "markdown", - "id": "713b7410", - "metadata": {}, - "source": [ - "As usual, a programmer-defined type is represented by a box with the name of the type outside and the attributes inside.\n", - "\n", - "In general, programmer-defined types are mutable, so we can write a method like `translate` that takes two numbers, `dx` and `dy`, and adds them to the attributes `x` and `y`." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "0f710c4f", - "metadata": {}, - "outputs": [], - "source": [ - "%%add_method_to Point\n", - "\n", - " def translate(self, dx, dy):\n", - " self.x += dx\n", - " self.y += dy" - ] - }, - { - "cell_type": "markdown", - "id": "4d183292", - "metadata": {}, - "source": [ - "This function translates the `Point` from one location in the plane to another.\n", - "If we don't want to modify an existing `Point`, we can use `copy` to copy the original object and then modify the copy." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "6e37126b", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Point(300, 0)\n" - ] - } - ], - "source": [ - "from copy import copy\n", - "\n", - "end1 = copy(start)\n", - "end1.translate(300, 0)\n", - "print(end1)" - ] - }, - { - "cell_type": "markdown", - "id": "562567c2", - "metadata": {}, - "source": [ - "We can encapsulate those steps in another method called `translated`." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "f38bfaaa", - "metadata": {}, - "outputs": [], - "source": [ - "%%add_method_to Point\n", - "\n", - " def translated(self, dx=0, dy=0):\n", - " point = copy(self)\n", - " point.translate(dx, dy)\n", - " return point" - ] - }, - { - "cell_type": "markdown", - "id": "a7a635ee", - "metadata": {}, - "source": [ - "In the same way that the built in function `sort` modifies a list, and the `sorted` function creates a new list, now we have a `translate` method that modifies a `Point` and a `translated` method that creates a new one.\n", - "\n", - "Here's an example:" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "cef864a6", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Point(0, 150)\n" - ] - } - ], - "source": [ - "end2 = start.translated(0, 150)\n", - "print(end2)" - ] - }, - { - "cell_type": "markdown", - "id": "923362d2", - "metadata": {}, - "source": [ - "In the next section, we'll use these points to define and draw a line." - ] - }, - { - "cell_type": "markdown", - "id": "837f98fd", - "metadata": {}, - "source": [ - "## Creating a Line\n", - "\n", - "Now let's define a class that represents the line segment between two points.\n", - "As usual, we'll start with an `__init__` method and a `__str__` method." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "6ae012a1", - "metadata": {}, - "outputs": [], - "source": [ - "class Line:\n", - " def __init__(self, p1, p2):\n", - " self.p1 = p1\n", - " self.p2 = p2\n", - " \n", - " def __str__(self):\n", - " return f'Line({self.p1}, {self.p2})'" - ] - }, - { - "cell_type": "markdown", - "id": "d7dad30e", - "metadata": {}, - "source": [ - "With those two methods, we can instantiate and display a `Line` object we'll use to represent the `x` axis." - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "39b2ae2a", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Line(Point(0, 0), Point(300, 0))\n" - ] - } - ], - "source": [ - "line1 = Line(start, end1)\n", - "print(line1)" - ] - }, - { - "cell_type": "markdown", - "id": "e7b5fd9a", - "metadata": {}, - "source": [ - "When we call `print` and pass `line` as a parameter, `print` invokes `__str__` on `line`.\n", - "The `__str__` method uses an f-string to create a string representation of the `line`. \n", - "\n", - "The f-string contains two expressions in curly braces, `self.p1` and `self.p2`.\n", - "When those expressions are evaluated, the results are `Point` objects.\n", - "Then, when they are converted to strings, the `__str__` method from the `Point` class gets invoked.\n", - "\n", - "That's why, when we display a `Line`, the result contains the string representations of the `Point` objects.\n", - "\n", - "The following object diagram shows the state of this `Line` object." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "dee93202", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "from diagram import Binding, Value, Frame\n", - "\n", - "d1 = vars(line1.p1)\n", - "frame1 = make_frame(d1, name='Point', dy=-0.25, offsetx=0.17)\n", - "\n", - "d2 = vars(line1.p2)\n", - "frame2 = make_frame(d2, name='Point', dy=-0.25, offsetx=0.17)\n", - "\n", - "binding1 = Binding(Value('start'), frame1, dx=0.4)\n", - "binding2 = Binding(Value('end'), frame2, dx=0.4)\n", - "frame3 = Frame([binding1, binding2], name='Line', dy=-0.9, offsetx=0.4, offsety=-0.25)\n", - "\n", - "binding = make_binding('line1', frame3)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "43682c57", - "metadata": { - "tags": [ - "remove-input" - ] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "width, height, x, y = [2.45, 2.12, 0.27, 1.76]\n", - "ax = diagram(width, height)\n", - "bbox = binding.draw(ax, x, y)\n", - "#adjust(x, y, bbox)" - ] - }, - { - "cell_type": "markdown", - "id": "079859b5", - "metadata": {}, - "source": [ - "String representations and object diagrams are useful for debugging, but the point of this example is to generate graphics, not text!\n", - "So we'll use the `jupyturtle` module to draw lines on the screen.\n", - "\n", - "As we did in [Chapter 4](section_turtle_module), we'll use `make_turtle` to create a `Turtle` object and a small canvas where it can draw.\n", - "To draw lines, we'll use two new functions from the `jupyturtle` module:\n", - "\n", - "* `jumpto`, which takes two coordinates and moves the `Turtle` to the given location without drawing a line, and \n", - "\n", - "* `moveto`, which moves the `Turtle` from its current location to the given location, and draws a line segment between them.\n", - "\n", - "Here's how we import them." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "5225d870", - "metadata": {}, - "outputs": [], - "source": [ - "from jupyturtle import make_turtle, jumpto, moveto" - ] - }, - { - "cell_type": "markdown", - "id": "9d2dd88f", - "metadata": {}, - "source": [ - "And here's a method that draws a `Line`." - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "999843cb", - "metadata": {}, - "outputs": [], - "source": [ - "%%add_method_to Line\n", - "\n", - " def draw(self):\n", - " jumpto(self.p1.x, self.p1.y)\n", - " moveto(self.p2.x, self.p2.y)" - ] - }, - { - "cell_type": "markdown", - "id": "2341f0e0", - "metadata": {}, - "source": [ - "To show how it's used, I'll create a second line that represents the `y` axis." - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "6ac10ec7", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Line(Point(0, 0), Point(0, 150))\n" - ] - } - ], - "source": [ - "line2 = Line(start, end2)\n", - "print(line2)" - ] - }, - { - "cell_type": "markdown", - "id": "d7450736", - "metadata": {}, - "source": [ - "And then draw the axes." - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "b15b70dd", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - " \n", - "\n", - "\n", - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "make_turtle()\n", - "line1.draw()\n", - "line2.draw()" - ] - }, - { - "cell_type": "markdown", - "id": "473c156f", - "metadata": {}, - "source": [ - "As we define and draw more objects, we'll use these lines again.\n", - "But first let's talk about object equivalence and identity." - ] - }, - { - "cell_type": "markdown", - "id": "950da673", - "metadata": {}, - "source": [ - "## Equivalence and identity\n", - "\n", - "Suppose we create two points with the same coordinates." - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "62414805", - "metadata": {}, - "outputs": [], - "source": [ - "p1 = Point(200, 100)\n", - "p2 = Point(200, 100)" - ] - }, - { - "cell_type": "markdown", - "id": "82b14526", - "metadata": {}, - "source": [ - "If we use the `==` operator to compare them, we get the default behavior for programmer-defined types -- the result is `True` only if they are the same object, which they are not." - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "7c611eb2", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "p1 == p2" - ] - }, - { - "cell_type": "markdown", - "id": "96be0ff8", - "metadata": {}, - "source": [ - "If we want to change that behavior, we can provide a special method called `__eq__` that defines what it means for two `Point` objects to be equal." - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "3a976072", - "metadata": {}, - "outputs": [], - "source": [ - "%%add_method_to Point\n", - "\n", - "def __eq__(self, other):\n", - " return (self.x == other.x) and (self.y == other.y)" - ] - }, - { - "cell_type": "markdown", - "id": "7f4409de", - "metadata": {}, - "source": [ - "This definition considers two `Points` to be equal if their attributes are equal.\n", - "Now when we use the `==` operator, it invokes the `__eq__` method, which indicates that `p1` and `p2` are considered equal." - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "7660d756", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "p1 == p2" - ] - }, - { - "cell_type": "markdown", - "id": "52662e6a", - "metadata": {}, - "source": [ - "But the `is` operator still indicates that they are different objects." - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "e76ff9ef", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "p1 is p2" - ] - }, - { - "cell_type": "markdown", - "id": "c008d3dd", - "metadata": {}, - "source": [ - "It's not possible to override the `is` operator -- it always checks whether the objects are identical.\n", - "But for programmer-defined types, you can override the `==` operator so it checks whether the objects are equivalent.\n", - "And you can define what equivalent means." - ] - }, - { - "cell_type": "markdown", - "id": "893a8cab", - "metadata": {}, - "source": [ - "## Creating a Rectangle\n", - "\n", - "Now let's define a class that represents and draws rectangles.\n", - "To keep things simple, we'll assume that the rectangles are either vertical or horizontal, not at an angle.\n", - "What attributes do you think we should use to specify the location and size of a rectangle?\n", - "\n", - "There are at least two possibilities:\n", - "\n", - "- You could specify the width and height of the rectangle and the location of one corner.\n", - "\n", - "- You could specify two opposing corners.\n", - "\n", - "At this point it's hard to say whether either is better than the other, so let's implement the first one.\n", - "Here is the class definition." - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "c2a2aa29", - "metadata": {}, - "outputs": [], - "source": [ - "class Rectangle:\n", - " \"\"\"Represents a rectangle. \n", - "\n", - " attributes: width, height, corner.\n", - " \"\"\"\n", - " def __init__(self, width, height, corner):\n", - " self.width = width\n", - " self.height = height\n", - " self.corner = corner\n", - " \n", - " def __str__(self):\n", - " return f'Rectangle({self.width}, {self.height}, {self.corner})'" - ] - }, - { - "cell_type": "markdown", - "id": "df2852f3", - "metadata": {}, - "source": [ - "As usual, the `__init__` method assigns the parameters to attributes and the `__str__` returns a string representation of the object.\n", - "Now we can instantiate a `Rectangle` object, using a `Point` as the location of the upper-left corner." - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "5d36d561", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Rectangle(100, 50, Point(30, 20))\n" - ] - } - ], - "source": [ - "corner = Point(30, 20)\n", - "box1 = Rectangle(100, 50, corner)\n", - "print(box1)" - ] - }, - { - "cell_type": "markdown", - "id": "a9e0b5ec", - "metadata": {}, - "source": [ - "The following diagram shows the state of this object." - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "6e47d99a", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "from diagram import Binding, Value\n", - "\n", - "def make_rectangle_binding(name, box, **options):\n", - " d1 = vars(box.corner)\n", - " frame_corner = make_frame(d1, name='Point', dy=-0.25, offsetx=0.07)\n", - "\n", - " d2 = dict(width=box.width, height=box.height)\n", - " frame = make_frame(d2, name='Rectangle', dy=-0.25, offsetx=0.45)\n", - " binding = Binding(Value('corner'), frame1, dx=0.92, draw_value=False, **options)\n", - " frame.bindings.append(binding)\n", - "\n", - " binding = Binding(Value(name), frame)\n", - " return binding, frame_corner\n", - "\n", - "binding_box1, frame_corner1 = make_rectangle_binding('box1', box1)" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "1e7e4a72", - "metadata": { - "tags": [ - "remove-input" - ] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from diagram import Bbox\n", - "\n", - "width, height, x, y = [2.83, 1.49, 0.27, 1.1]\n", - "ax = diagram(width, height)\n", - "bbox1 = binding_box1.draw(ax, x, y)\n", - "bbox2 = frame_corner1.draw(ax, x+1.85, y-0.6)\n", - "bbox = Bbox.union([bbox1, bbox2])\n", - "#adjust(x, y, bbox)" - ] - }, - { - "cell_type": "markdown", - "id": "bb54e6b5", - "metadata": {}, - "source": [ - "To draw a rectangle, we'll use the following method to make four `Point` objects to represent the corners." - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "8fb74cd8", - "metadata": {}, - "outputs": [], - "source": [ - "%%add_method_to Rectangle\n", - "\n", - " def make_points(self):\n", - " p1 = self.corner\n", - " p2 = p1.translated(self.width, 0)\n", - " p3 = p2.translated(0, self.height)\n", - " p4 = p3.translated(-self.width, 0)\n", - " return p1, p2, p3, p4" - ] - }, - { - "cell_type": "markdown", - "id": "20dbe0cb", - "metadata": {}, - "source": [ - "Then we'll make four `Line` objects to represent the sides." - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "1c419c73", - "metadata": {}, - "outputs": [], - "source": [ - "%%add_method_to Rectangle\n", - "\n", - " def make_lines(self):\n", - " p1, p2, p3, p4 = self.make_points()\n", - " return Line(p1, p2), Line(p2, p3), Line(p3, p4), Line(p4, p1)" - ] - }, - { - "cell_type": "markdown", - "id": "30fe41cc", - "metadata": {}, - "source": [ - "Then we'll draw the sides." - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "5ceccb7d", - "metadata": {}, - "outputs": [], - "source": [ - "%%add_method_to Rectangle\n", - "\n", - " def draw(self):\n", - " lines = self.make_lines()\n", - " for line in lines:\n", - " line.draw()" - ] - }, - { - "cell_type": "markdown", - "id": "390ba3e7", - "metadata": {}, - "source": [ - "Here's an example." - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "id": "2870c782", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - " \n", - "\n", - "\n", - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "make_turtle()\n", - "line1.draw()\n", - "line2.draw()\n", - "box1.draw()" - ] - }, - { - "cell_type": "markdown", - "id": "532a4f69", - "metadata": {}, - "source": [ - "The figure includes two lines to represent the axes." - ] - }, - { - "cell_type": "markdown", - "id": "0e713a90", - "metadata": {}, - "source": [ - "## Changing rectangles\n", - "\n", - "Now let's consider two methods that modify rectangles, `grow` and `translate`.\n", - "We'll see that `grow` works as expected, but `translate` has a subtle bug.\n", - "See if you can figure it out before I explain.\n", - "\n", - "`grow` takes two numbers, `dwidth` and `dheight`, and adds them to the `width` and `height` attributes of the rectangle." - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "id": "21537ed7", - "metadata": {}, - "outputs": [], - "source": [ - "%%add_method_to Rectangle\n", - "\n", - " def grow(self, dwidth, dheight):\n", - " self.width += dwidth\n", - " self.height += dheight" - ] - }, - { - "cell_type": "markdown", - "id": "a51913e2", - "metadata": {}, - "source": [ - "Here's an example that demonstrates the effect by making a copy of `box1` and invoking `grow` on the copy." - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "id": "243ca804", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Rectangle(160, 90, Point(30, 20))\n" - ] - } - ], - "source": [ - "box2 = copy(box1)\n", - "box2.grow(60, 40)\n", - "print(box2)" - ] - }, - { - "cell_type": "markdown", - "id": "6d74da62", - "metadata": {}, - "source": [ - "If we draw `box1` and `box2`, we can confirm that `grow` works as expected." - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "id": "110f995f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - " \n", - "\n", - "\n", - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "make_turtle()\n", - "line1.draw()\n", - "line2.draw()\n", - "box1.draw()\n", - "box2.draw()" - ] - }, - { - "cell_type": "markdown", - "id": "0c940008", - "metadata": {}, - "source": [ - "Now let's see about `translate`.\n", - "It takes two numbers, `dx` and `dy`, and moves the rectangle the given distances in the `x` and `y` directions. " - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "id": "8a5e7e73", - "metadata": {}, - "outputs": [], - "source": [ - "%%add_method_to Rectangle\n", - "\n", - " def translate(self, dx, dy):\n", - " self.corner.translate(dx, dy)" - ] - }, - { - "cell_type": "markdown", - "id": "c27fe91d", - "metadata": {}, - "source": [ - "To demonstrate the effect, we'll translate `box2` to the right and down." - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "id": "78b9e344", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Rectangle(160, 90, Point(60, 40))\n" - ] - } - ], - "source": [ - "box2.translate(30, 20)\n", - "print(box2)" - ] - }, - { - "cell_type": "markdown", - "id": "e01badbc", - "metadata": {}, - "source": [ - "Now let's see what happens if we draw `box1` and `box2` again." - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "id": "b70bcad9", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - " \n", - "\n", - "\n", - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "make_turtle()\n", - "line1.draw()\n", - "line2.draw()\n", - "box1.draw()\n", - "box2.draw()" - ] - }, - { - "cell_type": "markdown", - "id": "5310bdd7", - "metadata": {}, - "source": [ - "It looks like both rectangles moved, which is not what we intended!\n", - "The next section explains what went wrong." - ] - }, - { - "cell_type": "markdown", - "id": "940adbeb", - "metadata": {}, - "source": [ - "## Deep copy\n", - "\n", - "When we use `copy` to duplicate `box1`, it copies the `Rectangle` object but not the `Point` object it contains.\n", - "So `box1` and `box2` are different objects, as intended." - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "id": "b67ce168", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 37, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "box1 is box2" - ] - }, - { - "cell_type": "markdown", - "id": "eac5309b", - "metadata": {}, - "source": [ - "But their `corner` attributes refer to the same object." - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "id": "1d9cf4da", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 38, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "box1.corner is box2.corner" - ] - }, - { - "cell_type": "markdown", - "id": "f0cc51b5", - "metadata": {}, - "source": [ - "The following diagram shows the state of these objects." - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "id": "6d883459", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "from diagram import Stack\n", - "from copy import deepcopy\n", - "\n", - "binding_box1, frame_corner1 = make_rectangle_binding('box1', box1)\n", - "binding_box2, frame_corner2 = make_rectangle_binding('box2', box2, dy=0.4)\n", - "binding_box2.value.bindings.reverse()\n", - "\n", - "stack = Stack([binding_box1, binding_box2], dy=-1.3)" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "id": "637042fb", - "metadata": { - "tags": [ - "remove-input" - ] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from diagram import Bbox\n", - "\n", - "width, height, x, y = [2.76, 2.54, 0.27, 2.16]\n", - "ax = diagram(width, height)\n", - "bbox1 = stack.draw(ax, x, y)\n", - "bbox2 = frame_corner1.draw(ax, x+1.85, y-0.6)\n", - "bbox = Bbox.union([bbox1, bbox2])\n", - "# adjust(x, y, bbox)" - ] - }, - { - "cell_type": "markdown", - "id": "35f3e7e1", - "metadata": {}, - "source": [ - "What `copy` does is called a **shallow copy** because it copies the object but not the objects it contains.\n", - "As a result, changing the `width` or `height` of one `Rectangle` does not affect the other, but changing the attributes of the shared `Point` affects both!\n", - "This behavior is confusing and error-prone.\n", - "\n", - "Fortunately, the `copy` module provides another function, called `deepcopy`, that copies not only the object but also the objects it refers to, and the objects *they* refer to, and so on. \n", - "This operation is called a **deep copy**.\n", - "\n", - "To demonstrate, let's start with a new `Rectangle` that contains a new `Point`." - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "id": "168277a9", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Rectangle(100, 50, Point(20, 20))\n" - ] - } - ], - "source": [ - "corner = Point(20, 20)\n", - "box3 = Rectangle(100, 50, corner)\n", - "print(box3)" - ] - }, - { - "cell_type": "markdown", - "id": "ff9ee872", - "metadata": {}, - "source": [ - "And we'll make a deep copy." - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "id": "75219ef6", - "metadata": {}, - "outputs": [], - "source": [ - "from copy import deepcopy\n", - "\n", - "box4 = deepcopy(box3)" - ] - }, - { - "cell_type": "markdown", - "id": "7efd0e6a", - "metadata": {}, - "source": [ - "We can confirm that the two `Rectangle` objects refer to different `Point` objects." - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "id": "fde2486c", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 43, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "box3.corner is box4.corner" - ] - }, - { - "cell_type": "markdown", - "id": "ca925206", - "metadata": {}, - "source": [ - "Because `box3` and `box4` are completely separate objects, we can modify one without affecting the other.\n", - "To demonstrate, we'll move `box3` and grow `box4`." - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "id": "3f6d1d6b", - "metadata": {}, - "outputs": [], - "source": [ - "box3.translate(50, 30)\n", - "box4.grow(100, 60)" - ] - }, - { - "cell_type": "markdown", - "id": "3ff31c7c", - "metadata": {}, - "source": [ - "And we can confirm that the effect is as expected." - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "id": "092ded2c", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - " \n", - "\n", - "\n", - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "make_turtle()\n", - "line1.draw()\n", - "line2.draw()\n", - "box3.draw()\n", - "box4.draw()" - ] - }, - { - "cell_type": "markdown", - "id": "67051d62", - "metadata": {}, - "source": [ - "## Polymorphism\n", - "\n", - "In the previous example, we invoked the `draw` method on two `Line` objects and two `Rectangle` objects.\n", - "We can do the same thing more concisely by making a list of objects." - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "id": "c846343c", - "metadata": {}, - "outputs": [], - "source": [ - "shapes = [line1, line2, box3, box4]" - ] - }, - { - "cell_type": "markdown", - "id": "773955dd", - "metadata": {}, - "source": [ - "The elements of this list are different types, but they all provide a `draw` method, so we can loop through the list and invoke `draw` on each one." - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "id": "10912b62", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - " \n", - "\n", - "\n", - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "make_turtle()\n", - "\n", - "for shape in shapes:\n", - " shape.draw()" - ] - }, - { - "cell_type": "markdown", - "id": "a1ae190c", - "metadata": {}, - "source": [ - "The first and second time through the loop, `shape` refers to a `Line` object, so when `draw` is invoked, the method that runs is the one defined in the `Line` class.\n", - "\n", - "The third and fourth time through the loop, `shape` refers to a `Rectangle` object, so when `draw` is invoked, the method that runs is the one defined in the `Rectangle` class.\n", - "\n", - "In a sense, each object knows how to draw itself.\n", - "This feature is called **polymorphism**.\n", - "The word comes from Greek roots that mean \"many shaped\".\n", - "In object-oriented programming, polymorphism is the ability of different types to provide the same methods, which makes it possible to perform many computations -- like drawing shapes -- by invoking the same method on different types of objects.\n", - "\n", - "As an exercise at the end of this chapter, you'll define a new class that represents a circle and provides a `draw` method.\n", - "Then you can use polymorphism to draw lines, rectangles, and circles." - ] - }, - { - "cell_type": "markdown", - "id": "74d1b48f", - "metadata": {}, - "source": [ - "## Debugging\n", - "\n", - "In this chapter, we ran into a subtle bug that happened because we created a `Point` that was shared by two `Rectangle` objects, and then we modified the `Point`.\n", - "In general, there are two ways to avoid problems like this: you can avoid sharing objects or you can avoid modifying them.\n", - "\n", - "To avoid sharing objects, you can use deep copy, as we did in this chapter.\n", - "\n", - "To avoid modifying objects, consider replacing impure functions like `translate` with pure functions like `translated`.\n", - "For example, here's a version of `translated` that creates a new `Point` and never modifies its attributes." - ] - }, - { - "cell_type": "code", - "execution_count": 48, - "id": "c803c91a", - "metadata": {}, - "outputs": [], - "source": [ - " def translated(self, dx=0, dy=0):\n", - " x = self.x + dx\n", - " y = self.y + dy\n", - " return Point(x, y)" - ] - }, - { - "cell_type": "markdown", - "id": "76972167", - "metadata": {}, - "source": [ - "Python provides features that make it easier to avoid modifying objects.\n", - "They are beyond the scope of this book, but if you are curious, ask a virtual assistant, \"How do I make a Python object immutable?\"\n", - "\n", - "Creating a new object takes more time than modifying an existing one, but the difference seldom matters in practice.\n", - "Programs that avoid shared objects and impure functions are often easier to develop, test, and debug -- and the best kind of debugging is the kind you don't have to do." - ] - }, - { - "cell_type": "markdown", - "id": "02106995", - "metadata": {}, - "source": [ - "## Glossary\n", - "\n", - "**shallow copy:**\n", - "A copy operation that does not copy nested objects.\n", - "\n", - "**deep copy:**\n", - "A copy operation that also copies nested objects.\n", - "\n", - "**polymorphism:**\n", - "The ability of a method or operator to work with multiple types of objects." - ] - }, - { - "cell_type": "markdown", - "id": "09dd41c1", - "metadata": {}, - "source": [ - "## Exercises" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "32b151a5", - "metadata": { - "tags": [ - "remove-print" - ] - }, - "outputs": [], - "source": [ - "# This cell tells Jupyter to provide detailed debugging information\n", - "# when a runtime error occurs. Run it before working on the exercises.\n", - "\n", - "%xmode Verbose" - ] - }, - { - "cell_type": "markdown", - "id": "da0aea86", - "metadata": {}, - "source": [ - "### Ask a virtual assistant\n", - "\n", - "For all of the following exercises, consider asking a virtual assistant for help.\n", - "If you do, you'll want include as part of the prompt the class definitions for `Point`, `Line`, and `Rectangle` -- otherwise the VA will make a guess about their attributes and functions, and the code it generates won't work." - ] - }, - { - "cell_type": "markdown", - "id": "7721e47b", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "Write an `__eq__` method for the `Line` class that returns `True` if the `Line` objects refer to `Point` objects that are equivalent, in either order." - ] - }, - { - "cell_type": "markdown", - "id": "2e488e0f", - "metadata": {}, - "source": [ - "You can use the following outline to get started." - ] - }, - { - "cell_type": "code", - "execution_count": 49, - "id": "92c07380", - "metadata": {}, - "outputs": [], - "source": [ - "%%add_method_to Line\n", - "\n", - "def __eq__(self, other):\n", - " return None" - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "id": "a99446c4", - "metadata": { - "tags": [ - "solution" - ] - }, - "outputs": [], - "source": [ - "%%add_method_to Line\n", - "\n", - "def __eq__(self, other):\n", - " if (self.p1 == other.p1) and (self.p2 == other.p2):\n", - " return True\n", - " if (self.p1 == other.p2) and (self.p2 == other.p1):\n", - " return True\n", - " return False" - ] - }, - { - "cell_type": "markdown", - "id": "3a44e45a", - "metadata": {}, - "source": [ - "You can use these examples to test your code." - ] - }, - { - "cell_type": "code", - "execution_count": 51, - "id": "aa086dd1", - "metadata": {}, - "outputs": [], - "source": [ - "start1 = Point(0, 0)\n", - "start2 = Point(0, 0)\n", - "end = Point(200, 100)" - ] - }, - { - "cell_type": "markdown", - "id": "e825f049", - "metadata": {}, - "source": [ - "This example should be `True` because the `Line` objects refer to `Point` objects that are equivalent, in the same order." - ] - }, - { - "cell_type": "code", - "execution_count": 52, - "id": "857cba26", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 52, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "line_a = Line(start1, end)\n", - "line_b = Line(start2, end)\n", - "line_a == line_b # should be True" - ] - }, - { - "cell_type": "markdown", - "id": "c3d8fb2b", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "This example should be `True` because the `Line` objects refer to `Point` objects that are equivalent, in reverse order." - ] - }, - { - "cell_type": "code", - "execution_count": 53, - "id": "b45def0a", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 53, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "line_c = Line(end, start1)\n", - "line_a == line_c # should be True" - ] - }, - { - "cell_type": "markdown", - "id": "8c9c787b", - "metadata": {}, - "source": [ - "Equivalence should always be transitive -- that is, if `line_a` and `line_b` are equivalent, and `line_a` and `line_c` are equivalent, then `line_b` and `line_c` should also be equivalent." - ] - }, - { - "cell_type": "code", - "execution_count": 54, - "id": "9784300c", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 54, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "line_b == line_c # should be True" - ] - }, - { - "cell_type": "markdown", - "id": "d4f385fa", - "metadata": {}, - "source": [ - "This example should be `False` because the `Line` objects refer to `Point` objects that are not equivalent." - ] - }, - { - "cell_type": "code", - "execution_count": 55, - "id": "5435c8e4", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 55, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "line_d = Line(start1, start2)\n", - "line_a == line_d # should be False" - ] - }, - { - "cell_type": "markdown", - "id": "0e629491", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "Write a `Line` method called `midpoint` that computes the midpoint of a line segment and returns the result as a `Point` object." - ] - }, - { - "cell_type": "markdown", - "id": "b8c52d19", - "metadata": {}, - "source": [ - "You can use the following outline to get started." - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "id": "f377afbb", - "metadata": {}, - "outputs": [], - "source": [ - "%%add_method_to Line\n", - "\n", - " def midpoint(self):\n", - " return Point(0, 0)" - ] - }, - { - "cell_type": "code", - "execution_count": 57, - "id": "96d81b90", - "metadata": { - "tags": [ - "solution" - ] - }, - "outputs": [], - "source": [ - "%%add_method_to Line\n", - "\n", - " def midpoint(self):\n", - " mid_x = (self.p1.x + self.p2.x) / 2\n", - " mid_y = (self.p1.y + self.p2.y) / 2\n", - " return Point(mid_x, mid_y)" - ] - }, - { - "cell_type": "markdown", - "id": "4df69a9f", - "metadata": {}, - "source": [ - "You can use the following examples to test your code and draw the result." - ] - }, - { - "cell_type": "code", - "execution_count": 58, - "id": "0d603aa3", - "metadata": {}, - "outputs": [], - "source": [ - "start = Point(0, 0)\n", - "end1 = Point(300, 0)\n", - "end2 = Point(0, 150)\n", - "line1 = Line(start, end1)\n", - "line2 = Line(start, end2)" - ] - }, - { - "cell_type": "code", - "execution_count": 59, - "id": "647d0982", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Point(150.0, 0.0)\n" - ] - } - ], - "source": [ - "mid1 = line1.midpoint()\n", - "print(mid1)" - ] - }, - { - "cell_type": "code", - "execution_count": 60, - "id": "e351bea3", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Point(0.0, 75.0)\n" - ] - } - ], - "source": [ - "mid2 = line2.midpoint()\n", - "print(mid2)" - ] - }, - { - "cell_type": "code", - "execution_count": 61, - "id": "5ad5a076", - "metadata": {}, - "outputs": [], - "source": [ - "line3 = Line(mid1, mid2)" - ] - }, - { - "cell_type": "code", - "execution_count": 62, - "id": "8effaff0", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - " \n", - "\n", - "\n", - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "make_turtle()\n", - "\n", - "for shape in [line1, line2, line3]:\n", - " shape.draw()" - ] - }, - { - "cell_type": "markdown", - "id": "0518c200", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "Write a `Rectangle` method called `midpoint` that find the point in the center of a rectangle and returns the result as a `Point` object." - ] - }, - { - "cell_type": "markdown", - "id": "c586a3ed", - "metadata": {}, - "source": [ - "You can use the following outline to get started." - ] - }, - { - "cell_type": "code", - "execution_count": 63, - "id": "d94a6350", - "metadata": {}, - "outputs": [], - "source": [ - "%%add_method_to Rectangle\n", - "\n", - " def midpoint(self):\n", - " return Point(0, 0)" - ] - }, - { - "cell_type": "code", - "execution_count": 64, - "id": "de6756da", - "metadata": { - "tags": [ - "solution" - ] - }, - "outputs": [], - "source": [ - "%%add_method_to Rectangle\n", - "\n", - " def midpoint(self):\n", - " mid_x = self.corner.x + self.width / 2\n", - " mid_y = self.corner.y + self.height / 2\n", - " return Point(mid_x, mid_y)" - ] - }, - { - "cell_type": "markdown", - "id": "d186c84b", - "metadata": {}, - "source": [ - "You can use the following example to test your code." - ] - }, - { - "cell_type": "code", - "execution_count": 65, - "id": "4aec759c", - "metadata": {}, - "outputs": [], - "source": [ - "corner = Point(30, 20)\n", - "rectangle = Rectangle(100, 80, corner)" - ] - }, - { - "cell_type": "code", - "execution_count": 66, - "id": "7ec3339d", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Point(80.0, 60.0)\n" - ] - } - ], - "source": [ - "mid = rectangle.midpoint()\n", - "print(mid)" - ] - }, - { - "cell_type": "code", - "execution_count": 67, - "id": "326dbf24", - "metadata": {}, - "outputs": [], - "source": [ - "diagonal = Line(corner, mid)" - ] - }, - { - "cell_type": "code", - "execution_count": 68, - "id": "4da710d4", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - " \n", - "\n", - "\n", - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "make_turtle()\n", - "\n", - "for shape in [line1, line2, rectangle, diagonal]:\n", - " shape.draw()" - ] - }, - { - "cell_type": "markdown", - "id": "00cbc4d9", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "Write a `Rectangle` method called `make_cross` that:\n", - "\n", - "1. Uses `make_lines` to get a list of `Line` objects that represent the four sides of the rectangle.\n", - "\n", - "2. Computes the midpoints of the four lines.\n", - "\n", - "3. Makes and returns a list of two `Line` objects that represent lines connecting opposite midpoints, forming a cross through the middle of the rectangle." - ] - }, - { - "cell_type": "markdown", - "id": "29e994c6", - "metadata": {}, - "source": [ - "You can use this outline to get started." - ] - }, - { - "cell_type": "code", - "execution_count": 69, - "id": "30cc0726", - "metadata": {}, - "outputs": [], - "source": [ - "%%add_method_to Rectangle\n", - "\n", - " def make_diagonals(self):\n", - " return []" - ] - }, - { - "cell_type": "code", - "execution_count": 70, - "id": "6cdde16e", - "metadata": { - "tags": [ - "solution" - ] - }, - "outputs": [], - "source": [ - "%%add_method_to Rectangle\n", - "\n", - " def make_cross(self):\n", - " midpoints = []\n", - "\n", - " for line in self.make_lines():\n", - " midpoints.append(line.midpoint())\n", - "\n", - " p1, p2, p3, p4 = midpoints\n", - " return Line(p1, p3), Line(p2, p4)" - ] - }, - { - "cell_type": "markdown", - "id": "970fcbca", - "metadata": {}, - "source": [ - "You can use the following example to test your code." - ] - }, - { - "cell_type": "code", - "execution_count": 71, - "id": "2afd718c", - "metadata": {}, - "outputs": [], - "source": [ - "corner = Point(30, 20)\n", - "rectangle = Rectangle(100, 80, corner)" - ] - }, - { - "cell_type": "code", - "execution_count": 72, - "id": "b7bdb467", - "metadata": {}, - "outputs": [], - "source": [ - "lines = rectangle.make_cross()" - ] - }, - { - "cell_type": "code", - "execution_count": 73, - "id": "9d09b2c3", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - " \n", - "\n", - "\n", - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "make_turtle()\n", - "\n", - "rectangle.draw()\n", - "for line in lines:\n", - " line.draw()" - ] - }, - { - "cell_type": "markdown", - "id": "0f707fe3", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "Write a definition for a class named `Circle` with attributes `center` and `radius`, where `center` is a Point object and `radius` is a number.\n", - "Include special methods `__init__` and a `__str__`, and a method called `draw` that uses `jupyturtle` functions to draw the circle." - ] - }, - { - "cell_type": "markdown", - "id": "cb1b24a3", - "metadata": {}, - "source": [ - "You can use the following function, which is a version of the `circle` function we wrote in Chapter 4." - ] - }, - { - "cell_type": "code", - "execution_count": 74, - "id": "b3d2328f", - "metadata": {}, - "outputs": [], - "source": [ - "from jupyturtle import make_turtle, forward, left, right\n", - "import math\n", - " \n", - "def draw_circle(radius):\n", - " circumference = 2 * math.pi * radius\n", - " n = 30\n", - " length = circumference / n\n", - " angle = 360 / n\n", - " left(angle / 2)\n", - " for i in range(n):\n", - " forward(length)\n", - " left(angle)" - ] - }, - { - "cell_type": "code", - "execution_count": 75, - "id": "189c30d4", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "class Circle:\n", - " def __init__(self, center, radius):\n", - " self.center = center\n", - " self.radius = radius\n", - "\n", - " def __str__(self):\n", - " return f'Circle({self.center}, {self.radius})'\n", - "\n", - " def draw(self):\n", - " start = self.center.translated(self.radius, 0)\n", - " jumpto(start.x, start.y)\n", - " left(90)\n", - " draw_circle(self.radius)\n", - " right(90)" - ] - }, - { - "cell_type": "markdown", - "id": "b4325143", - "metadata": {}, - "source": [ - "You can use the following example to test your code.\n", - "We'll start with a square `Rectangle` with width and height `100`." - ] - }, - { - "cell_type": "code", - "execution_count": 76, - "id": "49074ed5", - "metadata": {}, - "outputs": [], - "source": [ - "corner = Point(20, 20)\n", - "rectangle = Rectangle(100, 100, corner)" - ] - }, - { - "cell_type": "markdown", - "id": "2cdecfa9", - "metadata": {}, - "source": [ - "The following code should create a `Circle` that fits inside the square." - ] - }, - { - "cell_type": "code", - "execution_count": 77, - "id": "d65a9163", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Circle(Point(70.0, 70.0), 50.0)\n" - ] - } - ], - "source": [ - "center = rectangle.midpoint()\n", - "radius = rectangle.height / 2\n", - "\n", - "circle = Circle(center, radius)\n", - "print(circle)" - ] - }, - { - "cell_type": "markdown", - "id": "37e94d98", - "metadata": {}, - "source": [ - "If everything worked correctly, the following code should draw the circle inside the square (touching on all four sides)." - ] - }, - { - "cell_type": "code", - "execution_count": 78, - "id": "e3b23b4d", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - " \n", - "\n", - "\n", - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "make_turtle(delay=0.01)\n", - "\n", - "rectangle.draw()\n", - "circle.draw()" - ] - }, - { - "cell_type": "markdown", - "id": "a7f4edf8", - "metadata": { - "tags": [] - }, - "source": [ - "[Think Python: 3rd Edition](https://allendowney.github.io/ThinkPython/index.html)\n", - "\n", - "Copyright 2024 [Allen B. Downey](https://allendowney.com)\n", - "\n", - "Code license: [MIT License](https://mit-license.org/)\n", - "\n", - "Text license: [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-nc-sa/4.0/)" - ] - } - ], - "metadata": { - "celltoolbar": "Tags", - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.11" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/soln/chap17.ipynb b/soln/chap17.ipynb deleted file mode 100644 index 240b9ea..0000000 --- a/soln/chap17.ipynb +++ /dev/null @@ -1,3487 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "1331faa1", - "metadata": {}, - "source": [ - "You can order print and ebook versions of *Think Python 3e* from\n", - "[Bookshop.org](https://bookshop.org/a/98697/9781098155438) and\n", - "[Amazon](https://www.amazon.com/_/dp/1098155432?smid=ATVPDKIKX0DER&_encoding=UTF8&tag=oreilly20-20&_encoding=UTF8&tag=greenteapre01-20&linkCode=ur2&linkId=e2a529f94920295d27ec8a06e757dc7c&camp=1789&creative=9325)." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "217fc9bf", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "from os.path import basename, exists\n", - "\n", - "def download(url):\n", - " filename = basename(url)\n", - " if not exists(filename):\n", - " from urllib.request import urlretrieve\n", - "\n", - " local, _ = urlretrieve(url, filename)\n", - " print(\"Downloaded \" + str(local))\n", - " return filename\n", - "\n", - "download('https://github.com/AllenDowney/ThinkPython/raw/v3/thinkpython.py');\n", - "download('https://github.com/AllenDowney/ThinkPython/raw/v3/diagram.py');\n", - "\n", - "import thinkpython" - ] - }, - { - "cell_type": "markdown", - "id": "ced31782", - "metadata": { - "tags": [ - "chapter_inheritance" - ] - }, - "source": [ - "# Inheritance\n", - "\n", - "The language feature most often associated with object-oriented programming is **inheritance**.\n", - "Inheritance is the ability to define a new class that is a modified version of an existing class.\n", - "In this chapter I demonstrate inheritance using classes that represent playing cards, decks of cards, and poker hands.\n", - "If you don't play poker, don't worry -- I'll tell you what you need to know." - ] - }, - { - "cell_type": "markdown", - "id": "b19c4dae", - "metadata": {}, - "source": [ - "## Representing cards\n", - "\n", - "There are 52 playing cards in a standard deck -- each of them belongs to one of four suits and one of thirteen ranks. \n", - "The suits are Spades, Hearts, Diamonds, and Clubs.\n", - "The ranks are Ace, 2, 3, 4, 5, 6, 7, 8, 9, 10, Jack, Queen, and King.\n", - "Depending on which game you are playing, an Ace can be higher than King or lower than 2.\n", - "\n", - "If we want to define a new object to represent a playing card, it is obvious what the attributes should be: `rank` and `suit`.\n", - "It is less obvious what type the attributes should be.\n", - "One possibility is to use strings like `'Spade'` for suits and `'Queen'` for ranks.\n", - "A problem with this implementation is that it would not be easy to compare cards to see which had a higher rank or suit.\n", - "\n", - "An alternative is to use integers to **encode** the ranks and suits.\n", - "In this context, \"encode\" means that we are going to define a mapping between numbers and suits, or between numbers and ranks.\n", - "This kind of encoding is not meant to be a secret (that would be \"encryption\")." - ] - }, - { - "cell_type": "markdown", - "id": "a9bafecf", - "metadata": {}, - "source": [ - "For example, this table shows the suits and the corresponding integer codes:\n", - "\n", - "\n", - "| Suit | Code |\n", - "| --- | --- |\n", - "| Spades | 3 |\n", - "| Hearts | 2 |\n", - "| Diamonds | 1 |\n", - "| Clubs | 0 |\n", - "\n", - "With this encoding, we can compare suits by comparing their codes." - ] - }, - { - "cell_type": "markdown", - "id": "a1b46b1a", - "metadata": {}, - "source": [ - "To encode the ranks, we'll use the integer `2` to represent the rank `2`, `3` to represent `3`, and so on up to `10`.\n", - "The following table shows the codes for the face cards.\n", - "\n", - " \n", - "| Rank | Code |\n", - "| --- | --- |\n", - "| Jack | 11 |\n", - "| Queen | 12 |\n", - "| King | 13 |\n", - "\n", - "And we can use either `1` or `14` to represent an Ace, depending on whether we want it to be considered lower or higher than the other ranks.\n", - "\n", - "To represent these encodings, we will use two lists of strings, one with the names of the suits and the other with the names of the ranks.\n", - "\n", - "Here's a definition for a class that represents a playing card, with these lists of strings as **class variables**, which are variables defined inside a class definition, but not inside a method." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "ef26adf0", - "metadata": {}, - "outputs": [], - "source": [ - "class Card:\n", - " \"\"\"Represents a standard playing card.\"\"\"\n", - "\n", - " suit_names = ['Clubs', 'Diamonds', 'Hearts', 'Spades']\n", - " rank_names = [None, 'Ace', '2', '3', '4', '5', '6', '7', \n", - " '8', '9', '10', 'Jack', 'Queen', 'King', 'Ace']" - ] - }, - { - "cell_type": "markdown", - "id": "d63f798a", - "metadata": {}, - "source": [ - "The first element of `rank_names` is `None` because there is no card with rank zero. By including `None` as a place-keeper, we get a list with the nice property that the index `2` maps to the string `'2'`, and so on.\n", - "\n", - "Class variables are associated with the class, rather than an instance of the class, so we can access them like this." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "4e4bd268", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['Clubs', 'Diamonds', 'Hearts', 'Spades']" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "Card.suit_names" - ] - }, - { - "cell_type": "markdown", - "id": "c837fff6", - "metadata": {}, - "source": [ - "We can use `suit_names` to look up a suit and get the corresponding string." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "8aec2a6a", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'Clubs'" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "Card.suit_names[0]" - ] - }, - { - "cell_type": "markdown", - "id": "a59d905e", - "metadata": {}, - "source": [ - "And `rank_names` to look up a rank." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "baf029e9", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'Jack'" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "Card.rank_names[11]" - ] - }, - { - "cell_type": "markdown", - "id": "50dda19b", - "metadata": {}, - "source": [ - "## Card attributes\n", - "\n", - "Here's an `__init__` method for the `Card` class -- it takes `suit` and `rank` as parameters and assigns them to attributes with the same names." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "91320ea3", - "metadata": {}, - "outputs": [], - "source": [ - "%%add_method_to Card\n", - "\n", - " def __init__(self, suit, rank):\n", - " self.suit = suit\n", - " self.rank = rank" - ] - }, - { - "cell_type": "markdown", - "id": "31a2782d", - "metadata": {}, - "source": [ - "Now we can create a `Card` object like this." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "c04bb77e", - "metadata": {}, - "outputs": [], - "source": [ - "queen = Card(1, 12)" - ] - }, - { - "cell_type": "markdown", - "id": "85e5cf5d", - "metadata": {}, - "source": [ - "We can use the new instance to access the attributes." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "b182e6fa", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(1, 12)" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "queen.suit, queen.rank" - ] - }, - { - "cell_type": "markdown", - "id": "449225d3", - "metadata": {}, - "source": [ - "It is also legal to use the instance to access the class variables." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "17ce1a51", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['Clubs', 'Diamonds', 'Hearts', 'Spades']" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "queen.suit_names" - ] - }, - { - "cell_type": "markdown", - "id": "97232ffa", - "metadata": {}, - "source": [ - "But if you use the class, it is clearer that they are class variables, not attributes." - ] - }, - { - "cell_type": "markdown", - "id": "7a0a79ae", - "metadata": {}, - "source": [ - "## Printing cards\n", - "\n", - "Here's a `__str__` method for `Card` objects." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "6709b45a", - "metadata": {}, - "outputs": [], - "source": [ - "%%add_method_to Card\n", - "\n", - " def __str__(self):\n", - " rank_name = Card.rank_names[self.rank]\n", - " suit_name = Card.suit_names[self.suit]\n", - " return f'{rank_name} of {suit_name}' " - ] - }, - { - "cell_type": "markdown", - "id": "d6c51352", - "metadata": {}, - "source": [ - "When we print a `Card`, Python calls the `__str__` method to get a human-readable representation of the card." - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "e7f9304d", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Queen of Diamonds\n" - ] - } - ], - "source": [ - "print(queen)" - ] - }, - { - "cell_type": "markdown", - "id": "76044b9e", - "metadata": {}, - "source": [ - "The following is a diagram of the `Card` class object and the Card instance.\n", - "`Card` is a class object, so its type is `type`.\n", - "`queen` is an instance of `Card`, so its type is `Card`.\n", - "To save space, I didn't draw the contents of `suit_names` and `rank_names`." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "d589ed70", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "from diagram import Binding, Value, Frame, Stack\n", - "\n", - "bindings = [Binding(Value(name), draw_value=False)\n", - " for name in ['suit_names', 'rank_names']]\n", - " \n", - "frame1 = Frame(bindings, name='type', dy=-0.5, offsetx=0.77)\n", - "binding1 = Binding(Value('Card'), frame1)\n", - "\n", - "bindings = [Binding(Value(name), Value(value))\n", - " for name, value in zip(['suit', 'rank'], [1, 11])]\n", - " \n", - "frame2 = Frame(bindings, name='Card', dy=-0.3, offsetx=0.33)\n", - "binding2 = Binding(Value('queen'), frame2)\n", - "\n", - "stack = Stack([binding1, binding2], dy=-1.2)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "5518455f", - "metadata": { - "tags": [ - "remove-input" - ] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from diagram import diagram, Bbox, make_list, adjust\n", - "\n", - "width, height, x, y = [2.11, 2.14, 0.35, 1.76]\n", - "ax = diagram(width, height)\n", - "bbox = stack.draw(ax, x, y)\n", - "\n", - "value = make_list([])\n", - "bbox2 = value.draw(ax, x+1.66, y)\n", - "\n", - "value = make_list([])\n", - "bbox3 = value.draw(ax, x+1.66, y-0.5)\n", - "\n", - "bbox = Bbox.union([bbox, bbox2, bbox3])\n", - "#adjust(x, y, bbox)" - ] - }, - { - "cell_type": "markdown", - "id": "ccb8e41d", - "metadata": {}, - "source": [ - "Every `Card` instance has its own `suit` and `rank` attributes, but there is only one `Card` class object, and only one copy of the class variables `suit_names` and `rank_names`." - ] - }, - { - "cell_type": "markdown", - "id": "98c6508d", - "metadata": {}, - "source": [ - "## Comparing cards\n", - "\n", - "Suppose we create a second `Card` object with the same suit and rank." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "cadb115d", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Queen of Diamonds\n" - ] - } - ], - "source": [ - "queen2 = Card(1, 12)\n", - "print(queen2)" - ] - }, - { - "cell_type": "markdown", - "id": "3c92779c", - "metadata": {}, - "source": [ - "If we use the `==` operator to compare them, it checks whether `queen` and `queen2` refer to the same object." - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "6a625fde", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "queen == queen2" - ] - }, - { - "cell_type": "markdown", - "id": "278d8abe", - "metadata": {}, - "source": [ - "They don't, so it returns `False`.\n", - "We can change this behavior by defining the special method `__eq__`." - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "4f394e57", - "metadata": {}, - "outputs": [], - "source": [ - "%%add_method_to Card\n", - "\n", - " def __eq__(self, other):\n", - " return self.suit == other.suit and self.rank == other.rank" - ] - }, - { - "cell_type": "markdown", - "id": "bd66a9d3", - "metadata": {}, - "source": [ - "`__eq__` takes two `Card` objects as parameters and returns `True` if they have the same suit and rank, even if they are not the same object.\n", - "In other words, it checks whether they are equivalent, even if they are not identical.\n", - "\n", - "When we use the `==` operator with `Card` objects, Python calls the `__eq__` method." - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "2c10425b", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "queen == queen2" - ] - }, - { - "cell_type": "markdown", - "id": "23d99d3e", - "metadata": {}, - "source": [ - "As a second test, let's create a card with the same suit and a different rank." - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "c2a695b4", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "6 of Diamonds\n" - ] - } - ], - "source": [ - "six = Card(1, 6)\n", - "print(six)" - ] - }, - { - "cell_type": "markdown", - "id": "c5f66404", - "metadata": {}, - "source": [ - "We can confirm that `queen` and `six` are not equivalent." - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "400c3340", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "queen == six" - ] - }, - { - "cell_type": "markdown", - "id": "1dcb561f", - "metadata": {}, - "source": [ - "If we use the `!=` operator, Python invokes a special method called `__ne__`, if it exists.\n", - "Otherwise it invokes`__eq__` and inverts the result -- so if `__eq__` returns `True`, the result of the `!=` operator is `False`." - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "c7d731b6", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "queen != queen2" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "d2be6c82", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "queen != six" - ] - }, - { - "cell_type": "markdown", - "id": "77c48464", - "metadata": {}, - "source": [ - "Now suppose we want to compare two cards to see which is bigger.\n", - "If we use one of the relational operators, we get a `TypeError`." - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "aa63fe2a", - "metadata": { - "tags": [ - "raises-exception" - ] - }, - "outputs": [ - { - "ename": "TypeError", - "evalue": "'<' not supported between instances of 'Card' and 'Card'", - "output_type": "error", - "traceback": [ - "\u001b[0;31mTypeError\u001b[0m\u001b[0;31m:\u001b[0m '<' not supported between instances of 'Card' and 'Card'\n" - ] - } - ], - "source": [ - "%%expect TypeError\n", - "\n", - "queen < queen2" - ] - }, - { - "cell_type": "markdown", - "id": "4db0ad52", - "metadata": {}, - "source": [ - "To change the behavior of the `<` operator, we can define a special method called `__lt__`, which is short for \"less than\".\n", - "For the sake of this example, let's assume that suit is more important than rank -- so all Spades outrank all Hearts, which outrank all Diamonds, and so on.\n", - "If two cards have the same suit, the one with the higher rank wins.\n", - "\n", - "To implement this logic, we'll use the following method, which returns a tuple containing a card's suit and rank, in that order." - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "b2126f79", - "metadata": {}, - "outputs": [], - "source": [ - "%%add_method_to Card\n", - "\n", - " def to_tuple(self):\n", - " return (self.suit, self.rank)" - ] - }, - { - "cell_type": "markdown", - "id": "d5062348", - "metadata": {}, - "source": [ - "We can use this method to write `__lt__`." - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "d4d0a652", - "metadata": {}, - "outputs": [], - "source": [ - "%%add_method_to Card\n", - "\n", - " def __lt__(self, other):\n", - " return self.to_tuple() < other.to_tuple()" - ] - }, - { - "cell_type": "markdown", - "id": "bd9ef8f5", - "metadata": {}, - "source": [ - "Tuple comparison compares the first elements from each tuple, which represent the suits.\n", - "If they are the same, it compares the second elements, which represent the ranks.\n", - "\n", - "Now if we use the `<` operator, it invokes the `__lt__` method." - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "9d4ea1f8", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 25, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "six < queen" - ] - }, - { - "cell_type": "markdown", - "id": "83289a77", - "metadata": {}, - "source": [ - "If we use the `>` operator, it invokes a special method called `__gt__`, if it exists.\n", - "Otherwise it invokes `__lt__` with the arguments in the opposite order." - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "676ede7e", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "queen < queen2" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "3c4854fb", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 27, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "queen > queen2" - ] - }, - { - "cell_type": "markdown", - "id": "5d0a91de", - "metadata": {}, - "source": [ - "Finally, if we use the `<=` operator, it invokes a special method called `__le__`." - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "27280fc2", - "metadata": {}, - "outputs": [], - "source": [ - "%%add_method_to Card\n", - "\n", - " def __le__(self, other):\n", - " return self.to_tuple() <= other.to_tuple()" - ] - }, - { - "cell_type": "markdown", - "id": "6c85ac69", - "metadata": {}, - "source": [ - "So we can check whether one card is less than or equal to another." - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "bea50d85", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "queen <= queen2" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "id": "8d539454", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 30, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "queen <= six" - ] - }, - { - "cell_type": "markdown", - "id": "7af7b289", - "metadata": {}, - "source": [ - "If we use the `>=` operator, it uses `__ge__` if it exists. Otherwise, it invokes `__le__` with the arguments in the opposite order." - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "id": "e7edb7cb", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 31, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "queen >= six" - ] - }, - { - "cell_type": "markdown", - "id": "fe2a81cc", - "metadata": {}, - "source": [ - "As we have defined them, these methods are complete in the sense that we can compare any two `Card` objects, and consistent in the sense that results from different operators don't contradict each other.\n", - "With these two properties, we can say that `Card` objects are **totally ordered**.\n", - "And that means, as we'll see soon, that they can be sorted." - ] - }, - { - "cell_type": "markdown", - "id": "199f8bfc", - "metadata": {}, - "source": [ - "## Decks\n", - "\n", - "Now that we have objects that represent cards, let's define objects that represent decks.\n", - "The following is a class definition for `Deck` with\n", - "an `__init__` method takes a list of `Card` objects as a parameter and assigns it to an attribute called `cards`." - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "id": "b55140e3", - "metadata": {}, - "outputs": [], - "source": [ - "class Deck:\n", - "\n", - " def __init__(self, cards):\n", - " self.cards = cards" - ] - }, - { - "cell_type": "markdown", - "id": "2d529789", - "metadata": {}, - "source": [ - "To create a list that contains the 52 cards in a standard deck, we'll use the following static method." - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "id": "836f1a32", - "metadata": {}, - "outputs": [], - "source": [ - "%%add_method_to Deck\n", - "\n", - " def make_cards():\n", - " cards = []\n", - " for suit in range(4):\n", - " for rank in range(2, 15):\n", - " card = Card(suit, rank)\n", - " cards.append(card)\n", - " return cards" - ] - }, - { - "cell_type": "markdown", - "id": "47ae8f71", - "metadata": {}, - "source": [ - "In `make_cards`, the outer loop enumerates the suits from `0` to `3`.\n", - "The inner loop enumerates the ranks from `2` to `14` -- where `14` represents an Ace that outranks a King.\n", - "Each iteration creates a new `Card` with the current suit and rank, and appends it to `cards`.\n", - "\n", - "Here's how we make a list of cards and a `Deck` object that contains it." - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "id": "ca50c79b", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "52" - ] - }, - "execution_count": 34, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "cards = Deck.make_cards()\n", - "deck = Deck(cards)\n", - "len(deck.cards)" - ] - }, - { - "cell_type": "markdown", - "id": "032ec302", - "metadata": {}, - "source": [ - "It contains 52 cards, as intended." - ] - }, - { - "cell_type": "markdown", - "id": "c2ec7f01", - "metadata": { - "tags": [ - "section_print_deck" - ] - }, - "source": [ - "## Printing the deck\n", - "\n", - "Here is a `__str__` method for `Deck`." - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "id": "1f1b923e", - "metadata": {}, - "outputs": [], - "source": [ - "%%add_method_to Deck\n", - "\n", - " def __str__(self):\n", - " res = []\n", - " for card in self.cards:\n", - " res.append(str(card))\n", - " return '\\n'.join(res)" - ] - }, - { - "cell_type": "markdown", - "id": "660f18e6", - "metadata": {}, - "source": [ - "This method demonstrates an efficient way to accumulate a large string -- building a list of strings and then using the string method `join`. \n", - "\n", - "We'll test this method with a deck that only contains two cards." - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "id": "0c55a663", - "metadata": {}, - "outputs": [], - "source": [ - "small_deck = Deck([queen, six])" - ] - }, - { - "cell_type": "markdown", - "id": "91c7145f", - "metadata": {}, - "source": [ - "If we call `str`, it invokes `__str__`." - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "id": "fb3350ef", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'Queen of Diamonds\\n6 of Diamonds'" - ] - }, - "execution_count": 37, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "str(small_deck)" - ] - }, - { - "cell_type": "markdown", - "id": "00270656", - "metadata": {}, - "source": [ - "When Jupyter displays a string, it shows the \"representational\" form of the string, which represents a newline with the sequence `\\n`.\n", - "\n", - "However, if we print the result, Jupyter shows the \"printable\" form of the string, which prints the newline as whitespace." - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "id": "d67f8fd5", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Queen of Diamonds\n", - "6 of Diamonds\n" - ] - } - ], - "source": [ - "print(small_deck)" - ] - }, - { - "cell_type": "markdown", - "id": "e97810c4", - "metadata": {}, - "source": [ - "So the cards appear on separate lines." - ] - }, - { - "cell_type": "markdown", - "id": "52d3d597", - "metadata": {}, - "source": [ - "## Add, remove, shuffle and sort\n", - "\n", - "To deal cards, we would like a method that removes a card from the deck\n", - "and returns it. The list method `pop` provides a convenient way to do\n", - "that." - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "id": "3836c48c", - "metadata": {}, - "outputs": [], - "source": [ - "%%add_method_to Deck\n", - "\n", - " def take_card(self):\n", - " return self.cards.pop()" - ] - }, - { - "cell_type": "markdown", - "id": "1fcef47b", - "metadata": {}, - "source": [ - "Here's how we use it." - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "id": "5afccad6", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Ace of Spades\n" - ] - } - ], - "source": [ - "card = deck.take_card()\n", - "print(card)" - ] - }, - { - "cell_type": "markdown", - "id": "65427954", - "metadata": {}, - "source": [ - "We can confirm that there are `51` cards left in the deck." - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "id": "58f9473a", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "51" - ] - }, - "execution_count": 41, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(deck.cards)" - ] - }, - { - "cell_type": "markdown", - "id": "7ca3614e", - "metadata": {}, - "source": [ - "To add a card, we can use the list method `append`." - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "id": "f3eac4b5", - "metadata": {}, - "outputs": [], - "source": [ - "%%add_method_to Deck\n", - "\n", - " def put_card(self, card):\n", - " self.cards.append(card)" - ] - }, - { - "cell_type": "markdown", - "id": "2ecd8703", - "metadata": {}, - "source": [ - "As an example, we can put back the card we just popped." - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "id": "f234eff4", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "52" - ] - }, - "execution_count": 43, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "deck.put_card(card)\n", - "len(deck.cards)" - ] - }, - { - "cell_type": "markdown", - "id": "8b5af8ce", - "metadata": {}, - "source": [ - "To shuffle the deck, we can use the `shuffle` function from the `random` module:" - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "id": "81e60a08", - "metadata": {}, - "outputs": [], - "source": [ - "import random" - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "id": "b630cbb8", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "# This cell initializes the random number generator so we\n", - "# always get the same results.\n", - "\n", - "random.seed(3)" - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "id": "bea615ea", - "metadata": {}, - "outputs": [], - "source": [ - "%%add_method_to Deck\n", - " \n", - " def shuffle(self):\n", - " random.shuffle(self.cards)" - ] - }, - { - "cell_type": "markdown", - "id": "a8cb1a7f", - "metadata": {}, - "source": [ - "If we shuffle the deck and print the first few cards, we can see that they are in no apparent order." - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "id": "6b0f6b02", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2 of Diamonds\n", - "4 of Hearts\n", - "5 of Clubs\n", - "8 of Diamonds\n" - ] - } - ], - "source": [ - "deck.shuffle()\n", - "for card in deck.cards[:4]:\n", - " print(card)" - ] - }, - { - "cell_type": "markdown", - "id": "a198dde3", - "metadata": {}, - "source": [ - "To sort the cards, we can use the list method `sort`, which sorts the elements \"in place\" -- that is, it modifies the list rather than creating a new list." - ] - }, - { - "cell_type": "code", - "execution_count": 48, - "id": "6bff10b6", - "metadata": {}, - "outputs": [], - "source": [ - "%%add_method_to Deck\n", - " \n", - " def sort(self):\n", - " self.cards.sort()" - ] - }, - { - "cell_type": "markdown", - "id": "d4f017c7", - "metadata": {}, - "source": [ - "When we invoke `sort`, it uses the `__lt__` method to compare cards." - ] - }, - { - "cell_type": "code", - "execution_count": 49, - "id": "568a6583", - "metadata": {}, - "outputs": [], - "source": [ - "deck.sort()" - ] - }, - { - "cell_type": "markdown", - "id": "2bb966fd", - "metadata": {}, - "source": [ - "If we print the first few cards, we can confirm that they are in increasing order." - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "id": "54e91c91", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2 of Clubs\n", - "3 of Clubs\n", - "4 of Clubs\n", - "5 of Clubs\n" - ] - } - ], - "source": [ - "for card in deck.cards[:4]:\n", - " print(card)" - ] - }, - { - "cell_type": "markdown", - "id": "5c41ce4d", - "metadata": {}, - "source": [ - "In this example, `Deck.sort` doesn't do anything other than invoke `list.sort`.\n", - "Passing along responsibility like this is called **delegation**." - ] - }, - { - "cell_type": "markdown", - "id": "0502961b", - "metadata": {}, - "source": [ - "## Parents and children\n", - "\n", - "Inheritance is the ability to define a new class that is a modified version of an existing class.\n", - "As an example, let's say we want a class to represent a \"hand\", that is, the cards held by one player.\n", - "\n", - "* A hand is similar to a deck -- both are made up of a collection of cards, and both require operations like adding and removing cards.\n", - "\n", - "* A hand is also different from a deck -- there are operations we want for hands that don't make sense for a deck. For example, in poker we might compare two hands to see which one wins. In bridge, we might compute a score for a hand in order to make a bid.\n", - "\n", - "This relationship between classes -- where one is a specialized version of another -- lends itself to inheritance. \n", - "\n", - "To define a new class that is based on an existing class, we put the name of the existing class in parentheses." - ] - }, - { - "cell_type": "code", - "execution_count": 51, - "id": "f39fc598", - "metadata": {}, - "outputs": [], - "source": [ - "class Hand(Deck):\n", - " \"\"\"Represents a hand of playing cards.\"\"\"" - ] - }, - { - "cell_type": "markdown", - "id": "339295cd", - "metadata": {}, - "source": [ - "This definition indicates that `Hand` inherits from `Deck`, which means that `Hand` objects can access methods defined in `Deck`, like `take_card` and `put_card`.\n", - "\n", - "`Hand` also inherits `__init__` from `Deck`, but if we define `__init__` in the `Hand` class, it overrides the one in the `Deck` class." - ] - }, - { - "cell_type": "code", - "execution_count": 52, - "id": "9e7a1045", - "metadata": {}, - "outputs": [], - "source": [ - "%%add_method_to Hand\n", - "\n", - " def __init__(self, label=''):\n", - " self.label = label\n", - " self.cards = []" - ] - }, - { - "cell_type": "markdown", - "id": "9b6a763a", - "metadata": {}, - "source": [ - "This version of `__init__` takes an optional string as a parameter, and always starts with an empty list of cards.\n", - "When we create a `Hand`, Python invokes this method, not the one in `Deck` -- which we can confirm by checking that the result has a `label` attribute." - ] - }, - { - "cell_type": "code", - "execution_count": 53, - "id": "8de8cff4", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'player 1'" - ] - }, - "execution_count": 53, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "hand = Hand('player 1')\n", - "hand.label" - ] - }, - { - "cell_type": "markdown", - "id": "b1e2a67d", - "metadata": {}, - "source": [ - "To deal a card, we can use `take_card` to remove a card from a `Deck`, and `put_card` to add the card to a `Hand`." - ] - }, - { - "cell_type": "code", - "execution_count": 54, - "id": "9f582ce0", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Ace of Spades\n" - ] - } - ], - "source": [ - "deck = Deck(cards)\n", - "card = deck.take_card()\n", - "hand.put_card(card)\n", - "print(hand)" - ] - }, - { - "cell_type": "markdown", - "id": "dc2ce06b", - "metadata": {}, - "source": [ - "Let's encapsulate this code in a `Deck` method called `move_cards`." - ] - }, - { - "cell_type": "code", - "execution_count": 55, - "id": "180069eb", - "metadata": {}, - "outputs": [], - "source": [ - "%%add_method_to Deck\n", - "\n", - " def move_cards(self, other, num):\n", - " for i in range(num):\n", - " card = self.take_card()\n", - " other.put_card(card)" - ] - }, - { - "cell_type": "markdown", - "id": "16e6c404", - "metadata": {}, - "source": [ - "This method is polymorphic -- that is, it works with more than one type: `self` and `other` can be either a `Hand` or a `Deck`.\n", - "So we can use this method to deal a card from `Deck` to a `Hand`, from one `Hand` to another, or from a `Hand` back to a `Deck`." - ] - }, - { - "cell_type": "markdown", - "id": "e648a722", - "metadata": {}, - "source": [ - "When a new class inherits from an existing one, the existing one is called the **parent** and the new class is called the **child**. In general:\n", - "\n", - "* Instances of the child class should have all of the attributes of the parent class, but they can have additional attributes.\n", - "\n", - "* The child class should have all of the methods of the parent class, but it can have additional methods.\n", - "\n", - "* If a child class overrides a method from the parent class, the new method should take the same parameters and return a compatible result.\n", - "\n", - "This set of rules is called the \"Liskov substitution principle\" after computer scientist Barbara Liskov.\n", - "\n", - "If you follow these rules, any function or method designed to work with an instance of a parent class, like a `Deck`, will also work with instances of a child class, like `Hand`.\n", - "If you violate these rules, your code will collapse like a house of cards (sorry)." - ] - }, - { - "cell_type": "markdown", - "id": "e80873dd", - "metadata": {}, - "source": [ - "## Specialization\n", - "\n", - "Let's make a class called `BridgeHand` that represents a hand in bridge -- a widely played card game.\n", - "We'll inherit from `Hand` and add a new method called `high_card_point_count` that evaluates a hand using a \"high card point\" method, which adds up points for the high cards in the hand.\n", - "\n", - "Here's a class definition that contains as a class variable a dictionary that maps from card names to their point values." - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "id": "b9e949cf", - "metadata": {}, - "outputs": [], - "source": [ - "class BridgeHand(Hand):\n", - " \"\"\"Represents a bridge hand.\"\"\"\n", - "\n", - " hcp_dict = {\n", - " 'Ace': 4,\n", - " 'King': 3,\n", - " 'Queen': 2,\n", - " 'Jack': 1,\n", - " }" - ] - }, - { - "cell_type": "markdown", - "id": "4c038717", - "metadata": {}, - "source": [ - "Given the rank of a card, like `12`, we can use `Card.rank_names` to get the string representation of the rank, and then use `hcp_dict` to get its score." - ] - }, - { - "cell_type": "code", - "execution_count": 57, - "id": "0586b764", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "('Queen', 2)" - ] - }, - "execution_count": 57, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "rank = 12\n", - "rank_name = Card.rank_names[rank]\n", - "score = BridgeHand.hcp_dict.get(rank_name, 0)\n", - "rank_name, score" - ] - }, - { - "cell_type": "markdown", - "id": "c3a7820d", - "metadata": {}, - "source": [ - "The following method loops through the cards in a `BridgeHand` and adds up their scores." - ] - }, - { - "cell_type": "code", - "execution_count": 58, - "id": "f01e8027", - "metadata": {}, - "outputs": [], - "source": [ - "%%add_method_to BridgeHand\n", - "\n", - " def high_card_point_count(self):\n", - " count = 0\n", - " for card in self.cards:\n", - " rank_name = Card.rank_names[card.rank]\n", - " count += BridgeHand.hcp_dict.get(rank_name, 0)\n", - " return count" - ] - }, - { - "cell_type": "code", - "execution_count": 59, - "id": "227bef61", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "# This cell makes a fresh Deck and \n", - "# initializes the random number generator\n", - "\n", - "cards = Deck.make_cards()\n", - "deck = Deck(cards)\n", - "random.seed(3)" - ] - }, - { - "cell_type": "markdown", - "id": "94535d8e", - "metadata": {}, - "source": [ - "To test it, we'll deal a hand with five cards -- a bridge hand usually has thirteen, but it's easier to test code with small examples." - ] - }, - { - "cell_type": "code", - "execution_count": 60, - "id": "f7d9275a", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "4 of Diamonds\n", - "King of Hearts\n", - "10 of Hearts\n", - "10 of Clubs\n", - "Queen of Diamonds\n" - ] - } - ], - "source": [ - "hand = BridgeHand('player 2')\n", - "\n", - "deck.shuffle()\n", - "deck.move_cards(hand, 5)\n", - "print(hand)" - ] - }, - { - "cell_type": "markdown", - "id": "a1bd2521", - "metadata": {}, - "source": [ - "And here is the total score for the King and Queen." - ] - }, - { - "cell_type": "code", - "execution_count": 61, - "id": "ceb63a74", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "5" - ] - }, - "execution_count": 61, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "hand.high_card_point_count()" - ] - }, - { - "cell_type": "markdown", - "id": "b4f5e107", - "metadata": {}, - "source": [ - "`BridgeHand` inherits the variables and methods of `Hand` and adds a class variable and a method that are specific to bridge.\n", - "This way of using inheritance is called **specialization** because it defines a new class that is specialized for a particular use, like playing bridge." - ] - }, - { - "cell_type": "markdown", - "id": "b493622d", - "metadata": {}, - "source": [ - "## Debugging\n", - "\n", - "Inheritance is a useful feature.\n", - "Some programs that would be repetitive without inheritance can be written more concisely with it.\n", - "Also, inheritance can facilitate code reuse, since you can customize the behavior of a parent class without having to modify it.\n", - "In some cases, the inheritance structure reflects the natural structure of the problem, which makes the design easier to understand.\n", - "\n", - "On the other hand, inheritance can make programs difficult to read.\n", - "When a method is invoked, it is sometimes not clear where to find its definition -- the relevant code may be spread across several modules.\n", - "\n", - "Any time you are unsure about the flow of execution through your program, the simplest solution is to add print statements at the beginning of the relevant methods.\n", - "If `Deck.shuffle` prints a message that says something like `Running Deck.shuffle`, then as the program runs it traces the flow of execution.\n", - "\n", - "As an alternative, you could use the following function, which takes an object and a method name (as a string) and returns the class that provides the definition of the method." - ] - }, - { - "cell_type": "code", - "execution_count": 62, - "id": "20633d57", - "metadata": {}, - "outputs": [], - "source": [ - "def find_defining_class(obj, method_name):\n", - " \"\"\"Find the class where the given method is defined.\"\"\"\n", - " for typ in type(obj).mro():\n", - " if method_name in vars(typ):\n", - " return typ\n", - " return f'Method {method_name} not found.'" - ] - }, - { - "cell_type": "markdown", - "id": "1ee8f2da", - "metadata": {}, - "source": [ - "`find_defining_class` uses the `mro` method to get the list of class objects (types) that will be searched for methods.\n", - "\"MRO\" stands for \"method resolution order\", which is the sequence of classes Python searches to \"resolve\" a method name -- that is, to find the function object the name refers to.\n", - "\n", - "As an example, let's instantiate a `BridgeHand` and then find the defining class of `shuffle`." - ] - }, - { - "cell_type": "code", - "execution_count": 63, - "id": "c5bec04f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "__main__.Deck" - ] - }, - "execution_count": 63, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "hand = BridgeHand('player 3')\n", - "find_defining_class(hand, 'shuffle')" - ] - }, - { - "cell_type": "markdown", - "id": "eeb70a14", - "metadata": {}, - "source": [ - "The `shuffle` method for the `BridgeHand` object is the one in `Deck`." - ] - }, - { - "cell_type": "markdown", - "id": "07f4c4bb", - "metadata": {}, - "source": [ - "## Glossary\n", - "\n", - "**inheritance:**\n", - " The ability to define a new class that is a modified version of a previously defined class.\n", - "\n", - "**encode:**\n", - " To represent one set of values using another set of values by constructing a mapping between them.\n", - "\n", - "**class variable:**\n", - "A variable defined inside a class definition, but not inside any method.\n", - "\n", - "**totally ordered:**\n", - "A set of objects is totally ordered if we can compare any two elements and the results are consistent.\n", - "\n", - "**delegation:**\n", - "When one method passes responsibility to another method to do most or all of the work.\n", - "\n", - "**parent class:**\n", - "A class that is inherited from.\n", - "\n", - "**child class:**\n", - "A class that inherits from another class.\n", - "\n", - "**specialization:**\n", - "A way of using inheritance to create a new class that is a specialized version of an existing class." - ] - }, - { - "cell_type": "markdown", - "id": "1aea9b2b", - "metadata": {}, - "source": [ - "## Exercises" - ] - }, - { - "cell_type": "code", - "execution_count": 64, - "id": "e281457a", - "metadata": { - "tags": [ - "remove-print" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Exception reporting mode: Verbose\n" - ] - } - ], - "source": [ - "# This cell tells Jupyter to provide detailed debugging information\n", - "# when a runtime error occurs. Run it before working on the exercises.\n", - "\n", - "%xmode Verbose" - ] - }, - { - "cell_type": "markdown", - "id": "7913e6b1", - "metadata": {}, - "source": [ - "### Ask a Virtual Assistant\n", - "\n", - "When it goes well, object-oriented programming can make programs more readable, testable, and reusable.\n", - "But it can also make programs complicated and hard to maintain.\n", - "As a result, OOP is a topic of controversy -- some people love it, and some people don't.\n", - "\n", - "To learn more about the topic, ask a virtual assistant:\n", - "\n", - "* What are some pros and cons of object-oriented programming?\n", - "\n", - "* What does it mean when people say \"favor composition over inheritance\"?\n", - "\n", - "* What is the Liskov substitution principle?\n", - "\n", - "* Is Python an object-oriented language?\n", - "\n", - "* What are the requirements for a set to be totally ordered?\n", - "\n", - "And as always, consider using a virtual assistant to help with the following exercises." - ] - }, - { - "cell_type": "markdown", - "id": "1af81269", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "In contract bridge, a \"trick\" is a round of play in which each of four players plays one card.\n", - "To represent those cards, we'll define a class that inherits from `Deck`." - ] - }, - { - "cell_type": "code", - "execution_count": 65, - "id": "47d9ce31", - "metadata": {}, - "outputs": [], - "source": [ - "class Trick(Deck):\n", - " \"\"\"Represents a trick in contract bridge.\"\"\"" - ] - }, - { - "cell_type": "markdown", - "id": "9916d562", - "metadata": {}, - "source": [ - "As an example, consider this trick, where the first player leads with the 3 of Diamonds, which means that Diamonds are the \"led suit\".\n", - "The second and third players \"follow suit\", which means they play a card with the led suit.\n", - "The fourth player plays a card of a different suit, which means they cannot win the trick.\n", - "So the winner of this trick is the third player, because they played the highest card in the led suit." - ] - }, - { - "cell_type": "code", - "execution_count": 66, - "id": "7bb54059", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "3 of Diamonds\n", - "10 of Diamonds\n", - "Queen of Diamonds\n", - "King of Hearts\n" - ] - } - ], - "source": [ - "cards = [Card(1, 3),\n", - " Card(1, 10),\n", - " Card(1, 12),\n", - " Card(2, 13)]\n", - "trick = Trick(cards)\n", - "print(trick)" - ] - }, - { - "cell_type": "markdown", - "id": "c94a1337", - "metadata": {}, - "source": [ - "Write a `Trick` method called `find_winner` that loops through the cards in the `Trick` and returns the index of the card that wins.\n", - "In the previous example, the index of the winning card is `2`." - ] - }, - { - "cell_type": "markdown", - "id": "60c43389", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "You can use the following outline to get started." - ] - }, - { - "cell_type": "code", - "execution_count": 67, - "id": "72a410d7", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "%%add_method_to Trick\n", - "\n", - " def find_winner(self):\n", - " return 0" - ] - }, - { - "cell_type": "code", - "execution_count": 68, - "id": "b09cceb1", - "metadata": { - "tags": [ - "remove-cell", - "solution" - ] - }, - "outputs": [], - "source": [ - "%%add_method_to Trick\n", - "\n", - " def find_winner(self):\n", - " lead = self.cards[0]\n", - " \n", - " top_index = 0\n", - " top_rank = lead.rank\n", - " \n", - " for i, card in enumerate(self.cards):\n", - " if card.suit == lead.suit and card.rank > top_rank:\n", - " top_index = i\n", - " top_rank = card.rank\n", - " \n", - " return top_index" - ] - }, - { - "cell_type": "markdown", - "id": "d7e3b94c", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "If you test your method with the previous example, the index of the winning card should be `2`." - ] - }, - { - "cell_type": "code", - "execution_count": 69, - "id": "e185c2f7", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "2" - ] - }, - "execution_count": 69, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "trick.find_winner()" - ] - }, - { - "cell_type": "markdown", - "id": "b5b9fb4b", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "The next few exercises ask to you write functions that classify poker hands.\n", - "If you are not familiar with poker, I'll explain what you need to know.\n", - "We'll use the following class to represent poker hands." - ] - }, - { - "cell_type": "code", - "execution_count": 70, - "id": "2558ddd1", - "metadata": {}, - "outputs": [], - "source": [ - "class PokerHand(Hand):\n", - " \"\"\"Represents a poker hand.\"\"\"\n", - "\n", - " def get_suit_counts(self):\n", - " counter = {}\n", - " for card in self.cards:\n", - " key = card.suit\n", - " counter[key] = counter.get(key, 0) + 1\n", - " return counter\n", - " \n", - " def get_rank_counts(self):\n", - " counter = {}\n", - " for card in self.cards:\n", - " key = card.rank\n", - " counter[key] = counter.get(key, 0) + 1\n", - " return counter " - ] - }, - { - "cell_type": "markdown", - "id": "2daecced", - "metadata": {}, - "source": [ - "`PokerHand` provides two methods that will help with the exercises.\n", - "\n", - "* `get_suit_counts` loops through the cards in the `PokerHand`, counts the number of cards in each suit, and returns a dictionary that maps from each suit code to the number of times it appears.\n", - "\n", - "* `get_rank_counts` does the same thing with the ranks of the cards, returning a dictionary that maps from each rank code to the number of times it appears.\n", - "\n", - "All of the exercises that follow can be done using only the Python features we have learned so far, but some of them are more difficult than most of the previous exercises.\n", - "I encourage you to ask a virtual assistant for help.\n", - "\n", - "For problems like this, it often works well to ask for general advice about strategies and algorithms.\n", - "Then you can either write the code yourself or ask for code.\n", - "If you ask for code, you might want to provide the relevant class definitions as part of the prompt." - ] - }, - { - "cell_type": "markdown", - "id": "ccc2d8ca", - "metadata": {}, - "source": [ - "As a first exercise, we'll write a method called `has_flush` that checks whether a hand has a \"flush\" -- that is, whether it contains at least five cards of the same suit.\n", - "\n", - "In most varieties of poker, a hand contains either five or seven cards, but there are some exotic variations where a hand contains other numbers of cards.\n", - "But regardless of how many cards there are in a hand, the only ones that count are the five that make the best hand." - ] - }, - { - "cell_type": "markdown", - "id": "6911a0f6", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "You can use the following outline to get started." - ] - }, - { - "cell_type": "code", - "execution_count": 71, - "id": "7aa25f29", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "%%add_method_to PokerHand\n", - "\n", - " def has_flush(self):\n", - " \"\"\"Checks whether this hand has a flush.\"\"\"\n", - " return False" - ] - }, - { - "cell_type": "code", - "execution_count": 72, - "id": "72c769d5", - "metadata": { - "tags": [ - "remove-cell", - "solution" - ] - }, - "outputs": [], - "source": [ - "%%add_method_to PokerHand\n", - "\n", - " def has_flush(self):\n", - " \"\"\"Checks whether this hand has a flush.\"\"\"\n", - " counter = self.get_suit_counts()\n", - " for count in counter.values():\n", - " if count >= 5:\n", - " return True\n", - " return False" - ] - }, - { - "cell_type": "markdown", - "id": "07878cb3", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "To test this method, we'll construct a hand with five cards that are all Clubs, so it contains a flush." - ] - }, - { - "cell_type": "code", - "execution_count": 73, - "id": "e1c4f474", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "10 of Clubs\n", - "Jack of Clubs\n", - "Queen of Clubs\n", - "King of Clubs\n", - "Ace of Clubs\n" - ] - } - ], - "source": [ - "good_hand = PokerHand('good_hand')\n", - "\n", - "suit = 0\n", - "for rank in range(10, 15):\n", - " card = Card(suit, rank)\n", - " good_hand.put_card(card)\n", - " \n", - "print(good_hand)" - ] - }, - { - "cell_type": "markdown", - "id": "83698207", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "If we invoke `get_suit_counts`, we can confirm that the rank code `0` appears `5` times." - ] - }, - { - "cell_type": "code", - "execution_count": 74, - "id": "c91e3bdb", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "{0: 5}" - ] - }, - "execution_count": 74, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "good_hand.get_suit_counts()" - ] - }, - { - "cell_type": "markdown", - "id": "fdec7276", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "So `has_flush` should return `True`." - ] - }, - { - "cell_type": "code", - "execution_count": 75, - "id": "a60e233d", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 75, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "good_hand.has_flush()" - ] - }, - { - "cell_type": "markdown", - "id": "ba10e1ba", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "As a second test, we'll construct a hand with three Clubs and two other suits." - ] - }, - { - "cell_type": "code", - "execution_count": 76, - "id": "ae5063e2", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2 of Clubs\n", - "3 of Clubs\n", - "4 of Hearts\n", - "5 of Spades\n", - "7 of Clubs\n" - ] - } - ], - "source": [ - "cards = [Card(0, 2),\n", - " Card(0, 3),\n", - " Card(2, 4),\n", - " Card(3, 5),\n", - " Card(0, 7),\n", - " ]\n", - "\n", - "bad_hand = PokerHand('bad hand')\n", - "for card in cards:\n", - " bad_hand.put_card(card)\n", - " \n", - "print(bad_hand)" - ] - }, - { - "cell_type": "markdown", - "id": "8611610f", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "So `has_flush` should return `False`." - ] - }, - { - "cell_type": "code", - "execution_count": 77, - "id": "940928ba", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 77, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "bad_hand.has_flush()" - ] - }, - { - "cell_type": "markdown", - "id": "ad716880", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "Write a method called `has_straight` that checks whether a hand contains a straight, which is a set of five cards with consecutive ranks.\n", - "For example, if a hand contains ranks `5`, `6`, `7`, `8`, and `9`, it contains a straight.\n", - "\n", - "An Ace can come before a two or after a King, so `Ace`, `2`, `3`, `4`, `5` is a straight and so is `10`, `Jack`, `Queen`, `King`, `Ace`.\n", - "But a straight cannot \"wrap around\", so `King`, `Ace`, `2`, `3`, `4` is not a straight." - ] - }, - { - "cell_type": "markdown", - "id": "bbd04e50", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "You can use the following outline to get started.\n", - "It includes a few lines of code that count the number of Aces -- represented with the code `1` or `14` -- and store the total in both locations of the counter." - ] - }, - { - "cell_type": "code", - "execution_count": 78, - "id": "6513ef14", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "%%add_method_to PokerHand\n", - "\n", - " def has_straight(self, n=5):\n", - " \"\"\"Checks whether this hand has a straight with at least `n` cards.\"\"\"\n", - " counter = self.get_rank_counts()\n", - " aces = counter.get(1, 0) + counter.get(14, 0)\n", - " counter[1] = aces\n", - " counter[14] = aces\n", - " \n", - " return False" - ] - }, - { - "cell_type": "code", - "execution_count": 79, - "id": "8a220d67", - "metadata": { - "tags": [ - "remove-cell", - "solution" - ] - }, - "outputs": [], - "source": [ - "%%add_method_to PokerHand\n", - "\n", - " def has_straight(self, n=5):\n", - " \"\"\"Checks whether this hand has a straight.\"\"\"\n", - " counter = self.get_rank_counts()\n", - " aces = counter.get(1, 0) + counter.get(14, 0)\n", - " counter[1] = aces\n", - " counter[14] = aces\n", - "\n", - " in_a_row = 0\n", - " for i in range(1, 15):\n", - " if counter.get(i, 0):\n", - " in_a_row += 1\n", - " if in_a_row == n:\n", - " return True\n", - " else:\n", - " in_a_row = 0\n", - " return False" - ] - }, - { - "cell_type": "markdown", - "id": "d2e576bf", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "`good_hand`, which we created for the previous exercise, contains a straight.\n", - "If we use `get_rank_counts`, we can confirm that it has at least one card with each of five consecutive ranks." - ] - }, - { - "cell_type": "code", - "execution_count": 80, - "id": "5a422cae", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "{10: 1, 11: 1, 12: 1, 13: 1, 14: 1}" - ] - }, - "execution_count": 80, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "good_hand.get_rank_counts()" - ] - }, - { - "cell_type": "markdown", - "id": "009a20dd", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "So `has_straight` should return `True`." - ] - }, - { - "cell_type": "code", - "execution_count": 81, - "id": "24483b99", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 81, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "good_hand.has_straight()" - ] - }, - { - "cell_type": "markdown", - "id": "1d79b2b6", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "`bad_hand` does not contain a straight, so `has_straight` should return `False`." - ] - }, - { - "cell_type": "code", - "execution_count": 82, - "id": "69f7cea9", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 82, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "bad_hand.has_straight()" - ] - }, - { - "cell_type": "markdown", - "id": "c1ecebd3", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "A hand has a straight flush if it contains a set of five cards that are both a straight and a flush -- that is, five cards of the same suit with consecutive ranks.\n", - "Write a `PokerHand` method that checks whether a hand has a straight flush." - ] - }, - { - "cell_type": "markdown", - "id": "94570008", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "You can use the following outline to get started." - ] - }, - { - "cell_type": "code", - "execution_count": 83, - "id": "88bd35fb", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "%%add_method_to PokerHand\n", - "\n", - " def has_straightflush(self):\n", - " \"\"\"Check whether this hand has a straight flush.\"\"\"\n", - " return False" - ] - }, - { - "cell_type": "code", - "execution_count": 84, - "id": "5e602773", - "metadata": { - "tags": [ - "remove-cell", - "solution" - ] - }, - "outputs": [], - "source": [ - "%%add_method_to PokerHand\n", - "\n", - " def partition(self):\n", - " \"\"\"Make a list of four hands, each containing only one suit.\"\"\"\n", - " hands = []\n", - " for i in range(4):\n", - " hands.append(PokerHand())\n", - " \n", - " for card in self.cards:\n", - " hands[card.suit].put_card(card)\n", - " \n", - " return hands" - ] - }, - { - "cell_type": "code", - "execution_count": 85, - "id": "997b120d", - "metadata": { - "tags": [ - "remove-cell", - "solution" - ] - }, - "outputs": [], - "source": [ - "%%add_method_to PokerHand\n", - "\n", - " def has_straightflush(self):\n", - " \"\"\"Check whether this hand has a straight flush.\"\"\"\n", - " for hand in self.partition():\n", - " if hand.has_straight():\n", - " return True\n", - " return False" - ] - }, - { - "cell_type": "markdown", - "id": "4a1e17b1", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "Use the following examples to test your method." - ] - }, - { - "cell_type": "code", - "execution_count": 86, - "id": "23704ab4", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 86, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "good_hand.has_straightflush() # should return True" - ] - }, - { - "cell_type": "code", - "execution_count": 87, - "id": "7d8d2fdb", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 87, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "bad_hand.has_straightflush() # should return False" - ] - }, - { - "cell_type": "markdown", - "id": "9127ceb1", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "Note that it is not enough to check whether a hand has a straight and a flush.\n", - "To see why, consider the following hand." - ] - }, - { - "cell_type": "code", - "execution_count": 88, - "id": "4c5727d9", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2 of Clubs\n", - "3 of Clubs\n", - "4 of Hearts\n", - "5 of Spades\n", - "7 of Clubs\n", - "6 of Clubs\n", - "9 of Clubs\n" - ] - } - ], - "source": [ - "from copy import deepcopy\n", - "\n", - "straight_and_flush = deepcopy(bad_hand)\n", - "straight_and_flush.put_card(Card(0, 6))\n", - "straight_and_flush.put_card(Card(0, 9))\n", - "print(straight_and_flush)" - ] - }, - { - "cell_type": "markdown", - "id": "c4ed18e4", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "This hand contains a straight and a flush, but they are not the same five cards." - ] - }, - { - "cell_type": "code", - "execution_count": 89, - "id": "7e65e951", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "(True, True)" - ] - }, - "execution_count": 89, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - " straight_and_flush.has_straight(), straight_and_flush.has_flush()" - ] - }, - { - "cell_type": "markdown", - "id": "5ff4e160", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "So it does not contain a straight flush." - ] - }, - { - "cell_type": "code", - "execution_count": 90, - "id": "758fc922", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 90, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "straight_and_flush.has_straightflush() # should return False" - ] - }, - { - "cell_type": "markdown", - "id": "dd742401", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "A poker hand has a pair if it contains two or more cards with the same rank.\n", - "Write a `PokerHand` method that checks whether a hand contains a pair." - ] - }, - { - "cell_type": "markdown", - "id": "00464353", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "You can use the following outline to get started." - ] - }, - { - "cell_type": "code", - "execution_count": 91, - "id": "15a81a40", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "%%add_method_to PokerHand\n", - "\n", - " def check_sets(self, *need_list):\n", - " return True" - ] - }, - { - "cell_type": "code", - "execution_count": 92, - "id": "bc7ca211", - "metadata": { - "tags": [ - "solution", - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "%%add_method_to PokerHand\n", - "\n", - " def check_sets(self, *need_list):\n", - " counts = self.get_rank_counts()\n", - " set_list = sorted(counts.values(), reverse=True)\n", - " \n", - " for need, have in zip(need_list, set_list):\n", - " if need > have:\n", - " return False\n", - " return True" - ] - }, - { - "cell_type": "code", - "execution_count": 93, - "id": "20b65d89", - "metadata": { - "tags": [ - "solution", - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "%%add_method_to PokerHand\n", - "\n", - " def has_pair(self):\n", - " return self.check_sets(2)" - ] - }, - { - "cell_type": "markdown", - "id": "9f001207", - "metadata": {}, - "source": [ - "To test your method, here's a hand that has a pair." - ] - }, - { - "cell_type": "code", - "execution_count": 94, - "id": "57e616be", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2 of Clubs\n", - "3 of Clubs\n", - "4 of Hearts\n", - "5 of Spades\n", - "7 of Clubs\n", - "2 of Diamonds\n" - ] - } - ], - "source": [ - "pair = deepcopy(bad_hand)\n", - "pair.put_card(Card(1, 2))\n", - "print(pair)" - ] - }, - { - "cell_type": "code", - "execution_count": 95, - "id": "b8d87fd8", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 95, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "pair.has_pair() # should return True" - ] - }, - { - "cell_type": "code", - "execution_count": 96, - "id": "3016e99a", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 96, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "bad_hand.has_pair() # should return False" - ] - }, - { - "cell_type": "code", - "execution_count": 97, - "id": "852e3b11", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 97, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "good_hand.has_pair() # should return False" - ] - }, - { - "cell_type": "markdown", - "id": "c4180a64", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "A hand has a full house if it contains three cards of one rank and two cards of another rank.\n", - "Write a `PokerHand` method that checks whether a hand has a full house." - ] - }, - { - "cell_type": "markdown", - "id": "5aa80ee6", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "You can use the following outline to get started." - ] - }, - { - "cell_type": "code", - "execution_count": 98, - "id": "1f95601d", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "%%add_method_to PokerHand\n", - "\n", - " def has_full_house(self):\n", - " return False" - ] - }, - { - "cell_type": "code", - "execution_count": 99, - "id": "420ca0fd", - "metadata": { - "tags": [ - "solution", - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "%%add_method_to PokerHand\n", - "\n", - " def has_full_house(self):\n", - " return self.check_sets(3, 2)" - ] - }, - { - "cell_type": "markdown", - "id": "f020cf9e", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "You can use this hand to test your method." - ] - }, - { - "cell_type": "code", - "execution_count": 100, - "id": "1e4957cb", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2 of Clubs\n", - "3 of Clubs\n", - "4 of Hearts\n", - "5 of Spades\n", - "7 of Clubs\n", - "2 of Diamonds\n", - "2 of Hearts\n", - "3 of Hearts\n" - ] - } - ], - "source": [ - "boat = deepcopy(pair)\n", - "boat.put_card(Card(2, 2))\n", - "boat.put_card(Card(2, 3))\n", - "print(boat)" - ] - }, - { - "cell_type": "code", - "execution_count": 101, - "id": "4dc8b899", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 101, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "boat.has_full_house() # should return True" - ] - }, - { - "cell_type": "code", - "execution_count": 102, - "id": "86229763", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 102, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "pair.has_full_house() # should return False" - ] - }, - { - "cell_type": "code", - "execution_count": 103, - "id": "7f1b3664", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 103, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "good_hand.has_full_house() # should return False" - ] - }, - { - "cell_type": "markdown", - "id": "666340c1", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "This exercise is a cautionary tale about a common error that can be difficult to debug.\n", - "Consider the following class definition." - ] - }, - { - "cell_type": "code", - "execution_count": 104, - "id": "85b47651", - "metadata": {}, - "outputs": [], - "source": [ - "class Kangaroo:\n", - " \"\"\"A Kangaroo is a marsupial.\"\"\"\n", - " \n", - " def __init__(self, name, contents=[]):\n", - " \"\"\"Initialize the pouch contents.\n", - "\n", - " name: string\n", - " contents: initial pouch contents.\n", - " \"\"\"\n", - " self.name = name\n", - " self.contents = contents\n", - "\n", - " def __str__(self):\n", - " \"\"\"Return a string representaion of this Kangaroo.\n", - " \"\"\"\n", - " t = [ self.name + ' has pouch contents:' ]\n", - " for obj in self.contents:\n", - " s = ' ' + object.__str__(obj)\n", - " t.append(s)\n", - " return '\\n'.join(t)\n", - "\n", - " def put_in_pouch(self, item):\n", - " \"\"\"Adds a new item to the pouch contents.\n", - "\n", - " item: object to be added\n", - " \"\"\"\n", - " self.contents.append(item)" - ] - }, - { - "cell_type": "markdown", - "id": "1e349832", - "metadata": {}, - "source": [ - "`__init__` takes two parameters: `name` is required, but `contents` is optional -- if it's not provided, the default value is an empty list.\n", - "\n", - "`__str__` returns a string representation of the object that includes the name and the contents of the pouch.\n", - "\n", - "`put_in_pouch` takes any object and appends it to `contents`.\n", - "\n", - "Now let's see how this class works.\n", - "We'll create two `Kangaroo` objects with the names `'Kanga'` and `'Roo'`." - ] - }, - { - "cell_type": "code", - "execution_count": 105, - "id": "13f1e1f3", - "metadata": {}, - "outputs": [], - "source": [ - "kanga = Kangaroo('Kanga')\n", - "roo = Kangaroo('Roo')" - ] - }, - { - "cell_type": "markdown", - "id": "533982d1", - "metadata": {}, - "source": [ - "To Kanga's pouch we'll add two strings and Roo." - ] - }, - { - "cell_type": "code", - "execution_count": 106, - "id": "e882e2d6", - "metadata": {}, - "outputs": [], - "source": [ - "kanga.put_in_pouch('wallet')\n", - "kanga.put_in_pouch('car keys')\n", - "kanga.put_in_pouch(roo)" - ] - }, - { - "cell_type": "markdown", - "id": "41cd6d6e", - "metadata": {}, - "source": [ - "If we print `kanga`, it seems like everything worked." - ] - }, - { - "cell_type": "code", - "execution_count": 107, - "id": "724805bb", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Kanga has pouch contents:\n", - " 'wallet'\n", - " 'car keys'\n", - " <__main__.Kangaroo object at 0x7f44f9b4e500>\n" - ] - } - ], - "source": [ - "print(kanga)" - ] - }, - { - "cell_type": "markdown", - "id": "0ba26163", - "metadata": {}, - "source": [ - "But what happens if we print `roo`?" - ] - }, - { - "cell_type": "code", - "execution_count": 108, - "id": "3f6cff16", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Roo has pouch contents:\n", - " 'wallet'\n", - " 'car keys'\n", - " <__main__.Kangaroo object at 0x7f44f9b4e500>\n" - ] - } - ], - "source": [ - "print(roo)" - ] - }, - { - "cell_type": "markdown", - "id": "a2aef813", - "metadata": {}, - "source": [ - "Roo's pouch contains the same contents as Kanga's, including a reference to `roo`!\n", - "\n", - "See if you can figure out what went wrong.\n", - "Then ask a virtual assistant, \"What's wrong with the following program?\" and paste in the definition of `Kangaroo`." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "6ef15c8c", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "id": "a7f4edf8", - "metadata": { - "tags": [] - }, - "source": [ - "[Think Python: 3rd Edition](https://allendowney.github.io/ThinkPython/index.html)\n", - "\n", - "Copyright 2024 [Allen B. Downey](https://allendowney.com)\n", - "\n", - "Code license: [MIT License](https://mit-license.org/)\n", - "\n", - "Text license: [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-nc-sa/4.0/)" - ] - } - ], - "metadata": { - "celltoolbar": "Tags", - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.11" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/soln/chap18.ipynb b/soln/chap18.ipynb deleted file mode 100644 index 9272f30..0000000 --- a/soln/chap18.ipynb +++ /dev/null @@ -1,3446 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "1331faa1", - "metadata": {}, - "source": [ - "You can order print and ebook versions of *Think Python 3e* from\n", - "[Bookshop.org](https://bookshop.org/a/98697/9781098155438) and\n", - "[Amazon](https://www.amazon.com/_/dp/1098155432?smid=ATVPDKIKX0DER&_encoding=UTF8&tag=oreilly20-20&_encoding=UTF8&tag=greenteapre01-20&linkCode=ur2&linkId=e2a529f94920295d27ec8a06e757dc7c&camp=1789&creative=9325)." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "260216be", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "from os.path import basename, exists\n", - "\n", - "def download(url):\n", - " filename = basename(url)\n", - " if not exists(filename):\n", - " from urllib.request import urlretrieve\n", - "\n", - " local, _ = urlretrieve(url, filename)\n", - " print(\"Downloaded \" + str(local))\n", - " return filename\n", - "\n", - "download('https://github.com/AllenDowney/ThinkPython/raw/v3/thinkpython.py');\n", - "download('https://github.com/AllenDowney/ThinkPython/raw/v3/diagram.py');\n", - "\n", - "import thinkpython" - ] - }, - { - "cell_type": "markdown", - "id": "f5cb253c", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "Here are versions of the `Card`, `Deck`, and `Hand` classes from Chapter 17, which we will use in some examples in this chapter." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "ad0da137", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "class Card:\n", - " suit_names = ['Clubs', 'Diamonds', 'Hearts', 'Spades']\n", - " rank_names = [None, 'Ace', '2', '3', '4', '5', '6', '7', \n", - " '8', '9', '10', 'Jack', 'Queen', 'King', 'Ace']\n", - " \n", - " def __init__(self, suit, rank):\n", - " self.suit = suit\n", - " self.rank = rank\n", - "\n", - " def __str__(self):\n", - " rank_name = Card.rank_names[self.rank]\n", - " suit_name = Card.suit_names[self.suit]\n", - " return f'{rank_name} of {suit_name}' " - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "8b00461b", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "import random\n", - "\n", - "class Deck:\n", - " def __init__(self, cards):\n", - " self.cards = cards\n", - " \n", - " def __str__(self):\n", - " res = []\n", - " for card in self.cards:\n", - " res.append(str(card))\n", - " return '\\n'.join(res)\n", - " \n", - " def make_cards():\n", - " cards = []\n", - " for suit in range(4):\n", - " for rank in range(2, 15):\n", - " card = Card(suit, rank)\n", - " cards.append(card)\n", - " return cards\n", - " \n", - " def shuffle(self):\n", - " random.shuffle(self.cards)\n", - " \n", - " def pop_card(self):\n", - " return self.cards.pop()\n", - " \n", - " def add_card(self, card):\n", - " self.cards.append(card)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "737b8979", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "class Hand(Deck):\n", - " def __init__(self, label=''):\n", - " self.label = label\n", - " self.cards = []" - ] - }, - { - "cell_type": "markdown", - "id": "27e8d827", - "metadata": {}, - "source": [ - "# Python Extras\n", - "\n", - "One of my goals for this book has been to teach you as little Python as possible. \n", - "When there were two ways to do something, I picked one and avoided mentioning the other.\n", - "Or sometimes I put the second one into an exercise.\n", - "\n", - "Now I want to go back for some of the good bits that got left behind.\n", - "Python provides a number of features that are not really necessary -- you can write good code without them -- but with them you can write code that's more concise, readable, or efficient, and sometimes all three." - ] - }, - { - "cell_type": "markdown", - "id": "7ddcece8", - "metadata": {}, - "source": [ - "## Sets\n", - "\n", - "Python provides a class called `set` that represents a collection of unique elements.\n", - "To create an empty set, we can use the class object like a function." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "77f98242", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "set()" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "s1 = set()\n", - "s1" - ] - }, - { - "cell_type": "markdown", - "id": "904e2071", - "metadata": {}, - "source": [ - "We can use the `add` method to add elements." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "85157902", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'a', 'b'}" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "s1.add('a')\n", - "s1.add('b')\n", - "s1" - ] - }, - { - "cell_type": "markdown", - "id": "beee02fc", - "metadata": {}, - "source": [ - "Or we can pass any kind of sequence to `set`." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "b470e34a", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'a', 'c', 'd'}" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "s2 = set('acd')\n", - "s2" - ] - }, - { - "cell_type": "markdown", - "id": "42f99153", - "metadata": {}, - "source": [ - "An element can only appear once in a `set`.\n", - "If you add an element that's already there, it has no effect." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "e6a2d78b", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'a', 'b'}" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "s1.add('a')\n", - "s1" - ] - }, - { - "cell_type": "markdown", - "id": "9b0a82ee", - "metadata": {}, - "source": [ - "Or if you create a set with a sequence that contains duplicates, the result contains only unique elements." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "a4f5ff4f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'a', 'b', 'n'}" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "set('banana')" - ] - }, - { - "cell_type": "markdown", - "id": "328e2009", - "metadata": {}, - "source": [ - "Some of the exercises in this book can be done concisely and efficiently with sets. \n", - "For example, here is a solution to an exercise in Chapter 11 that uses a dictionary to check whether there are any duplicate elements in a sequence." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "483046f2", - "metadata": {}, - "outputs": [], - "source": [ - "def has_duplicates(t):\n", - " d = {}\n", - " for x in t:\n", - " d[x] = True\n", - " return len(d) < len(t)" - ] - }, - { - "cell_type": "markdown", - "id": "0b250e58", - "metadata": {}, - "source": [ - "This version adds the element of `t` as keys in a dictionary, and then checks whether there are fewer keys than elements.\n", - "Using sets, we can write the same function like this." - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "fe22c739", - "metadata": {}, - "outputs": [], - "source": [ - "def has_duplicates(t):\n", - " s = set(t)\n", - " return len(s) < len(t)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "3bbd3b72", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "has_duplicates('abba')" - ] - }, - { - "cell_type": "markdown", - "id": "30cf3158", - "metadata": {}, - "source": [ - "An element can only appear in a set once, so if an element in `t` appears more than once, the set will be smaller than `t`.\n", - "If there are no duplicates, the set will be the same size as `t`.\n", - "\n", - "`set` objects provide methods that perform set operations.\n", - "For example, `union` computes the union of two sets, which is a new set that contains all elements that appear in either set." - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "0a8234b1", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'a', 'b', 'c', 'd'}" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "s1.union(s2)" - ] - }, - { - "cell_type": "markdown", - "id": "57b1d50c", - "metadata": {}, - "source": [ - "Some arithmetic operators work with sets.\n", - "For example, the `-` operator performs set subtraction -- the result is a new set that contains all elements from the first set that are _not_ in the second set." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "5b81bb56", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'b'}" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "s1 - s2" - ] - }, - { - "cell_type": "markdown", - "id": "5099226c", - "metadata": {}, - "source": [ - "In [Chapter 12](section_dictionary_subtraction) we used dictionaries to find the words that appear in a document but not in a word list.\n", - "We used the following function, which takes two dictionaries and returns a new dictionary that contains only the keys from the first that don't appear in the second." - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "06a94266", - "metadata": {}, - "outputs": [], - "source": [ - "def subtract(d1, d2):\n", - " res = {}\n", - " for key in d1:\n", - " if key not in d2:\n", - " res[key] = d1[key]\n", - " return res" - ] - }, - { - "cell_type": "markdown", - "id": "455c3e34", - "metadata": {}, - "source": [ - "With sets, we don't have to write this function ourselves.\n", - "If `word_counter` is a dictionary that contains the unique words in the document and `word_list` is a list of valid words, we can compute the set difference like this." - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "3f303544", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "# this cell creates a small example so we can run the following\n", - "# cell without loading the actual data\n", - "\n", - "word_counter = {'word': 1}\n", - "word_list = ['word']" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "b200cbc2", - "metadata": { - "tags": [ - "remove-output" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "set()" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "set(word_counter) - set(word_list)" - ] - }, - { - "cell_type": "markdown", - "id": "91efe708", - "metadata": {}, - "source": [ - "The result is a set that contains the words in the document that don't appear in the word list.\n", - "\n", - "The relational operators work with sets.\n", - "For example, `<=` checks whether one set is a subset of another, including the possibility that they are equal." - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "15919aca", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "set('ab') <= set('abc')" - ] - }, - { - "cell_type": "markdown", - "id": "74d4d824", - "metadata": {}, - "source": [ - "With these operators, we can use sets to do some of the exercises in Chapter 7.\n", - "For example, here's a version of `uses_only` that uses a loop." - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "21940f25", - "metadata": {}, - "outputs": [], - "source": [ - "def uses_only(word, available):\n", - " for letter in word: \n", - " if letter not in available:\n", - " return False\n", - " return True" - ] - }, - { - "cell_type": "markdown", - "id": "58c1da26", - "metadata": {}, - "source": [ - "`uses_only` checks whether all letters in `word` are in `available`.\n", - "With sets, we can rewrite it like this." - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "5769968e", - "metadata": {}, - "outputs": [], - "source": [ - "def uses_only(word, available):\n", - " return set(word) <= set(available)" - ] - }, - { - "cell_type": "markdown", - "id": "01ce8cff", - "metadata": {}, - "source": [ - "If the letters in `word` are a subset of the letters in `available`, that means that `word` uses only letters in `available`." - ] - }, - { - "cell_type": "markdown", - "id": "d7c22ef5", - "metadata": {}, - "source": [ - "## Counters\n", - "\n", - "A `Counter` is like a set, except that if an element appears more than once, the `Counter` keeps track of how many times it appears.\n", - "If you are familiar with the mathematical idea of a \"multiset\", a `Counter` is a\n", - "natural way to represent a multiset.\n", - "\n", - "The `Counter` class is defined in a module called `collections`, so you have to import it.\n", - "Then you can use the class object as a function and pass as an argument a string, list, or any other kind of sequence." - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "1baff39a", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Counter({'a': 3, 'n': 2, 'b': 1})" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from collections import Counter\n", - "\n", - "counter = Counter('banana')\n", - "counter" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "14d5aee5", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Counter({1: 3, 2: 2, 3: 1})" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from collections import Counter\n", - "\n", - "t = (1, 1, 1, 2, 2, 3)\n", - "counter = Counter(t)\n", - "counter" - ] - }, - { - "cell_type": "markdown", - "id": "8da28fe5", - "metadata": {}, - "source": [ - "A `Counter` object is like a dictionary that maps from each key to the number of times it appears.\n", - "As in dictionaries, the keys have to be hashable.\n", - "\n", - "Unlike dictionaries, `Counter` objects don't raise an exception if you access an\n", - "element that doesn't appear.\n", - "Instead, they return `0`." - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "28eb9235", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0" - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "counter['d']" - ] - }, - { - "cell_type": "markdown", - "id": "9bb2b650", - "metadata": {}, - "source": [ - "We can use `Counter` objects to solve one of the exercises from Chapter 10, which asks for a function that takes two words and checks whether they are anagrams -- that is, whether the letters from one can be rearranged to spell the other.\n", - "\n", - "Here's a solution using `Counter` objects." - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "67aadb0b", - "metadata": {}, - "outputs": [], - "source": [ - "def is_anagram(word1, word2):\n", - " return Counter(word1) == Counter(word2)" - ] - }, - { - "cell_type": "markdown", - "id": "6907f368", - "metadata": {}, - "source": [ - "If two words are anagrams, they contain the same letters with the same counts, so their `Counter` objects are equivalent.\n", - "\n", - "`Counter` provides a method called `most_common` that returns a list of value-frequency pairs, sorted from most common to least." - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "0c771fb9", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[(1, 3), (2, 2), (3, 1)]" - ] - }, - "execution_count": 25, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "counter.most_common()" - ] - }, - { - "cell_type": "markdown", - "id": "b02b7dff", - "metadata": {}, - "source": [ - "They also provide methods and operators to perform set-like operations, including addition, subtraction, union and intersection.\n", - "For example, the `+` operator combines two `Counter` objects and creates a new `Counter` that contains the keys from both and the sums of the counts.\n", - "\n", - "We can test it by making a `Counter` with the letters from `'bans'` and adding it to the letters from `'banana'`." - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "38a511cc", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Counter({1: 3, 2: 2, 3: 1, 'b': 1, 'a': 1, 'n': 1, 's': 1})" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "counter2 = Counter('bans')\n", - "counter + counter2" - ] - }, - { - "cell_type": "markdown", - "id": "5461328e", - "metadata": {}, - "source": [ - "You'll have a chance to explore other `Counter` operations in the exercises at the end of this chapter." - ] - }, - { - "cell_type": "markdown", - "id": "7cf47e67", - "metadata": {}, - "source": [ - "## defaultdict\n", - "\n", - "The `collections` module also provides `defaultdict`, which is like a dictionary except that if you access a key that doesn't exist, it generates a new value automatically.\n", - "\n", - "When you create a `defaultdict`, you provide a function that's used to create new values.\n", - "A function that create objects is sometimes called a **factory**.\n", - "The built-in functions that create lists, sets, and other types can be used as factories.\n", - "\n", - "For example, here's a `defaultdict` that creates a new `list` when needed. " - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "5303812d", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "defaultdict(list, {})" - ] - }, - "execution_count": 27, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from collections import defaultdict\n", - "\n", - "d = defaultdict(list)\n", - "d" - ] - }, - { - "cell_type": "markdown", - "id": "9f43d537", - "metadata": {}, - "source": [ - "Notice that the argument is `list`, which is a class object, not `list()`, which is a function call that creates a new list.\n", - "The factory function doesn't get called unless we access a key that doesn't exist." - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "4955b14f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[]" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "t = d['new key']\n", - "t" - ] - }, - { - "cell_type": "markdown", - "id": "01f87415", - "metadata": {}, - "source": [ - "The new list, which we're calling `t`, is also added to the dictionary.\n", - "So if we modify `t`, the change appears in `d`:" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "d6a771af", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['new value']" - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "t.append('new value')\n", - "d['new key']" - ] - }, - { - "cell_type": "markdown", - "id": "3e5d0151", - "metadata": {}, - "source": [ - "If you are making a dictionary of lists, you can often write simpler\n", - "code using `defaultdict`. \n", - "\n", - "In one of the exercises in [Chapter 11](chapter_tuples), I made a dictionary that maps from a sorted string of letters to the list of words that can be spelled with those letters.\n", - "For example, the string `'opst'` maps to the list `['opts', 'post', 'pots', 'spot', 'stop', 'tops']`.\n", - "Here's the original code." - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "id": "9c4166e4", - "metadata": {}, - "outputs": [], - "source": [ - "def all_anagrams(filename):\n", - " d = {}\n", - " for line in open(filename):\n", - " word = line.strip().lower()\n", - " t = signature(word)\n", - " if t not in d:\n", - " d[t] = [word]\n", - " else:\n", - " d[t].append(word)\n", - " return d" - ] - }, - { - "cell_type": "markdown", - "id": "8e9a0a2b", - "metadata": {}, - "source": [ - "And here's a simpler version using a `defaultdict`." - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "id": "e908188e", - "metadata": {}, - "outputs": [], - "source": [ - "def all_anagrams(filename):\n", - " d = defaultdict(list)\n", - " for line in open(filename):\n", - " word = line.strip().lower()\n", - " t = signature(word)\n", - " d[t].append(word)\n", - " return d" - ] - }, - { - "cell_type": "markdown", - "id": "cccdd46c", - "metadata": {}, - "source": [ - "In the exercises at the end of the chapter, you'll have a chance to practice using `defaultdict` objects." - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "id": "4e1e35f7", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['woods']" - ] - }, - "execution_count": 32, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from collections import defaultdict\n", - "\n", - "d = defaultdict(list)\n", - "key = ('into', 'the')\n", - "d[key].append('woods')\n", - "d[key]" - ] - }, - { - "cell_type": "markdown", - "id": "610359c1", - "metadata": {}, - "source": [ - "## Conditional expressions\n", - "\n", - "Conditional statements are often used to choose one of two values, like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "id": "25ff32b9", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "import math\n", - "x = 5" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "id": "11676b80", - "metadata": {}, - "outputs": [], - "source": [ - "if x > 0:\n", - " y = math.log(x)\n", - "else:\n", - " y = float('nan')" - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "id": "0249c4c8", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "1.6094379124341003" - ] - }, - "execution_count": 35, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "y" - ] - }, - { - "cell_type": "markdown", - "id": "2c5fc3dd", - "metadata": {}, - "source": [ - "This statement checks whether `x` is positive. If so, it computes its logarithm. \n", - "If not, `math.log` would raise a ValueError.\n", - "To avoid stopping the program, we generate a `NaN`, which is a special floating-point value that represents \"Not a Number\".\n", - "\n", - "We can write this statement more concisely using a **conditional expression**." - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "id": "803a39c4", - "metadata": {}, - "outputs": [], - "source": [ - "y = math.log(x) if x > 0 else float('nan')" - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "id": "03b1afa9", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "1.6094379124341003" - ] - }, - "execution_count": 37, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "y" - ] - }, - { - "cell_type": "markdown", - "id": "6a7cf27b", - "metadata": {}, - "source": [ - "You can almost read this line like English: \"`y` gets log-`x` if `x` is greater than 0; otherwise it gets `NaN`\".\n", - "\n", - "Recursive functions can sometimes be written concisely using conditional expressions. \n", - "For example, here is a version of `factorial` with a conditional _statement_." - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "id": "73d3e7e9", - "metadata": {}, - "outputs": [], - "source": [ - "def factorial(n):\n", - " if n == 0:\n", - " return 1\n", - " else:\n", - " return n * factorial(n-1)" - ] - }, - { - "cell_type": "markdown", - "id": "56052b5c", - "metadata": {}, - "source": [ - "And here's a version with a conditional _expression_." - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "id": "d14e82df", - "metadata": {}, - "outputs": [], - "source": [ - "def factorial(n):\n", - " return 1 if n == 0 else n * factorial(n-1)" - ] - }, - { - "cell_type": "markdown", - "id": "d53fbc15", - "metadata": {}, - "source": [ - "Another use of conditional expressions is handling optional arguments.\n", - "For example, here is class definition with an `__init__` method that uses a conditional statement to check a parameter with a default value." - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "id": "aa8fcfe5", - "metadata": {}, - "outputs": [], - "source": [ - "class Kangaroo:\n", - " def __init__(self, name, contents=None):\n", - " self.name = name\n", - " if contents is None:\n", - " contents = []\n", - " self.contents = contents" - ] - }, - { - "cell_type": "markdown", - "id": "655bfc46", - "metadata": {}, - "source": [ - "Here's a version that uses a conditional expression." - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "id": "fcb67453", - "metadata": {}, - "outputs": [], - "source": [ - "def __init__(self, name, contents=None):\n", - " self.name = name\n", - " self.contents = [] if contents is None else contents " - ] - }, - { - "cell_type": "markdown", - "id": "fef85229", - "metadata": {}, - "source": [ - "In general, you can replace a conditional statement with a conditional expression if both branches contain a single expression and no statements." - ] - }, - { - "cell_type": "markdown", - "id": "45d3b306", - "metadata": {}, - "source": [ - "## List comprehensions\n", - "\n", - "In previous chapters, we've seen a few examples where we start with an empty list and add elements, one at a time, using the `append` method.\n", - "For example, suppose we have a string that contains the title of a movie, and we want to capitalize all of the words." - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "id": "a1d31625", - "metadata": {}, - "outputs": [], - "source": [ - "title = 'monty python and the holy grail'" - ] - }, - { - "cell_type": "markdown", - "id": "9eeb45a6", - "metadata": {}, - "source": [ - "We can split it into a list of strings, loop through the strings, capitalize them, and append them to a list." - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "id": "595cdbc8", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'Monty Python And The Holy Grail'" - ] - }, - "execution_count": 43, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "t = []\n", - "for word in title.split():\n", - " t.append(word.capitalize())\n", - "\n", - "' '.join(t)" - ] - }, - { - "cell_type": "markdown", - "id": "b96197c2", - "metadata": {}, - "source": [ - "We can do the same thing more concisely using a **list comprehension**:" - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "id": "ac327d75", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'Monty Python And The Holy Grail'" - ] - }, - "execution_count": 44, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "t = [word.capitalize() for word in title.split()]\n", - "\n", - "' '.join(t)" - ] - }, - { - "cell_type": "markdown", - "id": "e5b565ad", - "metadata": {}, - "source": [ - "The bracket operators indicate that we are constructing a new list.\n", - "The expression inside the brackets specifies the elements of the list, and the `for` clause indicates what sequence we are looping through.\n", - "\n", - "The syntax of a list comprehension might seem strange, because the loop variable -- `word` in this example -- appears in the expression before we get to its definition.\n", - "But you get used to it.\n", - "\n", - "As another example, in [Chapter 9](section_word_list) we used this loop to read words from a file and append them to a list." - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "id": "036ec803", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "download('https://raw.githubusercontent.com/AllenDowney/ThinkPython2/master/code/words.txt');" - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "id": "1437f1f1", - "metadata": {}, - "outputs": [], - "source": [ - "word_list = []\n", - "\n", - "for line in open('words.txt'):\n", - " word = line.strip()\n", - " word_list.append(word)" - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "id": "c9c2a932", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "113783" - ] - }, - "execution_count": 47, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(word_list)" - ] - }, - { - "cell_type": "markdown", - "id": "2d1df49b", - "metadata": {}, - "source": [ - "Here's how we can write that as a list comprehension." - ] - }, - { - "cell_type": "code", - "execution_count": 48, - "id": "d4f854c6", - "metadata": {}, - "outputs": [], - "source": [ - "word_list = [line.strip() for line in open('words.txt')]" - ] - }, - { - "cell_type": "code", - "execution_count": 49, - "id": "3d797346", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "113783" - ] - }, - "execution_count": 49, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(word_list)" - ] - }, - { - "cell_type": "markdown", - "id": "92d856ba", - "metadata": {}, - "source": [ - "A list comprehension can also have an `if` clause that determines which elements are included in the list.\n", - "For example, here's a `for` loop we used in [Chapter 10](section_palindrome_list) to make a list of only the words in `word_list` that are palindromes." - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "id": "d476e43c", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "def is_palindrome(word):\n", - " return list(reversed(word)) == list(word)" - ] - }, - { - "cell_type": "code", - "execution_count": 51, - "id": "6b295593", - "metadata": {}, - "outputs": [], - "source": [ - "palindromes = []\n", - "\n", - "for word in word_list:\n", - " if is_palindrome(word):\n", - " palindromes.append(word)" - ] - }, - { - "cell_type": "code", - "execution_count": 52, - "id": "f7b1cd91", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "['aa', 'aba', 'aga', 'aha', 'ala', 'alula', 'ama', 'ana', 'anna', 'ava']" - ] - }, - "execution_count": 52, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "palindromes[:10]" - ] - }, - { - "cell_type": "markdown", - "id": "151621d8", - "metadata": {}, - "source": [ - "Here's how we can do the same thing with an list comprehension." - ] - }, - { - "cell_type": "code", - "execution_count": 53, - "id": "c356d9fb", - "metadata": {}, - "outputs": [], - "source": [ - "palindromes = [word for word in word_list if is_palindrome(word)]" - ] - }, - { - "cell_type": "code", - "execution_count": 54, - "id": "52e32b33", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "['aa', 'aba', 'aga', 'aha', 'ala', 'alula', 'ama', 'ana', 'anna', 'ava']" - ] - }, - "execution_count": 54, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "palindromes[:10]" - ] - }, - { - "cell_type": "markdown", - "id": "5fc4eab1", - "metadata": {}, - "source": [ - "When a list comprehension is used as an argument to a function, we can often omit the brackets.\n", - "For example, suppose we want to add up $1 / 2^n$ for values of $n$ from 0 to 9.\n", - "We can use a list comprehension like this." - ] - }, - { - "cell_type": "code", - "execution_count": 55, - "id": "dcf239d7", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "1.998046875" - ] - }, - "execution_count": 55, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "sum([1/2**n for n in range(10)])" - ] - }, - { - "cell_type": "markdown", - "id": "2ee312e0", - "metadata": {}, - "source": [ - "Or we can leave out the brackets like this." - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "id": "b9bdec8d", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "1.998046875" - ] - }, - "execution_count": 56, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "sum(1/2**n for n in range(10))" - ] - }, - { - "cell_type": "markdown", - "id": "3d56d584", - "metadata": {}, - "source": [ - "In this example, the argument is technically a **generator expression**, not a list comprehension, and it never actually makes a list.\n", - "But other than that, the behavior is the same.\n", - "\n", - "List comprehensions and generator expressions are concise and easy to read, at least for simple expressions.\n", - "And they are usually faster than the equivalent for loops, sometimes much faster.\n", - "So if you are mad at me for not mentioning them earlier, I understand.\n", - "\n", - "But, in my defense, list comprehensions are harder to debug because you can't put a print statement inside the loop.\n", - "I suggest you use them only if the computation is simple enough that you are likely to get it\n", - "right the first time.\n", - "Or consider writing and debugging a `for` loop and then converting it to a list comprehension." - ] - }, - { - "cell_type": "markdown", - "id": "f9fac860", - "metadata": {}, - "source": [ - "## `any` and `all`\n", - "\n", - "Python provides a built-in function, `any`, that takes a sequence of boolean values and returns `True` if any of the values are `True`." - ] - }, - { - "cell_type": "code", - "execution_count": 57, - "id": "81a15164", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 57, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "any([False, False, True])" - ] - }, - { - "cell_type": "markdown", - "id": "43217186", - "metadata": {}, - "source": [ - "`any` is often used with generator expressions." - ] - }, - { - "cell_type": "code", - "execution_count": 58, - "id": "7756c9ea", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 58, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "any(letter == 't' for letter in 'monty')" - ] - }, - { - "cell_type": "markdown", - "id": "22395487", - "metadata": {}, - "source": [ - "That example isn't very useful because it does the same thing as the `in` operator. \n", - "But we could use `any` to write concise solutions to some of the exercises in [Chapter 7](chapter_search). For example, we can write `uses_none` like this." - ] - }, - { - "cell_type": "code", - "execution_count": 59, - "id": "70133073", - "metadata": {}, - "outputs": [], - "source": [ - "def uses_none(word, forbidden):\n", - " \"\"\"Checks whether a word avoids forbidden letters.\"\"\"\n", - " return not any(letter in forbidden for letter in word)" - ] - }, - { - "cell_type": "code", - "execution_count": 60, - "id": "aec0523b", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 60, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "uses_none('banana', 'xyz')" - ] - }, - { - "cell_type": "code", - "execution_count": 61, - "id": "863252da", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 61, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "uses_none('apple', 'efg')" - ] - }, - { - "cell_type": "markdown", - "id": "fbefe3c1", - "metadata": {}, - "source": [ - "This function loops through the letters in `word` and checks whether any of them are in `forbidden`.\n", - "Using `any` with a generator expression is efficient because it stops immediately if it finds a `True` value, so it doesn't have to loop through the whole sequence.\n", - "\n", - "Python provides another built-in function, `all`, that returns `True` if every element of the sequence is `True`.\n", - "We can use it to write a concise version of `uses_all`." - ] - }, - { - "cell_type": "code", - "execution_count": 62, - "id": "4b4046aa", - "metadata": {}, - "outputs": [], - "source": [ - "def uses_all(word, required):\n", - " \"\"\"Check whether a word uses all required letters.\"\"\"\n", - " return all(letter in word for letter in required)" - ] - }, - { - "cell_type": "code", - "execution_count": 63, - "id": "5c6addfb", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 63, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "uses_all('banana', 'ban')" - ] - }, - { - "cell_type": "code", - "execution_count": 64, - "id": "54df18a1", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 64, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "uses_all('apple', 'api')" - ] - }, - { - "cell_type": "markdown", - "id": "8d9f7364", - "metadata": {}, - "source": [ - "Expressions using `any` and `all` can be concise, efficient, and easy to read." - ] - }, - { - "cell_type": "markdown", - "id": "911857a3", - "metadata": {}, - "source": [ - "## Named tuples\n", - "\n", - "The `collections` module provides a function called `namedtuple` that can be used to create simple classes.\n", - "For example, the `Point` object in [Chapter 16](section_create_point) has only two attributes, `x` and `y`.\n", - "Here's how we defined it." - ] - }, - { - "cell_type": "code", - "execution_count": 65, - "id": "3550c5a4", - "metadata": {}, - "outputs": [], - "source": [ - "class Point:\n", - " \"\"\"Represents a point in 2-D space.\"\"\"\n", - " \n", - " def __init__(self, x, y):\n", - " self.x = x\n", - " self.y = y\n", - " \n", - " def __str__(self):\n", - " return f'({self.x}, {self.y})'" - ] - }, - { - "cell_type": "markdown", - "id": "36f08927", - "metadata": {}, - "source": [ - "That's a lot of code to convey a small amount of information.\n", - "`namedtuple` provides a more concise way to define classes like this." - ] - }, - { - "cell_type": "code", - "execution_count": 66, - "id": "4852da0c", - "metadata": {}, - "outputs": [], - "source": [ - "from collections import namedtuple\n", - "\n", - "Point = namedtuple('Point', ['x', 'y'])" - ] - }, - { - "cell_type": "markdown", - "id": "942a0877", - "metadata": {}, - "source": [ - "The first argument is the name of the class you want to create. The\n", - "second is a list of the attributes `Point` objects should have.\n", - "The result is a class object, which is why it is assigned to a capitalized variable name.\n", - "\n", - "A class created with `namedtuple` provides an `__init__` method that assigns values to the attributes and a `__str__` that displays the object in a readable form.\n", - "So we can create and display a `Point` object like this." - ] - }, - { - "cell_type": "code", - "execution_count": 67, - "id": "8acb172d", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Point(x=1, y=2)" - ] - }, - "execution_count": 67, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "p = Point(1, 2)\n", - "p" - ] - }, - { - "cell_type": "markdown", - "id": "b42ee9a2", - "metadata": {}, - "source": [ - "`Point` also provides an `__eq__` method that checks whether two `Point` objects are equivalent -- that is, whether their attributes are the same." - ] - }, - { - "cell_type": "code", - "execution_count": 68, - "id": "494b78ac", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 68, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "p == Point(1, 2)" - ] - }, - { - "cell_type": "markdown", - "id": "9bcf275a", - "metadata": {}, - "source": [ - "You can access the elements of a named tuple by name or by index." - ] - }, - { - "cell_type": "code", - "execution_count": 69, - "id": "f59e85f4", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(1, 2)" - ] - }, - "execution_count": 69, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "p.x, p.y" - ] - }, - { - "cell_type": "code", - "execution_count": 70, - "id": "742795a9", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(1, 2)" - ] - }, - "execution_count": 70, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "p[0], p[1]" - ] - }, - { - "cell_type": "markdown", - "id": "0768ff41", - "metadata": {}, - "source": [ - "You can also treat a named tuple as a tuple, as in this assignment." - ] - }, - { - "cell_type": "code", - "execution_count": 71, - "id": "df42d98a", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(1, 2)" - ] - }, - "execution_count": 71, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "x, y = p\n", - "x, y" - ] - }, - { - "cell_type": "markdown", - "id": "964aa3bd", - "metadata": {}, - "source": [ - "But `namedtuple` objects are immutable.\n", - "After the attributes are initialized, they can't be changed." - ] - }, - { - "cell_type": "code", - "execution_count": 72, - "id": "e61693ba", - "metadata": { - "tags": [ - "raises-exception" - ] - }, - "outputs": [ - { - "ename": "TypeError", - "evalue": "'Point' object does not support item assignment", - "output_type": "error", - "traceback": [ - "\u001b[0;31mTypeError\u001b[0m\u001b[0;31m:\u001b[0m 'Point' object does not support item assignment\n" - ] - } - ], - "source": [ - "%%expect TypeError\n", - "\n", - "p[0] = 3" - ] - }, - { - "cell_type": "code", - "execution_count": 73, - "id": "871dafae", - "metadata": { - "tags": [ - "raises-exception" - ] - }, - "outputs": [ - { - "ename": "AttributeError", - "evalue": "can't set attribute", - "output_type": "error", - "traceback": [ - "\u001b[0;31mAttributeError\u001b[0m\u001b[0;31m:\u001b[0m can't set attribute\n" - ] - } - ], - "source": [ - "%%expect AttributeError\n", - "\n", - "p.x = 3" - ] - }, - { - "cell_type": "markdown", - "id": "f2db7783", - "metadata": {}, - "source": [ - "`namedtuple` provides a quick way to define simple classes.\n", - "The drawback is that simple classes don't always stay simple.\n", - "You might decide later that you want to add methods to a named tuple.\n", - "In that case, you can define a new class that inherits from the named tuple." - ] - }, - { - "cell_type": "code", - "execution_count": 74, - "id": "586d8c51", - "metadata": {}, - "outputs": [], - "source": [ - "class Pointier(Point):\n", - " \"\"\"This class inherits from Point\"\"\"" - ] - }, - { - "cell_type": "markdown", - "id": "805475ce", - "metadata": {}, - "source": [ - "Or at that point you could switch to a conventional class definition." - ] - }, - { - "cell_type": "markdown", - "id": "4f3713a0", - "metadata": {}, - "source": [ - "## Packing keyword arguments\n", - "\n", - "In [Chapter 11](section_argument_pack), we wrote a function that packs its arguments into a tuple." - ] - }, - { - "cell_type": "code", - "execution_count": 75, - "id": "6de26a32", - "metadata": {}, - "outputs": [], - "source": [ - "def mean(*args):\n", - " return sum(args) / len(args)" - ] - }, - { - "cell_type": "markdown", - "id": "71e3b049", - "metadata": {}, - "source": [ - "You can call this function with any number of arguments." - ] - }, - { - "cell_type": "code", - "execution_count": 76, - "id": "ecb6a9fa", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "2.0" - ] - }, - "execution_count": 76, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "mean(1, 2, 3)" - ] - }, - { - "cell_type": "markdown", - "id": "486a690f", - "metadata": {}, - "source": [ - "But the `*` operator doesn't pack keyword arguments.\n", - "So calling this function with a keyword argument causes an error." - ] - }, - { - "cell_type": "code", - "execution_count": 77, - "id": "5871229d", - "metadata": { - "tags": [ - "raises-exception" - ] - }, - "outputs": [ - { - "ename": "TypeError", - "evalue": "mean() got an unexpected keyword argument 'start'", - "output_type": "error", - "traceback": [ - "\u001b[0;31mTypeError\u001b[0m\u001b[0;31m:\u001b[0m mean() got an unexpected keyword argument 'start'\n" - ] - } - ], - "source": [ - "%%expect TypeError\n", - "\n", - "mean(1, 2, start=3)" - ] - }, - { - "cell_type": "markdown", - "id": "eb7f9281", - "metadata": {}, - "source": [ - "To pack keyword arguments, we can use the `**` operator:" - ] - }, - { - "cell_type": "code", - "execution_count": 78, - "id": "b274db6a", - "metadata": {}, - "outputs": [], - "source": [ - "def mean(*args, **kwargs):\n", - " print(kwargs)\n", - " return sum(args) / len(args)" - ] - }, - { - "cell_type": "markdown", - "id": "067bf7c4", - "metadata": {}, - "source": [ - "The keyword-packing parameter can have any name, but `kwargs` is a common choice.\n", - "The result is a dictionary that maps from keywords to values." - ] - }, - { - "cell_type": "code", - "execution_count": 79, - "id": "3a1b131c", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'start': 3}\n" - ] - }, - { - "data": { - "text/plain": [ - "1.5" - ] - }, - "execution_count": 79, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "mean(1, 2, start=3)" - ] - }, - { - "cell_type": "markdown", - "id": "07be77f3", - "metadata": {}, - "source": [ - "In this example, the value of `kwargs` is printed, but otherwise is has no effect.\n", - "\n", - "But the `**` operator can also be used in an argument list to unpack a dictionary.\n", - "For example, here's a version of `mean` that packs any keyword arguments it gets and then unpacks them as keyword arguments for `sum`." - ] - }, - { - "cell_type": "code", - "execution_count": 80, - "id": "a0305500", - "metadata": {}, - "outputs": [], - "source": [ - "def mean(*args, **kwargs):\n", - " return sum(args, **kwargs) / len(args)" - ] - }, - { - "cell_type": "markdown", - "id": "ba00858c", - "metadata": {}, - "source": [ - "Now if we call `mean` with `start` as a keyword argument, it gets passed along to sum, which uses it as the starting point of the summation.\n", - "In the following example `start=3` adds `3` to the sum before computing the mean, so the sum is `6` and the result is `3`." - ] - }, - { - "cell_type": "code", - "execution_count": 81, - "id": "457d5610", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "3.0" - ] - }, - "execution_count": 81, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "mean(1, 2, start=3)" - ] - }, - { - "cell_type": "markdown", - "id": "949a2ca3", - "metadata": {}, - "source": [ - "As another example, if we have a dictionary with keys `x` and `y`, we can use it with the unpack operator to create a `Point` object." - ] - }, - { - "cell_type": "code", - "execution_count": 82, - "id": "020c1243", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Point(x=1, y=2)" - ] - }, - "execution_count": 82, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "d = dict(x=1, y=2)\n", - "Point(**d)" - ] - }, - { - "cell_type": "markdown", - "id": "8aaf128a", - "metadata": {}, - "source": [ - "Without the unpack operator, `d` is treated as a single positional argument, so it gets assigned to `x`, and we get a `TypeError` because there's no second argument to assign to `y`." - ] - }, - { - "cell_type": "code", - "execution_count": 83, - "id": "ba91298b", - "metadata": { - "tags": [ - "raises-exception" - ] - }, - "outputs": [ - { - "ename": "TypeError", - "evalue": "Point.__new__() missing 1 required positional argument: 'y'", - "output_type": "error", - "traceback": [ - "\u001b[0;31mTypeError\u001b[0m\u001b[0;31m:\u001b[0m Point.__new__() missing 1 required positional argument: 'y'\n" - ] - } - ], - "source": [ - "%%expect TypeError\n", - "\n", - "d = dict(x=1, y=2)\n", - "Point(d)" - ] - }, - { - "cell_type": "markdown", - "id": "e8acb958", - "metadata": {}, - "source": [ - "When you are working with functions that have a large number of keyword arguments, it is often useful to create and pass around dictionaries that specify frequently used options." - ] - }, - { - "cell_type": "code", - "execution_count": 84, - "id": "1b36b5ed", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'a': 1, 'b': 2}\n" - ] - } - ], - "source": [ - "def pack_and_print(**kwargs):\n", - " print(kwargs)\n", - " \n", - "pack_and_print(a=1, b=2)" - ] - }, - { - "cell_type": "markdown", - "id": "e046e382", - "metadata": {}, - "source": [ - "## Debugging\n", - "\n", - "In previous chapters, we used `doctest` to test functions.\n", - "For example, here's a function called `add` that takes two numbers and returns their sum.\n", - "In includes a doctest that checks whether `2 + 2` is `4`." - ] - }, - { - "cell_type": "code", - "execution_count": 85, - "id": "e1366e43", - "metadata": {}, - "outputs": [], - "source": [ - "def add(a, b):\n", - " '''Add two numbers.\n", - " \n", - " >>> add(2, 2)\n", - " 4\n", - " '''\n", - " return a + b" - ] - }, - { - "cell_type": "markdown", - "id": "a5e332d3", - "metadata": {}, - "source": [ - "This function takes a function object and runs its doctests." - ] - }, - { - "cell_type": "code", - "execution_count": 86, - "id": "13802dc4", - "metadata": {}, - "outputs": [], - "source": [ - "from doctest import run_docstring_examples\n", - "\n", - "def run_doctests(func):\n", - " run_docstring_examples(func, globals(), name=func.__name__)" - ] - }, - { - "cell_type": "markdown", - "id": "2d752a40", - "metadata": {}, - "source": [ - "So we can test `add` like this." - ] - }, - { - "cell_type": "code", - "execution_count": 87, - "id": "2136083a", - "metadata": {}, - "outputs": [], - "source": [ - "run_doctests(add)" - ] - }, - { - "cell_type": "markdown", - "id": "77d36e9b", - "metadata": {}, - "source": [ - "There's no output, which means all tests passed.\n", - "\n", - "Python provides another tool for running automated tests, called `unittest`.\n", - "It is a little more complicated to use, but here's an example." - ] - }, - { - "cell_type": "code", - "execution_count": 88, - "id": "d6bc8bae", - "metadata": {}, - "outputs": [], - "source": [ - "from unittest import TestCase\n", - "\n", - "class TestExample(TestCase):\n", - "\n", - " def test_add(self):\n", - " result = add(2, 2)\n", - " self.assertEqual(result, 4)" - ] - }, - { - "cell_type": "markdown", - "id": "59b4212a", - "metadata": {}, - "source": [ - "First we import `TestCase`, which is a class in the `unittest` module.\n", - "To use it, we have to define a new class that inherits from `TestCase` and provides at least one test method.\n", - "The name of the test method must begin with `test` and should indicate which function it tests.\n", - "\n", - "In this example, `test_add` tests the `add` function by calling it, saving the result, and invoking `assertEqual`, which is inherited from `TestCase`.\n", - "`assertEqual` takes two arguments and checks whether they are equal.\n", - "\n", - "In order to run this test method, we have to run a function in `unittest` called `main` and provide several keyword arguments.\n", - "The following function shows the details -- if you are curious, you can ask a virtual assistant to explain how it works." - ] - }, - { - "cell_type": "code", - "execution_count": 89, - "id": "96587ab7", - "metadata": {}, - "outputs": [], - "source": [ - "import unittest\n", - "\n", - "def run_unittest():\n", - " unittest.main(argv=[''], verbosity=0, exit=False)" - ] - }, - { - "cell_type": "markdown", - "id": "5409ea0c", - "metadata": {}, - "source": [ - "`run_unittest` does not take `TestExample` as an argument -- instead, it searches for classes that inherit from `TestCase`.\n", - "Then it searches for methods that begin with `test` and runs them.\n", - "This process is called **test discovery**.\n", - "\n", - "Here's what happens when we call `run_unittest`." - ] - }, - { - "cell_type": "code", - "execution_count": 90, - "id": "d3db5642", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "----------------------------------------------------------------------\n", - "Ran 1 test in 0.000s\n", - "\n", - "OK\n" - ] - } - ], - "source": [ - "run_unittest()" - ] - }, - { - "cell_type": "markdown", - "id": "7775304a", - "metadata": {}, - "source": [ - "`unittest.main` reports the number of tests it ran and the results.\n", - "In this case `OK` indicates that the tests passed.\n", - "\n", - "To see what happens when a test fails, we'll add an incorrect test method to `TestExample`." - ] - }, - { - "cell_type": "code", - "execution_count": 91, - "id": "e5320931", - "metadata": {}, - "outputs": [], - "source": [ - "%%add_method_to TestExample\n", - "\n", - " def test_add_broken(self):\n", - " result = add(2, 2)\n", - " self.assertEqual(result, 100)" - ] - }, - { - "cell_type": "markdown", - "id": "96810614", - "metadata": {}, - "source": [ - "Here's what happens when we run the tests." - ] - }, - { - "cell_type": "code", - "execution_count": 92, - "id": "c8d4fa4a", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "======================================================================\n", - "FAIL: test_add_broken (__main__.TestExample)\n", - "----------------------------------------------------------------------\n", - "Traceback (most recent call last):\n", - " File \"/tmp/ipykernel_1109857/3833266738.py\", line 3, in test_add_broken\n", - " self.assertEqual(result, 100)\n", - "AssertionError: 4 != 100\n", - "\n", - "----------------------------------------------------------------------\n", - "Ran 2 tests in 0.000s\n", - "\n", - "FAILED (failures=1)\n" - ] - } - ], - "source": [ - "run_unittest()" - ] - }, - { - "cell_type": "markdown", - "id": "64b743cb", - "metadata": {}, - "source": [ - "The report includes the test method that failed and an error message showing where.\n", - "The summary indicates that two tests ran and one failed.\n", - "\n", - "In the exercises below, I'll suggest some prompts you can use to ask a virtual assistant for more information about `unittest`." - ] - }, - { - "cell_type": "markdown", - "id": "7d0fb256", - "metadata": {}, - "source": [ - "## Glossary\n", - "\n", - "**factory:**\n", - " A function used to create objects, often passed as a parameter to a function.\n", - "\n", - "**conditional expression:**\n", - "An expression that uses a conditional to select one of two values.\n", - "\n", - "**list comprehension:**\n", - "A concise way to loop through a sequence and create a list.\n", - "\n", - "**generator expression:**\n", - "Similar to a list comprehension except that it does not create a list.\n", - "\n", - "**test discovery:**\n", - "A process used to find and run tests." - ] - }, - { - "cell_type": "markdown", - "id": "bc03f15d", - "metadata": {}, - "source": [ - "## Exercises" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "5029c76d", - "metadata": { - "tags": [ - "remove-print" - ] - }, - "outputs": [], - "source": [ - "# This cell tells Jupyter to provide detailed debugging information\n", - "# when a runtime error occurs. Run it before working on the exercises.\n", - "\n", - "%xmode Verbose" - ] - }, - { - "cell_type": "markdown", - "id": "fe10415e", - "metadata": {}, - "source": [ - "### Ask a virtual assistant\n", - "\n", - "There are a few topics in this chapter you might want to learn about.\n", - "\n", - "* \"What are the methods and operators of Python's set class?\"\n", - "\n", - "* \"What are the methods and operators of Python's Counter class?\"\n", - "\n", - "* \"What is the difference between a Python list comprehension and a generator expression?\"\n", - "\n", - "* \"When should I use Python's `namedtuple` rather than define a new class?\"\n", - "\n", - "* \"What are some uses of packing and unpacking keyword arguments?\"\n", - "\n", - "* \"How does `unittest` do test discovery?\"\n", - "\n", - "* \"Along with `assertEqual`, what are the most commonly used methods in `unittest.TestCase`?\"\n", - "\n", - "* \"What are the pros and cons of `doctest` and `unittest`?\"\n", - "\n", - "For the following exercises, consider asking a virtual assistant for help, but as always, remember to test the results." - ] - }, - { - "cell_type": "markdown", - "id": "c61ecde2", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "One of the exercises in Chapter 7 asks for a function called `uses_none` that takes a word and a string of forbidden letters, and returns `True` if the word does not use any of the letters. Here's a solution." - ] - }, - { - "cell_type": "code", - "execution_count": 93, - "id": "f75b48e0", - "metadata": {}, - "outputs": [], - "source": [ - "def uses_none(word, forbidden):\n", - " for letter in word.lower():\n", - " if letter in forbidden.lower():\n", - " return False\n", - " return True" - ] - }, - { - "cell_type": "markdown", - "id": "b558b8b3", - "metadata": {}, - "source": [ - "Write a version of this function that uses `set` operations instead of a `for` loop.\n", - "Hint: ask a VA, \"How do I compute the intersection of Python sets?\"" - ] - }, - { - "cell_type": "markdown", - "id": "e97dfead", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "You can use this outline to get started." - ] - }, - { - "cell_type": "code", - "execution_count": 94, - "id": "2024d4c6", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "def uses_none(word, forbidden):\n", - " \"\"\"Checks whether a word avoid forbidden letters.\n", - " \n", - " >>> uses_none('banana', 'xyz')\n", - " True\n", - " >>> uses_none('apple', 'efg')\n", - " False\n", - " >>> uses_none('', 'abc')\n", - " True\n", - " \"\"\"\n", - " return False" - ] - }, - { - "cell_type": "code", - "execution_count": 95, - "id": "46a13618", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def uses_none(word, forbidden):\n", - " \"\"\"Checks whether a word avoid forbidden letters.\n", - " \n", - " >>> uses_none('banana', 'xyz')\n", - " True\n", - " >>> uses_none('apple', 'efg')\n", - " False\n", - " >>> uses_none('', 'abc')\n", - " True\n", - " \"\"\"\n", - " word_set = set(word.lower())\n", - " forbidden_set = set(forbidden.lower())\n", - " return len(word_set & forbidden_set) == 0" - ] - }, - { - "cell_type": "code", - "execution_count": 96, - "id": "160a29b3", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "from doctest import run_docstring_examples\n", - "\n", - "def run_doctests(func):\n", - " run_docstring_examples(func, globals(), name=func.__name__)" - ] - }, - { - "cell_type": "code", - "execution_count": 97, - "id": "8db988e6", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "run_doctests(uses_none)" - ] - }, - { - "cell_type": "markdown", - "id": "d2d670cf", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "Scrabble is a board game where the objective is to use letter tiles to spell words.\n", - "For example, if we have tiles with the letters `T`, `A`, `B`, `L`, `E`, we can spell `BELT` and `LATE` using a subset of the tiles -- but we can't spell `BEET` because we don't have two `E`s.\n", - "\n", - "Write a function that takes a string of letters and a word, and checks whether the letters can spell the word, taking into account how many times each letter appears." - ] - }, - { - "cell_type": "markdown", - "id": "091919bd", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "You can use the following outline to get started." - ] - }, - { - "cell_type": "code", - "execution_count": 98, - "id": "b3c2c475", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "def can_spell(letters, word):\n", - " \"\"\"Check whether the letters can spell the word.\n", - " \n", - " >>> can_spell('table', 'belt')\n", - " True\n", - " >>> can_spell('table', 'late')\n", - " True\n", - " >>> can_spell('table', 'beet')\n", - " False\n", - " \"\"\"\n", - " return False" - ] - }, - { - "cell_type": "code", - "execution_count": 99, - "id": "a67768c0", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def can_spell(letters, word):\n", - " \"\"\"Check whether the letters can spell the word.\n", - " \n", - " >>> can_spell('table', 'belt')\n", - " True\n", - " >>> can_spell('table', 'late')\n", - " True\n", - " >>> can_spell('table', 'beet')\n", - " False\n", - " \"\"\"\n", - " return Counter(word) <= Counter(letters)" - ] - }, - { - "cell_type": "code", - "execution_count": 100, - "id": "7900d2ed", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "run_doctests(can_spell)" - ] - }, - { - "cell_type": "markdown", - "id": "de2dc099", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "In one of the exercises from [Chapter 17](chapter_inheritance), my solution to `has_straightflush` uses the following method, which partitions a `PokerHand` into a list of four hands, where each hand contains cards of the same suit." - ] - }, - { - "cell_type": "code", - "execution_count": 101, - "id": "661f1635", - "metadata": {}, - "outputs": [], - "source": [ - " def partition(self):\n", - " \"\"\"Make a list of four hands, each containing only one suit.\"\"\"\n", - " hands = []\n", - " for i in range(4):\n", - " hands.append(PokerHand())\n", - " \n", - " for card in self.cards:\n", - " hands[card.suit].add_card(card)\n", - " \n", - " return hands" - ] - }, - { - "cell_type": "markdown", - "id": "cd04a7a3", - "metadata": {}, - "source": [ - "Write a simplified version of this function using a `defaultdict`." - ] - }, - { - "cell_type": "markdown", - "id": "c236c5c7", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "Here's an outline of the `PokerHand` class and the `partition_suits` function you can use to get started." - ] - }, - { - "cell_type": "code", - "execution_count": 102, - "id": "b9cf2e47", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "class PokerHand(Hand):\n", - " \n", - " def partition(self):\n", - " return {}" - ] - }, - { - "cell_type": "code", - "execution_count": 103, - "id": "33f15964", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "class PokerHand(Hand):\n", - " def partition(self):\n", - " d = defaultdict(PokerHand)\n", - "\n", - " for card in self.cards:\n", - " d[card.suit].add_card(card)\n", - "\n", - " return d" - ] - }, - { - "cell_type": "markdown", - "id": "9b176e67", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "To test your code, we'll make a deck and shuffle it." - ] - }, - { - "cell_type": "code", - "execution_count": 104, - "id": "339f912a", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "cards = Deck.make_cards()\n", - "deck = Deck(cards)\n", - "deck.shuffle()" - ] - }, - { - "cell_type": "markdown", - "id": "d253e3ad", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "Then create a `PokerHand` and add seven cards to it." - ] - }, - { - "cell_type": "code", - "execution_count": 105, - "id": "b4efde58", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "6 of Diamonds\n", - "8 of Hearts\n", - "4 of Spades\n", - "Queen of Hearts\n", - "Queen of Clubs\n", - "Queen of Spades\n", - "Jack of Hearts\n" - ] - } - ], - "source": [ - "random_hand = PokerHand('random')\n", - "\n", - "for i in range(7):\n", - " card = deck.pop_card()\n", - " random_hand.add_card(card)\n", - " \n", - "print(random_hand)" - ] - }, - { - "cell_type": "markdown", - "id": "a714e145", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "If you invoke `partition` and print the results, each hand should contain cards of one suit only." - ] - }, - { - "cell_type": "code", - "execution_count": 106, - "id": "bfddf015", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "6 of Diamonds\n", - "\n", - "8 of Hearts\n", - "Queen of Hearts\n", - "Jack of Hearts\n", - "\n", - "4 of Spades\n", - "Queen of Spades\n", - "\n", - "Queen of Clubs\n", - "\n" - ] - } - ], - "source": [ - "hand_dict = random_hand.partition()\n", - "\n", - "for hand in hand_dict.values():\n", - " print(hand)\n", - " print()" - ] - }, - { - "cell_type": "markdown", - "id": "218798e3", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "Here's the function from Chapter 11 that computes Fibonacci numbers." - ] - }, - { - "cell_type": "code", - "execution_count": 107, - "id": "f854f6d5", - "metadata": {}, - "outputs": [], - "source": [ - "def fibonacci(n):\n", - " if n == 0:\n", - " return 0\n", - " \n", - " if n == 1:\n", - " return 1\n", - "\n", - " return fibonacci(n-1) + fibonacci(n-2)" - ] - }, - { - "cell_type": "markdown", - "id": "6acab624", - "metadata": {}, - "source": [ - "Write a version of this function with a single return statement that use two conditional expressions, one nested inside the other." - ] - }, - { - "cell_type": "code", - "execution_count": 108, - "id": "4efa9382", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def fibonacci(n):\n", - " return 0 if n == 0 else (1 if n == 1 else fibonacci(n-1) + fibonacci(n-2))" - ] - }, - { - "cell_type": "code", - "execution_count": 109, - "id": "6440d14b", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "55" - ] - }, - "execution_count": 109, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "fibonacci(10) # should be 55" - ] - }, - { - "cell_type": "code", - "execution_count": 110, - "id": "3b9d5bac", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "6765" - ] - }, - "execution_count": 110, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "fibonacci(20) # should be 6765" - ] - }, - { - "cell_type": "markdown", - "id": "2deb0e1f", - "metadata": {}, - "source": [ - "### Exercise\n", - "The following is a function that computes the binomial coefficient\n", - "recursively." - ] - }, - { - "cell_type": "code", - "execution_count": 111, - "id": "9a9e43fa", - "metadata": {}, - "outputs": [], - "source": [ - "def binomial_coeff(n, k):\n", - " \"\"\"Compute the binomial coefficient \"n choose k\".\n", - "\n", - " n: number of trials\n", - " k: number of successes\n", - "\n", - " returns: int\n", - " \"\"\"\n", - " if k == 0:\n", - " return 1\n", - " \n", - " if n == 0:\n", - " return 0\n", - "\n", - " return binomial_coeff(n-1, k) + binomial_coeff(n-1, k-1)" - ] - }, - { - "cell_type": "markdown", - "id": "656c61f6", - "metadata": {}, - "source": [ - "Rewrite the body of the function using nested conditional expressions.\n", - "\n", - "This function is not very efficient because it ends up computing the same values over and over.\n", - "Make it more efficient by memoizing it, as described in [Chapter 10](section_memos)." - ] - }, - { - "cell_type": "code", - "execution_count": 112, - "id": "07226bce", - "metadata": {}, - "outputs": [], - "source": [ - "# Solution\n", - "\n", - "def binomial_coeff(n, k, cache={}):\n", - " \"\"\"Compute the binomial coefficient \"n choose k\".\n", - "\n", - " n: number of trials\n", - " k: number of successes\n", - "\n", - " returns: int\n", - " \"\"\"\n", - " if (n, k) in cache:\n", - " return cache[n, k]\n", - " \n", - " res = 1 if k == 0 else (0 if n == 0 else \n", - " binomial_coeff(n-1, k) + \n", - " binomial_coeff(n-1, k-1))\n", - " cache[n, k] = res\n", - " return res" - ] - }, - { - "cell_type": "code", - "execution_count": 113, - "id": "1e3b8009", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "210" - ] - }, - "execution_count": 113, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "binomial_coeff(10, 4) # should be 210" - ] - }, - { - "cell_type": "markdown", - "id": "921719dc", - "metadata": {}, - "source": [ - "### Exercise\n", - "\n", - "Here's the `__str__` method from the `Deck` class in [Chapter 17](section_print_deck)." - ] - }, - { - "cell_type": "code", - "execution_count": 114, - "id": "4fd0793d", - "metadata": {}, - "outputs": [], - "source": [ - "%%add_method_to Deck\n", - "\n", - " def __str__(self):\n", - " res = []\n", - " for card in self.cards:\n", - " res.append(str(card))\n", - " return '\\n'.join(res)" - ] - }, - { - "cell_type": "markdown", - "id": "27f189cf", - "metadata": {}, - "source": [ - "Write a more concise version of this method with a list comprehension or generator expression." - ] - }, - { - "cell_type": "code", - "execution_count": 115, - "id": "2aa7da71", - "metadata": { - "tags": [ - "solution", - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "%%add_method_to Deck\n", - "\n", - " def __str__(self): \n", - " return '\\n'.join(str(card) for card in self.cards)" - ] - }, - { - "cell_type": "markdown", - "id": "25525582", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "You can use this example to test your solution." - ] - }, - { - "cell_type": "code", - "execution_count": 116, - "id": "cd8bb7d2", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2 of Clubs\n", - "3 of Clubs\n", - "4 of Clubs\n", - "5 of Clubs\n", - "6 of Clubs\n", - "7 of Clubs\n", - "8 of Clubs\n", - "9 of Clubs\n", - "10 of Clubs\n", - "Jack of Clubs\n", - "Queen of Clubs\n", - "King of Clubs\n", - "Ace of Clubs\n", - "2 of Diamonds\n", - "3 of Diamonds\n", - "4 of Diamonds\n", - "5 of Diamonds\n", - "6 of Diamonds\n", - "7 of Diamonds\n", - "8 of Diamonds\n", - "9 of Diamonds\n", - "10 of Diamonds\n", - "Jack of Diamonds\n", - "Queen of Diamonds\n", - "King of Diamonds\n", - "Ace of Diamonds\n", - "2 of Hearts\n", - "3 of Hearts\n", - "4 of Hearts\n", - "5 of Hearts\n", - "6 of Hearts\n", - "7 of Hearts\n", - "8 of Hearts\n", - "9 of Hearts\n", - "10 of Hearts\n", - "Jack of Hearts\n", - "Queen of Hearts\n", - "King of Hearts\n", - "Ace of Hearts\n", - "2 of Spades\n", - "3 of Spades\n", - "4 of Spades\n", - "5 of Spades\n", - "6 of Spades\n", - "7 of Spades\n", - "8 of Spades\n", - "9 of Spades\n", - "10 of Spades\n", - "Jack of Spades\n", - "Queen of Spades\n", - "King of Spades\n", - "Ace of Spades\n" - ] - } - ], - "source": [ - "cards = Deck.make_cards()\n", - "deck = Deck(cards)\n", - "print(deck)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "16ce7d9f", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "id": "a7f4edf8", - "metadata": { - "tags": [] - }, - "source": [ - "[Think Python: 3rd Edition](https://allendowney.github.io/ThinkPython/index.html)\n", - "\n", - "Copyright 2024 [Allen B. Downey](https://allendowney.com)\n", - "\n", - "Code license: [MIT License](https://mit-license.org/)\n", - "\n", - "Text license: [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-nc-sa/4.0/)" - ] - } - ], - "metadata": { - "celltoolbar": "Tags", - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.11" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/soln/chap19.ipynb b/soln/chap19.ipynb deleted file mode 100644 index 4d86fb8..0000000 --- a/soln/chap19.ipynb +++ /dev/null @@ -1,188 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "1331faa1", - "metadata": {}, - "source": [ - "You can order print and ebook versions of *Think Python 3e* from\n", - "[Bookshop.org](https://bookshop.org/a/98697/9781098155438) and\n", - "[Amazon](https://www.amazon.com/_/dp/1098155432?smid=ATVPDKIKX0DER&_encoding=UTF8&tag=oreilly20-20&_encoding=UTF8&tag=greenteapre01-20&linkCode=ur2&linkId=e2a529f94920295d27ec8a06e757dc7c&camp=1789&creative=9325)." - ] - }, - { - "cell_type": "markdown", - "id": "171aca73", - "metadata": {}, - "source": [ - "# Final thoughts" - ] - }, - { - "cell_type": "markdown", - "id": "4d551c99", - "metadata": {}, - "source": [ - "Learning to program is not easy, but if you made it this far, you are off to a good start.\n", - "Now I have some suggestions for ways you can keep learning and apply what you have learned.\n", - "\n", - "This book is meant to be a general introduction to programming, so we have not focused on specific applications.\n", - "Depending on your interests, there are any number of areas where you can apply your new skills.\n", - "\n", - "If you are interested in Data Science, there are three books of mine you might like:\n", - "\n", - "* *Think Stats: Exploratory Data Analysis*, O'Reilly Media, 2014.\n", - "\n", - "* *Think Bayes: Bayesian Statistics in Python*, O'Reilly Media, 2021.\n", - "\n", - "* *Think DSP: Digital Signal Processing in Python*, O'Reilly Media, 2016." - ] - }, - { - "cell_type": "markdown", - "id": "cceabe36", - "metadata": {}, - "source": [ - "If you are interested in physical modeling and complex systems, you might like:\n", - "\n", - "* *Modeling and Simulation in Python: An Introduction for Scientists and Engineers*, No Starch Press, 2023.\n", - "\n", - "* *Think Complexity: Complexity Science and Computational Modeling*, O'Reilly Media, 2018.\n", - "\n", - "These use NumPy, SciPy, pandas, and other Python libraries for data science and scientific computing." - ] - }, - { - "cell_type": "markdown", - "id": "54a39121", - "metadata": {}, - "source": [ - "This book tries to find a balance between general principles of programming and details of Python.\n", - "As a result, it does not include every feature of the Python language.\n", - "For more about Python, and good advice about how to use it, I recommend *Fluent Python: Clear, Concise, and Effective Programming*, second edition by Luciano Ramalho, O'Reilly Media, 2022.\n", - "\n", - "After an introduction to programming, a common next step is to learn about data structures and algorithms.\n", - "I have a work in progress on this topic, called *Data Structures and Information Retrieval in Python*.\n", - "A free electronic version is available from Green Tea Press at ." - ] - }, - { - "cell_type": "markdown", - "id": "a1598510", - "metadata": {}, - "source": [ - "As you work on more complex programs, you will encounter new challenges.\n", - "You might find it helpful to review the sections in this book about debugging.\n", - "In particular, remember the Six R's of debugging from [Chapter 12](section_debugging_12): reading, running, ruminating, rubber-ducking, retreating, and resting.\n", - "\n", - "This book suggests tools to help with debugging, including the `print` and `repr` functions, the `structshape` function in [Chapter 11](section_debugging_11) -- and the built-in functions `isinstance`, `hasattr`, and `vars` in [Chapter 14](section_debugging_14)." - ] - }, - { - "cell_type": "markdown", - "id": "fb4dd345", - "metadata": {}, - "source": [ - "It also suggests tools for testing programs, including the `assert` statement, the `doctest` module, and the `unittest` module.\n", - "Including tests in your programs is one of the best ways to prevent and detect errors, and save time debugging.\n", - "\n", - "But the best kind of debugging is the kind you don't have to do.\n", - "If you use an incremental development process as described in [Chapter 6](section_incremental) -- and test as you go -- you will make fewer errors and find them more quickly when you do.\n", - "Also, remember encapsulation and generalization from [Chapter 4](section_encapsulation), which is particularly useful when you are developing code in Jupyter notebooks." - ] - }, - { - "cell_type": "markdown", - "id": "0d29933e", - "metadata": {}, - "source": [ - "Throughout this book, I've suggested ways to use virtual assistants to help you learn, program, and debug.\n", - "I hope you are finding these tools useful.\n", - "\n", - "In additional to virtual assistants like ChatGPT, you might also want to use a tool like Copilot that autocompletes code as you type.\n", - "I did not recommend using these tools, initially, because they can be overwhelming for beginners.\n", - "But you might want to explore them now.\n", - "\n", - "Using AI tools effectively requires some experimentation and reflection to find a flow that works for you.\n", - "If you think it's a nuisance to copy code from ChatGPT to Jupyter, you might prefer something like Copilot.\n", - "But the cognitive work you do to compose a prompt and interpret the response can be as valuable as the code the tool generates, in the same vein as rubber duck debugging." - ] - }, - { - "cell_type": "markdown", - "id": "c28d6815", - "metadata": {}, - "source": [ - "As you gain programming experience, you might want to explore other development environments.\n", - "I think Jupyter notebooks are a good place to start, but they are relatively new and not as widely-used as conventional integrated development environments (IDE).\n", - "For Python, the most popular IDEs include PyCharm and Spyder -- and Thonny, which is often recommended for beginners.\n", - "Other IDEs, like Visual Studio Code and Eclipse, work with other programming languages as well.\n", - "Or, as a simpler alternative, you can write Python programs using any text editor you like.\n", - "\n", - "As you continue your programming journey, you don't have to go alone!\n", - "If you live in or near a city, there's a good chance there is a Python user group you can join.\n", - "These groups are usually friendly to beginners, so don't be afraid.\n", - "If there is no group near you, you might be able to join events remotely.\n", - "Also, keep an eye out for regional Python conferences." - ] - }, - { - "cell_type": "markdown", - "id": "28cb22bf", - "metadata": {}, - "source": [ - "One of the best ways to improve your programming skills is to learn another language.\n", - "If you are interested in statistics and data science, you might want to learn R.\n", - "But I particularly recommend learning a functional language like Racket or Elixir.\n", - "Functional programming requires a different kind of thinking, which changes the way you think about programs.\n", - "\n", - "Good luck!" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "e2783577", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "id": "a7f4edf8", - "metadata": { - "tags": [] - }, - "source": [ - "[Think Python: 3rd Edition](https://allendowney.github.io/ThinkPython/index.html)\n", - "\n", - "Copyright 2024 [Allen B. Downey](https://allendowney.com)\n", - "\n", - "Code license: [MIT License](https://mit-license.org/)\n", - "\n", - "Text license: [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-nc-sa/4.0/)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.14" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/soln/jupyter_intro.ipynb b/soln/jupyter_intro.ipynb deleted file mode 100644 index 54f1042..0000000 --- a/soln/jupyter_intro.ipynb +++ /dev/null @@ -1,278 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "id": "WzCwnbY17x0O", - "tags": [] - }, - "source": [ - "# *Think Python* on Jupyter\n", - "\n", - "This is an introduction to Jupyter notebooks for people reading the third edition of [*Think Python*](https://greenteapress.com/wp/think-python-3rd-edition) by Allen B. Downey.\n", - "\n", - "A Jupyter notebook is a document that contains text, code, and results from running the code.\n", - "You can read a notebook like a book, but you can also run the code, modify it, and develop new programs.\n", - "\n", - "Jupyter notebooks run in a web browser, so you can run them without installing any new software.\n", - "But they have to connect to a Jupyter server.\n", - "\n", - "You can install and run a server yourself, but to get started it is easier to use a service like [Colab](https://colab.research.google.com/), which is operated by Google.\n", - "\n", - "[On the starting page for the book](https://allendowney.github.io/ThinkPython) you will find a link for each chapter.\n", - "If you click on one of these links, it opens a notebook on Colab." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "WzCwnbY17x0O", - "tags": [] - }, - "source": [ - "If you are reading this notebook on Colab, you should see an orange logo in the upper left that looks like the letters `CO`.\n", - "\n", - "If you are not running this notebook on Colab, [you can click here to open it on Colab](https://colab.research.google.com/github/AllenDowney/ThinkPython/blob/v3/chapters/jupyter_intro.ipynb)." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "WzCwnbY17x0O", - "tags": [] - }, - "source": [ - "## What is a notebook?\n", - "\n", - "A Jupyter notebook is made up of cells, where each cell contains either text or code.\n", - "This cell contains text. \n", - "\n", - "The following cell contains code." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Hello\n" - ] - } - ], - "source": [ - "print('Hello')" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "WzCwnbY17x0O", - "tags": [] - }, - "source": [ - "Click on the previous cell to select it.\n", - "You should see a button on the left with a triangle inside a circle, which is the icon for \"Play\".\n", - "If you press this button, Jupyter runs the code in the cell and displays the result.\n", - "\n", - "When you run code in a notebook for the first time, it might take a few seconds to start.\n", - "And if it's a notebook you didn't write, you might get a warning message.\n", - "If you are running a notebook from a source you trust, which I hope includes me, you can press \"Run Anyway\"." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "WzCwnbY17x0O", - "tags": [] - }, - "source": [ - "Instead of clicking the \"Play\" button, you can also run the code in a cell by holding down `Shift` and pressing `Enter`.\n", - "\n", - "If you are running this notebook on Colab, you should see buttons in the top left that say \"+ Code\" and \"+ Text\". The first one adds a code cell and the second adds a text cell.\n", - "If you want to try them out, select this cell by clicking on it, then press the \"+ Text\" button.\n", - "A new cell should appear below this one." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "WzCwnbY17x0O", - "tags": [] - }, - "source": [ - "Add some text to the cell.\n", - "You can use the buttons to format it, or you can mark up the text using [Markdown](https://www.markdownguide.org/basic-syntax/).\n", - "When you are done, hold down `Shift` and press `Enter`, which will format the text you just typed and then move to the next cell." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "At any time Jupyter is in one of two modes:\n", - "\n", - "* In **command mode**, you can perform operations that affect cells, like adding and removing entire cells.\n", - "\n", - "* In **edit mode**, you can edit the contents of a cell.\n", - "\n", - "With text cells, it is obvious which mode you are in.\n", - "In edit mode, the cell is split vertically, with the text you are editing on the left and the formatted text on the right.\n", - "And you'll see text editing tools across the top.\n", - "In command mode, you see only the formatted text.\n", - "\n", - "With code cells, the difference is more subtle, but if there's a cursor in the cell, you are in edit mode.\n", - "\n", - "To go from edit mode to command mode, press `ESC`.\n", - "To go from command mode to edit mode, press `Enter`." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "When you are done working on a notebook, you can close the window, but any changes you made will disappear.\n", - "If you make any changes you want to keep, open the File menu in the upper left.\n", - "You'll see several ways you can save the notebook.\n", - "\n", - "* If you have a Google account, you can save the notebook in your Drive.\n", - "\n", - "* If you have a GitHub account, you can save it on GitHub.\n", - "\n", - "* Or if you want to save the notebook on your computer, select \"Download\" and then \"Download .ipynb\" The suffix \".ipynb\" indicates that it is a notebook file, as opposed to \".py\", which indicates a file that contains Python code only." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Code for *Think Python*\n", - "\n", - "At the beginning of each notebook, you'll see a cell with code like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "from os.path import basename, exists\n", - "\n", - "def download(url):\n", - " filename = basename(url)\n", - " if not exists(filename):\n", - " from urllib.request import urlretrieve\n", - "\n", - " local, _ = urlretrieve(url, filename)\n", - " print(\"Downloaded \" + str(local))\n", - " return filename\n", - "\n", - "download('https://raw.githubusercontent.com/AllenDowney/ThinkPython/v3/thinkpython.py')\n", - "\n", - "import thinkpython" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You don't need to know how this code works, but when you get to the end of the book, most of it will make sense.\n", - "As you might guess, it downloads a file -- specifically, it downloads `thinkpython.py`, which contains Python code provided specifically for this book.\n", - "The last line \"imports\" this code, which means we can use the code in the notebook.\n", - "\n", - "In other chapters, you will see code that downloads `diagram.py`, which is used to generated the diagrams in the book, and `jupyturtle.py`, which is used in several chapters to create turtle graphics.\n", - "\n", - "In some places you will see a cell like this that begins with `%%expect`." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "ename": "SyntaxError", - "evalue": "invalid syntax (3827346253.py, line 1)", - "output_type": "error", - "traceback": [ - "\u001b[0;36m Cell \u001b[0;32mIn[3], line 1\u001b[0;36m\u001b[0m\n\u001b[0;31m abs 42\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n" - ] - } - ], - "source": [ - "%%expect SyntaxError\n", - "\n", - "abs 42" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "`%%expect` is not part of Python -- it is a Jupyter \"magic command\" that indicates that we expect the cell to product an error.\n", - "When you see this command, it means that the error is deliberate, usually intended to warn you about a common pitfall." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For more about running Jupyter notebooks on Colab, [click here](https://colab.research.google.com/notebooks/basic_features_overview.ipynb).\n", - "\n", - "Or, if you are ready to get started, [click here to read Chapter 1](https://colab.research.google.com/github/AllenDowney/ThinkPython/blob/v3/chapters/chap01.ipynb)." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "M9yF11G47x0l", - "tags": [] - }, - "source": [ - "*Think Python*, 3rd edition.\n", - "\n", - "Copyright 2023 [Allen B. Downey](https://allendowney.com)\n", - "\n", - "License: [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-nc-sa/4.0/)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "Cq6EYo057x0l" - }, - "outputs": [], - "source": [] - } - ], - "metadata": { - "celltoolbar": "Tags", - "colab": { - "provenance": [] - }, - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.11" - } - }, - "nbformat": 4, - "nbformat_minor": 1 -} diff --git a/soln/quizzes.ipynb b/soln/quizzes.ipynb deleted file mode 100644 index 284455a..0000000 --- a/soln/quizzes.ipynb +++ /dev/null @@ -1,2382 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "310cd93f", - "metadata": {}, - "source": [ - "# Title\n", - "Chapter 1\n", - "\n", - "## Quiz Type\n", - "Formative" - ] - }, - { - "cell_type": "markdown", - "id": "71c60f4c", - "metadata": {}, - "source": [ - "### Question\n", - "Which of these types is used to represent a number with a fraction part?\n", - "- [ ] `int`\n", - "- [ ] `real`\n", - "- [ ] `string`\n", - "- [X] `float`\n", - "\n", - "\n", - "### Rationale\n", - "- `int` values can only be integers.\n", - "- Python does not have a type called `real`.\n", - "- `string` values contain a sequence of characters.\n", - "- `float` values represent floating-point numbers, which can have a fraction part.\n" - ] - }, - { - "cell_type": "markdown", - "id": "dae6997f", - "metadata": {}, - "source": [ - "### Question\n", - "Which of these is a legal expression?\n", - "\n", - "- [ ] `'1' / '2'`\n", - "- [ ] `'1' * '2'`\n", - "- [ ] `'1' / 2`\n", - "- [X] `'1' * 2`\n", - "\n", - "\n", - "### Rationales\n", - "- The division operator does not work with strings.\n", - "- With the multiplication operator, the first value can be a string, but the second cannot. \n", - "- The division operator does not work with strings.\n", - "- When the first operator is a string, the multiplication operator repeats the string, so the result is `'11'`.\n" - ] - }, - { - "cell_type": "markdown", - "id": "51cc5f8b", - "metadata": {}, - "source": [ - "### Question\n", - "Which of these is the general word for any value used in a mathematical operation like addition or multiplication?\n", - "\n", - "- [ ] term\n", - "- [ ] factor\n", - "- [ ] divisor\n", - "- [X] operand\n", - "\n", - "### Rationale\n", - "- A \"term\" is a value used in addition, but it is not the general word for any value used in an operation.\n", - "- A \"factor\" is a value used in multiplication, but it is not the general word for any value used in an operation.\n", - "- A \"divisor\" is one of the values used in division, but it is not the general word for any value used in an operation.\n", - "- An \"operand\" is a value used in an operation." - ] - }, - { - "cell_type": "markdown", - "id": "42147377", - "metadata": {}, - "source": [ - "### Question\n", - "On the internet, people sometimes argue about the value of an ambiguous mathematical expression like $8 ÷ 2(2+2)$. How do we write this expression in Python?\n", - "\n", - "- [ ] `8 ÷ 2 (2 + 2)`\n", - "- [ ] `8 / 2 (2 + 2)`\n", - "- [ ] `8 ÷ 2 * (2 + 2)`\n", - "- [X] `8 / 2 * (2 + 2)`\n", - "\n", - "### Rationale\n", - "- The operator for division is `/`, not `÷`. Also, there is no implicit multiplication in Python -- you have to use the `*` operator.\n", - "- There is no implicit multiplication in Python -- you have to use the `*` operator.\n", - "- The operator for division is `/`, not `÷`.\n", - "- An alternative is to put `8 / 2` in parentheses so the order of operations is clear. \n" - ] - }, - { - "cell_type": "markdown", - "id": "9b8674e6", - "metadata": {}, - "source": [ - "# Title\n", - "Chapter 2\n", - "\n", - "## Quiz Type\n", - "Formative" - ] - }, - { - "cell_type": "markdown", - "id": "6e14b3e5", - "metadata": {}, - "source": [ - "### Question\n", - "Which of these is a legal variable name?\n", - "- [ ] `2pi`\n", - "- [ ] `question?`\n", - "- [ ] `import`\n", - "- [X] `is_even`\n", - "\n", - "\n", - "\n", - "### Rationale\n", - "- `2pi` is not a legal variable name because it starts with a number.\n", - "- `question?` is not a legal variable name because only letters, numbers, and the underscore character, `_`, are allowed.\n", - "- `import` is not a legal variable name because it is one of Python's keywords.\n", - "- `is_even` is a legal variable name because letters, numbers, and the underscore character, `_`, are allowed." - ] - }, - { - "cell_type": "markdown", - "id": "49c8119c", - "metadata": {}, - "source": [ - "### Question\n", - "Which of these is NOT a correct way to raise `2` to the third power?\n", - "- [ ] `2 * 2 * 2` \n", - "- [ ] `2 ** 3`\n", - "- [ ] `math.pow(2, 3)`\n", - "- [X] `2 ^ 3`\n", - "\n", - "### Rationale\n", - "- Multiplication is a correct way to raise `2` to the third power.\n", - "- The exponentiation operator, `**`, is a correct way to raise `2` to the third power.\n", - "- The `pow` function in the `math` module is a correct way to raise `2` to the third power.\n", - "- In some languages, the `^` operator is used for exponentiation, but in Python it means something else.\n" - ] - }, - { - "cell_type": "markdown", - "id": "32123676", - "metadata": {}, - "source": [ - "### Question\n", - "When you call a function, what are the values that appear in parentheses?\n", - "- [ ] assignments\n", - "- [ ] comments\n", - "- [ ] exceptions\n", - "- [X] arguments\n", - "\n", - "\n", - "### Rationale \n", - "- An assignment is a statement that assigns a value to a variable.\n", - "- A comment is text you add to a program to explain how it works.\n", - "- An exception is an error detected while a program is running.\n", - "- The values you pass to a function are called arguments.\n" - ] - }, - { - "cell_type": "markdown", - "id": "8f829deb", - "metadata": {}, - "source": [ - "### Question\n", - "If a program runs without producing an error message, but it does not do the right thing, what kind of error is that?\n", - "- [ ] syntax error\n", - "- [ ] runtime error\n", - "- [ ] exception\n", - "- [X] semantic error\n", - "\n", - "\n", - "### Rationale\n", - "- A syntax error produces an error message.\n", - "- A runtime error produces an error message.\n", - "- An exception produces an error message.\n", - "- A semantic error is when a program runs, but does the wrong thing.\n" - ] - }, - { - "cell_type": "markdown", - "id": "af4a5b86", - "metadata": {}, - "source": [ - "# Title\n", - "Chapter 3\n", - "\n", - "## Quiz Type\n", - "Formative" - ] - }, - { - "cell_type": "markdown", - "id": "13f5b1df", - "metadata": {}, - "source": [ - "### Question\n", - "When you define a function, what are the variables that appear in parentheses?\n", - "- [ ] arguments\n", - "- [ ] local variables\n", - "- [ ] function objects\n", - "- [X] parameters\n", - "\n", - "\n", - "\n", - "### Rationale\n", - "- An argument is a value you provide when you call a function.\n", - "- A local variable is a variable that gets assigned a value inside a function.\n", - "- A function object is the result of defining a new function.\n", - "- A parameter is a variable that gets a value when the function is called.\n" - ] - }, - { - "cell_type": "markdown", - "id": "3873ea9d", - "metadata": {}, - "source": [ - "### Question\n", - "Which kind of statement can be used to run a line of code more than once?\n", - "- [ ] assignment statement\n", - "- [ ] import statement\n", - "- [ ] print statement\n", - "- [X] `for` statement\n", - "\n", - "\n", - "### Rationale\n", - "- An assignment statement assigns a value to a variable.\n", - "- An import statement makes it possible to use functions in a module.\n", - "- A print statement displays the value of an expression.\n", - "- A `for` statement can run a line of code, or multiple lines, more than once.\n" - ] - }, - { - "cell_type": "markdown", - "id": "5b0854bc", - "metadata": {}, - "source": [ - "### Question\n", - "What is wrong with this function, if anything?\n", - "\n", - "```\n", - "def bottle_line(n, suffix):\n", - " print(n)\n", - " print('bottles of beer')\n", - " print(suffix)\n", - "```\n", - "\n", - "- [ ] Instead of `def`, the first word should be `define`.\n", - "- [ ] You can't have more than one parameter in parentheses.\n", - "- [ ] Only the first statement of the body should be indented.\n", - "- [X] There are no errors in this function.\n", - "\n", - "\n", - "### Rationale\n", - "- `def` is the right keyword to define a new function, although some other languages use `define`.\n", - "- You can have any number of parameters in parentheses, including none.\n", - "- All of the statements in the body of the function should be indented.\n", - "- There is nothing wrong with this function.\n" - ] - }, - { - "cell_type": "markdown", - "id": "c1bda75a", - "metadata": {}, - "source": [ - "# Title\n", - "Chapter 4\n", - "\n", - "## Quiz Type\n", - "Formative" - ] - }, - { - "cell_type": "markdown", - "id": "1019abed", - "metadata": {}, - "source": [ - "### Question\n", - "What is wrong with this function, if anything?\n", - "\n", - "```\n", - "def square(length):\n", - " for i in range(4):\n", - " forward(50)\n", - " left(90)\n", - "```\n", - "\n", - "- [ ] The indentation of the statements in the `for` loop is incorrect.\n", - "- [ ] It does not bring the Turtle back to where it started.\n", - "- [ ] There are no errors in this function.\n", - "- [X] It always draws the same size square, regardless of `length`.\n", - "\n", - "\n", - "### Rationale\n", - "- The indentation in this function is correct.\n", - "- The `Turtle` ends where it started, facing in the same direction.\n", - "- There is an error!\n", - "- The size is always `50` -- the value of `length` is never used.\n" - ] - }, - { - "cell_type": "markdown", - "id": "326c9bfd", - "metadata": {}, - "source": [ - "### Question\n", - "What is it called when you put working statements into a new function definition?\n", - "- [ ] generalization\n", - "- [ ] indentation\n", - "- [ ] debugging\n", - "- [X] encapsulation\n", - "\n", - "\n", - "### Rationale\n", - "- Generalization is when you add a parameter to a function to make it more general.\n", - "- You might have to indent the statements when you put them in a function definition, but that's not what the whole process is called.\n", - "- If the statements are working, they don't have to be debugged.\n", - "- Encapsulation is the process of transforming a sequence of statements into a function definition.\n" - ] - }, - { - "cell_type": "markdown", - "id": "09e143bc", - "metadata": {}, - "source": [ - "### Question\n", - "Here are two versions of the `circle` function. \n", - "\n", - "```\n", - "def circle(radius):\n", - " circumference = 2 * math.pi * radius\n", - " n = 30\n", - " length = circumference / n\n", - " polygon(n, length)\n", - "\n", - "def circle(radius):\n", - " arc(radius, 360)\n", - "```\n", - "\n", - "What can we say about these functions?\n", - "\n", - "- [ ] They have the same implementation, but different interfaces.\n", - "- [ ] They have the same interface _and_ the same implementation.\n", - "- [ ] They have neither the same interface nor the same implementation.\n", - "- [X] They have the same interface, but different implementations.\n", - "\n", - "\n", - "### Rationale\n", - "- They take the same parameter and have the same effect, so they have the same interface -- but they accomplish the effect in different ways, so they have different implementations.\n", - "- They take the same parameter and have the same effect, so they have the same interface -- but they accomplish the effect in different ways, so they have different implementations.\n", - "- They take the same parameter and have the same effect, so they have the same interface -- but they accomplish the effect in different ways, so they have different implementations.\n", - "- They take the same parameter and have the same effect, so they have the same interface -- but they accomplish the effect in different ways, so they have different implementations.\n" - ] - }, - { - "cell_type": "markdown", - "id": "7df231d6", - "metadata": {}, - "source": [ - "# Title\n", - "Chapter 5\n", - "\n", - "## Quiz Type\n", - "Formative" - ] - }, - { - "cell_type": "markdown", - "id": "a8e5e817", - "metadata": {}, - "source": [ - "### Question\n", - "What is the result of these assignment statements?\n", - "\n", - "```\n", - "a = 25 // 10\n", - "b = 25 % 10\n", - "```\n", - "- [ ] `a` is `2.5` and `b` is `5`\n", - "- [ ] `a` is `2` and `b` is `250`\n", - "- [ ] `a` is `2.5` and `b` is `250`\n", - "- [X] `a` is `2` and `b` is `5`\n", - "\n", - "\n", - "### Rationale\n", - "- The `//` operator does integer division, so `25 // 10` is `2`.\n", - "- The `%` operator computes the remainder after division, so `25 % 10` is `5`.\n", - "- The `//` operator does integer division, so `25 // 10` is `2`, and the `%` operator computes the remainder after division, so `25 % 10` is `5`.\n", - "- The `//` operator does integer division and the `%` operator computes the remainder after division.\n" - ] - }, - { - "cell_type": "markdown", - "id": "01d9a55a", - "metadata": {}, - "source": [ - "### Question\n", - "What is the result of these statements?\n", - "```\n", - "x = 5\n", - "print(x > 5)\n", - "print(x <= 5)\n", - "```\n", - "- [ ] They print the values `True` and `True`\n", - "- [ ] They print the values `True` and `False`\n", - "- [ ] They print the values `False` and `False`\n", - "- [X] They print the values `False` and `True`\n", - "\n", - "\n", - "### Rationale\n", - "- If `x` is `5`, `x > 5` is the same as `5 > 5`, which is `False`.\n", - "- If `x` is `5`, `x > 5` is the same as `5 > 5`, which is `False`; also, `x <= 5` is the same as `5 <= 5`, which is `True`.\n", - "- If `x` is `5`, `x <= 5` is the same as `5 <= 5`, which is `True`.\n", - "- If `x` is `5`, `x > 5` is `False` and `x <= 5` is `True`.\n" - ] - }, - { - "cell_type": "markdown", - "id": "2fa1f2cd", - "metadata": {}, - "source": [ - "### Question\n", - "What is the result of calling this function?\n", - "```\n", - "def hello():\n", - " print('hello')\n", - " hello()\n", - "```\n", - "- [ ] It prints `hello` once.\n", - "- [ ] It prints `hello` forever.\n", - "- [ ] It causes an error the first time `hello` tries to call itself.\n", - "- [X] It prints `hello` many times and then causes an error.\n", - "\n", - "\n", - "### Rationale\n", - "- After it prints `hello` once, it calls itself, which prints `hello` many times and then causes a `RecursionError`.\n", - "- After printing `hello` many times, it causes a `RecursionError`.\n", - "- After printing `hello` many times, it causes a `RecursionError`.\n", - "- After printing `hello` many times, it causes a `RecursionError`.\n" - ] - }, - { - "cell_type": "markdown", - "id": "316931ed", - "metadata": {}, - "source": [ - "### Question\n", - "What kind of operator is `or`?\n", - "- [ ] arithmetic\n", - "- [ ] bitwise\n", - "- [ ] relational\n", - "- [X] logical\n", - "\n", - "\n", - "### Rationale\n", - "- `or` is a logical operator, along with `and` and `not`.\n", - "- `or` is a logical operator, along with `and` and `not`.\n", - "- `or` is a logical operator, along with `and` and `not`.\n", - "- `or` is a logical operator, along with `and` and `not`.\n" - ] - }, - { - "cell_type": "markdown", - "id": "84ae0c85", - "metadata": {}, - "source": [ - "# Title\n", - "Chapter 6\n", - "\n", - "## Quiz Type\n", - "Formative" - ] - }, - { - "cell_type": "markdown", - "id": "14f05708", - "metadata": {}, - "source": [ - "### Question\n", - "What is the return value if we call this function with the value `3`?\n", - "\n", - "```\n", - "def collatz(x):\n", - " if x % 2 == 0:\n", - " return x // 2\n", - " else:\n", - " return x * 3 + 1\n", - "```\n", - "\n", - "- [ ] `1`\n", - "- [ ] `1.5`\n", - "- [ ] It causes an error.\n", - "- [X] `10`\n", - "\n", - "\n", - "### Rationale\n", - "- Because `3 % 2` is `1`, the second branch of the conditional runs.\n", - "- Because `3 % 2` is `1`, the second branch of the conditional runs. Also, because `//` does integer division, `3 // 2` is `1`.\n", - "- This function works. Because `3 % 2` is `1`, the second branch of the conditional runs, and the result is `3 * 3 + 1`, which is `10`.\n", - "- Because `3 % 2` is `1`, the second branch of the conditional runs, and the result is `3 * 3 + 1`, which is `10`.\n" - ] - }, - { - "cell_type": "markdown", - "id": "3a6bff04", - "metadata": {}, - "source": [ - "### Question\n", - "What do we call a function that does not print anything or have any effect other than a return value?\n", - "- [ ] recursive\n", - "- [ ] dead code\n", - "- [ ] incremental\n", - "- [X] pure function\n", - "\n", - "\n", - "### Rationale\n", - "- A recursive function calls itself, but it might print something or have some other effect.\n", - "- Dead code is code that can never run, often because it appears after a `return` statement.\n", - "- Incremental development is a way of writing programs by making small changes and testing.\n", - "- A pure function does not print anything or have any effect other than a return value.\n" - ] - }, - { - "cell_type": "markdown", - "id": "c7f26556", - "metadata": {}, - "source": [ - "### Question\n", - "What is the result of calling this function with the values `x=1.5` and `y=1.6`?\n", - "\n", - "```\n", - "def is_close(x, y):\n", - " return abs(x - y) < 0.2\n", - "```\n", - "- [ ] There is a syntax error.\n", - "- [ ] There is a runtime error.\n", - "- [ ] `False`\n", - "- [X] `True`\n", - "\n", - "\n", - "### Rationale\n", - "- The syntax of the function is correct.\n", - "- The function is correct as long as the values of `x` and `y` are numbers.\n", - "- The absolute difference between `1.5` and `1.6` is `0.1`, which is less than `0.2`.\n", - "- The absolute difference between `1.5` and `1.6` is `0.1`, which is less than `0.2`.\n" - ] - }, - { - "cell_type": "markdown", - "id": "602f1f79", - "metadata": {}, - "source": [ - "# Title\n", - "Chapter 7\n", - "\n", - "## Quiz Type\n", - "Formative" - ] - }, - { - "cell_type": "markdown", - "id": "bf089576", - "metadata": {}, - "source": [ - "### Question\n", - "This function is supposed to return `True` if `word` contains with `'A'` or `'a'`, and `False` otherwise. But it doesn't work -- What's wrong?\n", - "\n", - "```\n", - "def has_a(word):\n", - " for letter in word.lower():\n", - " if letter == 'a':\n", - " return True\n", - " else:\n", - " return False\n", - " return False\n", - "```\n", - "\n", - "- [ ] The first line of the for statement has a syntax error.\n", - "- [ ] It only checks for lowercase `'a'`, not uppercase `'A'`.\n", - "- [ ] It causes a runtime error if `word` is an empty string.\n", - "- [X] It only checks the first letter of `word`.\n", - "\n", - "\n", - "### Rationale\n", - "- The syntax of the function is correct.\n", - "- It uses `lower` to convert `word` to lowercase, so if uppercase `'A'` is in the string, it would be found.\n", - "- If `word` is an empty string, the body of the loop never runs and the function returns `False`, which is correct.\n", - "- Both branches of the conditional have `return` statements, so this function ends after checking the first letter.\n" - ] - }, - { - "cell_type": "markdown", - "id": "21103f65", - "metadata": {}, - "source": [ - "### Question\n", - "Which of these is a legal way to increment `x`, assuming it has already been assigned a value.\n", - "- [ ] `x++`\n", - "- [ ] `x + 1 = x`\n", - "- [ ] `x = +1`\n", - "- [X] `x = x + 1`\n", - "\n", - "\n", - "### Rationale\n", - "- Some programming languages use the `++` operator to increment a variable, but not Python.\n", - "- The left side of an assignment can't be an expression like `x + 1`.\n", - "- The value `+1` is the same as `1`, so this statement assigns the value `1` to`x`.\n", - "- This is a legal way to update the value of `x`.\n" - ] - }, - { - "cell_type": "markdown", - "id": "4a5b5b3b", - "metadata": {}, - "source": [ - "### Question\n", - "What does this function do?\n", - "\n", - "```\n", - "def check(word, letters):\n", - " for letter in word.lower():\n", - " if letter in letters.lower():\n", - " return False\n", - " return True\n", - "```\n", - "- [ ] Returns `True` if any of the letters in `letters` appear in `word`.\n", - "- [ ] Returns `True` if any of the letters in `word` appear in `letter`.\n", - "- [ ] Returns `True` if none of the letters in `word` appear in `letter`.\n", - "- [X] Returns `True` if none of the letters in `letters` appear in `word`.\n", - "\n", - "\n", - "### Rationale\n", - "- It only returns `True` if it gets to the end of `word` and exits the loop having found none of the letters in `letters`.\n", - "- It only returns `True` if it gets to the end of `word` and exits the loop having found none of the letters in `letters`.\n", - "- It only returns `True` if it gets to the end of `word` and exits the loop having found none of the letters in `letters`.\n", - "- It returns `True` if it gets to the end of `word` and exits the loop having found none of the letters in `letters`.\n" - ] - }, - { - "cell_type": "markdown", - "id": "6c98c8b6", - "metadata": {}, - "source": [ - "# Title\n", - "Chapter 8\n", - "\n", - "## Quiz Type\n", - "Formative" - ] - }, - { - "cell_type": "markdown", - "id": "61658741", - "metadata": {}, - "source": [ - "### Question\n", - "What is the result of this comparison: `'Orange' < 'apple'`?\n", - "- [ ] `False`\n", - "- [ ] Syntax error\n", - "- [ ] Runtime error, because you can't compare apples and oranges.\n", - "- [X] `True`\n", - "\n", - "\n", - "### Rationale\n", - "- When we compare characters the uppercase `'O'` comes before the lowercase `'a'`.\n", - "- The syntax is correct.\n", - "- It's legal to compare any two strings.\n", - "- Because when we compare characters the uppercase `'O'` comes before the lowercase `'a'`.\n" - ] - }, - { - "cell_type": "markdown", - "id": "3605679c", - "metadata": {}, - "source": [ - "### Question\n", - "Which of these is the correct way to invoke the `lower` method on a string called `s`?\n", - "- [ ] lower(s)\n", - "- [ ] string.lower(s)\n", - "- [ ] s.lower(string)\n", - "- [X] s.lower()\n", - "\n", - "\n", - "### Rationale\n", - "- The `lower` method can only be invoked on a string using dot notation.\n", - "- The `lower` method can only be invoked on a string using dot notation.\n", - "- The `lower` method doesn't take an argument in parentheses.\n", - "- This is the correct syntax for invoking a method on an object.\n" - ] - }, - { - "cell_type": "markdown", - "id": "e5db8516", - "metadata": {}, - "source": [ - "### Question\n", - "If we use the `search` function in the `re` module, which of the following strings matches this pattern: `r'ab?c$'`?\n", - "- [ ] `'ab?c$'`\n", - "- [ ] `'abcd'`\n", - "- [ ] `'abbc'`\n", - "- [X] `'zac'`\n", - "\n", - "\n", - "### Rationale\n", - "- The question mark, `?`, and dollar sign, `$`, are special characters that change the behavior of the pattern -- they should not appear in the string.\n", - "- The pattern `c$` requires the letter `c` at the end of the string.\n", - "- The pattern `b?` means that `b` is optional, but it cannot be repeated.\n", - "- It's OK to have extra letters at the beginning, and the `b` is not required.\n" - ] - }, - { - "cell_type": "markdown", - "id": "30057bce", - "metadata": {}, - "source": [ - "# Title\n", - "Chapter 9\n", - "\n", - "## Quiz Type\n", - "Formative" - ] - }, - { - "cell_type": "markdown", - "id": "e8cea4f9", - "metadata": {}, - "source": [ - "### Question\n", - "What is the value of `t` after running these statements?\n", - "\n", - "```\n", - "t = [1, 2, 3]\n", - "t.pop(1)\n", - "t.append(2)\n", - "t.remove(3)\n", - "```\n", - "- [ ] `[2, 2]`\n", - "- [ ] `[1, 3]`\n", - "- [ ] `[1, 2, 3]`\n", - "- [X] `[1, 2]`\n", - "\n", - "\n", - "### Rationale\n", - "- `t.pop(1)` removes the second element, which is `2`.\n", - "- After `t.pop(1)` removes the second element, `t.append(2)` adds `2` to the end of the list, and `t.remove(3)` removes `3`.\n", - "- `t.pop(1)` removes the second element, which is `2`. `t.append(2)` adds `2` to the end of the list, and `t.remove(3)` removes `3`.\n", - "- `t.pop(1)` removes the second element, which is `2`. `t.append(2)` adds `2` to the end of the list, and `t.remove(3)` removes `3`.\n" - ] - }, - { - "cell_type": "markdown", - "id": "9fc37500", - "metadata": {}, - "source": [ - "### Question\n", - "What is the value of `b` after running these statements?\n", - "\n", - "```\n", - "a = [1, 2, 3]\n", - "b = a\n", - "a.remove(2)\n", - "```\n", - "- [ ] `[1, 2]`\n", - "- [ ] `[1, 2, 3]`\n", - "- [ ] Runtime error\n", - "- [X] `[1, 3]`\n", - "\n", - "\n", - "### Rationale\n", - "- `a.remove(2)` removes the value `2` from the list.\n", - "- `a` and `b` refer to the same object, so when we modify `a`, the value of `b` also changes.\n", - "- These statements run without causing an error.\n", - "- `a` and `b` refer to the same object, so when we modify `a`, the value of `b` also changes.\n" - ] - }, - { - "cell_type": "markdown", - "id": "904a206e", - "metadata": {}, - "source": [ - "### Question\n", - "What can we say about two lists created like this:\n", - "\n", - "```\n", - "a = [1, 2, 3]\n", - "b = [1, 2, 3]\n", - "```\n", - "\n", - "\n", - "- [ ] They are equivalent and identical.\n", - "- [ ] They are identical but not equivalent.\n", - "- [ ] They are not equivalent and not identical.\n", - "- [X] They are equivalent but not identical.\n", - "\n", - "\n", - "### Rationale\n", - "- `a` and `b` refer to different lists, so they are not identical.\n", - "- `a` and `b` refer to lists with the same value, so they are equivalent, but they refer to different lists, so they are not identical.\n", - "- `a` and `b` refer to lists with the same value, so they are equivalent, but they refer to different lists, so they are not identical.\n", - "- `a` and `b` refer to lists with the same value, so they are equivalent, but they refer to different lists, so they are not identical.\n" - ] - }, - { - "cell_type": "markdown", - "id": "cbacd607", - "metadata": {}, - "source": [ - "# Title\n", - "Chapter 10\n", - "\n", - "## Quiz Type\n", - "Formative" - ] - }, - { - "cell_type": "markdown", - "id": "0a6ce560", - "metadata": {}, - "source": [ - "### Question\n", - "What is the value of the dictionary `d` after these statements run?\n", - "\n", - "```\n", - "d = {'a': 1, 'b': 2}\n", - "d['a'] = 3\n", - "```\n", - "\n", - "- [ ] `{'a': 1, 'b': 2, 'a': 3}`\n", - "- [ ] `{'a': 1, 'b': 2}`\n", - "- [ ] These statements cause a runtime error\n", - "- [X] `{'a': 3, 'b': 2}`\n", - "\n", - "### Rationale\n", - "- Each key can only appear once in a dictionary.\n", - "- The second assignment statement changes the value associated with the key `'a'`.\n", - "- This code runs without causing an error.\n", - "- The second assignment statement updates the value associated with the key `'a'`.\n" - ] - }, - { - "cell_type": "markdown", - "id": "bb023c2e", - "metadata": {}, - "source": [ - "### Question\n", - "What is the value of the dictionary `d` after running these statements?\n", - "\n", - "```\n", - "d = {'a': 1, 'b': 2}\n", - "d['c'] += 1\n", - "```\n", - "\n", - "- [ ] `{'a': 1, 'b': 2}`\n", - "- [ ] `{'a': 1, 'b': 2, 'c': 1}`\n", - "- [ ] `{'a': 1, 'b': 2, 'c': 3}`\n", - "- [X] These statements cause a runtime error.\n", - "\n", - "\n", - "### Rationale\n", - "- The `+=` operator looks up the key to get the old value before adding `1`.\n", - "- The `+=` operator looks up the key to get the old value before adding `1`.\n", - "- The `+=` operator looks up the key to get the old value before adding `1`.\n", - "- Because `c` does not appear as a key in the dictionary, the second statement causes a `KeyError`.\n" - ] - }, - { - "cell_type": "markdown", - "id": "5c02c39c", - "metadata": {}, - "source": [ - "### Question\n", - "What happens when the following statements run?\n", - "\n", - "```\n", - "d1 = {'a': 1, 'b': 2}\n", - "d2 = {d1: 3}\n", - "```\n", - "\n", - "- [ ] They add `d1` as a key in `d3`.\n", - "- [ ] They cause a `KeyError` because `d1` is not in `d2`.\n", - "- [ ] They cause a `ValueError` because `3` cannot appear as a value in a dictionary.\n", - "- [X] They cause a `TypeError` because a dictionary cannot appear as a key in a dictionary.\n", - "\n", - "\n", - "### Rationale\n", - "- Dictionaries are mutable, so they are not hashable, so they cannot appear as a key in a dictionary.\n", - "- Dictionaries are mutable, so they are not hashable, so they cannot appear as a key in a dictionary, but that's not a `KeyError.`\n", - "- Dictionaries are mutable, so they are not hashable, so they cannot appear as a key in a dictionary, but that's not a `ValueError.`\n", - "- Dictionaries are mutable, so they are not hashable, so they cannot appear as a key in a dictionary." - ] - }, - { - "cell_type": "markdown", - "id": "bab73b0f", - "metadata": {}, - "source": [ - "# Title\n", - "Chapter 11\n", - "\n", - "## Quiz Type\n", - "Formative" - ] - }, - { - "cell_type": "markdown", - "id": "4d3e93b2", - "metadata": {}, - "source": [ - "### Question\n", - "Which one of these expressions is NOT a tuple?\n", - "- [ ] `tuple('abc')`\n", - "- [ ] `'abc',`\n", - "- [ ] `('abc',)`\n", - "- [X] `('abc')`\n", - "\n", - "\n", - "### Rationale\n", - "- The value of this expression is a tuple with the elements `'a'`, `'b'`, and `'c'`.\n", - "- Because of the comma at the end, the value if this expression is a tuple with on element, `'abc'`.\n", - "- Because of the comma, the value if this expression is a tuple with on element, `'abc'`. The parentheses are not required.\n", - "- The parentheses alone do not make a tuple, so the value of this expression is just the string `'abc'`.\n" - ] - }, - { - "cell_type": "markdown", - "id": "2b937230", - "metadata": {}, - "source": [ - "### Question\n", - "What is the result of these statements?\n", - "\n", - "```\n", - "t = tuple('abc')\n", - "s = [1, 2, 3]\n", - "d = {t: s}\n", - "```\n", - "\n", - "- [ ] A `TypeError` because a tuple can't appear as a key in a dictionary.\n", - "- [ ] A `TypeError` because a list can't appear as a value in a dictionary.\n", - "- [ ] A syntax error because there should be a comma before the closing brace on the third line.\n", - "- [X] A dictionary with one item that maps from a tuple to a list.\n", - "\n", - "\n", - "### Rationale\n", - "- A tuple is immutable, so it can appear as a key in a dictionary -- as long as its elements are also immutable.\n", - "- Any type can appear as a value in a dictionary, including lists.\n", - "- The syntax is correct -- if there is a single item in a dictionary, a comma is legal but not required.\n", - "- These statements create a dictionary with one item that maps from a tuple to a list.\n" - ] - }, - { - "cell_type": "markdown", - "id": "18d39979", - "metadata": {}, - "source": [ - "### Question\n", - "What does this function do?\n", - "\n", - "```\n", - "def printall(*args):\n", - " for value in reversed(args):\n", - " print(value)\n", - "```\n", - "- [ ] It has a syntax error because the `*` operator is not legal before a parameter.\n", - "- [ ] It causes a `TypeError` because `args` is a tuple, which is immutable and cannot be reversed.\n", - "- [ ] It takes a single list or tuple and prints the values in reversed order.\n", - "- [X] It takes any number of arguments and prints them in reversed order.\n", - "\n", - "\n", - "### Rationale\n", - "- When the `*` operator appears before a parameter, it \"packs\" any number of arguments into a tuple.\n", - "- It's true that `args` is a tuple, which is immutable, but `reversed` does not modify the tuple, it makes a new object that loops through the tuple in reverse order.\n", - "- This function can take any number of arguments, not just a single argument.\n", - "- It takes any number of arguments and \"packs\" them into a tuple, then loops through the tuple in reverse order and prints the elements.\n" - ] - }, - { - "cell_type": "markdown", - "id": "99cd3f4f", - "metadata": {}, - "source": [ - "### Question\n", - "What is the value of this expression?\n", - "\n", - "```\n", - "('a', 3) < ('b', 1)\n", - "```\n", - "\n", - "- [ ] `False` because `3` is greater than `1`.\n", - "- [ ] These values can't be compared because `'a'` is less than `'b'`, but `3` is greater than `1`.\n", - "- [ ] A `TypeError` because the `<` operator doesn't work with tuples.\n", - "- [X] `True` because `'a'` is less than `'b'`.\n", - "\n", - "### Rationale\n", - "- When tuples are compared, the first elements are compared first. The other elements are only compared if the first elements are the same.\n", - "- When tuples are compared, the first elements are compared first. The other elements are only compared if the first elements are the same.\n", - "- The `<` operator compares the first elements of each tuple, and then compares other elements in the event of a tie.\n", - "- When tuples are compared, the first elements are compared first.\n" - ] - }, - { - "cell_type": "markdown", - "id": "814010f6", - "metadata": {}, - "source": [ - "# Title\n", - "Chapter 12\n", - "\n", - "## Quiz Type\n", - "Formative" - ] - }, - { - "cell_type": "markdown", - "id": "359e477c", - "metadata": {}, - "source": [ - "### Question\n", - "Assuming that `t` is a list of strings, what does the following line of code do?\n", - "```\n", - "sorted(t, key=len)\n", - "```\n", - "\n", - "- [ ] Modifies `t` and sorts the elements in alphabetical order.\n", - "- [ ] Makes a new list that contains the elements in alphabetical order.\n", - "- [ ] Modifies `t` and sorts the elements from shortest to longest\n", - "- [X] Makes a new list that contains the elements in order from shortest to longest. \n", - "\n", - "\n", - "### Rationale\n", - "- `sorted` makes a new list -- it doesn't modify `t` -- and `key=len` sorts the elements from shortest to longest. \n", - "- With `key=len`, `sorted` sorts the elements from shortest to longest. \n", - "- `sorted` makes a new list -- it doesn't modify `t`.\n", - "- `sorted` makes a new list, and `key=len` sorts the elements from shortest to longest." - ] - }, - { - "cell_type": "markdown", - "id": "d086f791", - "metadata": {}, - "source": [ - "### Question\n", - "What is the effect of running this program?\n", - "\n", - "```\n", - "word_counter = {}\n", - "for line in open(filename):\n", - " for word in split_line(line):\n", - " word_counter[word] += 1\n", - "```\n", - "- [ ] It makes a dictionary that maps from each word to the number of times it appears.\n", - "- [ ] It has a syntax error because the indentation is not correct.\n", - "- [ ] It has a semantic error because all the keys in `word_counter` map to the value `1`.\n", - "- [X] It causes a `KeyError` when it tries to increment a value in `word_counter`.\n", - "\n", - "\n", - "### Rationale\n", - "- Because `word_counter` is initially empty, the program causes a `KeyError` when it tries to increment a value in `word_counter`.\n", - "- The indentation is correct, but the program causes a `KeyError` when it tries to increment a value in `word_counter`.\n", - "- Because `word_counter` is initially empty, the program causes a `KeyError` when it tries to increment a value in `word_counter`.\n", - "- Because `word_counter` is initially empty, the program causes a `KeyError` when it tries to increment a value in `word_counter`.\n" - ] - }, - { - "cell_type": "markdown", - "id": "6a695f2d", - "metadata": {}, - "source": [ - "### Question\n", - "\n", - "If we run the following lines of code, what is the probability that the result is `'a'`?\n", - "\n", - "```\n", - "letters = ['a', 'b', 'c']\n", - "weights = [1, 2, 3]\n", - "random.choices(letters, weights=weights)\n", - "```\n", - "\n", - "- [ ] 1/3\n", - "- [ ] 1/4\n", - "- [ ] 1/5\n", - "- [X] 1/6\n", - "\n", - "\n", - "### Rationale\n", - "- The weight associated with `'a'` is `1` and the total of the weights is `6`.\n", - "- The weight associated with `'a'` is `1` and the total of the weights is `6`.\n", - "- The weight associated with `'a'` is `1` and the total of the weights is `6`.\n", - "- The weight associated with `'a'` is `1` and the total of the weights is `6`, so the probability of choosing `'a'` is `1/6`.\n" - ] - }, - { - "cell_type": "markdown", - "id": "045f5fa6", - "metadata": {}, - "source": [ - "# Title\n", - "Chapter 13\n", - "\n", - "## Quiz Type\n", - "Formative" - ] - }, - { - "cell_type": "markdown", - "id": "7d0661f3", - "metadata": {}, - "source": [ - "### Question\n", - "If the current working directory is `/home/dinsdale/photos` and you open a file using the relative path `mar-2023/photo1.jpg`, which of these expressions computes the absolute path of the file that gets opened?\n", - "- [ ] `''.join('/home/dinsdale/photos', 'mar-2023/photo1.jpg')`\n", - "- [ ] `'mar-2023/photo1.jpg' + '/home/dinsdale/photos'`\n", - "- [ ] `'/home/dinsdale/photos' + 'mar-2023/photo1.jpg'`\n", - "- [X] `os.path.join('/home/dinsdale/photos', 'mar-2023/photo1.jpg')`\n", - "\n", - "\n", - "### Rationale\n", - "- This way of using the string `join` method does not put a slash between the directories in the path.\n", - "- The order of the working directory and the relative path is reversed. Also, this way of using the string concatenation does not put a slash between the directories in the path.\n", - "- This way of using the string concatenation does not put a slash between the directories in the path.\n", - "- The `os.path.join` function joins the two paths with either a forward or backward slash, depending on which operating system is running.\n" - ] - }, - { - "cell_type": "markdown", - "id": "f0acf2af", - "metadata": {}, - "source": [ - "### Question\n", - "After these statements run, what is the value of `s`?\n", - "\n", - "```\n", - "x = 1\n", - "t = 1,\n", - "s = f'x is an int, {x}. t is a tuple, {t}'\n", - "```\n", - "\n", - "- [ ] This is an error because `{x}` and `{t}` are not valid dictionaries.\n", - "- [ ] This is an error because a tuple can't be used as a value in an f-string.\n", - "- [ ] `'x is an int, {x}. t is a tuple, {t}'`\n", - "- [X] `'x is an int, 1. t is a tuple, (1,)'`\n", - "\n", - "\n", - "### Rationale\n", - "- `{x}` and `{t}` are not dictionaries -- the curly braces indicate that they are expressions that get replaced with string representations of their values. \n", - "- Any valid expression can be used in an f-string.\n", - "- Inside the f-string, the expressions in curly braces are replaced with string representations of their values.\n", - "- Inside the f-string, the expressions in curly braces are replaced with string representations of their values." - ] - }, - { - "cell_type": "markdown", - "id": "39e2a09f", - "metadata": {}, - "source": [ - "### Question\n", - "\n", - "After these statements run, what is the value of `db[key]`?\n", - "\n", - "```\n", - "db = shelve.open('anagram_map', 'n')\n", - "key = 'opst'\n", - "db[key] = []\n", - "db[key].append('stop')\n", - "```\n", - "\n", - "- [ ] `['stop']`\n", - "- [ ] `'stop'`\n", - "- [ ] `[], 'stop'`\n", - "- [X] `[]`\n", - "\n", - "\n", - "### Rationale\n", - "- The `append` method does not work as intended here because it modifies only the list in memory, not the one in the database.\n", - "- The `append` method does not work as intended here because it modifies only the list in memory, not the one in the database.\n", - "- The `append` method does not work as intended here because it modifies only the list in memory, not the one in the database.\n", - "- The `append` method does not work as intended here because it modifies only the list in memory, not the one in the database." - ] - }, - { - "cell_type": "markdown", - "id": "62d2634e", - "metadata": {}, - "source": [ - "# Title\n", - "Chapter 14\n", - "\n", - "## Quiz Type\n", - "Formative" - ] - }, - { - "cell_type": "markdown", - "id": "5256d8f2", - "metadata": {}, - "source": [ - "### Question\n", - "To create an instance of a programmer-defined type, what is the correct order for these steps?\n", - "- [ ] Assign values to attributes, define a class, instantiate an object.\n", - "- [ ] Instantiate an object, define a class, assign values to attributes.\n", - "- [ ] Define a class, assign values to attributes, instantiate an object.\n", - "- [X] Define a class, instantiate an object, assign values to attributes.\n", - "\n", - "\n", - "### Rationale\n", - "- You can't assign attributes before you instantiate an object.\n", - "- You can't instantiate an object before you define its class.\n", - "- You can't assign attributes before you instantiate an object.\n", - "- You have to define a class, instantiate an object, and assign values to attributes, in that order.\n" - ] - }, - { - "cell_type": "markdown", - "id": "c8af2365", - "metadata": {}, - "source": [ - "### Question\n", - "\n", - "These statements are intended to define a `Date` class and create a `Date` object. What is wrong with them?\n", - "\n", - "```\n", - "def Date:\n", - " \"\"\"Represents a day of the year.\"\"\"\n", - " \n", - "date = Date()\n", - "date.year = 2024\n", - "date.month = 'January'\n", - "date.day = 11\n", - "``` \n", - " \n", - "- [ ] You can't have a class named `Date` and a variable named `date`.\n", - "- [ ] All of the attributes have to have the same type.\n", - "- [ ] The syntax is not correct for adding attributes to the object.\n", - "- [X] A class definition has to start with `class`, not `def`. \n", - "\n", - "\n", - "### Rationale\n", - "- It is legal -- and common -- for a class name and a variable to be the same word, but the class name starts with an uppercase letter.\n", - "- The attributes of an object can be any type, and they don't have to be the same.\n", - "- Dot notation is used to set the value of an attribute and to read the value.\n", - "- A class definition has to start with `class`. A function definition starts with `def`." - ] - }, - { - "cell_type": "markdown", - "id": "a3ac6661", - "metadata": {}, - "source": [ - "### Question\n", - "Which of these is a correct description of this function? You can assume that `date` is a `Date` object that has a `day` attribute.\n", - "\n", - "```\n", - "def increment_day(date):\n", - " date.day += 1\n", - " return date\n", - "```\n", - "\n", - "- [ ] It is a pure function that returns `None`.\n", - "- [ ] It is an impure function that returns `None`.\n", - "- [ ] It is a pure function that returns a `Date` object.\n", - "- [X] It is an impure function that returns a `Date` object.\n", - "\n", - "\n", - "### Rationale\n", - "- This function modifies an attribute of the `Date` object it gets as a parameter, so it is an impure function. And it returns a reference to the same object, not `None`.\n", - "- This function returns a reference to a `Date` object, not `None`.\n", - "- This function modifies an attribute of the `Date` object it gets as a parameter, so it is an impure function.\n", - "- This function modifies an attribute of the `Date` object it gets as a parameter, so it is an impure function -- and it returns a reference to the same `Date` object.\n" - ] - }, - { - "cell_type": "markdown", - "id": "41eedc46", - "metadata": {}, - "source": [ - "# Title\n", - "Chapter 15\n", - "\n", - "## Quiz Type\n", - "Formative" - ] - }, - { - "cell_type": "markdown", - "id": "7a3ede50", - "metadata": {}, - "source": [ - "### Question\n", - "Suppose `time` is a `Time` object, and `increment` is an instance method defined in the `Time` class. \n", - "What happens when we invoke `increment` like this?\n", - "\n", - "```\n", - "time.increment(42)\n", - "```\n", - "\n", - "- [ ] `42` is assigned to the first parameter of the method, and `time` is assigned to the second.\n", - "- [ ] This is an error because `increment` requires one arguments and two are provided.\n", - "- [ ] This is an error because `increment` requires two argument and only one is provided.\n", - "- [X] `time` is assigned to the first parameter of the method and `42` is assigned to the second.\n", - "\n", - "\n", - "### Rationale\n", - "- `time` is assigned to the first parameter of the method.\n", - "- This method requires two arguments -- `time` is the first and `42` is the second.\n", - "- Only one argument appears in parentheses, but `time` is passed to `increment` as the first argument.\n", - "- `time` is assigned to the first parameter of the method, which is conventionally called `self`, and `42` is assigned to the second.\n" - ] - }, - { - "cell_type": "markdown", - "id": "aab20e8f", - "metadata": {}, - "source": [ - "### Question\n", - "Suppose `time` is a `Time` object, and `int_to_time` is a static method defined in the `Time` class. \n", - "What happens when we invoke `int_to_time` like this?\n", - "\n", - "```\n", - "start = Time.int_to_time(34800)\n", - "```\n", - "\n", - "- [ ] This is an error because `int_to_time` requires one argument and two are provided.\n", - "- [ ] The `Time` class object is assigned to the first parameter of the method and `34800` is assigned to the second. \n", - "- [ ] `34800` is assigned to the first parameter of the method and the `Time` class object is assigned to the second.\n", - "- [X] `34800` is assigned to the first parameter of `int_to_time`.\n", - "\n", - "\n", - "### Rationale\n", - "- There is only one argument here, `34800`.\n", - "- Because `Time` is a class, it is not passed as an argument.\n", - "- Because `Time` is a class, it is not passed as an argument.\n", - "- `34800` is assigned to the first parameter of `int_to_time`. Because `Time` is a class, it is not passed as an argument.\n" - ] - }, - { - "cell_type": "markdown", - "id": "aa6725d9", - "metadata": {}, - "source": [ - "### Question\n", - "Which of the following statements is NOT correct?\n", - "\n", - "- [ ] When we instantiate an object, its `__init__` method is invoked.\n", - "- [ ] When we use the `+` operator with an object, its `__add__` method is invoked.\n", - "- [ ] When we print an object, its `__str__` method is invoked.\n", - "- [X] When we define a new class, its `__init__` method is invoked.\n", - "\n", - "\n", - "### Rationale\n", - "- This statement is correct. \n", - "- This statement is correct. \n", - "- This statement is correct. \n", - "- Defining a new class does not invoke its `__init__` method. \n" - ] - }, - { - "cell_type": "markdown", - "id": "1d033c6e", - "metadata": {}, - "source": [ - "# Title\n", - "Chapter 16\n", - "\n", - "## Quiz Type\n", - "Formative" - ] - }, - { - "cell_type": "markdown", - "id": "80ba124c", - "metadata": {}, - "source": [ - "### Question\n", - "Which of these is the term for a function or method that works with more than one type of object?\n", - "- [ ] pure\n", - "- [ ] equivalent\n", - "- [ ] static\n", - "- [X] polymorphic\n", - "\n", - "\n", - "### Rationale\n", - "- A pure function or method does not modify the parameters or have other effects.\n", - "- If two values are considered equal, they are equivalent.\n", - "- A static method is associated with a class, rather than an object.\n", - "- A function that works with more than one type is polymorphic.\n" - ] - }, - { - "cell_type": "markdown", - "id": "4a7b31e7", - "metadata": {}, - "source": [ - "### Question\n", - "\n", - "What is wrong with this class definition?\n", - "\n", - "```\n", - "class Point:\n", - " \"\"\"Represents a point in 2-D space.\"\"\"\n", - " \n", - " def __init__(self, x, y):\n", - " x = self.x\n", - " y = self.y\n", - "```\n", - "\n", - "- [ ] `__init__` is not a legal name for a method because it does not start with a letter.\n", - "- [ ] The triple-quoted string has to be inside a method definition.\n", - "- [ ] The first parameter of the method should be called `point`, not `self`.\n", - "- [X] The assignment statements should be the other way around, as in `self.x = x` and `self.y = y`.\n", - "\n", - "\n", - "### Rationale\n", - "- The names of special methods like `__init__` begin and end with a two underscore characters. \n", - "- A triple-quoted string inside a class definition is a docstring that provides information about the class.\n", - "- The first parameter of a method is conventionally named `self`.\n", - "- The assignment statements should be the other way around, as in `self.x = x` and `self.y = y`.\n" - ] - }, - { - "cell_type": "markdown", - "id": "5c215fb2", - "metadata": {}, - "source": [ - "### Question\n", - "Suppose we define a `Line` class so that each `Line` object has two attributes that refer to `Point` objects.\n", - "\n", - "```\n", - "class Line:\n", - " def __init__(self, p1, p2):\n", - " self.p1 = p1\n", - " self.p2 = p2\n", - "```\n", - "\n", - "If we import the `copy` function from the `copy` module and use it to make a copy of a `Line` object, which of these statements is true?\n", - "\n", - "- [ ] The result is a deep copy that copies the `Line` object and the `Point` objects it contains.\n", - "- [ ] The result is a deep copy that copies the `Line` object but not the `Point` objects it contains.\n", - "- [ ] The result is a shallow copy that copies the `Line` object and the `Point` objects it contains.\n", - "- [X] The result is a shallow copy that copies the `Line` object but not the `Point` objects it contains.\n", - "\n", - "\n", - "### Rationale\n", - "- The `copy` function copies the `Line` object but not the `Point` objects it contains.\n", - "- The `copy` function makes a shallow copy.\n", - "- The `copy` function copies the `Line` object but not the `Point` objects it contains.\n", - "- The `copy` function makes a shallow copy, which copies the `Line` object but not the `Point` objects it contains.\n" - ] - }, - { - "cell_type": "markdown", - "id": "6ed0a5c6", - "metadata": {}, - "source": [ - "# Title\n", - "Chapter 17\n", - "\n", - "## Quiz Type\n", - "Formative" - ] - }, - { - "cell_type": "markdown", - "id": "272a2085", - "metadata": {}, - "source": [ - "### Question\n", - "Which of the following is NOT a correct statement about class variables.\n", - "- [ ] They are defined inside a class definition, but not inside a method definition.\n", - "- [ ] They can be accessed using a class object.\n", - "- [ ] They can have any type.\n", - "- [X] They are immutable.\n", - "\n", - "\n", - "### Rationale\n", - "- It is true that class variables are defined inside a class definition, but not inside a method definition\n", - "- It is true that class variables can be accessed using a class object.\n", - "- It is true that class variables can have any type.\n", - "- This statement is false -- that is, class variables are mutable.\n" - ] - }, - { - "cell_type": "markdown", - "id": "96353e23", - "metadata": {}, - "source": [ - "### Question\n", - "Suppose we define a `Card` class like this:\n", - "\n", - "```\n", - "class Card:\n", - " \n", - " def __init__(self, suit, rank):\n", - " self.suit = suit\n", - " self.rank = rank\n", - "```\n", - "\n", - "If this class does not provide an `__eq__` method, what happens if we compare two cards using the `==` operator.\n", - "\n", - "- [ ] That's an error.\n", - "- [ ] By default, only the first attribute is compared.\n", - "- [ ] By default, all of the attributes are compared as if they were in a tuple.\n", - "- [X] By default, the objects are equal only if they are identical.\n", - "\n", - "\n", - "### Rationale\n", - "- It is not an error -- if a class provides no `__eq__`, the `==` operator has a default behavior. \n", - "- If a class provides no `__eq__`, the `==` operator checks whether objects are identical. \n", - "- If a class provides no `__eq__`, the `==` operator checks whether objects are identical. \n", - "- If a class provides no `__eq__`, the `==` operator checks whether objects are identical.\n" - ] - }, - { - "cell_type": "markdown", - "id": "8442a26a", - "metadata": {}, - "source": [ - "### Question\n", - "Which of the following statements is true when one class inherits from another, like this:\n", - "\n", - "```\n", - "class Hand(Deck):\n", - " \"\"\"Represents a hand of playing cards.\"\"\"\n", - "```\n", - "\n", - "- [ ] `Hand` is a parent class and `Deck` is a child class.\n", - "- [ ] Every function that works with `Hand` should also work with `Deck`.\n", - "- [ ] Every `Hand` object has the same attributes as every `Deck` object, no more or less.\n", - "- [X] Every method defined in the `Deck` class can also be invoked on a `Hand` object.\n", - "\n", - "\n", - "### Rationale\n", - "- In this example, `Hand` inherits from `Deck`, so `Hand` is the child class and `Deck` is the parent.\n", - "- If `Hand` inherits from `Deck`, it could have additional methods that don't work with `Deck`.\n", - "- If `Hand` inherits from `Deck`, a `Hand` object should have all of the attributes of a `Deck` object, but it can have more.\n", - "- If `Hand` inherits from `Deck`, every method defined in the `Deck` class should work with a `Hand` object.\n" - ] - }, - { - "cell_type": "markdown", - "id": "2c93496a", - "metadata": {}, - "source": [ - "### Question\n", - "What do we call it when one method invokes another to do most or all of the work?\n", - "- [ ] inheritance\n", - "- [ ] generalization\n", - "- [ ] specialization\n", - "- [X] delegation\n", - "\n", - "\n", - "### Rationale\n", - "- Inheritance is the ability to define a new class that is a modified version of a previously defined class.\n", - "- Generalization is when we add a parameter to a function to make its capabilities more general.\n", - "- Specialization is a way of using inheritance to create a new class that is a specialized version of an existing class.\n", - "- Delegation is when one method passes responsibility to another method to do most or all of the work." - ] - }, - { - "cell_type": "markdown", - "id": "37cb87e7", - "metadata": {}, - "source": [ - "# Title\n", - "Chapter 18\n", - "\n", - "## Quiz Type\n", - "Formative" - ] - }, - { - "cell_type": "markdown", - "id": "bdafbab3", - "metadata": {}, - "source": [ - "### Question\n", - "What is the result of this operation?\n", - "\n", - "```\n", - "set('abba') <= set('abc')\n", - "```\n", - "\n", - "- [ ] `False` because `'abba'` is longer than `'abc'`.\n", - "- [ ] A runtime error because `'abba'` contains duplicate elements, so it is not a `set`.\n", - "- [ ] A runtime error because a string is immutable, so it cannot be transformed into a `set`. \n", - "- [X] `True` because the elements of `'abba'` are a subset of the elements of `'abc'`.\n", - "\n", - "\n", - "### Rationale\n", - "- With `set` objects, the `<=` operator checks whether one set is a subset of another -- it does not compare the length of the strings.\n", - "- When the set is create, the duplicate elements of the string are removed.\n", - "- The `set` function creates a new set -- it does not modify the string.\n", - "- With `set` objects, the `<=` operator checks whether one set is a subset of another -- including the possibility that they are equal.\n" - ] - }, - { - "cell_type": "markdown", - "id": "2fef69b0", - "metadata": {}, - "source": [ - "### Question\n", - "What is the value of counter after these statements run?\n", - "\n", - "```\n", - "from collections import Counter\n", - "\n", - "t = (1, 1, 1, 2, 2, 3)\n", - "counter = Counter(t)\n", - "```\n", - "\n", - "- [ ] `(1, 1, 1, 2, 2, 3)`\n", - "- [ ] `{1: 3, 2: 2, 3: 1}`\n", - "- [ ] `Counter(1, 1, 1, 2, 2, 3)`\n", - "- [X] `Counter({1: 3, 2: 2, 3: 1})`\n", - "\n", - "### Rationale\n", - "- The result is a `Counter` object, not a tuple.\n", - "- The result is a `Counter` object, not a dictionary.\n", - "- The result is a `Counter` object that contains items like a dictionary, not a tuple.\n", - "- The result is a `Counter` object that contains the elements of the list and the number of times each one appears." - ] - }, - { - "cell_type": "markdown", - "id": "6e5d8032", - "metadata": {}, - "source": [ - "### Question\n", - "Which comment about this class definition is correct?\n", - "\n", - "```\n", - "class Game:\n", - " \"\"\"Represents a game with a dictionary that maps from teams to scores.\"\"\"\n", - " \n", - " def __init__(self, scores={}):\n", - " self.scores = score\n", - "```\n", - "\n", - "- [ ] All `Game` objects refer to different dictionaries.\n", - "- [ ] All `Game` objects refer to the same dictionary.\n", - "- [ ] All `Game` objects created with the default value of `scores` refer to an empty dictionary.\n", - "- [X] All `Game` objects created with the default value of `scores` refer to the same dictionary. \n", - "\n", - "\n", - "### Rationale\n", - "- The default value of `scores` is a dictionary that is created when the function is defined. All `Game` objects created with the default value get a reference to it. \n", - "- All `Game` objects created with the default value get a reference to it, but a `Game` object that overrides `scores` will refer to a different dictionary.\n", - "- The initial value of `scores` is an empty dictionary, but items might be added to it later. \n", - "- All `Game` objects created with the default value get a reference to the same dictionary -- so if any of them modify it, they all see the change." - ] - }, - { - "cell_type": "markdown", - "id": "40504671", - "metadata": {}, - "source": [ - "### Question\n", - "\n", - "What is the value of this expression?\n", - "\n", - "```\n", - "all(number < 10 for number in [2, 4, 6, 8])\n", - "```\n", - "\n", - "- [ ] `[2, 4, 6, 8]`, which contains all numbers in the list less than `10`. \n", - "- [ ] An error because the list comprehension has to be in square brackets.\n", - "- [ ] `False` because there are not any numbers in the list that are not less than `10`.\n", - "- [X] `True` because all numbers in the list are less than `10`. \n", - "\n", - "\n", - "### Rationale\n", - "- The `all` function returns `True` if all elements of a sequence are `True`, and `False` otherwise.\n", - "- The expression in parentheses is correct -- it is a generator expression, not a list comprehension.\n", - "- The values produced by the generator expression are all `True`.\n", - "- The values produced by the generator expression are all `True`, so the result from the `all` function is `True`." - ] - }, - { - "cell_type": "markdown", - "id": "65f160e0", - "metadata": {}, - "source": [ - "### Question\n", - "What is the value of `d[key]` after these statements run, or is there an error?\n", - "\n", - "```\n", - "from collections import defaultdict\n", - "\n", - "d = defaultdict(list)\n", - "key = ('into', 'the')\n", - "d[key].append('woods')\n", - "```\n", - "\n", - "- [ ] An error because a tuple cannot be used as a key in a `defaultdict`.\n", - "- [ ] An error because we have to add the key to the `defaultdict` before we can look it up. \n", - "- [ ] `'woods'`\n", - "- [X] `['woods']`\n", - "\n", - "\n", - "### Rationale\n", - "- A tuple can appear as a key in a `defaultdict`, same as in a dictionary.\n", - "- When you look up a key that is not already in this `defaultdict`, the key is added with a new empty list as the value.\n", - "- When the key is added to the `defaultdict`, the corresponding value is an empty list. Then the `append` method add an element to the list.\n", - "- When the key is added to the `defaultdict`, the corresponding value is an empty list. After the `append` method is invoked, the list contains a single element, the string `'woods'`." - ] - }, - { - "cell_type": "markdown", - "id": "f3c72a61", - "metadata": {}, - "source": [ - "### Question\n", - "\n", - "What value is printed when this function runs?\n", - "\n", - "```\n", - "def pack_and_print(**kwargs):\n", - " print(kwargs)\n", - " \n", - "pack_and_print(a=1, b=2)\n", - "```\n", - "\n", - "- [ ] This is an error because the exponentiation operator `**` can't appear in a list of parameters.\n", - "- [ ] `[(a, 1), (b, 2)]`\n", - "- [ ] `{'a', 'b'}, [1, 2]`\n", - "- [X] `{'a': 1, 'b': 2}`\n", - "\n", - "### Rationale\n", - "- In a parameter list, `**` is the pack operator, not the exponentiation operator.\n", - "- The pack operator, `**`, packs the keyword arguments into a dictionary, not a list of tuples.\n", - "- The pack operator, `**`, packs the keyword arguments into a dictionary, not a set and a list.\n", - "- The pack operator, `**`, packs the keyword arguments into a dictionary that maps from keyword names to values.\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "e26c8a39", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "id": "5abb187f", - "metadata": {}, - "source": [ - "# Title\n", - "Think Python\n", - "\n", - "## Quiz Type\n", - "Summative" - ] - }, - { - "cell_type": "markdown", - "id": "2f7b7148", - "metadata": {}, - "source": [ - "### Question\n", - "What is the output of this program?\n", - "\n", - "```\n", - "s = '3'\n", - "str(s) * int(s)\n", - "```\n", - "\n", - "- [ ] The integer `9`\n", - "- [ ] The string `'9'`\n", - "- [ ] The integer `333`\n", - "- [X] The string `'333'`\n", - "\n", - "\n", - "### Rationale\n", - "- `str(s)` is the string `'3'`, and `int(s)` is the integer `3`. See Chapter 1, \"chaptertitle\".\n", - "- Multiplying a string by the integer `3` repeats the string three times. See Chapter 1, \"chaptertitle\".\n", - "- When we multiply a string by an integer, the result is a string. See Chapter 1, \"chaptertitle\".\n", - "- Multiplying a string by the integer `3` repeats the string three times. See Chapter 1, \"chaptertitle\".\n" - ] - }, - { - "cell_type": "markdown", - "id": "5f08ffe4", - "metadata": {}, - "source": [ - "### Question\n", - "For this function to work without causing an error, what are the preconditions for `n`?\n", - "\n", - "```\n", - "def countdown(n):\n", - " if n == 0:\n", - " print('Blastoff!')\n", - " else:\n", - " print(n)\n", - " countdown(n-1)\n", - "```\n", - "\n", - "\n", - "- [ ] `n` must be a `float`.\n", - "- [ ] `n` must be negative.\n", - "- [ ] `n` must be strictly positive, not `0`.\n", - "- [X] `n` must be a positive integer or `0`.\n", - "\n", - "\n", - "### Rationale\n", - "- `n` can be a `float` with no fraction part, but it can also be an `int`. See Chapter 5, \"chaptertitle\".\n", - "- If `n` is negative, it recurses until the stack reaches its limit and causes a `RecursionError`. See Chapter 5, \"chaptertitle\".\n", - "- If `n` is `0`, the function prints `'Blastoff!'` and returns without making a recursive call. See Chapter 5, \"chaptertitle\".\n", - "- `n` must be non-negative -- that is, positive or `0`. See Chapter 5, \"chaptertitle\".\n" - ] - }, - { - "cell_type": "markdown", - "id": "73d19844", - "metadata": {}, - "source": [ - "### Question\n", - "What is wrong with the following program?\n", - "\n", - "```\n", - "def compare(x, y):\n", - " if x < y:\n", - " return -1\n", - " else:\n", - " return 1 \n", - " return 0\n", - "```\n", - "\n", - "- [ ] It has a syntax error because the last line is not indented.\n", - "- [ ] It has a runtime error because the return value cannot be negative. \n", - "- [ ] It has a syntax error because it has more than one return statement.\n", - "- [X] It has a logic error because the last line is dead code.\n", - "\n", - "\n", - "### Rationale\n", - "- The syntax of the program is correct, but there is an error. See Chapter 6, \"chaptertitle\".\n", - "- Any value is a legal return value -- but there is a logic error because the last line can never run. See Chapter 6, \"chaptertitle\".\n", - "- The syntax of the program is correct, but there is a logic error because the last line can never run. See Chapter 6, \"chaptertitle\".\n", - "- There is a `return` statement in both branches of the `if` statement, so the last line can never run -- it is dead code. See Chapter 6, \"chaptertitle\".\n" - ] - }, - { - "cell_type": "markdown", - "id": "c6e6e8bf", - "metadata": {}, - "source": [ - "### Question\n", - "What is the output of this program, or is there an error?\n", - "```\n", - "def rectangle_area(length, width):\n", - " return length * width\n", - " \n", - "area = rectangle_area(3, 5)\n", - "print(length)\n", - "```\n", - "- [ ] `3` because the first argument gets assigned to `length`.\n", - "- [ ] `5` because the second argument gets assigned to `length`.\n", - "- [ ] Syntax error because there are two variables in the return statement.\n", - "- [X] Runtime error because the parameter `length` does not exist outside the function.\n", - "\n", - "\n", - "### Rationale\n", - "- `3` does get assigned to `length`, but the parameter only exists inside the function. See Chapter 6, \"chaptertitle\".\n", - "- The first argument gets assigned to `length`, but the parameter only exists inside the function. See Chapter 6, \"chaptertitle\".\n", - "- The variables are part of an arithmetic expression, which can be used in a return statement. See Chapter 6, \"chaptertitle\".\n", - "- Parameters and local variables only exist inside the functions where they are defined. See Chapter 6, \"chaptertitle\".\n" - ] - }, - { - "cell_type": "markdown", - "id": "72c71ebd", - "metadata": {}, - "source": [ - "### Question\n", - "What is wrong with the following program?\n", - "\n", - "```\n", - "s = int('123')\n", - "for digit in s:\n", - " print(digit)\n", - "```\n", - "\n", - "\n", - "- [ ] There is nothing wrong -- the program is correct.\n", - "- [ ] `digit` is not a legal name for a loop variable.\n", - "- [ ] `int` is a type, not a function.\n", - "- [X] `s` is not a sequence, so we can't loop through its elements.\n", - "\n", - "\n", - "### Rationale\n", - "- The program generates a `TypeError`. See Chapter 7, \"chaptertitle\".\n", - "- Any legal variable name can be used as a loop variable. See Chapter 7, \"chaptertitle\".\n", - "- `int` is a type, but it can be used as a function to convert other types to integers. See Chapter 7, \"chaptertitle\".\n", - "- `s` is an integer, which is not a sequence, so it can't be looped over. See Chapter 7, \"chaptertitle\".\n" - ] - }, - { - "cell_type": "markdown", - "id": "06298b2e", - "metadata": {}, - "source": [ - "### Question\n", - "Which of these is a correct way to convert a string to lowercase?\n", - "\n", - "- [ ] `lower(str)`\n", - "- [ ] `str = lower(str)`\n", - "- [ ] `str.lower()`\n", - "- [X] `str = str.lower()`\n", - "\n", - "\n", - "### Rationale\n", - "- `lower` is a method, so it has to be invoked on a string, as in `str.lower()`; and it creates a new string, which should be assigned to a variable. See Chapter 7, \"chaptertitle\".\n", - "- `lower` is a method, so it has to be invoked on a string, as in `str.lower()`. See Chapter 7, \"chaptertitle\".\n", - "- `str.lower()` creates a new string, but if the string is not assigned to a variable, there is no way to access it. See Chapter 7, \"chaptertitle\".\n", - "- `str.lower()` creates a new string -- if we assign it back to `str`, the new string replaces the old one. See Chapter 7, \"chaptertitle\".\n" - ] - }, - { - "cell_type": "markdown", - "id": "9a2cc192", - "metadata": {}, - "source": [ - "### Question\n", - "The following function takes two strings as parameters and returns a string.\n", - "Which of the following docstrings is a correct description of what this function does?\n", - "\n", - "```\n", - "def compute(word1, word2):\n", - " t = []\n", - " for letter in word1:\n", - " if letter in word2:\n", - " t.append(letter)\n", - " return ''.join(t)\n", - "```\n", - "\n", - "- [ ] Returns the letters that appear in either `word1` or `word2` or both.\n", - "- [ ] Returns the letters that appear in either `word1` or `word2` but not both.\n", - "- [ ] Returns the letters that appear in `word1` but not `word2`.\n", - "- [X] Returns the letters that appear in both `word1` and `word2`.\n", - "\n", - "\n", - "### Rationale\n", - "- In order to get to the `append` method, `letter` has to appear in both words. See Chapter 7, \"chaptertitle\".\n", - "- In order to get to the `append` method, `letter` has to appear in both words. See Chapter 7, \"chaptertitle\".\n", - "- In order to get to the `append` method, `letter` has to appear in both words. See Chapter 7, \"chaptertitle\".\n", - "- This function returns a string that contains the letters that appear in both `word1` and `word2`. See Chapter 7, \"chaptertitle\"." - ] - }, - { - "cell_type": "markdown", - "id": "8b73c088", - "metadata": {}, - "source": [ - "### Question\n", - "This function is intended to convert the first letter of a word to lowercase and the rest of the letters to uppercase.\n", - "\n", - "```\n", - "def lower_upper(word):\n", - " first = word[0]\n", - " rest = word[1:]\n", - " word = first.lower() + rest.upper()\n", - "```\n", - "\n", - "What is the value of `word` if we call this function like this -- or is there an error?\n", - "\n", - "```\n", - "word = lower_upper('Python')\n", - "```\n", - "\n", - "- [ ] The result is a syntax error because a `:` character cannot appear inside the bracket operator.\n", - "- [ ] The result is a runtime error because `0` is not a valid index.\n", - "- [ ] The program is correct -- the value of `word` is `'pYTHON'`.\n", - "- [X] The program contains a logic error -- the value of `word` is `None`.\n", - "\n", - "\n", - "### Rationale\n", - "- A colon inside a bracket operator indicates a slice -- in this case, it selects all characters from the second to the end. See Chapter 8, \"chaptertitle\".\n", - "- `0` is a valid index -- it select the first character in the string. See Chapter 8, \"chaptertitle\".\n", - "- The function has no return statement, so it returns `None`. Assigning a new value to the parameter `word` has no effect outside the function. See Chapter 9, \"chaptertitle\".\n", - "- The function has no return statement, so it returns `None`. Assigning a new value to the parameter `word` has no effect outside the function. See Chapter 9, \"chaptertitle\".\n" - ] - }, - { - "cell_type": "markdown", - "id": "120f9574", - "metadata": {}, - "source": [ - "### Question\n", - "If we use the `search` function in the `re` module, which of the following strings matches this pattern: `r'^a(bc|de)f$'`?\n", - "- [ ] `'abcdef'`\n", - "- [ ] `'zadef'`\n", - "- [ ] `'abc'`\n", - "- [X] `'adef'`\n", - "\n", - "\n", - "### Rationale\n", - "- The pattern `'(bc|de)'` requires either `'bc'` or `'de'` but not both. See Chapter 8, \"chaptertitle\".\n", - "- The pattern `^a` requires the letter `a` at the beginning of the string. See Chapter 8, \"chaptertitle\".\n", - "- The pattern `f$` requires the letter `f` at the end of the string. See Chapter 8, \"chaptertitle\".\n", - "- This string has `'a'` at the beginning `'f'` at the end, and `'de'` in the middle. See Chapter 8, \"chaptertitle\".\n" - ] - }, - { - "cell_type": "markdown", - "id": "6675ebc9", - "metadata": {}, - "source": [ - "### Question\n", - "What is the result of this program?\n", - "\n", - "```\n", - "t = [1, 2, 3, 4]\n", - "t[1:-1]\n", - "```\n", - "\n", - "- [ ] An `IndexError` because `-1` is not a legal index.\n", - "- [ ] `[1, 2, 3]`\n", - "- [ ] `[2, 3, 4]`\n", - "- [X] `[2, 3]`\n", - "\n", - "\n", - "### Rationale\n", - "- Negative indices count backward from the end of the sequence, so the slice index `1:-1` selects elements from the second to the second-to-last, including both. See Chapter 9, \"chaptertitle\".\n", - "- The slice index `1:-1` excludes the first element of the list. See Chapter 9, \"chaptertitle\".\n", - "- The slice index `1:-1` excludes the last element of the list. See Chapter 9, \"chaptertitle\".\n", - "- The slice index `1:-1` selects elements from the second to the second-to-last, including both. See Chapter 9, \"chaptertitle\".\n" - ] - }, - { - "cell_type": "markdown", - "id": "ab0ec97f", - "metadata": {}, - "source": [ - "### Question\n", - "After these statements run, what are the values of `a` and `b`, or is there an error?\n", - "\n", - "```\n", - "a, b = 1, 2\n", - "a, b = b, a\n", - "```\n", - "\n", - "- [ ] There is a runtime error because the values on the right are tuples.\n", - "- [ ] There is a syntax error because the assignment statement has more than one variable.\n", - "- [ ] `a` is `1` and `b` is `2`.\n", - "- [X] `a` is `2` and `b` is `1`.\n", - "\n", - "\n", - "### Rationale\n", - "- The values on the right are tuples, but these are legal assignment statements. See Chapter 11, \"chaptertitle\".\n", - "- An assignment statement can have a tuple of variables on the left. See Chapter 11, \"chaptertitle\".\n", - "- After the first assignment `a` is `1` and `b` is `2`, but the second assignment swaps the values. See Chapter 11, \"chaptertitle\".\n", - "- After the first assignment `a` is `1` and `b` is `2`, and then the second assignment swaps the values. See Chapter 11, \"chaptertitle\".\n" - ] - }, - { - "cell_type": "markdown", - "id": "53f30a6a", - "metadata": {}, - "source": [ - "### Question\n", - "Why can't a list appear as a key in a dictionary?\n", - "\n", - "- [ ] The elements in a list might not be totally ordered.\n", - "- [ ] The elements in a list can be different types.\n", - "- [ ] Lists can contain any number of elements.\n", - "- [X] Lists are mutable, which makes them unhashable.\n", - "\n", - "\n", - "### Rationale\n", - "- If the elements of a list are not totally ordered, they are not sortable, but that's not the reason a list can't appear as a key in a dictionary. See Chapter 10, \"chaptertitle\" and Chapter 11, \"chaptertitle\".\n", - "- The elements in a list can be different types, but that's not the reason a list can't appear as a key in a dictionary. See Chapter 10, \"chaptertitle\" and Chapter 11, \"chaptertitle\".\n", - "- Lists can contain any number of elements, but that's not the reason a list can't appear as a key in a dictionary. See Chapter 10, \"chaptertitle\" and Chapter 11, \"chaptertitle\".\n", - "- If an object is mutable, it isn't hashable, which means it can't be used as a key in a dictionary. See Chapter 10, \"chaptertitle\" and Chapter 11, \"chaptertitle\".\n" - ] - }, - { - "cell_type": "markdown", - "id": "411f2b24", - "metadata": {}, - "source": [ - "### Question\n", - "What is the primary difference between a list and a tuple?\n", - "- [ ] A list can contain any type; a tuple can only contain hashable types.\n", - "- [ ] A tuple can contain any type; a list can only contain hashable types.\n", - "- [ ] A tuple is mutable; a list is immutable.\n", - "- [X] A list is mutable; a tuple is immutable.\n", - "\n", - "\n", - "### Rationale\n", - "- Both lists and tuples can contain any type. Keys in dictionaries must be hashable. See Chapter 11, \"chaptertitle\".\n", - "- Both lists and tuples can contain any type. Keys in dictionaries must be hashable. See Chapter 11, \"chaptertitle\".\n", - "- It's the other way around: a list is mutable; a tuple is immutable. See Chapter 11, \"chaptertitle\".\n", - "- A tuple is immutable. See Chapter 11, \"chaptertitle\".\n" - ] - }, - { - "cell_type": "markdown", - "id": "4734e696", - "metadata": {}, - "source": [ - "### Question\n", - "Which of these is a correct way to reverse the elements of a list in place -- that is, by modifying an existing list without creating a new list?\n", - "\n", - "- [ ] `t = reversed(t)`\n", - "- [ ] `reversed(t)`\n", - "- [ ] `t = t.reverse()`\n", - "- [X] `t.reverse()`\n", - "\n", - "\n", - "### Rationale\n", - "- This statement works, but it creates a new list and does not modify `t`. See Chapter 11, \"chaptertitle\".\n", - "- `reverse(t)` creates a new list, but if the list is not assigned to a variable, there is no way to access it. See Chapter 11, \"chaptertitle\".\n", - "- The return value from `t.reverse()` is `None`, so this statement sets `t` to `None`. See Chapter 11, \"chaptertitle\".\n", - "- `t.reverse()` reverses the elements of `t` without creating a new list. See Chapter 11, \"chaptertitle\".\n" - ] - }, - { - "cell_type": "markdown", - "id": "f4211c9c", - "metadata": {}, - "source": [ - "### Question\n", - "What is the result of this program?\n", - "\n", - "```\n", - "s = ['bbb', 'aa', 'c']\n", - "sorted(s, key=len, reverse=True)\n", - "```\n", - "\n", - "- [ ] `['aa', 'bbb', 'c']`\n", - "- [ ] `['c', 'aa', 'bbb']`\n", - "- [ ] `['c', 'bbb', 'aa']`\n", - "- [X] `['bbb', 'aa', 'c']`\n", - "\n", - "\n", - "### Rationale\n", - "- `key=len` sorts by length, rather than alphabetical order, and `reverse=True` sorts in descending order. See Chapter 12, \"chaptertitle\".\n", - "- `reverse=True` sorts in descending order. See Chapter 12, \"chaptertitle\".\n", - "- `key=len` sorts by length, rather than alphabetical order. See Chapter 12, \"chaptertitle\".\n", - "- `key=len` sorts by length, rather than alphabetical order, and `reverse=True` sorts in descending order, so the result is `['bbb', 'aa', 'c']`. See Chapter 12, \"chaptertitle\".\n" - ] - }, - { - "cell_type": "markdown", - "id": "8a2962d5", - "metadata": {}, - "source": [ - "### Question\n", - "What does the following function do?\n", - "```\n", - "def compute(d1, d2):\n", - " res = {}\n", - " for key in d1:\n", - " res[key] = d1[key]\n", - " for key in d2:\n", - " res[key] = d2[key]\n", - " return res\n", - "```\n", - "\n", - "- [ ] Adds the keys from `d1` to `d2`.\n", - "- [ ] Adds the keys from `d2` to `d1`.\n", - "- [ ] Makes a new dictionary with all keys that are in both `d1` and `d2`.\n", - "- [X] Makes a new dictionary with all keys that are in either `d1` or `d2`.\n", - "\n", - "\n", - "### Rationale\n", - "- This function makes and returns a new dictionary. See Chapter 12, \"chaptertitle\".\n", - "- This function makes and returns a new dictionary. See Chapter 12, \"chaptertitle\".\n", - "- The new dictionary has all keys from either dictionary. See Chapter 12, \"chaptertitle\".\n", - "- The new dictionary has all keys from either dictionary. If the same key appears in both, it gets the value from `d2`. See Chapter 12, \"chaptertitle\".\n" - ] - }, - { - "cell_type": "markdown", - "id": "e7023368", - "metadata": {}, - "source": [ - "### Question\n", - "Suppose we run the following program to get the current working directory:\n", - "\n", - "```\n", - "import os\n", - "\n", - "os.getcwd()\n", - "```\n", - "\n", - "And the result is `/home/dinsdale/photos`.\n", - "Now suppose we run the following program to check for the existence of a file:\n", - "\n", - "```\n", - "os.path.exists('apr-2023/photo1.jpg')\n", - "```\n", - "\n", - "What is the absolute path of the file that gets checked?\n", - "\n", - "- [ ] `'photo1.jpg'`\n", - "- [ ] `'apr-2023/photo1.jpg'`\n", - "- [ ] `'/home/dinsdale/photo1.jpg'`\n", - "- [X] `'/home/dinsdale/photos/apr-2023/photo1.jpg'`\n", - "\n", - "\n", - "### Rationale\n", - "- Because `'apr-2023/photo1.jpg'` is a relative path, it gets joined to the current working directory. See Chapter 13, \"chaptertitle\".\n", - "- Because `'apr-2023/photo1.jpg'` is a relative path, it gets joined to the current working directory. See Chapter 13, \"chaptertitle\".\n", - "- Because `'apr-2023/photo1.jpg'` is a relative path, it gets joined to the current working directory. See Chapter 13, \"chaptertitle\".\n", - "- Because `'apr-2023/photo1.jpg'` is a relative path, it gets joined to the current working directory. See Chapter 13, \"chaptertitle\".\n" - ] - }, - { - "cell_type": "markdown", - "id": "46db3dd4", - "metadata": {}, - "source": [ - "### Question\n", - "What is the result of this program?\n", - "```\n", - "class Day:\n", - " def __init__(self, day):\n", - " self.day = day\n", - "\n", - " def __str__(date):\n", - " return f'Today is {date.day}'\n", - " \n", - "print(Day('Wednesday'))\n", - "```\n", - "- [ ] `f'Today is Wednesday'`\n", - "- [ ] `'Today is {Wednesday}'`\n", - "- [ ] `f'Today is {date.day}'`\n", - "- [X] `'Today is Wednesday'`\n", - "\n", - "\n", - "### Rationale\n", - "- The `f` before the string indicates that it is a format string. See Chapter 15, \"chaptertitle\".\n", - "- The curly braces don't appear in the return value. See Chapter 15, \"chaptertitle\".\n", - "- The `f` before the string indicates that it is a format string, and the expression in curly braces gets replaced by its value. See Chapter 15, \"chaptertitle\".\n", - "- In a format string, the expression in curly braces gets replaced by its value. See Chapter 15, \"chaptertitle\"." - ] - }, - { - "cell_type": "markdown", - "id": "73844cfb", - "metadata": {}, - "source": [ - "### Question\n", - "Assuming that the `Animal` class exists, what is the output of this program?\n", - "\n", - "```\n", - "class Cat(Animal):\n", - " \"\"\"Represents a cat.\"\"\"\n", - " \n", - "cat = Cat()\n", - "isinstance(cat, Animal)\n", - "```\n", - "\n", - "- [ ] `False` because an instance of a parent class is not an instance of the child class.\n", - "- [ ] `False` because an instance of a child class is not an instance of the parent class.\n", - "- [ ] `True` because every instance of a parent class is also an instance of the child class.\n", - "- [X] `True` because every instance of a child class is also an instance of the parent class.\n", - "\n", - "\n", - "### Rationale\n", - "- It's true that an instance of a parent class is not an instance of the child class, but that's not what's being checked here. See Chapter 17, \"chaptertitle\".\n", - "- Every instance of a child class is also an instance of the parent class. See Chapter 17, \"chaptertitle\".\n", - "- An instance of a parent class is not an instance of the child class. See Chapter 17, \"chaptertitle\".\n", - "- In this example, `Cat` is a child class of `Animal`, so every `Cat` object is also an instance of `Animal`. See Chapter 17, \"chaptertitle\".\n" - ] - }, - { - "cell_type": "markdown", - "id": "5f34fbc5", - "metadata": {}, - "source": [ - "### Question\n", - "What is the result of this program?\n", - "\n", - "```\n", - "from collections import namedtuple\n", - "\n", - "Point = namedtuple('Point', ['x', 'y'])\n", - "p = Point(3, 4)\n", - "p[1]\n", - "```\n", - "\n", - "- [ ] `AttributeError` because the attributes of `p` are `x` and `y`.\n", - "- [ ] `IndexError` because the attributes of `p` are `x` and `y`.\n", - "- [ ] `3` because `p` is a `namedtuple` and the element with index `1` is `3`.\n", - "- [X] `4` because `p` is a `namedtuple` and the element with index `1` is `4`.\n", - "\n", - "\n", - "### Rationale\n", - "- The attributes of `p` are `x` and `y`, but because `p` is a `namedtuple`, we can use the bracket operator to access the elements by index. See Chapter 18, \"chaptertitle\".\n", - "- The attributes of `p` are `x` and `y`, but because `p` is a `namedtuple`, we can use the bracket operator to access the elements by index. See Chapter 18, \"chaptertitle\".\n", - "- In a named tuple -- as in a tuple -- the index of the first element is `0`. See Chapter 18, \"chaptertitle\".\n", - "- In a named tuple -- as in a tuple -- the index of the second element is `1`. See Chapter 18, \"chaptertitle\".\n" - ] - }, - { - "cell_type": "markdown", - "id": "d217780d", - "metadata": {}, - "source": [ - "### Question\n", - "We can call the built-in function `round` like this:\n", - "\n", - "```\n", - "import math\n", - "\n", - "round(math.pi, ndigits=3)\n", - "```\n", - "\n", - "The result is the value of `math.pi` round off to three decimal places.\n", - "Now suppose we have the positional argument in a tuple and the keyword argument in a dictionary, like this:\n", - "\n", - "```\n", - "args = (math.pi,)\n", - "kwargs = {\"ndigits\": 3}\n", - "```\n", - "\n", - "Which of these is a correct way to call `round` and get the same result?\n", - "\n", - "- [ ] `round(args, kwargs)`\n", - "- [ ] `round(*args, *kwargs)`\n", - "- [ ] `round(**args, **kwargs)`\n", - "- [X] `round(*args, **kwargs)`\n", - "\n", - "\n", - "### Rationale\n", - "- In order to pass the elements of `args` as positional arguments, we have to unpack them with the `*` operator. Similarly, to pass the items in `kwargs` as keyword arguments, we have to unpack them with the `**` operator. See Chapter 18, \"chaptertitle\".\n", - "- To pass the items in `kwargs` as keyword arguments, we have to unpack them with the `**` operator. See Chapter 18, \"chaptertitle\".\n", - "- To pass the elements of `args` as positional arguments, we have to unpack them with the `*` operator. See Chapter 18, \"chaptertitle\".\n", - "- The `*` operator unpacks the elements of `args` and the `**` operator unpacks the items in `kwargs`. See Chapter 18, \"chaptertitle\".\n" - ] - }, - { - "cell_type": "markdown", - "id": "4c935c54", - "metadata": {}, - "source": [ - "### Question\n", - "- [ ] \n", - "- [ ] \n", - "- [ ] \n", - "- [X] \n", - "\n", - "\n", - "### Rationale\n", - "- \n", - "- \n", - "- \n", - "- \n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.11" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/soln/quizzes_qti.zip b/soln/quizzes_qti.zip deleted file mode 100644 index 41c2197..0000000 Binary files a/soln/quizzes_qti.zip and /dev/null differ diff --git a/soln/structshape.py b/soln/structshape.py deleted file mode 100644 index f40b696..0000000 --- a/soln/structshape.py +++ /dev/null @@ -1,130 +0,0 @@ -""" -This module provides one function, structshape(), which takes -an object of any type and returns a string that summarizes the -"shape" of the data structure; that is, the type, size and -composition. - -Copyright 2012 Allen B. Downey -Distributed under the GNU General Public License at gnu.org/licenses/gpl.html. - -""" - -def structshape(ds): - """Returns a string that describes the shape of a data structure. - - ds: any Python object - - Returns: string - """ - typename = type(ds).__name__ - - # handle sequences - sequence = (list, tuple, set, type(iter(''))) - if isinstance(ds, sequence): - t = [] - for i, x in enumerate(ds): - t.append(structshape(x)) - rep = '%s of %s' % (typename, listrep(t)) - return rep - - # handle dictionaries - elif isinstance(ds, dict): - keys = set() - vals = set() - for k, v in ds.items(): - keys.add(structshape(k)) - vals.add(structshape(v)) - rep = '%s of %d %s->%s' % (typename, len(ds), - setrep(keys), setrep(vals)) - return rep - - # handle other types - else: - if hasattr(ds, '__class__'): - return ds.__class__.__name__ - else: - return typename - - -def listrep(t): - """Returns a string representation of a list of type strings. - - t: list of strings - - Returns: string - """ - current = t[0] - count = 0 - res = [] - for x in t: - if x == current: - count += 1 - else: - append(res, current, count) - current = x - count = 1 - append(res, current, count) - return setrep(res) - - -def setrep(s): - """Returns a string representation of a set of type strings. - - s: set of strings - - Returns: string - """ - rep = ', '.join(s) - if len(s) == 1: - return rep - else: - return '(' + rep + ')' - return - - -def append(res, typestr, count): - """Adds a new element to a list of type strings. - - Modifies res. - - res: list of type strings - typestr: the new type string - count: how many of the new type there are - - Returns: None - """ - if count == 1: - rep = typestr - else: - rep = '%d %s' % (count, typestr) - res.append(rep) - - -if __name__ == '__main__': - - t = [1,2,3] - print(structshape(t)) - - t2 = [[1,2], [3,4], [5,6]] - print(structshape(t2)) - - t3 = [1, 2, 3, 4.0, '5', '6', [7], [8], 9] - print(structshape(t3)) - - class Point: - """trivial object type""" - - t4 = [Point(), Point()] - print(structshape(t4)) - - s = set('abc') - print(structshape(s)) - - lt = zip(t, s) - print(structshape(lt)) - - d = dict(lt) - print(structshape(d)) - - it = iter('abc') - print(structshape(it)) diff --git a/soln/thinkpython.py b/soln/thinkpython.py deleted file mode 100644 index 3f08885..0000000 --- a/soln/thinkpython.py +++ /dev/null @@ -1,93 +0,0 @@ -import contextlib -import io -import re - - -def extract_function_name(text): - """Find a function definition and return its name. - - text: String - - returns: String or None - """ - pattern = r"def\s+(\w+)\s*\(" - match = re.search(pattern, text) - if match: - func_name = match.group(1) - return func_name - else: - return None - - -# the functions that define cell magic commands are only defined -# if we're running in Jupyter. - -try: - from IPython.core.magic import register_cell_magic - from IPython.core.magic_arguments import argument, magic_arguments, parse_argstring - - @register_cell_magic - def add_method_to(args, cell): - - # get the name of the function defined in this cell - func_name = extract_function_name(cell) - if func_name is None: - return f"This cell doesn't define any new functions." - - # get the class we're adding it to - namespace = get_ipython().user_ns - class_name = args - cls = namespace.get(class_name, None) - if cls is None: - return f"Class '{class_name}' not found." - - # save the old version of the function if it was already defined - old_func = namespace.get(func_name, None) - if old_func is not None: - del namespace[func_name] - - # Execute the cell to define the function - get_ipython().run_cell(cell) - - # get the newly defined function - new_func = namespace.get(func_name, None) - if new_func is None: - return f"This cell didn't define {func_name}." - - # add the function to the class and remove it from the namespace - setattr(cls, func_name, new_func) - del namespace[func_name] - - # restore the old function to the namespace - if old_func is not None: - namespace[func_name] = old_func - - @register_cell_magic - def expect_error(line, cell): - try: - get_ipython().run_cell(cell) - except Exception as e: - get_ipython().run_cell("%tb") - - @magic_arguments() - @argument("exception", help="Type of exception to catch") - @register_cell_magic - def expect(line, cell): - args = parse_argstring(expect, line) - exception = eval(args.exception) - try: - get_ipython().run_cell(cell) - except exception as e: - get_ipython().run_cell("%tb") - - def traceback(mode): - """Set the traceback mode. - - mode: string - """ - with contextlib.redirect_stdout(io.StringIO()): - get_ipython().run_cell(f"%xmode {mode}") - - traceback("Minimal") -except (ImportError, NameError): - print("Warning: IPython is not available, cell magic not defined.")