diff options
| author | PerlMonk Athanasius <PerlMonk.Athanasius@gmail.com> | 2019-06-30 00:51:56 -0700 |
|---|---|---|
| committer | PerlMonk Athanasius <PerlMonk.Athanasius@gmail.com> | 2019-06-30 00:51:56 -0700 |
| commit | 072d2dd87866a643be808e1e8e1869f478d7ddf4 (patch) | |
| tree | b11434d88c1ab93b63208b21331c61a755f0f9d3 | |
| parent | 9bdae8b343ea215edd5cb46f7f972c0d146c5fe3 (diff) | |
| download | perlweeklychallenge-club-072d2dd87866a643be808e1e8e1869f478d7ddf4.tar.gz perlweeklychallenge-club-072d2dd87866a643be808e1e8e1869f478d7ddf4.tar.bz2 perlweeklychallenge-club-072d2dd87866a643be808e1e8e1869f478d7ddf4.zip | |
Solutions to challenges 1 and 2
Changes to be committed:
new file: challenge-014/athanasius/blog.txt
new file: challenge-014/athanasius/perl5/ch-1.pl
new file: challenge-014/athanasius/perl5/ch-2.pl
new file: challenge-014/athanasius/perl6/ch-1.p6
new file: challenge-014/athanasius/perl6/ch-2.p6
new file: challenge-014/athanasius/words_alpha.txt
| -rw-r--r-- | challenge-014/athanasius/blog.txt | 1 | ||||
| -rw-r--r-- | challenge-014/athanasius/perl5/ch-1.pl | 65 | ||||
| -rw-r--r-- | challenge-014/athanasius/perl5/ch-2.pl | 147 | ||||
| -rw-r--r-- | challenge-014/athanasius/perl6/ch-1.p6 | 48 | ||||
| -rw-r--r-- | challenge-014/athanasius/perl6/ch-2.p6 | 133 | ||||
| -rw-r--r-- | challenge-014/athanasius/words_alpha.txt | 370099 |
6 files changed, 370493 insertions, 0 deletions
diff --git a/challenge-014/athanasius/blog.txt b/challenge-014/athanasius/blog.txt new file mode 100644 index 0000000000..d4e3ec5bdc --- /dev/null +++ b/challenge-014/athanasius/blog.txt @@ -0,0 +1 @@ +http://blogs.perl.org/users/athanasius/2019/06/perl-weekly-challenge-014.html diff --git a/challenge-014/athanasius/perl5/ch-1.pl b/challenge-014/athanasius/perl5/ch-1.pl new file mode 100644 index 0000000000..6f5b2b73e4 --- /dev/null +++ b/challenge-014/athanasius/perl5/ch-1.pl @@ -0,0 +1,65 @@ +#!perl + +################################################################################ +=comment + +Perl Weekly Challenge 014 +========================= + +Challenge #1 +------------ + +Write a script to generate Van Eck's sequence starts with 0. For more +information, please check out wikipedia +[ https://en.wikipedia.org/wiki/Van_Eck%27s_sequence |page]. This challenge was +proposed by team member *Andrezgz*. + +=cut +################################################################################ + +#--------------------------------------# +# Copyright © 2019 PerlMonk Athanasius # +#--------------------------------------# + +use strict; +use warnings; +use Const::Fast; +use Regexp::Common; + +const my $LENGTH => 27; +const my $USAGE => "USAGE: perl $0 [<length>]"; + +$| = 1; + +MAIN: +{ + scalar @ARGV <= 1 + or die "\n$USAGE\n"; + + my $length = $ARGV[0] // $LENGTH; + + $length =~ /^$RE{num}{int}$/ && $length > 0 + or die "\nInvalid length '$length': must be an integer > 0\n"; + + print "\nThe first $length terms in Van Eck's sequence are:\n", + join( ', ', van_eck($length)->@* ), "\n"; +} + +sub van_eck +{ + my ($len) = @_; + my @seq = (undef, 0); + my %indices; + + for my $n (1 .. $len - 1) + { + my $old_term = $seq[$n]; + push @seq, exists $indices{$old_term} ? $n - $indices{$old_term} : 0; + $indices{$old_term} = $n; + } + + shift @seq; + return \@seq; +} + +################################################################################ diff --git a/challenge-014/athanasius/perl5/ch-2.pl b/challenge-014/athanasius/perl5/ch-2.pl new file mode 100644 index 0000000000..cee1b11946 --- /dev/null +++ b/challenge-014/athanasius/perl5/ch-2.pl @@ -0,0 +1,147 @@ +#!perl + +################################################################################ +=comment + +Perl Weekly Challenge 014 +========================= + +Challenge #2 +------------ + +Using only the official postal (2-letter) abbreviations for the 50 U.S. states, +write a script to find the longest English word you can spell? Here is the list +of U.S. states abbreviations as per wikipedia +[ https://en.wikipedia.org/wiki/List_of_U.S._state_abbreviations |page]. This +challenge was proposed by team member *Neil Bowers*. + + For example, + Pennsylvania + Connecticut = PACT + Wisconsin + North Dakota = WIND + Maine + Alabama = MEAL + California + Louisiana + Massachusetts + Rhode Island = Calamari + +=cut +################################################################################ + +#--------------------------------------# +# Copyright © 2019 PerlMonk Athanasius # +#--------------------------------------# + +use strict; +use utf8; +use warnings; +use Const::Fast; +use constant TIMER => 1; + +# Abbreviations according to the "USPS" (United States Postal Service) column of +# the Table in https://en.wikipedia.org/wiki/List_of_U.S._state_abbreviations + +const my %STATES_POSTAL => + ( + AL => 'Alabama', AK => 'Alaska', AZ => 'Arizona', + AR => 'Arkansas', CA => 'California', CO => 'Colorado', + CT => 'Connecticut', DE => 'Delaware', FL => 'Florida', + GA => 'Georgia', HI => 'Hawaii', ID => 'Idaho', + IL => 'Illinois', IN => 'Indiana', IA => 'Iowa', + KS => 'Kansas', KY => 'Kentucky', LA => 'Louisiana', + ME => 'Maine', MD => 'Maryland', MA => 'Massachusetts', + MI => 'Michigan', MN => 'Minnesota', MS => 'Mississippi', + MO => 'Missouri', MT => 'Montana', NE => 'Nebraska', + NV => 'Nevada', NH => 'New Hampshire', NJ => 'New Jersey', + NM => 'New Mexico', NY => 'New York', NC => 'North Carolina', + ND => 'North Dakota', OH => 'Ohio', OK => 'Oklahoma', + OR => 'Oregon', PA => 'Pennsylvania', RI => 'Rhode Island', + SC => 'South Carolina', SD => 'South Dakota', TN => 'Tennessee', + TX => 'Texas', UT => 'Utah', VT => 'Vermont', + VA => 'Virginia', WA => 'Washington', WV => 'West Virginia', + WI => 'Wisconsin', WY => 'Wyoming', + ); + +# Regular expression to match (case-insensitively, but otherwise exactly) any +# one of the 50 state postal abbreviations + +const my $STATES_REGEX => + eval 'qr/^(?:' . join('|', keys %STATES_POSTAL) . ')$/i'; + +# Dictionary file downloaded from https://github.com/dwyl/english-words + +const my $WORDS_FILE => '../words_alpha.txt'; + +$| = 1; + +MAIN: +{ + use if TIMER, 'Time::HiRes' => qw( gettimeofday tv_interval ); + my $t0 = [gettimeofday] if TIMER; + my ($total, $words) = get_words(); + + printf "\n%d words read from file '$WORDS_FILE', of which\n" . + "%6d can be formed from US state abbreviations\n", + $total, scalar @$words; + + if (scalar @$words == 0) + { + print "\nNo solutions found\n"; + } + else + { + my $solutions = get_solutions($words); + + printf "\nThe longest of these ha%s %d letters:\n", + (scalar @$solutions == 1) ? 's' : 've', length $solutions->[0]; + + for my $solution (@$solutions) + { + my @states = map { $STATES_POSTAL{uc $_} } $solution =~ /../g; + + printf "%s = %s\n", $solution, join(' + ', @states); + } + } + + my $t = tv_interval($t0) if TIMER; + print "\n", $t, " seconds\n" if TIMER; +} + +sub get_words +{ + my $total = 0; + my @words; + + open my $fh, '<', $WORDS_FILE + or die "Cannot open file '$WORDS_FILE' for reading, stopped"; + + WORD: + while (my $word = <$fh>) + { + ++$total; + chomp $word; + next unless length($word) % 2 == 0; + + for my $pair ($word =~ /../g) + { + next WORD unless $pair =~ $STATES_REGEX; + } + + push @words, $word; + } + + close $fh + or die "Cannot close file '$WORDS_FILE', stopped"; + + return ($total, \@words); +} + +sub get_solutions +{ + my ($words) = @_; + @$words = sort { length $b <=> length $a } @$words; # Descending + my $index = 0; + my $max_len = length $words->[$index]; + + 1 while length $words->[++$index] == $max_len; + + return [ @$words[0 .. --$index] ]; # Alternative syntax: $words->@[...] +} + +################################################################################ diff --git a/challenge-014/athanasius/perl6/ch-1.p6 b/challenge-014/athanasius/perl6/ch-1.p6 new file mode 100644 index 0000000000..c2792a390e --- /dev/null +++ b/challenge-014/athanasius/perl6/ch-1.p6 @@ -0,0 +1,48 @@ +use v6; + +################################################################################ +=begin comment + +Perl Weekly Challenge 014 +========================= + +Challenge #1 +------------ + +Write a script to generate Van Eck's sequence starts with 0. For more +information, please check out wikipedia +[ https://en.wikipedia.org/wiki/Van_Eck%27s_sequence |page]. This challenge was +proposed by team member *Andrezgz*. + +=end comment +################################################################################ + +#--------------------------------------# +# Copyright © 2019 PerlMonk Athanasius # +#--------------------------------------# + +my Int constant $LENGTH = 27; + +sub MAIN(Int:D $length = $LENGTH) +{ + say "\nThe first $length terms in Van Eck's sequence are:\n", + van-eck($length).join(', '); +} + +sub van-eck(Int:D $length --> Array) +{ + my @seq = (Nil, 0); + my %indices; + + for 1 .. $length - 1 -> Int $n + { + my $old_term = @seq[$n]; + push @seq, %indices{$old_term}:exists ?? $n - %indices{$old_term} !! 0; + %indices{$old_term} = $n; + } + + shift @seq; + return @seq; +} + +################################################################################ diff --git a/challenge-014/athanasius/perl6/ch-2.p6 b/challenge-014/athanasius/perl6/ch-2.p6 new file mode 100644 index 0000000000..ae2bed43e6 --- /dev/null +++ b/challenge-014/athanasius/perl6/ch-2.p6 @@ -0,0 +1,133 @@ +use v6; + +################################################################################ +=begin comment + +Perl Weekly Challenge 014 +========================= + +Challenge #2 +------------ + +Using only the official postal (2-letter) abbreviations for the 50 U.S. states, +write a script to find the longest English word you can spell? Here is the list +of U.S. states abbreviations as per wikipedia +[ https://en.wikipedia.org/wiki/List_of_U.S._state_abbreviations |page]. This +challenge was proposed by team member *Neil Bowers*. + + For example, + Pennsylvania + Connecticut = PACT + Wisconsin + North Dakota = WIND + Maine + Alabama = MEAL + California + Louisiana + Massachusetts + Rhode Island = Calamari + +=end comment +################################################################################ + +#--------------------------------------# +# Copyright © 2019 PerlMonk Athanasius # +#--------------------------------------# + +my constant $TIMER = 1; + +# Abbreviations according to the "USPS" (United States Postal Service) column of +# the Table in https://en.wikipedia.org/wiki/List_of_U.S._state_abbreviations + +my constant %STATES_POSTAL = +( + :AL('Alabama'), :AK('Alaska'), :AZ('Arizona'), + :AR('Arkansas'), :CA('California'), :CO('Colorado'), + :CT('Connecticut'), :DE('Delaware'), :FL('Florida'), + :GA('Georgia'), :HI('Hawaii'), :ID('Idaho'), + :IL('Illinois'), :IN('Indiana'), :IA('Iowa'), + :KS('Kansas'), :KY('Kentucky'), :LA('Louisiana'), + :ME('Maine'), :MD('Maryland'), :MA('Massachusetts'), + :MI('Michigan'), :MN('Minnesota'), :MS('Mississippi'), + :MO('Missouri'), :MT('Montana'), :NE('Nebraska'), + :NV('Nevada'), :NH('New Hampshire'), :NJ('New Jersey'), + :NM('New Mexico'), :NY('New York'), :NC('North Carolina'), + :ND('North Dakota'), :OH('Ohio'), :OK('Oklahoma'), + :OR('Oregon'), :PA('Pennsylvania'), :RI('Rhode Island'), + :SC('South Carolina'), :SD('South Dakota'), :TN('Tennessee'), + :TX('Texas'), :UT('Utah'), :VT('Vermont'), + :VA('Virginia'), :WA('Washington'), :WV('West Virginia'), + :WI('Wisconsin'), :WY('Wyoming'), +); + +my constant $STATES = Set[Str].new( %STATES_POSTAL.keys ); + +# Dictionary file downloaded from https://github.com/dwyl/english-words + +my Str constant $WORDS_FILE = '../words_alpha.txt'; + +sub MAIN() +{ + my DateTime $t0 = DateTime.now if $TIMER; + + my (Int:D $total, Array:D $words) = get-words(); + + say "\n$total words read from file '$WORDS_FILE', of which\n", + sprintf('%*d', $total.chars, $words.elems), + ' can be formed from US state abbreviations'; + + if ($words.elems == 0) + { + say "\nNo solutions found"; + } + else + { + my (Int:D $max-len, List:D $solutions) = get-solutions($words); + + say "\nThe longest of these ", + "ha{ $solutions.elems == 1 ?? 's' !! 've' } $max-len letters:"; + + for @$solutions -> Str:D $solution + { + my @states = ($solution ~~ m:g/../).map: { %STATES_POSTAL{.uc} }; + + say $solution, ' = ', @states.join(' + '); + } + } + + if ($TIMER) + { + my DateTime $t = DateTime.now; + say "\nTime elapsed: { $t - $t0 } seconds"; + } +} + +sub get-words(--> List:D) +{ + my Int $total = 0; + my @words; + + WORD: + for $WORDS_FILE.IO.lines -> Str $word + { + ++$total; + + next unless $word.chars % 2 == 0; + + for $word ~~ m:g/../ -> Match $pair + { + next WORD unless $pair.uc ∈ $STATES; + } + + @words.push: $word; + } + + return $total, @words; +} + +sub get-solutions(Array:D $words --> List:D) +{ + my @words = $words.sort: { .chars }; + my Int $index = @words.end; + my Int $max-len = @words[ $index ].chars; + + Nil while @words[ --$index ].chars == $max-len; + + return $max-len, @words[ ++$index .. * ]; +} + +################################################################################ diff --git a/challenge-014/athanasius/words_alpha.txt b/challenge-014/athanasius/words_alpha.txt new file mode 100644 index 0000000000..413bbb8055 --- /dev/null +++ b/challenge-014/athanasius/words_alpha.txt @@ -0,0 +1,370099 @@ +a +aa +aaa +aah +aahed +aahing +aahs +aal +aalii +aaliis +aals +aam +aani +aardvark +aardvarks +aardwolf +aardwolves +aargh +aaron +aaronic +aaronical +aaronite +aaronitic +aarrgh +aarrghh +aaru +aas +aasvogel +aasvogels +ab +aba +ababdeh +ababua +abac +abaca +abacay +abacas +abacate +abacaxi +abaci +abacinate +abacination +abacisci +abaciscus +abacist +aback +abacli +abacot +abacterial +abactinal +abactinally +abaction +abactor +abaculi +abaculus +abacus +abacuses +abada +abaddon +abadejo +abadengo +abadia +abadite +abaff +abaft +abay +abayah +abaisance +abaised +abaiser +abaisse +abaissed +abaka +abakas +abalation +abalienate +abalienated +abalienating +abalienation +abalone +abalones +abama +abamp +abampere +abamperes +abamps +aband +abandon +abandonable +abandoned +abandonedly +abandonee +abandoner +abandoners +abandoning +abandonment +abandonments +abandons +abandum +abanet +abanga +abanic +abannition +abantes +abapical +abaptiston +abaptistum +abarambo +abaris +abarthrosis +abarticular +abarticulation +abas +abase +abased +abasedly +abasedness +abasement +abasements +abaser +abasers +abases +abasgi +abash +abashed +abashedly +abashedness +abashes +abashing +abashless +abashlessly +abashment +abashments +abasia +abasias +abasic +abasing +abasio +abask +abassi +abassin +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 +abatua +abature +abaue +abave +abaxial +abaxile +abaze +abb +abba +abbacy +abbacies +abbacomes +abbadide +abbaye +abbandono +abbas +abbasi +abbasid +abbassi +abbasside +abbate +abbatial +abbatical +abbatie +abbe +abbey +abbeys +abbeystead +abbeystede +abbes +abbess +abbesses +abbest +abbevillian +abby +abbie +abboccato +abbogada +abbot +abbotcy +abbotcies +abbotnullius +abbotric +abbots +abbotship +abbotships +abbott +abbozzo +abbr +abbrev +abbreviatable +abbreviate +abbreviated +abbreviately +abbreviates +abbreviating +abbreviation +abbreviations +abbreviator +abbreviatory +abbreviators +abbreviature +abbroachment +abc +abcess +abcissa +abcoulomb +abd +abdal +abdali +abdaria +abdat +abderian +abderite +abdest +abdicable +abdicant +abdicate +abdicated +abdicates +abdicating +abdication +abdications +abdicative +abdicator +abdiel +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 +abe +abeam +abear +abearance +abecedaire +abecedary +abecedaria +abecedarian +abecedarians +abecedaries +abecedarium +abecedarius +abed +abede +abedge +abegge +abey +abeyance +abeyances +abeyancy +abeyancies +abeyant +abeigh +abel +abele +abeles +abelia +abelian +abelicea +abelite +abelmoschus +abelmosk +abelmosks +abelmusk +abelonian +abeltree +abencerrages +abend +abends +abenteric +abepithymia +aberdavine +aberdeen +aberdevine +aberdonian +aberduvine +aberia +abernethy +aberr +aberrance +aberrancy +aberrancies +aberrant +aberrantly +aberrants +aberrate +aberrated +aberrating +aberration +aberrational +aberrations +aberrative +aberrator +aberrometer +aberroscope +aberuncate +aberuncator +abesse +abessive +abet +abetment +abetments +abets +abettal +abettals +abetted +abetter +abetters +abetting +abettor +abettors +abevacuation +abfarad +abfarads +abhenry +abhenries +abhenrys +abhinaya +abhiseka +abhominable +abhor +abhorred +abhorrence +abhorrences +abhorrency +abhorrent +abhorrently +abhorrer +abhorrers +abhorrible +abhorring +abhors +abhorson +aby +abib +abichite +abidal +abidance +abidances +abidden +abide +abided +abider +abiders +abides +abidi +abiding +abidingly +abidingness +abie +abye +abiegh +abience +abient +abies +abyes +abietate +abietene +abietic +abietin +abietineae +abietineous +abietinic +abietite +abiezer +abigail +abigails +abigailship +abigeat +abigei +abigeus +abying +abilao +abilene +abiliment +abilitable +ability +abilities +abilla +abilo +abime +abintestate +abiogeneses +abiogenesis +abiogenesist +abiogenetic +abiogenetical +abiogenetically +abiogeny +abiogenist +abiogenous +abiology +abiological +abiologically +abioses +abiosis +abiotic +abiotical +abiotically +abiotrophy +abiotrophic +abipon +abir +abirritant +abirritate +abirritated +abirritating +abirritation +abirritative +abys +abysm +abysmal +abysmally +abysms +abyss +abyssa +abyssal +abysses +abyssinia +abyssinian +abyssinians +abyssobenthonic +abyssolith +abyssopelagic +abyssus +abiston +abit +abitibi +abiuret +abject +abjectedness +abjection +abjections +abjective +abjectly +abjectness +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 +abkhas +abkhasian +abl +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 +able +ableeze +ablegate +ablegates +ablegation +ablend +ableness +ablepharia +ablepharon +ablepharous +ablepharus +ablepsy +ablepsia +ableptical +ableptically +abler +ables +ablesse +ablest +ablet +ablewhackets +ably +ablings +ablins +ablock +abloom +ablow +ablude +abluent +abluents +ablush +ablute +abluted +ablution +ablutionary +ablutions +abluvion +abmho +abmhos +abmodality +abmodalities +abn +abnaki +abnegate +abnegated +abnegates +abnegating +abnegation +abnegations +abnegative +abnegator +abnegators +abner +abnerval +abnet +abneural +abnormal +abnormalcy +abnormalcies +abnormalise +abnormalised +abnormalising +abnormalism +abnormalist +abnormality +abnormalities +abnormalize +abnormalized +abnormalizing +abnormally +abnormalness +abnormals +abnormity +abnormities +abnormous +abnumerable +abo +aboard +aboardage +abobra +abococket +abodah +abode +aboded +abodement +abodes +abody +aboding +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 +abolla +abollae +aboma +abomas +abomasa +abomasal +abomasi +abomasum +abomasus +abomasusi +abominability +abominable +abominableness +abominably +abominate +abominated +abominates +abominating +abomination +abominations +abominator +abominators +abomine +abondance +abongo +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 +abos +abote +abouchement +aboudikro +abought +aboulia +aboulias +aboulic +abound +abounded +abounder +abounding +aboundingly +abounds +about +abouts +above +aboveboard +abovedeck +aboveground +abovementioned +aboveproof +aboves +abovesaid +abovestairs +abow +abox +abp +abr +abracadabra +abrachia +abrachias +abradable +abradant +abradants +abrade +abraded +abrader +abraders +abrades +abrading +abraham +abrahamic +abrahamidae +abrahamite +abrahamitic +abray +abraid +abram +abramis +abranchial +abranchialism +abranchian +abranchiata +abranchiate +abranchious +abrasax +abrase +abrased +abraser +abrash +abrasing +abrasiometer +abrasion +abrasions +abrasive +abrasively +abrasiveness +abrasives +abrastol +abraum +abraxas +abrazite +abrazitic +abrazo +abrazos +abreact +abreacted +abreacting +abreaction +abreactions +abreacts +abreast +abreed +abrege +abreid +abrenounce +abrenunciate +abrenunciation +abreption +abret +abreuvoir +abri +abrico +abricock +abricot +abridgable +abridge +abridgeable +abridged +abridgedly +abridgement +abridgements +abridger +abridgers +abridges +abridging +abridgment +abridgments +abrim +abrin +abrine +abris +abristle +abroach +abroad +abrocoma +abrocome +abrogable +abrogate +abrogated +abrogates +abrogating +abrogation +abrogations +abrogative +abrogator +abrogators +abroma +abronia +abrood +abrook +abrosia +abrosias +abrotanum +abrotin +abrotine +abrupt +abruptedly +abrupter +abruptest +abruptio +abruption +abruptiones +abruptly +abruptness +abrus +abs +absalom +absampere +absaroka +absarokite +abscam +abscess +abscessed +abscesses +abscessing +abscession +abscessroot +abscind +abscise +abscised +abscises +abscising +abscisins +abscision +absciss +abscissa +abscissae +abscissas +abscisse +abscissin +abscission +abscissions +absconce +abscond +absconded +abscondedly +abscondence +absconder +absconders +absconding +absconds +absconsa +abscoulomb +abscound +absee +absey +abseil +abseiled +abseiling +abseils +absence +absences +absent +absentation +absented +absentee +absenteeism +absentees +absenteeship +absenter +absenters +absentia +absenting +absently +absentment +absentminded +absentmindedly +absentmindedness +absentness +absents +absfarad +abshenry +absi +absinth +absinthe +absinthes +absinthial +absinthian +absinthiate +absinthiated +absinthiating +absinthic +absinthiin +absinthin +absinthine +absinthism +absinthismic +absinthium +absinthol +absinthole +absinths +absyrtus +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 +abs |
