aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNiels van Dijke <perlboy@cpan.org>2020-09-06 09:17:08 +0000
committerNiels van Dijke <perlboy@cpan.org>2020-09-06 09:17:08 +0000
commit639dee2a424730fa8e4856df3f5eb25c937320c0 (patch)
treed37aec42450894fb679c6132c89a5e6c00de1eff
parentd344f7c9bff76b5b8864fb38d813611aef729ef8 (diff)
downloadperlweeklychallenge-club-639dee2a424730fa8e4856df3f5eb25c937320c0.tar.gz
perlweeklychallenge-club-639dee2a424730fa8e4856df3f5eb25c937320c0.tar.bz2
perlweeklychallenge-club-639dee2a424730fa8e4856df3f5eb25c937320c0.zip
Task 2
Files 'grid' and 'words' are the defaults for ch-2.pl. Files 'grid2' and 'words2' are smaller test files.
-rwxr-xr-xchallenge-076/perlboy1967/perl/ch-2.pl195
-rw-r--r--challenge-076/perlboy1967/perl/grid19
-rw-r--r--challenge-076/perlboy1967/perl/grid211
-rw-r--r--challenge-076/perlboy1967/perl/words346254
-rw-r--r--challenge-076/perlboy1967/perl/words254
5 files changed, 346533 insertions, 0 deletions
diff --git a/challenge-076/perlboy1967/perl/ch-2.pl b/challenge-076/perlboy1967/perl/ch-2.pl
new file mode 100755
index 0000000000..4cabd20746
--- /dev/null
+++ b/challenge-076/perlboy1967/perl/ch-2.pl
@@ -0,0 +1,195 @@
+#!/usr/bin/perl
+
+# Perl Weekly Challenge - 076
+# - https://perlweeklychallenge.org/blog/perl-weekly-challenge-076/
+#
+# Task 2 - Word Search
+#
+# Author: Niels 'PerlBoy' van Dijke
+
+use strict;
+use warnings;
+
+use List::Util qw(max);
+
+my ($gridFilename, $wordsFilename) = @ARGV;
+
+$gridFilename //= 'grid.txt';
+$wordsFilename //= 'words'; # A copy of /usr/share/dict/words
+
+my $minLength = 5;
+
+my @words;
+my %wordsFound;
+my %gridStrings;
+
+my %directions = (
+ HLR => 'Horizontal (left to right)',
+ HRL => 'Horizontal (right to left)',
+ VTB => 'Vertical (top to bottom)',
+ VBT => 'Vertical (bottom to top)',
+ DLRTB => 'Diagonal (left to right and top to bottom)',
+ DLRBT => 'Diagonal (left to right and bottom to top)',
+ DRLTB => 'Diagonal (right to left and top to bottom)',
+ DRLBT => 'Diagonal (right to left and bottom to top)',
+);
+
+
+sub readWordsFile {
+ my ($fileName, $minL, $arWords) = @_;
+
+ if (!open(fhWords,"< $fileName")) {
+ die "Can't read words from '$fileName' ($!)";
+ } else {
+ while (<fhWords>) {
+ push(@$arWords, $1)
+ if (/^([a-z]{$minL,})$/);
+ }
+ close(fhWords);
+ }
+}
+
+
+sub readGridFile {
+ my ($fileName, $hrGridStrings) = @_;
+
+ my @grid;
+ my @strings;
+
+ if (!open(fhGrid, "< $fileName")) {
+ die "Can't read grid from '$fileName' ($!)";
+ } else {
+
+ # Read and verify grid width input
+ my $gWidth;
+ my $gHeight;
+ while (<fhGrid>) {
+ $_ = lc($_);
+ s/[^a-z]//g;
+
+ $gWidth //= length($_);
+
+ die "Length of line $. of grid file '$fileName' <> $gWidth [$_]"
+ unless (length($_) == $gWidth);
+
+ push(@grid, [split(//, $_)]);
+ }
+
+ close(fhWords);
+
+ $gHeight = scalar @grid;
+
+ # Get horizontal,vertical and diagonal strings
+
+ my @colStr;
+
+ # Get horizontal and vertical strings
+ for my $row (0 .. scalar @grid - 1) {
+ my $s = join('', @{$grid[$row]});
+ push(@{$hrGridStrings->{HLR}}, $s);
+ push(@{$hrGridStrings->{HRL}}, scalar reverse $s);
+
+ # Get vertical chars
+ for my $col (0 .. $gWidth - 1) {
+ $colStr[$row] .= $grid[$row][$col];
+ }
+ }
+
+ # Push vertical strings
+ for my $row (0 .. scalar @grid - 1) {
+ push(@{$hrGridStrings->{VTB}}, $colStr[$row]);
+ push(@{$hrGridStrings->{VBT}}, scalar reverse $colStr[$row]);
+ }
+
+ # Get four diagonal direction strings
+ for my $y ($minLength - $gWidth .. $gHeight - $minLength) {
+ my $diaTBLR;
+ my $diaTBRL;
+ for my $x (0 .. $gWidth - 1) {
+ my $row = $y + $x;
+ next if ($row < 0 or $row > $gHeight - 1);
+
+ $diaTBLR .= $grid[$row][$x];
+ $diaTBRL .= $grid[$row][$gWidth - 1 - $x];
+ }
+ push(@{$hrGridStrings->{DLRTB}}, $diaTBLR);
+ push(@{$hrGridStrings->{DRLBT}}, scalar reverse $diaTBLR);
+ push(@{$hrGridStrings->{DRLTB}}, $diaTBRL);
+ push(@{$hrGridStrings->{DLRBT}}, scalar reverse $diaTBRL);
+ }
+ }
+}
+
+
+sub findWords {
+ my ($hrGS, $arW, $hrWF) = @_;
+
+ my @directions = keys %$hrGS;
+
+ my $nWords = scalar(@$arW);
+ my $n;
+
+ print STDERR "Finding Words Progress: ";
+ foreach my $word (@$arW) {
+ print STDERR '.' if ($n++ % int($nWords / 50) == 0);
+ foreach my $direction (@directions) {
+ foreach my $str (@{$hrGS->{$direction}}) {
+ $hrWF->{$word}{$direction}++
+ if ($str =~ m#$word#);
+ }
+ }
+ }
+ print STDERR "\n";
+}
+
+
+sub printReport {
+ my ($arWords, $minL, $hrWordsFound) = @_;
+
+ my @directions = sort keys %directions;
+ my $maxWlen = max(map { length $_} keys %$hrWordsFound);
+
+ my $rowFmt = "%-${maxWlen}s | %5s | %5s | %5s | %5s | %5s | %5s | %5s | %5s\n";
+
+ my $sepFmt = $rowFmt; $sepFmt =~ tr/\|/+/;
+ my $sep = sprintf $sepFmt, '-' x $maxWlen, map { '-' x 5 } @directions;
+
+ printf "\n%d uniq words found in grid of length %d or more (using dictionary containing %d words).\n\n",
+ scalar keys %$hrWordsFound, $minL, scalar @$arWords;
+
+ printf $rowFmt, 'Word', @directions;
+ print $sep;
+
+ foreach my $word (sort keys %$hrWordsFound) {
+ my @values = map { $hrWordsFound->{$word}{$_} // '' } @directions;
+ printf $rowFmt,
+ $word,
+ @values;
+ }
+ printf "$sep\n";
+
+ my @legendW = (
+ max(map { length } @directions),
+ max(map { length } values %directions)
+ );
+ my $legendFmt = sprintf("%%-%ds | %%-%ds\n", @legendW);
+ $sepFmt = $legendFmt; $sepFmt =~ tr/\|/+/;
+ $sep = sprintf $sepFmt, map { '-' x $_ } @legendW;
+
+ print "Legend:\n";
+ print "=======\n";
+ print "\n";
+ printf $legendFmt, qw(Key Description);
+ printf $sep;
+ foreach my $direction (@directions) {
+ printf $legendFmt, $direction, $directions{$direction};
+ }
+ printf $sep;
+}
+
+
+readWordsFile($wordsFilename, $minLength, \@words);
+readGridFile($gridFilename, \%gridStrings);
+findWords(\%gridStrings, \@words, \%wordsFound);
+printReport(\@words, $minLength, \%wordsFound);
+
diff --git a/challenge-076/perlboy1967/perl/grid b/challenge-076/perlboy1967/perl/grid
new file mode 100644
index 0000000000..31cf2e0fd8
--- /dev/null
+++ b/challenge-076/perlboy1967/perl/grid
@@ -0,0 +1,19 @@
+B I D E M I A T S U C C O R S T
+L D E G G I W Q H O D E E H D P
+U S E I R U B U T E A S L A G U
+N G N I Z I L A I C O S C N U D
+T G M I D S T S A R A R E I F G
+S R E N M D C H A S I V E E L I
+S C S H A E U E B R O A D M T E
+H W O V L P E D D L A I U L S S
+R Y O N L A S F C S T A O G O T
+I G U S S R R U G O V A R Y O C
+N R G P A T N A N G I L A M O O
+E I H A C E I V I R U S E S E D
+S E T S U D T T G A R L I C N H
+H V R M X L W I U M S N S O T B
+A E A O F I L C H T O D C A E U
+Z S C D F E C A A I I R L N R F
+A R I I A N Y U T O O O U T P F
+R S E C I S N A B O S C N E R A
+D R S M P C U U N E L T E S I L
diff --git a/challenge-076/perlboy1967/perl/grid2 b/challenge-076/perlboy1967/perl/grid2
new file mode 100644
index 0000000000..5e8a457b37
--- /dev/null
+++ b/challenge-076/perlboy1967/perl/grid2
@@ -0,0 +1,11 @@
+B I D E M I A T
+L D E G G I W Q
+U S E I R U B U
+N G N I Z I L A
+T G M I D S T S
+V R E N M D C I
+S I S H A E C E
+H W R V L A E D
+R Y O U R A S F
+I G U T S R R U
+N R G P A T N A
diff --git a/challenge-076/perlboy1967/perl/words b/challenge-076/perlboy1967/perl/words
new file mode 100644
index 0000000000..0b3dfcce5b
--- /dev/null
+++ b/challenge-076/perlboy1967/perl/words
@@ -0,0 +1,346254 @@
+aahed
+aahing
+aalii
+aaliis
+aardvark
+aardvarks
+aardwolf
+aardwolves
+aargh
+aaron
+aaronic
+aarrgh
+aarrghh
+aasvogel
+aasvogels
+abaca
+abacas
+abacate
+abacaxi
+abacay
+abaci
+abacinate
+abacination
+abacisci
+abaciscus
+abacist
+aback
+abacli
+abacot
+abacterial
+abactinal
+abactinally
+abaction
+abactor
+abaculi
+abaculus
+abacus
+abacuses
+abada
+abaddon
+abadejo
+abadengo
+abadia
+abaff
+abaft
+abaisance
+abaised
+abaiser
+abaisse
+abaissed
+abaka
+abakas
+abalation
+abalienate
+abalienated
+abalienating
+abalienation
+abalone
+abalones
+abamp
+abampere
+abamperes
+abamps
+aband
+abandon
+abandonable
+abandoned
+abandonedly
+abandonee
+abandoner
+abandoners
+abandoning
+abandonment
+abandonments
+abandons
+abandum
+abanet
+abanga
+abannition
+abapical
+abaptiston
+abaptistum
+abarthrosis
+abarticular
+abarticulation
+abase
+abased
+abasedly
+abasedness
+abasement
+abasements
+abaser
+abasers
+abases
+abash
+abashed
+abashedly
+abashedness
+abashes
+abashing
+abashless
+abashlessly
+abashment
+abashments
+abasia
+abasias
+abasic
+abasing
+abasio
+abask
+abassi
+abastard
+abastardize
+abastral
+abatable
+abatage
+abate
+abated
+abatement
+abatements
+abater
+abaters
+abates
+abatic
+abating
+abatis
+abatised
+abatises
+abatjour
+abatjours
+abaton
+abator
+abators
+abattage
+abattis
+abattised
+abattises
+abattoir
+abattoirs
+abattu
+abattue
+abature
+abaue
+abave
+abaxial
+abaxile
+abayah
+abaze
+abbacies
+abbacomes
+abbacy
+abbandono
+abbas
+abbasi
+abbasid
+abbassi
+abbate
+abbatial
+abbatical
+abbatie
+abbaye
+abbes
+abbess
+abbesses
+abbest
+abbevillian
+abbey
+abbeys
+abbeystead
+abbeystede
+abboccato
+abbogada
+abbot
+abbotcies
+abbotcy
+abbotnullius
+abbotric
+abbots
+abbotship
+abbotships
+abbott
+abbozzo
+abbrev
+abbreviatable
+abbreviate
+abbreviated
+abbreviately
+abbreviates
+abbreviating
+abbreviation
+abbreviations
+abbreviator
+abbreviators
+abbreviatory
+abbreviature
+abbroachment
+abcess
+abcissa
+abcoulomb
+abdal
+abdali
+abdaria
+abdat
+abdest
+abdicable
+abdicant
+abdicate
+abdicated
+abdicates
+abdicating
+abdication
+abdications
+abdicative
+abdicator
+abditive
+abditory
+abdom
+abdomen
+abdomens
+abdomina
+abdominal
+abdominales
+abdominalia
+abdominalian
+abdominally
+abdominals
+abdominoanterior
+abdominocardiac
+abdominocentesis
+abdominocystic
+abdominogenital
+abdominohysterectomy
+abdominohysterotomy
+abdominoposterior
+abdominoscope
+abdominoscopy
+abdominothoracic
+abdominous
+abdominovaginal
+abdominovesical
+abduce
+abduced
+abducens
+abducent
+abducentes
+abduces
+abducing
+abduct
+abducted
+abducting
+abduction
+abductions
+abductor
+abductores
+abductors
+abducts
+abeam
+abear
+abearance
+abecedaire
+abecedaria
+abecedarian
+abecedarians
+abecedaries
+abecedarium
+abecedarius
+abecedary
+abede
+abedge
+abegge
+abeigh
+abele
+abeles
+abelian
+abelite
+abelmosk
+abelmosks
+abelmusk
+abeltree
+abend
+abends
+abenteric
+abepithymia
+aberdavine
+aberdeen
+aberdevine
+aberduvine
+abernethy
+aberr
+aberrance
+aberrancies
+aberrancy
+aberrant
+aberrantly
+aberrants
+aberrate
+aberrated
+aberrating
+aberration
+aberrational
+aberrations
+aberrative
+aberrator
+aberrometer
+aberroscope
+aberuncate
+aberuncator
+abesse
+abessive
+abetment
+abetments
+abets
+abettal
+abettals
+abetted
+abetter
+abetters
+abetting
+abettor
+abettors
+abevacuation
+abeyance
+abeyances
+abeyancies
+abeyancy
+abeyant
+abfarad
+abfarads
+abhenries
+abhenry
+abhenrys
+abhinaya
+abhiseka
+abhominable
+abhor
+abhorred
+abhorrence
+abhorrences
+abhorrency
+abhorrent
+abhorrently
+abhorrer
+abhorrers
+abhorrible
+abhorring
+abhors
+abichite
+abidal
+abidance
+abidances
+abidden
+abide
+abided
+abider
+abiders
+abides
+abidi
+abiding
+abidingly
+abidingness
+abied
+abiegh
+abience
+abient
+abies
+abietate
+abietene
+abietic
+abietin
+abietineous
+abietinic
+abietite
+abigail
+abigails
+abigailship
+abigeat
+abigei
+abigeus
+abilao
+abilene
+abiliment
+abilitable
+abilities
+ability
+abilla
+abilo
+abime
+abintestate
+abiogeneses
+abiogenesis
+abiogenesist
+abiogenetic
+abiogenetical
+abiogenetically
+abiogenist
+abiogenous
+abiogeny
+abiological
+abiologically
+abiology
+abioses
+abiosis
+abiotic
+abiotical
+abiotically
+abiotrophic
+abiotrophy
+abirritant
+abirritate
+abirritated
+abirritating
+abirritation
+abirritative
+abiston
+abiuret
+abject
+abjectedness
+abjection
+abjections
+abjective
+abjectly
+abjectness
+abjectnesses
+abjoint
+abjudge
+abjudged
+abjudging
+abjudicate
+abjudicated
+abjudicating
+abjudication
+abjudicator
+abjugate
+abjunct
+abjunction
+abjunctive
+abjuration
+abjurations
+abjuratory
+abjure
+abjured
+abjurement
+abjurer
+abjurers
+abjures
+abjuring
+abkar
+abkari
+abkary
+ablach
+ablactate
+ablactated
+ablactating
+ablactation
+ablaqueate
+ablare
+ablastemic
+ablastin
+ablastous
+ablate
+ablated
+ablates
+ablating
+ablation
+ablations
+ablatitious
+ablatival
+ablative
+ablatively
+ablatives
+ablator
+ablaut
+ablauts
+ablaze
+ableeze
+ablegate
+ablegates
+ablegation
+ablend
+ableness
+ablepharia
+ablepharon
+ablepharous
+ablepsia
+ablepsy
+ableptical
+ableptically
+abler
+ables
+ablesse
+ablest
+ablet
+ablewhackets
+ablings
+ablins
+ablock
+abloom
+ablow
+ablude
+abluent
+abluents
+ablush
+ablute
+abluted
+ablution
+ablutionary
+ablutions
+abluvion
+abmho
+abmhos
+abmodalities
+abmodality
+abnegate
+abnegated
+abnegates
+abnegating
+abnegation
+abnegations
+abnegative
+abnegator
+abnegators
+abner
+abnerval
+abnet
+abneural
+abnormal
+abnormalcies
+abnormalcy
+abnormalise
+abnormalised
+abnormalising
+abnormalism
+abnormalist
+abnormalities
+abnormality
+abnormalize
+abnormalized
+abnormalizing
+abnormally
+abnormalness
+abnormals
+abnormities
+abnormity
+abnormous
+abnumerable
+aboard
+aboardage
+abococket
+abodah
+abode
+aboded
+abodement
+abodes
+aboding
+abody
+abogado
+abogados
+abohm
+abohms
+aboideau
+aboideaus
+aboideaux
+aboil
+aboiteau
+aboiteaus
+aboiteaux
+abolete
+abolish
+abolishable
+abolished
+abolisher
+abolishers
+abolishes
+abolishing
+abolishment
+abolishments
+abolition
+abolitionary
+abolitionise
+abolitionised
+abolitionising
+abolitionism
+abolitionist
+abolitionists
+abolitionize
+abolitionized
+abolitionizing
+abolitions
+abolla
+abollae
+aboma
+abomas
+abomasa
+abomasal
+abomasi
+abomasum
+abomasus
+abomasusi
+abominability
+abominable
+abominableness
+abominably
+abominate
+abominated
+abominates
+abominating
+abomination
+abominations
+abominator
+abominators
+abomine
+abondance
+abonne
+abonnement
+aboon
+aborad
+aboral
+aborally
+abord
+aboriginal
+aboriginality
+aboriginally
+aboriginals
+aboriginary
+aborigine
+aborigines
+aborning
+aborsement
+aborsive
+abort
+aborted
+aborter
+aborters
+aborticide
+abortient
+abortifacient
+abortin
+aborting
+abortion
+abortional
+abortionist
+abortionists
+abortions
+abortive
+abortively
+abortiveness
+abortogenic
+aborts
+abortus
+abortuses
+abote
+abouchement
+aboudikro
+abought
+aboulia
+aboulias
+aboulic
+abound
+abounded
+abounder
+abounding
+aboundingly
+abounds
+about
+abouts
+above
+aboveboard
+abovedeck
+aboveground
+abovementioned
+aboveproof
+aboves
+abovesaid
+abovestairs
+abracadabra
+abrachia
+abrachias
+abradable
+abradant
+abradants
+abrade
+abraded
+abrader
+abraders
+abrades
+abrading
+abraham
+abraid
+abranchial
+abranchialism
+abranchian
+abranchiate
+abranchious
+abrasax
+abrase
+abrased
+abraser
+abrash
+abrasing
+abrasiometer
+abrasion
+abrasions
+abrasive
+abrasively
+abrasiveness
+abrasivenesses
+abrasives
+abrastol
+abraum
+abraxas
+abray
+abrazite
+abrazitic
+abrazo
+abrazos
+abreact
+abreacted
+abreacting
+abreaction
+abreactions
+abreacts
+abreast
+abreed
+abrege
+abreid
+abrenounce
+abrenunciate
+abrenunciation
+abreption
+abret
+abreuvoir
+abrico
+abricock
+abricot
+abridgable
+abridge
+abridgeable
+abridged
+abridgedly
+abridgement
+abridgements
+abridger
+abridgers
+abridges
+abridging
+abridgment
+abridgments
+abrim
+abrin
+abrine
+abris
+abristle
+abroach
+abroad
+abrocome
+abrogable
+abrogate
+abrogated
+abrogates
+abrogating
+abrogation
+abrogations
+abrogative
+abrogator
+abrogators
+abronia
+abrood
+abrook
+abrosia
+abrosias
+abrotanum
+abrotin
+abrotine
+abrupt
+abruptedly
+abrupter
+abruptest
+abruptio
+abruption
+abruptiones
+abruptly
+abruptness
+absampere
+absarokite
+abscam
+abscess
+abscessed
+abscesses
+abscessing
+abscession
+abscessroot
+abscind
+abscise
+abscised
+abscises
+abscisin
+abscising
+abscisins
+abscision
+absciss
+abscissa
+abscissae
+abscissas
+abscisse
+abscissin
+abscission
+abscissions
+absconce
+abscond
+absconded
+abscondedly
+abscondence
+absconder
+absconders
+absconding
+absconds
+absconsa
+abscoulomb
+abscound
+absee
+abseil
+abseiled
+abseiling
+abseils
+absence
+absences
+absent
+absentation
+absented
+absentee
+absenteeism
+absentees
+absenteeship
+absenter
+absenters
+absentia
+absenting
+absently
+absentment
+absentminded
+absentmindedly
+absentmindedness
+absentmindednesses
+absentness
+absents
+absey
+absfarad
+abshenry
+absinth
+absinthe
+absinthes
+absinthial
+absinthian
+absinthiate
+absinthiated
+absinthiating
+absinthic
+absinthiin
+absinthin
+absinthine
+absinthism
+absinthismic
+absinthium
+absinthol
+absinthole
+absinths
+absis
+absist
+absistos
+absit
+absmho
+absohm
+absoil
+absolent
+absolute
+absolutely
+absoluteness
+absoluter
+absolutes
+absolutest
+absolution
+absolutions
+absolutism
+absolutist
+absolutista
+absolutistic
+absolutistically
+absolutists
+absolutive
+absolutization
+absolutize
+absolutory
+absolvable
+absolvatory
+absolve
+absolved
+absolvent
+absolver
+absolvers
+absolves
+absolving
+absolvitor
+absolvitory
+absonant
+absonous
+absorb
+absorbability
+absorbable
+absorbance
+absorbancy
+absorbant
+absorbed
+absorbedly
+absorbedness
+absorbefacient
+absorbencies
+absorbency
+absorbent
+absorbents
+absorber
+absorbers
+absorbing
+absorbingly
+absorbition
+absorbs
+absorbtion
+absorpt
+absorptance
+absorptiometer
+absorptiometric
+absorption
+absorptional
+absorptions
+absorptive
+absorptively
+absorptiveness
+absorptivity
+absquatulate
+absquatulation
+abstain
+abstained
+abstainer
+abstainers
+abstaining
+abstainment
+abstains
+abstemious
+abstemiously
+abstemiousness
+abstention
+abstentionism
+abstentionist
+abstentions
+abstentious
+absterge
+absterged
+abstergent
+absterges
+absterging
+absterse
+abstersion
+abstersive
+abstersiveness
+abstertion
+abstinence
+abstinences
+abstinency
+abstinent
+abstinential
+abstinently
+abstort
+abstr
+abstract
+abstractable
+abstracted
+abstractedly
+abstractedness
+abstracter
+abstracters
+abstractest
+abstracting
+abstraction
+abstractional
+abstractionism
+abstractionist
+abstractionists
+abstractions
+abstractitious
+abstractive
+abstractively
+abstractiveness
+abstractly
+abstractness
+abstractnesses
+abstractor
+abstractors
+abstracts
+abstrahent
+abstrict
+abstricted
+abstricting
+abstriction
+abstricts
+abstrude
+abstruse
+abstrusely
+abstruseness
+abstrusenesses
+abstruser
+abstrusest
+abstrusion
+abstrusities
+abstrusity
+absume
+absumption
+absurd
+absurder
+absurdest
+absurdism
+absurdist
+absurdities
+absurdity
+absurdly
+absurdness
+absurds
+absurdum
+absvolt
+abterminal
+abthain
+abthainrie
+abthainry
+abthanage
+abtruse
+abubble
+abucco
+abuilding
+abuleia
+abulia
+abulias
+abulic
+abulomania
+abulyeit
+abumbral
+abumbrellar
+abuna
+abundance
+abundances
+abundancy
+abundant
+abundantly
+abune
+abura
+aburabozu
+aburagiri
+aburban
+aburst
+aburton
+abusable
+abusage
+abuse
+abused
+abusedly
+abusee
+abuseful
+abusefully
+abusefulness
+abuser
+abusers
+abuses
+abush
+abusing
+abusion
+abusious
+abusive
+abusively
+abusiveness
+abusivenesses
+abutilon
+abutilons
+abutment
+abutments
+abuts
+abuttal
+abuttals
+abutted
+abutter
+abutters
+abutting
+abuzz
+abvolt
+abvolts
+abwab
+abwatt
+abwatts
+abyed
+abyes
+abying
+abysm
+abysmal
+abysmally
+abysms
+abyss
+abyssa
+abyssal
+abysses
+abyssinia
+abyssinian
+abyssinians
+abyssobenthonic
+abyssolith
+abyssopelagic
+abyssus
+acacatechin
+acacatechol
+acacetin
+acacia
+acacias
+acaciin
+acacin
+acacine
+academe
+academes
+academia
+academial
+academian
+academias
+academic
+academical
+academically
+academicals
+academician
+academicians
+academicianship
+academicism
+academics
+academie
+academies
+academise
+academised
+academising
+academism
+academist
+academite
+academization
+academize
+academized
+academizing
+academy
+acadia
+acadialite
+acadian
+acaena
+acajou
+acajous
+acalculia
+acale
+acaleph
+acalepha
+acalephae
+acalephan
+acalephe
+acalephes
+acalephoid
+acalephs
+acalycal
+acalycine
+acalycinous
+acalyculate
+acalyptrate
+acampsia
+acana
+acanaceous
+acanonical
+acanth
+acantha
+acanthaceous
+acanthad
+acanthi
+acanthial
+acanthin
+acanthine
+acanthion
+acanthite
+acanthocarpous
+acanthocephalan
+acanthocephalous
+acanthocladous
+acanthodean
+acanthodian
+acanthoid
+acanthological
+acanthology
+acantholysis
+acanthoma
+acanthomas
+acanthon
+acanthophorous
+acanthopod
+acanthopodous
+acanthopomatous
+acanthopore
+acanthopteran
+acanthopterous
+acanthopterygian
+acanthoses
+acanthosis
+acanthotic
+acanthous
+acanthus
+acanthuses
+acanthuthi
+acapnia
+acapnial
+acapnias
+acappella
+acapsular
+acapu
+acapulco
+acara
+acarari
+acardia
+acardiac
+acardite
+acari
+acarian
+acariasis
+acariatre
+acaricidal
+acaricide
+acarid
+acaridae
+acaridan
+acaridans
+acaridean
+acaridomatia
+acaridomatium
+acarids
+acariform
+acarine
+acarines
+acarinosis
+acarocecidia
+acarocecidium
+acarodermatitis
+acaroid
+acarol
+acarologist
+acarology
+acarophilous
+acarophobia
+acarotoxic
+acarpellous
+acarpelous
+acarpous
+acarus
+acast
+acatalectic
+acatalepsia
+acatalepsy
+acataleptic
+acatallactic
+acatamathesia
+acataphasia
+acataposis
+acatastasia
+acatastatic
+acate
+acategorical
+acater
+acatery
+acates
+acatharsia
+acatharsy
+acatholic
+acaudal
+acaudate
+acaudelescent
+acaulescence
+acaulescent
+acauline
+acaulose
+acaulous
+accable
+accademia
+accadian
+accede
+acceded
+accedence
+acceder
+acceders
+accedes
+acceding
+accel
+accelerable
+accelerando
+accelerant
+accelerate
+accelerated
+acceleratedly
+accelerates
+accelerating
+acceleratingly
+acceleration
+accelerations
+accelerative
+accelerator
+acceleratorh
+accelerators
+acceleratory
+accelerograph
+accelerometer
+accelerometers
+accend
+accendibility
+accendible
+accensed
+accension
+accensor
+accent
+accented
+accenting
+accentless
+accentor
+accentors
+accents
+accentuable
+accentual
+accentuality
+accentually
+accentuate
+accentuated
+accentuates
+accentuating
+accentuation
+accentuations
+accentuator
+accentus
+accept
+acceptabilities
+acceptability
+acceptable
+acceptableness
+acceptably
+acceptance
+acceptances
+acceptancies