aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2022-05-23 20:19:32 +0100
committerGitHub <noreply@github.com>2022-05-23 20:19:32 +0100
commit685b99388231c3571f11da02aadf4923dc9b75ae (patch)
treecc72a725dc11dd25da207c188b6c93b495fe8ef2
parent3e7c636b7168fa0cae1191abab965af749e167de (diff)
parent15a4e0d14d1e59554b64b6b299e6414dd74642d6 (diff)
downloadperlweeklychallenge-club-685b99388231c3571f11da02aadf4923dc9b75ae.tar.gz
perlweeklychallenge-club-685b99388231c3571f11da02aadf4923dc9b75ae.tar.bz2
perlweeklychallenge-club-685b99388231c3571f11da02aadf4923dc9b75ae.zip
Merge pull request #6152 from jacoby/master
Evidently, I forgot to PR last week.
-rw-r--r--challenge-165/dave-jacoby/blog.txt1
-rw-r--r--challenge-165/dave-jacoby/perl/ch-1.pl60
-rw-r--r--challenge-165/dave-jacoby/perl/ch-2.pl126
-rw-r--r--challenge-166/dave-jacoby/perl/bar0
-rw-r--r--challenge-166/dave-jacoby/perl/blee0
-rw-r--r--challenge-166/dave-jacoby/perl/ch-1.pl52
-rw-r--r--challenge-166/dave-jacoby/perl/ch-2.pl40
-rw-r--r--challenge-166/dave-jacoby/perl/dictionary.txt39172
-rw-r--r--challenge-166/dave-jacoby/perl/foo0
9 files changed, 39451 insertions, 0 deletions
diff --git a/challenge-165/dave-jacoby/blog.txt b/challenge-165/dave-jacoby/blog.txt
new file mode 100644
index 0000000000..6c35511988
--- /dev/null
+++ b/challenge-165/dave-jacoby/blog.txt
@@ -0,0 +1 @@
+https://jacoby.github.io/2022/05/16/plotting-revenge-weekly-challenge-165.html
diff --git a/challenge-165/dave-jacoby/perl/ch-1.pl b/challenge-165/dave-jacoby/perl/ch-1.pl
new file mode 100644
index 0000000000..8bf60ba071
--- /dev/null
+++ b/challenge-165/dave-jacoby/perl/ch-1.pl
@@ -0,0 +1,60 @@
+#!/usr/bin/env perl
+
+use strict;
+use warnings;
+use experimental qw{ say postderef signatures state };
+
+use SVG;
+
+my $config = <<'END';
+
+53,10
+53,10,23,30
+23, 30
+
+END
+
+my @config = grep { /\d/ } split /\n/, $config;
+my $svg = SVG->new(
+ height => 100,
+ width => 100,
+);
+
+for my $entry (@config) {
+ my @coords = map { int $_ } split /,/, $entry;
+ add_line( $svg, \@coords ) if scalar @coords == 4;
+ add_point( $svg, \@coords, 'red' ) if scalar @coords == 2;
+}
+
+my $output = $svg->xmlify;
+say $output;
+exit;
+
+sub add_line ( $svg, $coords, $color = 'black' ) {
+ $svg->line(
+ x1 => $coords->[0],
+ y1 => $coords->[1],
+ x2 => $coords->[2],
+ y2 => $coords->[3],
+ style => {
+ stroke => $color,
+ 'stroke-width' => 0.5,
+ fill => $color,
+ }
+ );
+
+}
+
+sub add_point ( $svg, $coords, $color = 'black' ) {
+ $svg->circle(
+ cx => $coords->[0],
+ cy => $coords->[1],
+ r => 0.5,
+ style => {
+ stroke => $color,
+ 'stroke-width' => 0.5,
+ fill => $color,
+ }
+ );
+}
+
diff --git a/challenge-165/dave-jacoby/perl/ch-2.pl b/challenge-165/dave-jacoby/perl/ch-2.pl
new file mode 100644
index 0000000000..ea42a23b39
--- /dev/null
+++ b/challenge-165/dave-jacoby/perl/ch-2.pl
@@ -0,0 +1,126 @@
+#!/usr/bin/env perl
+
+use strict;
+use warnings;
+use experimental qw{ say postderef signatures state };
+
+use List::Util qw{ max min product sum0 };
+use SVG;
+use Getopt::Long;
+
+my $verbose = 0;
+GetOptions( 'verbose' => \$verbose, );
+
+my $config = <<'END';
+333,129 39,189 140,156 292,134 393,52 160,166 362,122 13,193
+341,104 320,113 109,177 203,152 343,100 225,110 23,186 282,102
+284,98 205,133 297,114 292,126 339,112 327,79 253,136 61,169
+128,176 346,72 316,103 124,162 65,181 159,137 212,116 337,86
+215,136 153,137 390,104 100,180 76,188 77,181 69,195 92,186
+275,96 250,147 34,174 213,134 186,129 189,154 361,82 363,89
+END
+
+# invert Y axis
+my $w = 400;
+my $h = 200;
+my @config = map {
+ [ map { int } split /,/, $_ ]
+} grep { /\d/ } split /\s+/, $config;
+
+say STDERR join "\n", map { join ',', $_->@* }
+ sort { $a->[0] <=> $b->[0] } @config
+ if $verbose;
+
+# transform the Y axis because with SVG, 0 is in the
+# upper left corner, but for traditional mathematics,
+# it is in the lower left corner.
+@config = map { $_->[1] = $h - $_->[1]; $_ } @config;
+
+# a good next step might be to scale and orient the
+# graph to a hardcoded maybe 500x500 plot size
+
+my $svg = SVG->new(
+ height => $h,
+ width => $w,
+);
+
+# outline the box
+add_line( $svg, [ 0, 0, 0, $h ], 'gray', 3 );
+add_line( $svg, [ 0, 0, $w, 0 ], 'gray', 3 );
+add_line( $svg, [ $w, $h, 0, $h ], 'gray', 3 );
+add_line( $svg, [ $w, $h, $w, 0 ], 'gray', 3 );
+
+# plot every entry
+for my $entry (@config) {
+ my @coords = $entry->@*;
+ add_point( $svg, \@coords, 'red', 2 );
+}
+
+# lots of math
+my $maxx = max map { $_->[0] } @config;
+my $minx = min map { $_->[0] } @config;
+
+my $N = scalar @config;
+my $sumx = sum0 map { $_->[0] } @config;
+my $sumx2 = sum0 map { $_->[0]**2 } @config;
+my $sumy = sum0 map { $_->[1] } @config;
+my $sumxy = sum0 map { product $_->@* } @config;
+
+my $m = sprintf '%.2f',
+ ( $N * $sumxy - ( $sumx * $sumy ) ) / ( $N * $sumx2 - ( $sumx**2 ) );
+my $bi = sprintf '%.2f', ( $sumy - ( $m * $sumx ) ) / $N;
+
+my $miny = $m * $minx + $bi;
+my $maxy = $m * $maxx + $bi;
+
+say STDERR <<"END" if $verbose;
+ N: $N
+ sumx: $sumx
+ sumx2: $sumx2
+ sumy: $sumy
+ sumxy: $sumxy
+ m: $m
+ b: $bi
+ maxx: $maxx
+ maxy: $maxy
+ minx: $minx
+ miny: $miny
+ y = ${m}x + $bi
+
+END
+
+# plot the
+add_line( $svg, [ $maxx, $maxy, $minx, $miny ], 'blue' );
+
+my $output = $svg->xmlify;
+say $output;
+exit;
+
+sub add_line ( $svg, $coords, $color = 'black', $width = 0.5 ) {
+ $svg->line(
+ x1 => $coords->[0],
+ y1 => $coords->[1],
+ x2 => $coords->[2],
+ y2 => $coords->[3],
+ style => {
+ stroke => $color,
+ 'stroke-width' => $width,
+ fill => $color,
+ }
+ );
+
+}
+
+sub add_point ( $svg, $coords, $color = 'black', $width = 0.5 ) {
+ $svg->circle(
+ cx => $coords->[0],
+ cy => $coords->[1],
+ r => 0.7,
+ style => {
+ stroke => $color,
+ 'stroke-width' => $width,
+ fill => $color,
+ }
+ );
+}
+
diff --git a/challenge-166/dave-jacoby/perl/bar b/challenge-166/dave-jacoby/perl/bar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/challenge-166/dave-jacoby/perl/bar
diff --git a/challenge-166/dave-jacoby/perl/blee b/challenge-166/dave-jacoby/perl/blee
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/challenge-166/dave-jacoby/perl/blee
diff --git a/challenge-166/dave-jacoby/perl/ch-1.pl b/challenge-166/dave-jacoby/perl/ch-1.pl
new file mode 100644
index 0000000000..e47ea135d0
--- /dev/null
+++ b/challenge-166/dave-jacoby/perl/ch-1.pl
@@ -0,0 +1,52 @@
+#!/usr/bin/env perl
+
+use strict;
+use warnings;
+use experimental qw{ say postderef signatures state };
+
+use Carp;
+use List::Compare;
+use List::Util qw{ first };
+
+my @words = get_words();
+my @letters = qw{ a b c d e f o l i s t };
+my @banned = bad_letters(@letters);
+my %banned = map { $_ => 1 } @banned;
+my %mapping = (
+ i => '1',
+ l => '1',
+ o => '0',
+ s => '5',
+ t => '7',
+);
+map { $mapping{$_} = $_ } 'a' .. 'f';
+
+# @words = qw{ silo solo soda odd };
+
+OUTER: for my $word ( sort { length $a <=> length $b } @words ) {
+ my $hax0r;
+ for my $l ( split //, $word ) {
+ my $m = $mapping{$l};
+ $hax0r .= defined $m ? $m : $l;
+ next OUTER if $banned{$l};
+ }
+ say qq{ + $word\n\t0x$hax0r };
+}
+
+sub get_words {
+ my $dictionary = './dictionary.txt';
+ if ( -f $dictionary && open my $fh, '<', $dictionary ) {
+ my @words =
+ grep { length $_ < 9 && length $_ > 1 }
+ map { chomp; lc $_ } <$fh>;
+ return @words;
+ }
+ croak 'No dictioary file';
+}
+
+sub bad_letters( @letters ) {
+ my @alpha = 'a' .. 'z';
+ my $lc = List::Compare->new( \@letters, \@alpha );
+ my @banned = $lc->get_complement();
+ return @banned;
+}
diff --git a/challenge-166/dave-jacoby/perl/ch-2.pl b/challenge-166/dave-jacoby/perl/ch-2.pl
new file mode 100644
index 0000000000..0d9d3eb56b
--- /dev/null
+++ b/challenge-166/dave-jacoby/perl/ch-2.pl
@@ -0,0 +1,40 @@
+#!/usr/bin/env perl
+
+use strict;
+use warnings;
+use experimental qw{ say postderef signatures state };
+
+use List::Util qw{ first };
+
+my @dirs = qw{ dir_a dir_b dir_c };
+@dirs = sort @ARGV if @ARGV;
+my $maxcol = 0;
+
+my %files;
+for my $dir (@dirs) {
+ $maxcol = length $dir if length $dir > $maxcol;
+ next unless -d $dir;
+ my @nodes = glob "$dir/*";
+ for my $n (@nodes) {
+ my ($node) = reverse split m{/}, $n;
+ $node .= '/' if -d $n;
+ $files{$node}{$dir} = 1;
+ $maxcol = length $node if length $node > $maxcol;
+ }
+}
+
+say show_row( $maxcol, @dirs );
+say show_row( $maxcol, map { '-' x $maxcol } @dirs );
+for my $file ( sort keys %files ) {
+ say show_row( $maxcol,
+ map { defined $files{$file}{$_} ? $file : '' } @dirs );
+}
+
+sub show_row ( $maxcol, @row ) {
+ return join ' | ', map { pad( $_, $maxcol ) } @row;
+}
+
+sub pad ( $word, $maxcol ) {
+ my $pad = ' ' x ( $maxcol - length $word );
+ return join '', $word, $pad;
+}
diff --git a/challenge-166/dave-jacoby/perl/dictionary.txt b/challenge-166/dave-jacoby/perl/dictionary.txt
new file mode 100644
index 0000000000..1f915f2975
--- /dev/null
+++ b/challenge-166/dave-jacoby/perl/dictionary.txt
@@ -0,0 +1,39172 @@
+a
+aardvark
+aback
+abacus
+abacuses
+abandon
+abandoned
+abandoning
+abandonment
+abandons
+abate
+abated
+abates
+abating
+abbey
+abbeys
+abbot
+abbots
+abbreviate
+abbreviated
+abbreviates
+abbreviating
+abbreviation
+abbreviations
+abdicate
+abdicated
+abdicates
+abdicating
+abdication
+abdications
+abdomen
+abdomens
+abdominal
+abduct
+abducted
+abducting
+abducts
+aberration
+aberrations
+abet
+abets
+abetted
+abetting
+abhor
+abhorred
+abhorrence
+abhorrent
+abhorring
+abhors
+abide
+abides
+abiding
+abilities
+ability
+abject
+ablaze
+able
+abler
+ablest
+ably
+abnormal
+abnormalities
+abnormality
+abnormally
+aboard
+abode
+abodes
+abolish
+abolished
+abolishes
+abolishing
+abolition
+abominable
+abomination
+aboriginal
+aborigine
+aborigines
+abort
+aborted
+aborting
+abortion
+abortions
+abortive
+aborts
+abound
+abounded
+abounding
+abounds
+about
+above
+aboveboard
+abrasive
+abrasives
+abreast
+abridge
+abridged
+abridges
+abridging
+abroad
+abrupt
+abrupter
+abruptest
+abruptly
+abscess
+abscessed
+abscesses
+abscessing
+abscond
+absconded
+absconding
+absconds
+absence
+absences
+absent
+absented
+absentee
+absentees
+absenting
+absents
+absolute
+absolutely
+absolutes
+absolutest
+absolve
+absolved
+absolves
+absolving
+absorb
+absorbed
+absorbent
+absorbents
+absorbing
+absorbs
+absorption
+abstain
+abstained
+abstaining
+abstains
+abstention
+abstentions
+abstinence
+abstract
+abstracted
+abstracting
+abstraction
+abstractions
+abstracts
+abstruse
+absurd
+absurder
+absurdest
+absurdities
+absurdity
+absurdly
+abundance
+abundances
+abundant
+abundantly
+abuse
+abused
+abuser
+abusers
+abuses
+abusing
+abusive
+abysmal
+abyss
+abysses
+academic
+academically
+academics
+academies
+academy
+accede
+acceded
+accedes
+acceding
+accelerate
+accelerated
+accelerates
+accelerating
+acceleration
+accelerations
+accelerator
+accelerators
+accent
+accented
+accenting
+accents
+accentuate
+accentuated
+accentuates
+accentuating
+accept
+acceptability
+acceptable
+acceptably
+acceptance
+acceptances
+accepted
+accepting
+accepts
+access
+accessed
+accesses
+accessibility
+accessible
+accessing
+accessories
+accessory
+accident
+accidental
+accidentally
+accidentals
+accidents
+acclaim
+acclaimed
+acclaiming
+acclaims
+acclimate
+acclimated
+acclimates
+acclimating
+acclimatize
+acclimatized
+acclimatizes
+acclimatizing
+accolade
+accolades
+accommodate
+accommodated
+accommodates
+accommodating
+accommodation
+accommodations
+accompanied
+accompanies
+accompaniment
+accompaniments
+accompanist
+accompanists
+accompany
+accompanying
+accomplice
+accomplices
+accomplish
+accomplished
+accomplishes
+accomplishing
+accomplishment
+accomplishments
+accord
+accordance
+accorded
+according
+accordingly
+accordion
+accordions
+accords
+accost
+accosted
+accosting
+accosts
+account
+accountability
+accountable
+accountancy
+accountant
+accountants
+accounted
+accounting
+accounts
+accredit
+accredited
+accrediting
+accredits
+accrue
+accrued
+accrues
+accruing
+accumulate
+accumulated
+accumulates
+accumulating
+accumulation
+accumulations
+accuracy
+accurate
+accurately
+accusation
+accusations
+accuse
+accused
+accuser
+accusers
+accuses
+accusing
+accustom
+accustomed
+accustoming
+accustoms
+ace
+aced
+aces
+ache
+ached
+aches
+achievable
+achieve
+achieved
+achievement
+achievements
+achieves
+achieving
+aching
+acid
+acidity
+acids
+acing
+acknowledge
+acknowledged
+acknowledges
+acknowledging
+acknowledgment
+acknowledgments
+acne
+acorn
+acorns
+acoustic
+acoustics
+acquaint
+acquaintance
+acquaintances
+acquainted
+acquainting
+acquaints
+acquiesce
+acquiesced
+acquiescence
+acquiesces
+acquiescing
+acquire
+acquired
+acquires
+acquiring
+acquisition
+acquisitions
+acquit
+acquits
+acquittal
+acquittals
+acquitted
+acquitting
+acre
+acreage
+acreages
+acres
+acrid
+acrider
+acridest
+acrimonious
+acrimony
+acrobat
+acrobatic
+acrobatics
+acrobats
+acronym
+acronyms
+across
+acrylic
+acrylics
+act
+acted
+acting
+action
+actions
+activate
+activated
+activates
+activating
+active
+actively
+actives
+activist
+activists
+activities
+activity
+actor
+actors
+actress
+actresses
+acts
+actual
+actualities
+actuality
+actually
+actuary
+acumen
+acupuncture
+acute
+acutely
+acuter
+acutes
+acutest
+ad
+adage
+adages
+adamant
+adapt
+adaptable
+adaptation
+adaptations
+adapted
+adapter
+adapting
+adaptive
+adapts
+add
+added
+addendum
+addict
+addicted
+addicting
+addiction
+addictions
+addictive
+addicts
+adding
+addition
+additional
+additionally
+additions
+additive
+additives
+address
+addressed
+addressee
+addressees
+addresses
+addressing
+adds
+adept
+adepts
+adequate
+adequately
+adhere
+adhered
+adherence
+adherent
+adherents
+adheres
+adhering
+adhesion
+adhesive
+adhesives
+adjacent
+adjective
+adjectives
+adjoin
+adjoined
+adjoining
+adjoins
+adjourn
+adjourned
+adjourning
+adjournment
+adjournments
+adjourns
+adjunct
+adjuncts
+adjust
+adjustable
+adjusted
+adjusting
+adjustment
+adjustments
+adjusts
+administer
+administered
+administering
+administers
+administration
+administrations
+administrative
+administrator
+administrators
+admirable
+admirably
+admiral
+admirals
+admiration
+admire
+admired
+admirer
+admirers
+admires
+admiring
+admissible
+admission
+admissions
+admit
+admits
+admittance
+admitted
+admittedly
+admitting
+admonish
+admonished
+admonishes
+admonishing
+admonition
+admonitions
+ado
+adobe
+adobes
+adolescence
+adolescences
+adolescent
+adolescents
+adopt
+adopted
+adopting
+adoption
+adoptions
+adopts
+adorable
+adoration
+adore
+adored
+adores
+adoring
+adorn
+adorned
+adorning
+adornment
+adornments
+adorns
+adrift
+adroit
+adroitly
+ads
+adulation
+adult
+adulterate
+adulterated
+adulterates
+adulterating
+adulteration
+adulteries
+adultery
+adulthood
+adults
+advance
+advanced
+advancement
+advancements
+advances
+advancing
+advantage
+advantaged
+advantageous
+advantages
+advantaging
+advent
+adventure
+adventured
+adventurer
+adventurers
+adventures
+adventuring
+adventurous
+adverb
+adverbial
+adverbials
+adverbs
+adversaries
+adversary
+adverse
+adversely
+adverser
+adversest
+adversities
+adversity
+advert
+advertise
+advertised
+advertisement
+advertisements
+advertiser
+advertisers
+advertises
+advertising
+adverts
+advice
+advisable
+advise
+advised
+adviser
+advisers
+advises
+advising
+advisories
+advisory
+advocate
+advocated
+advocates
+advocating
+aerial
+aerials
+aerodynamic
+aerodynamics
+aerosol
+aerosols
+aerospace
+aesthetic
+aesthetically
+afar
+affable
+affably
+affair
+affairs
+affect
+affectation
+affectations
+affected
+affecting
+affection
+affectionate
+affectionately
+affections
+affects
+affidavit
+affidavits
+affiliate
+affiliated
+affiliates
+affiliating
+affiliation
+affiliations
+affinities
+affinity
+affirm
+affirmation
+affirmations
+affirmative
+affirmatives
+affirmed
+affirming
+affirms
+affix
+affixed
+affixes
+affixing
+afflict
+afflicted
+afflicting
+affliction
+afflictions
+afflicts
+affluence
+affluent
+afford
+affordable
+afforded
+affording
+affords
+affront
+affronted
+affronting
+affronts
+afield
+aflame
+afloat
+afoot
+aforementioned
+aforesaid
+afraid
+afresh
+after
+aftereffect
+aftereffects
+afterlife
+afterlives
+aftermath
+aftermaths
+afternoon
+afternoons
+afterthought
+afterthoughts
+afterward
+afterwards
+again
+against
+age
+aged
+agencies
+agency
+agenda
+agendas
+agent
+agents
+ages
+aggravate
+aggravated
+aggravates
+aggravating
+aggravation
+aggravations
+aggregate
+aggregated
+aggregates
+aggregating
+aggression
+aggressive
+aggressively
+aggressiveness
+aggressor
+aggressors
+aghast
+agile
+agiler
+agilest
+agility
+aging
+agitate
+agitated
+agitates
+agitating
+agitation
+agitations
+agitator
+agitators
+aglow
+agnostic
+agnosticism
+agnostics
+ago
+agonies
+agonize
+agonized
+agonizes
+agonizing
+agony
+agree
+agreeable
+agreeably
+agreed
+agreeing
+agreement
+agreements
+agrees
+agricultural
+agriculture
+aground
+ah
+ahead
+ahoy
+aid
+aide
+aided
+aides
+aiding
+aids
+ail
+ailed
+ailing
+ailment
+ailments
+ails
+aim
+aimed
+aiming
+aimless
+aimlessly
+aims
+air
+airborne
+aircraft
+aired
+airfield
+airfields
+airier
+airiest
+airing
+airline
+airliner
+airliners
+airlines
+airmail
+airmailed
+airmailing
+airmails
+airplane
+airplanes
+airport
+airports
+airs
+airstrip
+airstrips
+airtight
+airy
+aisle
+aisles
+ajar
+akin
+alarm
+alarmed
+alarming
+alarmingly
+alarmist
+alarmists
+alarms
+alas
+albeit
+albino
+albinos
+album
+albums
+alcohol
+alcoholic
+alcoholics
+alcoholism
+alcohols
+alcove
+alcoves
+ale
+alert
+alerted
+alerting
+alerts
+ales
+alga
+algae
+algebra
+algebraic
+algorithm
+algorithms
+alias
+aliased
+aliases
+aliasing
+alibi
+alibied
+alibiing
+alibis
+alien
+alienate
+alienated
+alienates
+alienating
+alienation
+aliened
+aliening
+aliens
+alight
+alighted
+alighting
+alights
+align
+aligned
+aligning
+alignment
+alignments
+aligns
+alike
+alimony
+alive
+alkali
+alkalies
+alkaline
+all
+allay
+allayed
+allaying
+allays
+allegation
+allegations
+allege
+alleged
+allegedly
+alleges
+allegiance
+allegiances
+alleging
+allegorical
+allegories
+allegory
+allergic
+allergies
+allergy
+alleviate
+alleviated
+alleviates
+alleviating
+alley
+alleys
+alliance
+alliances
+allied
+allies
+alligator
+alligators
+allocate
+allocated
+allocates
+allocating
+allocation
+allocations
+allot
+allotment
+allotments
+allots
+allotted
+allotting
+allow
+allowable
+allowance
+allowances
+allowed
+allowing
+allows
+alloy
+alloyed
+alloying
+alloys
+allude
+alluded
+alludes
+alluding
+allure
+allured
+allures
+alluring
+allusion
+allusions
+ally
+allying
+almanac
+almanacs
+almighty
+almond
+almonds
+almost
+alms
+aloft
+alone
+along
+alongside
+aloof
+aloud
+alpha
+alphabet
+alphabetic
+alphabetical
+alphabetically
+alphabets
+alphanumeric
+already
+also
+altar
+altars
+alter
+alterable
+alteration
+alterations
+altered
+altering
+alternate
+alternated
+alternately
+alternates
+alternating
+alternation
+alternative
+alternatively
+alternatives
+alternator
+alters
+although
+altitude
+altitudes
+alto
+altogether
+altos
+altruism
+altruistic
+aluminum
+always
+am
+amalgamate
+amalgamated
+amalgamates
+amalgamating
+amalgamation
+amalgamations
+amass
+amassed
+amasses
+amassing
+amateur
+amateurish
+amateurs
+amaze
+amazed
+amazement
+amazes
+amazing
+amazingly
+ambassador
+ambassadors
+amber
+ambiance
+ambiances
+ambidextrous
+ambient
+ambiguities
+ambiguity
+ambiguous
+ambiguously
+ambition
+ambitions
+ambitious
+ambitiously
+ambivalence
+ambivalent
+amble
+ambled
+ambles
+ambling
+ambulance
+ambulances
+ambush
+ambushed
+ambushes
+ambushing
+amen
+amenable
+amend
+amended
+amending
+amendment
+amendments
+amends
+amenities
+amenity
+amethyst
+amethysts
+amiable
+amiably
+amicable
+amicably
+amid
+amiss
+ammonia
+ammunition
+amnesia
+amnestied
+amnesties
+amnesty
+amnestying
+amoeba
+amoebae
+amoebas
+amok
+among
+amoral
+amorous
+amorphous
+amount
+amounted
+amounting
+amounts
+amp
+ampere
+amperes
+ampersand
+ampersands
+amphetamine
+amphetamines
+amphibian
+amphibians
+amphibious
+amphitheater
+amphitheaters
+ample
+ampler
+amplest
+amplification
+amplifications
+amplified
+amplifier
+amplifiers
+amplifies
+amplify
+amplifying
+amplitude
+amply
+amps
+amputate
+amputated
+amputates
+amputating
+amputation
+amputations
+amulet
+amulets
+amuse
+amused
+amusement
+amusements
+amuses
+amusing
+amusingly
+an
+anachronism
+anachronisms
+anagram
+anal
+analgesic
+analgesics
+analog
+analogies
+analogous
+analogue
+analogy
+analyses
+analysis
+analyst
+analysts
+analytic
+analyze
+analyzed
+analyzer
+analyzes
+analyzing
+anarchic
+anarchism
+anarchist
+anarchists
+anarchy
+anathema
+anatomical
+anatomies
+anatomy
+ancestor
+ancestors
+ancestral
+ancestries
+ancestry
+anchor
+anchorage
+anchorages
+anchored
+anchoring
+anchors
+anchovies
+anchovy
+ancient
+ancienter
+ancientest
+ancients
+and
+android
+androids
+anecdote
+anecdotes
+anemia
+anemic
+anesthesia
+anesthetic
+anesthetics
+anew
+angel
+angelic
+angels
+anger
+angered
+angering
+angers
+angle
+angled
+angler