diff options
| author | Javier Luque <javier.luque@humanstate.com> | 2020-09-04 11:07:21 +0100 |
|---|---|---|
| committer | Javier Luque <javier.luque@humanstate.com> | 2020-09-04 11:07:21 +0100 |
| commit | 0a23aad9c509bc42485473e6f8d448b000352976 (patch) | |
| tree | 6c18706f33d6257d9cf5d5e3daa03f7af36662e7 | |
| parent | 4b7d981fa944048d6ed99b1fa0f940bdea4e5b96 (diff) | |
| download | perlweeklychallenge-club-0a23aad9c509bc42485473e6f8d448b000352976.tar.gz perlweeklychallenge-club-0a23aad9c509bc42485473e6f8d448b000352976.tar.bz2 perlweeklychallenge-club-0a23aad9c509bc42485473e6f8d448b000352976.zip | |
Solutions to challenge 76
| -rw-r--r-- | challenge-076/javier-luque/blog.txt | 1 | ||||
| -rw-r--r-- | challenge-076/javier-luque/perl/ch-1.pl | 56 | ||||
| -rw-r--r-- | challenge-076/javier-luque/perl/ch-2.pl | 83 | ||||
| -rw-r--r-- | challenge-076/javier-luque/perl/challenge.txt | 19 | ||||
| -rw-r--r-- | challenge-076/javier-luque/perl/words.txt | 466550 | ||||
| -rw-r--r-- | challenge-076/javier-luque/raku/ch-1.p6 | 55 | ||||
| -rw-r--r-- | challenge-076/javier-luque/raku/ch-2.p6 | 77 | ||||
| -rw-r--r-- | challenge-076/javier-luque/raku/challenge.txt | 19 | ||||
| -rw-r--r-- | challenge-076/javier-luque/raku/words.txt | 466550 |
9 files changed, 933410 insertions, 0 deletions
diff --git a/challenge-076/javier-luque/blog.txt b/challenge-076/javier-luque/blog.txt new file mode 100644 index 0000000000..77101fd097 --- /dev/null +++ b/challenge-076/javier-luque/blog.txt @@ -0,0 +1 @@ +https://perlchallenges.wordpress.com/2020/09/04/perl-weekly-challenge-076/ diff --git a/challenge-076/javier-luque/perl/ch-1.pl b/challenge-076/javier-luque/perl/ch-1.pl new file mode 100644 index 0000000000..dd3f18946f --- /dev/null +++ b/challenge-076/javier-luque/perl/ch-1.pl @@ -0,0 +1,56 @@ +#!/usr/bin/perl +# Test: ./ch-1.pl +use Modern::Perl; +use Math::Prime::Util qw /factor is_prime/; + +my $N = shift // 9; +say min_primes($N); + +# Even primes will always have min 2 primes +# Odds will have min 2 or 3 +# AKA goldbach conjecture +sub min_primes { + my $n = shift; + + if (is_prime($n)) { + return "$n is already prime"; + } + + if ($n % 2 == 0) { + my $i = 2; + + for (my $j = $n - $i; $j > 2; $j--) { + if (is_prime($i) && is_prime($j)) { + return "$i + $j = $n" + } + $i++; + } + } else { + my $i = 2; + my $possible; + + for (my $k = 0; $k < $n - $i; $k++ ) { + next if ( $k != 0 + && ( $k == 1 || !is_prime($k)) ); + + for (my $j = $n - $i - $k; $j > 2; $j--) { + + if ( $k == 0 && is_prime($i) + && is_prime($j) ) { + return "$i + $j = $n"; + } + + if ( $k > 0 && is_prime($k) + && is_prime($i) + && is_prime($j) ) { + $possible = "$k + $i + $j = $n"; + } + $i++; + } + + $i = 2; + } + + return $possible; + } +} diff --git a/challenge-076/javier-luque/perl/ch-2.pl b/challenge-076/javier-luque/perl/ch-2.pl new file mode 100644 index 0000000000..761ed5cb8e --- /dev/null +++ b/challenge-076/javier-luque/perl/ch-2.pl @@ -0,0 +1,83 @@ +#!/usr/bin/perl +# Test: ./ch-2.pl +use Modern::Perl; +use Data::Dumper; + +my $matrix = letters_to_matrix(shift); +my $words = dictionary_to_hash(shift); + +my $max_height = scalar @$matrix; +my $max_width = scalar @{$matrix->[0]}; +my @answers; + +# Loop through each letter +# from left to right +for my $i (0 .. $max_height - 1) { + for my $j (0 .. $max_width - 1) { + push @answers, + find_words($matrix, $words, $i, + $j, $max_height, $max_width); + } +} + +say "Found " . scalar(@answers) . " words:"; +say join ', ', sort @answers; + +sub find_words { + my ($matrix, $words, $row, $col, $h, $w) = @_; + my @found; + + # Orthogonal directions with 1 on top + # 1t 2tr 3r 4br 5b 6bl 7l 8tl + for my $x (1 .. 8) { + my $i = $row; + my $j = $col; + my $possible_word = ''; + + while ($i >= 0 && $j >=0 && $i < $h && $j < $w) { + $possible_word .= lc($matrix->[$i][$j]); + + push @found, $possible_word + if ($words->{$possible_word}); + + # Next position calculations + $i-- if ($x == 1 || $x == 2 || $x == 8); + $i++ if ($x == 4 || $x == 5 || $x == 6); + $j-- if ($x == 6 || $x == 7 || $x == 8); + $j++ if ($x == 2 || $x == 3 || $x == 4); + } + } + + return @found; +} + +# Load the letters into a matrix +sub letters_to_matrix { + my $filename = shift || 'challenge.txt'; + my @letter_matrix; + + open(my $fh, '<:encoding(UTF-8)', $filename) || die "$@"; + while (my $row = <$fh>) { + chomp $row; + my @letters = split (' ', $row); + push @letter_matrix, \@letters; + } + + return \@letter_matrix +} + +# Load the dictionary into memory +sub dictionary_to_hash { + my $filename = shift || 'words.txt'; + my %possible_words; + + # Challenge only wants words greater + # than 5 so just keep those + open(my $fh, '<:encoding(UTF-8)', $filename) || die "$@"; + while (my $row = <$fh>) { + chomp $row; + $possible_words{lc($row)} = 1 + if (length($row) >= 5); + } + return \%possible_words; +} diff --git a/challenge-076/javier-luque/perl/challenge.txt b/challenge-076/javier-luque/perl/challenge.txt new file mode 100644 index 0000000000..31cf2e0fd8 --- /dev/null +++ b/challenge-076/javier-luque/perl/challenge.txt @@ -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/javier-luque/perl/words.txt b/challenge-076/javier-luque/perl/words.txt new file mode 100644 index 0000000000..1a148e67f5 --- /dev/null +++ b/challenge-076/javier-luque/perl/words.txt @@ -0,0 +1,466550 @@ +2 +1080 +&c +10-point +10th +11-point +12-point +16-point +18-point +1st +2,4,5-t +2,4-d +20-point +2D +2nd +30-30 +3D +3-D +3M +3rd +48-point +4-D +4GL +4H +4th +5-point +5-T +5th +6-point +6th +7-point +7th +8-point +8th +9-point +9th +a +a' +a- +A&M +A&P +A. +A.A.A. +A.B. +A.B.A. +A.C. +A.D. +A.D.C. +A.F. +A.F.A.M. +A.G. +A.H. +A.I. +A.I.A. +A.I.D. +A.L. +A.L.P. +A.M. +A.M.A. +A.M.D.G. +A.N. +a.p. +a.r. +A.R.C.S. +A.U. +A.U.C. +A.V. +a.w. +A.W.O.L. +A/C +A/F +A/O +A/P +A/V +A1 +A-1 +A4 +A5 +AA +AAA +AAAA +AAAAAA +AAAL +AAAS +Aaberg +Aachen +AAE +AAEE +AAF +AAG +aah +aahed +aahing +aahs +AAII +aal +Aalborg +Aalesund +aalii +aaliis +aals +Aalst +Aalto +AAM +AAMSI +Aandahl +A-and-R +Aani +AAO +AAP +AAPSS +Aaqbiye +Aar +Aara +Aarau +AARC +aardvark +aardvarks +aardwolf +aardwolves +Aaren +Aargau +aargh +Aarhus +Aarika +Aaron +Aaronic +Aaronical +Aaronite +Aaronitic +Aaron's-beard +Aaronsburg +Aaronson +AARP +aarrgh +aarrghh +Aaru +AAS +A'asia +aasvogel +aasvogels +AAU +AAUP +AAUW +AAVSO +AAX +A-axes +A-axis +AB +ab- +ABA +Ababa +Ababdeh +Ababua +abac +abaca +abacay +abacas +abacate +abacaxi +abaci +abacinate +abacination +abacisci +abaciscus +abacist +aback +abacli +Abaco +abacot +abacterial +abactinal +abactinally +abaction +abactor +abaculi +abaculus +abacus +abacuses +Abad +abada +Abadan +Abaddon +abadejo +abadengo +abadia +Abadite +abaff +abaft +Abagael +Abagail +Abagtha +abay +abayah +Abailard +abaisance +abaised +abaiser +abaisse +abaissed +abaka +Abakan +abakas +Abakumov +abalation +abalienate +abalienated +abalienating +abalienation +abalone +abalones +Abama +abamp +abampere +abamperes +abamps +Abana +aband +abandon +abandonable +abandoned +abandonedly +abandonee +abandoner +abandoners +abandoning +abandonment +abandonments +abandons +abandum +abanet +abanga +Abanic +abannition +Abantes +abapical +abaptiston +abaptistum +Abarambo +Abarbarea +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 +Abassieh +Abassin +abastard +abastardize +abastral +abatable +abatage +Abate +abated +abatement +abatements +abater +abaters +abates +abatic +abating +abatis +abatised +abatises +abatjour +abatjours +abaton +abator +abators +ABATS +abattage +abattis +abattised +abattises +abattoir +abattoirs +abattu +abattue +Abatua +abature +abaue +abave +abaxial +abaxile +abaze +abb +Abba +abbacy +abbacies +abbacomes +Abbadide +Abbai +abbaye +abbandono +abbas +abbasi +Abbasid +abbassi +Abbassid +Abbasside +Abbate +abbatial +abbatical +abbatie +Abbe +Abbey +abbeys +abbey's +abbeystead +abbeystede +abbes +abbess +abbesses +abbest +Abbevilean +Abbeville +Abbevillian +Abbi +Abby +Abbie +Abbye +Abbyville +abboccato +abbogada +Abbot +abbotcy +abbotcies +abbotnullius +abbotric +abbots +abbot's +Abbotsen +Abbotsford +abbotship +abbotships +Abbotson +Abbotsun +Abbott +Abbottson +Abbottstown +Abboud +abbozzo +ABBR +abbrev +abbreviatable +abbreviate +abbreviated +abbreviately +abbreviates +abbreviating +abbreviation +abbreviations +abbreviator +abbreviatory +abbreviators +abbreviature +abbroachment +ABC +abcess +abcissa +abcoulomb +ABCs +abd +abdal +abdali +abdaria +abdat +Abdel +Abd-el-Kadir +Abd-el-Krim +Abdella +Abderhalden +Abderian +Abderite +Abderus +abdest +Abdias +abdicable +abdicant +abdicate +abdicated +abdicates +abdicating +abdication +abdications +abdicative +abdicator +Abdiel +abditive +abditory +abdom +abdomen +abdomens +abdomen's +abdomina +abdominal +Abdominales +abdominalia +abdominalian +abdominally +abdominals +abdominoanterior +abdominocardiac +abdominocentesis +abdominocystic +abdominogenital +abdominohysterectomy +abdominohysterotomy +abdominoposterior +abdominoscope +abdominoscopy +abdominothoracic +abdominous +abdomino-uterotomy +abdominovaginal +abdominovesical +Abdon +Abdu +abduce +abduced +abducens +abducent +abducentes +abduces +abducing +abduct +abducted +abducting +abduction +abductions +abduction's +abductor +abductores +abductors +abductor's +abducts +Abdul +Abdul-Aziz +Abdul-baha +Abdulla +Abe +a-be +abeam +abear +abearance +Abebi +abecedaire +abecedary +abecedaria +abecedarian +abecedarians +abecedaries +abecedarium +abecedarius +abed +abede +abedge +Abednego +abegge +Abey +abeyance +abeyances +abeyancy +abeyancies +abeyant +abeigh +ABEL +Abelard +abele +abeles +Abelia +Abelian +Abelicea +Abelite +Abell +Abelmoschus +abelmosk +abelmosks +abelmusk +Abelonian +Abelson +abeltree +Abencerrages +abend +abends +Abenezra +abenteric +Abeokuta +abepithymia +ABEPP +Abercromby +Abercrombie +Aberdare +aberdavine +Aberdeen +Aberdeenshire +aberdevine +Aberdonian +aberduvine +Aberfan +Aberglaube +Aberia +Aberystwyth +Abernant +Abernathy +abernethy +Abernon +aberr +aberrance +aberrancy +aberrancies +aberrant +aberrantly +aberrants +aberrate +aberrated +aberrating +aberration +aberrational +aberrations +aberrative +aberrator +aberrometer +aberroscope +Abert +aberuncate +aberuncator +abesse +abessive +abet +abetment +abetments +abets +abettal +abettals +abetted +abetter +abetters +abetting +abettor +abettors +Abeu +abevacuation +abfarad +abfarads +ABFM +Abgatha +ABHC +abhenry +abhenries +abhenrys +abhinaya +abhiseka +abhominable +abhor +abhorred +abhorrence +abhorrences +abhorrency +abhorrent +abhorrently +abhorrer +abhorrers +abhorrible +abhorring +abhors +Abhorson +ABI +aby +Abia +Abiathar +Abib +abichite +abidal +abidance +abidances +abidden +abide +abided +abider +abiders +abides +abidi +abiding +abidingly +abidingness +Abidjan +Abydos +Abie +abye +abied +abyed +abiegh +abience +abient +Abies +abyes +abietate +abietene +abietic +abietin +Abietineae +abietineous +abietinic +abietite +Abiezer +Abigael +Abigail +abigails +abigailship +Abigale +abigeat +abigei +abigeus +Abihu +abying +Abijah +Abyla +abilao +Abilene +abiliment +Abilyne +abilitable +ability +abilities +ability's +abilla +abilo +abime +Abimelech +Abineri +Abingdon +Abinger +Abington +Abinoam +Abinoem +abintestate +abiogeneses +abiogenesis +abiogenesist +abiogenetic +abiogenetical +abiogenetically +abiogeny +abiogenist +abiogenous +abiology +abiological +abiologically +abioses +abiosis +abiotic +abiotical +abiotically +abiotrophy +abiotrophic +Abipon +Abiquiu +abir +abirritant +abirritate +abirritated +abirritating +abirritation +abirritative +abys +Abisag +Abisha +Abishag +Abisia +abysm +abysmal +abysmally +abysms +Abyss +abyssa +abyssal +abysses +Abyssinia +Abyssinian +abyssinians +abyssobenthonic +abyssolith +abyssopelagic +abyss's +abyssus +abiston +abit +Abitibi +Abiu +abiuret +Abixah +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 +Abkhas +Abkhasia +Abkhasian +Abkhaz +Abkhazia +Abkhazian +abl +abl. +ablach +ablactate +ablactated +ablactating +ablactation +ablaqueate +ablare +A-blast +ablastemic +ablastin +ablastous +ablate +ablated +ablates +ablating +ablation +ablations +ablatitious +ablatival +ablative +ablatively +ablatives +ablator +ablaut +ablauts +ablaze +able +able-bodied +able-bodiedness +ableeze +ablegate +ablegates +ablegation +able-minded +able-mindedness +ablend +ableness +ablepharia +ablepharon +ablepharous +Ablepharus +ablepsy +ablepsia +ableptical +ableptically +abler +ables +ablesse +ablest +ablet +ablewhackets +ably +ablings +ablins +ablock +abloom +ablow +ABLS +ablude +abluent +abluents +ablush +ablute +abluted +ablution +ablutionary +ablutions +abluvion +ABM +abmho +abmhos +abmodality +abmodalities +abn +Abnaki +Abnakis +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 +abode's +abody +aboding +abogado +abogados +abohm +abohms +aboideau +aboideaus +aboideaux +aboil +aboiteau +aboiteaus +aboiteaux +abolete +abolish +abolishable +abolished +abolisher +abolishers +abolishes +abolishing +abolishment +abolishments +abolishment's +abolition +abolitionary +abolitionise +abolitionised +abolitionising +abolitionism +abolitionist +abolitionists +abolitionize +abolitionized +abolitionizing +abolitions +abolla +abollae +aboma +abomas +abomasa +abomasal +abomasi +abomasum +abomasus +abomasusi +A-bomb +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 +aborigine's +Abor-miri +Aborn +aborning +a-borning +aborsement +aborsive +abort +aborted +aborter +aborters +aborticide +abortient +abortifacient +abortin +aborting +abortion +abortional +abortionist +abortionists +abortions +abortion's +abortive +abortively +abortiveness +abortogenic +aborts +abortus +abortuses +abos +abote +Abott +abouchement +aboudikro +abought +Aboukir +aboulia +aboulias +aboulic +abound +abounded +abounder +abounding +aboundingly +abounds +Abourezk +about +about-face +about-faced +about-facing +abouts +about-ship +about-shipped +about-shipping +about-sledge +about-turn +above +aboveboard +above-board +above-cited +abovedeck +above-found +above-given +aboveground +abovementioned +above-mentioned +above-named +aboveproof +above-quoted +above-reported +aboves +abovesaid +above-said +abovestairs +above-water +above-written +abow +abox +Abp +ABPC +Abqaiq +abr +abr. +Abra +abracadabra +abrachia +abrachias +abradable +abradant +abradants +abrade +abraded +abrader +abraders +abrades +abrading +Abraham +Abrahamic +Abrahamidae +Abrahamite +Abrahamitic +Abraham-man +Abrahams +Abrahamsen +Abrahan +abray +abraid +Abram +Abramis +Abramo +Abrams +Abramson +Abran +abranchial +abranchialism +abranchian +Abranchiata +abranchiate +abranchious +abrasax +abrase +abrased +abraser +abrash +abrasing +abrasiometer +abrasion +abrasions +abrasion's +abrasive +abrasively +abrasiveness +abrasivenesses +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 +Abroms +Abronia +abrood +abrook +abrosia +abrosias +abrotanum +abrotin +abrotine +abrupt +abruptedly +abrupter +abruptest +abruptio +abruption +abruptiones +abruptly +abruptness +Abrus +Abruzzi +ABS +abs- +Absa +Absalom +absampere +Absaraka +Absaroka +Absarokee +absarokite +ABSBH +abscam +abscess +abscessed +abscesses +abscessing +abscession +abscessroot +abscind +abscise +abscised +abscises +abscisin +abscising +abscisins +abscision +absciss +abscissa +abscissae +abscissas +abscissa's +abscisse +abscissin +abscission +abscissions +absconce +abscond +absconded +abscondedly +abscondence +absconder +absconders +absconding +absconds +absconsa +abscoulomb +abscound +Absecon +absee +absey +abseil +abseiled +abseiling +abseils +absence +absences +absence's +absent +absentation +absented +absentee +absenteeism +absentees +absentee's +absenteeship +absenter +absenters +absentia +absenting +absently +absentment +absentminded +absent-minded +absentmindedly +absent-mindedly +absentmindedness +absent-mindedness +absentmindednesses +absentness +absents +absfarad +abshenry +Abshier +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 +absonous +absorb +absorbability +absorbable +absorbance +absorbancy +absorbant +absorbed +absorbedly +absorbedness +absorbefacient +absorbency +absorbencies +absorbent +absorbents +absorber +absorbers +absorbing +absorbingly +absorbition +absorbs +absorbtion +absorpt +absorptance +absorptiometer +absorptiometric +absorption +absorptional +absorptions +absorption's +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 +abstraction's +abstractitious +abstractive +abstractively +abstractiveness +abstractly +abstractness +abstractnesses +abstractor +abstractors +abstractor's +abstracts +abstrahent +abstrict +abstricted +abstricting +abstriction +abstricts +abstrude +abstruse +abstrusely +abst |
