From af02e453c16300bd608080c293fac97881b07a8e Mon Sep 17 00:00:00 2001 From: = <=> Date: Wed, 7 Feb 2024 15:06:50 +0100 Subject: [PATCH] first commit --- launch.py | 1 + p10/__pycache__/solution.cpython-37.pyc | Bin 0 -> 333 bytes p10/solution.py | 7 + p102/solution.jl | 26 + p102/triangles.txt | 1000 +++++++++++++++++ p104/solution.jl | 15 + p11/__pycache__/solution.cpython-37.pyc | Bin 0 -> 2254 bytes p11/solution.py | 65 ++ p12/__pycache__/solution.cpython-37.pyc | Bin 0 -> 956 bytes p12/solution.py | 21 + p13/solution.py | 111 ++ p14/solution.py | 34 + p15/solution.py | 6 + p16/solution.py | 4 + p17/solution.py | 29 + p18/solution.jl | 41 + p19/solution.jl | 29 + p20/solution.jl | 17 + p21/solution.jl | 48 + p22/p022_names.txt | 1 + p22/solution.jl | 15 + p23/main.jl | 46 + p24/solution.jl | 32 + p25/solution.jl | 11 + p26_/solution.jl | 38 + p27/solution.jl | 37 + p28/solution.jl | 12 + p29/solution.jl | 10 + p30/solution.jl | 11 + p314_/solution.py | 11 + p31_/solution.jl | 4 + p345/solution.py | 34 + p4/solution.py | 24 + p453_/test.py | 30 + p46/solution.jl | 26 + p5/solution.py | 13 + p6/solution.py | 14 + p7/__pycache__/solution.cpython-37.pyc | Bin 0 -> 516 bytes p7/solution.py | 13 + p8/solution.py | 19 + p851_/solution.jl | 8 + p9/__init__.py | 0 p9/solution.py | 13 + util/julia/erastothenes_extended_sieve.jl | 7 + util/julia/erastothenes_sieve.jl | 8 + .../files/_erastothenes_extended_sieve.jl | 59 + util/julia/files/_erastothenes_sieve.jl | 88 ++ util/julia/files/_math.jl | 3 + util/julia/files/_sorting.jl | 31 + util/julia/math.jl | 6 + util/julia/sorting.jl | 5 + util/python/__pycache__/prod.cpython-37.pyc | Bin 0 -> 273 bytes util/python/__pycache__/sieve.cpython-37.pyc | Bin 0 -> 2842 bytes util/python/prod.py | 5 + util/python/sieve.py | 78 ++ 55 files changed, 2166 insertions(+) create mode 100644 launch.py create mode 100644 p10/__pycache__/solution.cpython-37.pyc create mode 100644 p10/solution.py create mode 100644 p102/solution.jl create mode 100644 p102/triangles.txt create mode 100644 p104/solution.jl create mode 100644 p11/__pycache__/solution.cpython-37.pyc create mode 100644 p11/solution.py create mode 100644 p12/__pycache__/solution.cpython-37.pyc create mode 100644 p12/solution.py create mode 100644 p13/solution.py create mode 100644 p14/solution.py create mode 100644 p15/solution.py create mode 100644 p16/solution.py create mode 100644 p17/solution.py create mode 100644 p18/solution.jl create mode 100644 p19/solution.jl create mode 100644 p20/solution.jl create mode 100644 p21/solution.jl create mode 100644 p22/p022_names.txt create mode 100644 p22/solution.jl create mode 100644 p23/main.jl create mode 100644 p24/solution.jl create mode 100644 p25/solution.jl create mode 100644 p26_/solution.jl create mode 100644 p27/solution.jl create mode 100644 p28/solution.jl create mode 100644 p29/solution.jl create mode 100644 p30/solution.jl create mode 100644 p314_/solution.py create mode 100644 p31_/solution.jl create mode 100644 p345/solution.py create mode 100644 p4/solution.py create mode 100644 p453_/test.py create mode 100644 p46/solution.jl create mode 100644 p5/solution.py create mode 100644 p6/solution.py create mode 100644 p7/__pycache__/solution.cpython-37.pyc create mode 100644 p7/solution.py create mode 100644 p8/solution.py create mode 100644 p851_/solution.jl create mode 100644 p9/__init__.py create mode 100644 p9/solution.py create mode 100644 util/julia/erastothenes_extended_sieve.jl create mode 100644 util/julia/erastothenes_sieve.jl create mode 100644 util/julia/files/_erastothenes_extended_sieve.jl create mode 100644 util/julia/files/_erastothenes_sieve.jl create mode 100644 util/julia/files/_math.jl create mode 100644 util/julia/files/_sorting.jl create mode 100644 util/julia/math.jl create mode 100644 util/julia/sorting.jl create mode 100644 util/python/__pycache__/prod.cpython-37.pyc create mode 100644 util/python/__pycache__/sieve.cpython-37.pyc create mode 100644 util/python/prod.py create mode 100644 util/python/sieve.py diff --git a/launch.py b/launch.py new file mode 100644 index 0000000..7e7890e --- /dev/null +++ b/launch.py @@ -0,0 +1 @@ +import p12.solution diff --git a/p10/__pycache__/solution.cpython-37.pyc b/p10/__pycache__/solution.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..dc1164b5c8ea2d288b7d705ef50037633dc6bcd8 GIT binary patch literal 333 zcmYjMJxc>Y5S`h(GiOLTYb%>;LbMbSiC`H5cE>iFUE;~@2fKShAOYd>XZ%asTKN~W z$?QSEfqAnt^XAR$VmciI+2Zf%HBkIc$;mQ$Jdpb<0s#VBP*@{^U?Mv}&15E-$b0Nl zt$2p&?1z|8VJv(jKja!yN|uxu`6Ic%APBI79y#0No(0^I0!`zxVlL5Q<~vno5p_fx z(SLy(QTg{q-13z(8~37Aqc?oD4R1zs>&&}c2idjKaeF=I-n3n4jGozTEKf8bQm`OgOUbgd8dq^b@%CmgXn~n`4Oi{Na6qh literal 0 HcmV?d00001 diff --git a/p10/solution.py b/p10/solution.py new file mode 100644 index 0000000..ec8278c --- /dev/null +++ b/p10/solution.py @@ -0,0 +1,7 @@ +from util.sieve import sieve + +def solution(n): + p, s = sieve(n) + return sum(p) + +print(solution(2000000)) \ No newline at end of file diff --git a/p102/solution.jl b/p102/solution.jl new file mode 100644 index 0000000..166eeef --- /dev/null +++ b/p102/solution.jl @@ -0,0 +1,26 @@ + +function solution(file) + triangles_raw = read(file, String) + triangles = split(triangles_raw, "\n") + c = 0 + for triangle_raw ∈ triangles + triangle = split(strip(triangle_raw), ",") + ∠A = atan(parse(Int, triangle[2]), parse(Int, triangle[1])) + ∠B = atan(parse(Int, triangle[4]), parse(Int, triangle[3])) + ∠C = atan(parse(Int, triangle[6]), parse(Int, triangle[5])) + + ∠AB = ∠(∠A, ∠B) + ∠AC = ∠(∠A, ∠C) + if (∠AB*∠AC) >= 0 continue end + + ∠BA = ∠(∠B, ∠A) + ∠BC = ∠(∠B, ∠C) + if (∠BA*∠BC) < 0 c += 1 end + end + return c +end + +function ∠(∠A, ∠B) + ∠AB = mod2pi(∠B - ∠A + π) - π + return ∠AB +end diff --git a/p102/triangles.txt b/p102/triangles.txt new file mode 100644 index 0000000..cdb36ac --- /dev/null +++ b/p102/triangles.txt @@ -0,0 +1,1000 @@ +-340,495,-153,-910,835,-947 +-175,41,-421,-714,574,-645 +-547,712,-352,579,951,-786 +419,-864,-83,650,-399,171 +-429,-89,-357,-930,296,-29 +-734,-702,823,-745,-684,-62 +-971,762,925,-776,-663,-157 +162,570,628,485,-807,-896 +641,91,-65,700,887,759 +215,-496,46,-931,422,-30 +-119,359,668,-609,-358,-494 +440,929,968,214,760,-857 +-700,785,838,29,-216,411 +-770,-458,-325,-53,-505,633 +-752,-805,349,776,-799,687 +323,5,561,-36,919,-560 +-907,358,264,320,204,274 +-728,-466,350,969,292,-345 +940,836,272,-533,748,185 +411,998,813,520,316,-949 +-152,326,658,-762,148,-651 +330,507,-9,-628,101,174 +551,-496,772,-541,-702,-45 +-164,-489,-90,322,631,-59 +673,366,-4,-143,-606,-704 +428,-609,801,-449,740,-269 +453,-924,-785,-346,-853,111 +-738,555,-181,467,-426,-20 +958,-692,784,-343,505,-569 +620,27,263,54,-439,-726 +804,87,998,859,871,-78 +-119,-453,-709,-292,-115,-56 +-626,138,-940,-476,-177,-274 +-11,160,142,588,446,158 +538,727,550,787,330,810 +420,-689,854,-546,337,516 +872,-998,-607,748,473,-192 +653,440,-516,-985,808,-857 +374,-158,331,-940,-338,-641 +137,-925,-179,771,734,-715 +-314,198,-115,29,-641,-39 +759,-574,-385,355,590,-603 +-189,-63,-168,204,289,305 +-182,-524,-715,-621,911,-255 +331,-816,-833,471,168,126 +-514,581,-855,-220,-731,-507 +129,169,576,651,-87,-458 +783,-444,-881,658,-266,298 +603,-430,-598,585,368,899 +43,-724,962,-376,851,409 +-610,-646,-883,-261,-482,-881 +-117,-237,978,641,101,-747 +579,125,-715,-712,208,534 +672,-214,-762,372,874,533 +-564,965,38,715,367,242 +500,951,-700,-981,-61,-178 +-382,-224,-959,903,-282,-60 +-355,295,426,-331,-591,655 +892,128,958,-271,-993,274 +-454,-619,302,138,-790,-874 +-642,601,-574,159,-290,-318 +266,-109,257,-686,54,975 +162,628,-478,840,264,-266 +466,-280,982,1,904,-810 +721,839,730,-807,777,981 +-129,-430,748,263,943,96 +434,-94,410,-990,249,-704 +237,42,122,-732,44,-51 +909,-116,-229,545,292,717 +824,-768,-807,-370,-262,30 +675,58,332,-890,-651,791 +363,825,-717,254,684,240 +405,-715,900,166,-589,422 +-476,686,-830,-319,634,-807 +633,837,-971,917,-764,207 +-116,-44,-193,-70,908,809 +-26,-252,998,408,70,-713 +-601,645,-462,842,-644,-591 +-160,653,274,113,-138,687 +369,-273,-181,925,-167,-693 +-338,135,480,-967,-13,-840 +-90,-270,-564,695,161,907 +607,-430,869,-713,461,-469 +919,-165,-776,522,606,-708 +-203,465,288,207,-339,-458 +-453,-534,-715,975,838,-677 +-973,310,-350,934,546,-805 +-835,385,708,-337,-594,-772 +-14,914,900,-495,-627,594 +833,-713,-213,578,-296,699 +-27,-748,484,455,915,291 +270,889,739,-57,442,-516 +119,811,-679,905,184,130 +-678,-469,925,553,612,482 +101,-571,-732,-842,644,588 +-71,-737,566,616,957,-663 +-634,-356,90,-207,936,622 +598,443,964,-895,-58,529 +847,-467,929,-742,91,10 +-633,829,-780,-408,222,-30 +-818,57,275,-38,-746,198 +-722,-825,-549,597,-391,99 +-570,908,430,873,-103,-360 +342,-681,512,434,542,-528 +297,850,479,609,543,-357 +9,784,212,548,56,859 +-152,560,-240,-969,-18,713 +140,-133,34,-635,250,-163 +-272,-22,-169,-662,989,-604 +471,-765,355,633,-742,-118 +-118,146,942,663,547,-376 +583,16,162,264,715,-33 +-230,-446,997,-838,561,555 +372,397,-729,-318,-276,649 +92,982,-970,-390,-922,922 +-981,713,-951,-337,-669,670 +-999,846,-831,-504,7,-128 +455,-954,-370,682,-510,45 +822,-960,-892,-385,-662,314 +-668,-686,-367,-246,530,-341 +-723,-720,-926,-836,-142,757 +-509,-134,384,-221,-873,-639 +-803,-52,-706,-669,373,-339 +933,578,631,-616,770,555 +741,-564,-33,-605,-576,275 +-715,445,-233,-730,734,-704 +120,-10,-266,-685,-490,-17 +-232,-326,-457,-946,-457,-116 +811,52,639,826,-200,147 +-329,279,293,612,943,955 +-721,-894,-393,-969,-642,453 +-688,-826,-352,-75,371,79 +-809,-979,407,497,858,-248 +-485,-232,-242,-582,-81,849 +141,-106,123,-152,806,-596 +-428,57,-992,811,-192,478 +864,393,122,858,255,-876 +-284,-780,240,457,354,-107 +956,605,-477,44,26,-678 +86,710,-533,-815,439,327 +-906,-626,-834,763,426,-48 +201,-150,-904,652,475,412 +-247,149,81,-199,-531,-148 +923,-76,-353,175,-121,-223 +427,-674,453,472,-410,585 +931,776,-33,85,-962,-865 +-655,-908,-902,208,869,792 +-316,-102,-45,-436,-222,885 +-309,768,-574,653,745,-975 +896,27,-226,993,332,198 +323,655,-89,260,240,-902 +501,-763,-424,793,813,616 +993,375,-938,-621,672,-70 +-880,-466,-283,770,-824,143 +63,-283,886,-142,879,-116 +-964,-50,-521,-42,-306,-161 +724,-22,866,-871,933,-383 +-344,135,282,966,-80,917 +-281,-189,420,810,362,-582 +-515,455,-588,814,162,332 +555,-436,-123,-210,869,-943 +589,577,232,286,-554,876 +-773,127,-58,-171,-452,125 +-428,575,906,-232,-10,-224 +437,276,-335,-348,605,878 +-964,511,-386,-407,168,-220 +307,513,912,-463,-423,-416 +-445,539,273,886,-18,760 +-396,-585,-670,414,47,364 +143,-506,754,906,-971,-203 +-544,472,-180,-541,869,-465 +-779,-15,-396,890,972,-220 +-430,-564,503,182,-119,456 +89,-10,-739,399,506,499 +954,162,-810,-973,127,870 +890,952,-225,158,828,237 +-868,952,349,465,574,750 +-915,369,-975,-596,-395,-134 +-135,-601,575,582,-667,640 +413,890,-560,-276,-555,-562 +-633,-269,561,-820,-624,499 +371,-92,-784,-593,864,-717 +-971,655,-439,367,754,-951 +172,-347,36,279,-247,-402 +633,-301,364,-349,-683,-387 +-780,-211,-713,-948,-648,543 +72,58,762,-465,-66,462 +78,502,781,-832,713,836 +-431,-64,-484,-392,208,-343 +-64,101,-29,-860,-329,844 +398,391,828,-858,700,395 +578,-896,-326,-604,314,180 +97,-321,-695,185,-357,852 +854,839,283,-375,951,-209 +194,96,-564,-847,162,524 +-354,532,494,621,580,560 +419,-678,-450,926,-5,-924 +-661,905,519,621,-143,394 +-573,268,296,-562,-291,-319 +-211,266,-196,158,564,-183 +18,-585,-398,777,-581,864 +790,-894,-745,-604,-418,70 +848,-339,150,773,11,851 +-954,-809,-53,-20,-648,-304 +658,-336,-658,-905,853,407 +-365,-844,350,-625,852,-358 +986,-315,-230,-159,21,180 +-15,599,45,-286,-941,847 +-613,-68,184,639,-987,550 +334,675,-56,-861,923,340 +-848,-596,960,231,-28,-34 +707,-811,-994,-356,-167,-171 +-470,-764,72,576,-600,-204 +379,189,-542,-576,585,800 +440,540,-445,-563,379,-334 +-155,64,514,-288,853,106 +-304,751,481,-520,-708,-694 +-709,132,594,126,-844,63 +723,471,421,-138,-962,892 +-440,-263,39,513,-672,-954 +775,809,-581,330,752,-107 +-376,-158,335,-708,-514,578 +-343,-769,456,-187,25,413 +548,-877,-172,300,-500,928 +938,-102,423,-488,-378,-969 +-36,564,-55,131,958,-800 +-322,511,-413,503,700,-847 +-966,547,-88,-17,-359,-67 +637,-341,-437,-181,527,-153 +-74,449,-28,3,485,189 +-997,658,-224,-948,702,-807 +-224,736,-896,127,-945,-850 +-395,-106,439,-553,-128,124 +-841,-445,-758,-572,-489,212 +633,-327,13,-512,952,771 +-940,-171,-6,-46,-923,-425 +-142,-442,-817,-998,843,-695 +340,847,-137,-920,-988,-658 +-653,217,-679,-257,651,-719 +-294,365,-41,342,74,-892 +690,-236,-541,494,408,-516 +180,-807,225,790,494,59 +707,605,-246,656,284,271 +65,294,152,824,442,-442 +-321,781,-540,341,316,415 +420,371,-2,545,995,248 +56,-191,-604,971,615,449 +-981,-31,510,592,-390,-362 +-317,-968,913,365,97,508 +832,63,-864,-510,86,202 +-483,456,-636,340,-310,676 +981,-847,751,-508,-962,-31 +-157,99,73,797,63,-172 +220,858,872,924,866,-381 +996,-169,805,321,-164,971 +896,11,-625,-973,-782,76 +578,-280,730,-729,307,-905 +-580,-749,719,-698,967,603 +-821,874,-103,-623,662,-491 +-763,117,661,-644,672,-607 +592,787,-798,-169,-298,690 +296,644,-526,-762,-447,665 +534,-818,852,-120,57,-379 +-986,-549,-329,294,954,258 +-133,352,-660,-77,904,-356 +748,343,215,500,317,-277 +311,7,910,-896,-809,795 +763,-602,-753,313,-352,917 +668,619,-474,-597,-650,650 +-297,563,-701,-987,486,-902 +-461,-740,-657,233,-482,-328 +-446,-250,-986,-458,-629,520 +542,-49,-327,-469,257,-947 +121,-575,-634,-143,-184,521 +30,504,455,-645,-229,-945 +-12,-295,377,764,771,125 +-686,-133,225,-25,-376,-143 +-6,-46,338,270,-405,-872 +-623,-37,582,467,963,898 +-804,869,-477,420,-475,-303 +94,41,-842,-193,-768,720 +-656,-918,415,645,-357,460 +-47,-486,-911,468,-608,-686 +-158,251,419,-394,-655,-895 +272,-695,979,508,-358,959 +-776,650,-918,-467,-690,-534 +-85,-309,-626,167,-366,-429 +-880,-732,-186,-924,970,-875 +517,645,-274,962,-804,544 +721,402,104,640,478,-499 +198,684,-134,-723,-452,-905 +-245,745,239,238,-826,441 +-217,206,-32,462,-981,-895 +-51,989,526,-173,560,-676 +-480,-659,-976,-580,-727,466 +-996,-90,-995,158,-239,642 +302,288,-194,-294,17,924 +-943,969,-326,114,-500,103 +-619,163,339,-880,230,421 +-344,-601,-795,557,565,-779 +590,345,-129,-202,-125,-58 +-777,-195,159,674,775,411 +-939,312,-665,810,121,855 +-971,254,712,815,452,581 +442,-9,327,-750,61,757 +-342,869,869,-160,390,-772 +620,601,565,-169,-69,-183 +-25,924,-817,964,321,-970 +-64,-6,-133,978,825,-379 +601,436,-24,98,-115,940 +-97,502,614,-574,922,513 +-125,262,-946,695,99,-220 +429,-721,719,-694,197,-558 +326,689,-70,-908,-673,338 +-468,-856,-902,-254,-358,305 +-358,530,542,355,-253,-47 +-438,-74,-362,963,988,788 +137,717,467,622,319,-380 +-86,310,-336,851,918,-288 +721,395,646,-53,255,-425 +255,175,912,84,-209,878 +-632,-485,-400,-357,991,-608 +235,-559,992,-297,857,-591 +87,-71,148,130,647,578 +-290,-584,-639,-788,-21,592 +386,984,625,-731,-993,-336 +-538,634,-209,-828,-150,-774 +-754,-387,607,-781,976,-199 +412,-798,-664,295,709,-537 +-412,932,-880,-232,561,852 +-656,-358,-198,-964,-433,-848 +-762,-668,-632,186,-673,-11 +-876,237,-282,-312,-83,682 +403,73,-57,-436,-622,781 +-587,873,798,976,-39,329 +-369,-622,553,-341,817,794 +-108,-616,920,-849,-679,96 +290,-974,234,239,-284,-321 +-22,394,-417,-419,264,58 +-473,-551,69,923,591,-228 +-956,662,-113,851,-581,-794 +-258,-681,413,-471,-637,-817 +-866,926,992,-653,-7,794 +556,-350,602,917,831,-610 +188,245,-906,361,492,174 +-720,384,-818,329,638,-666 +-246,846,890,-325,-59,-850 +-118,-509,620,-762,-256,15 +-787,-536,-452,-338,-399,813 +458,560,525,-311,-608,-419 +494,-811,-825,-127,-812,894 +-801,890,-629,-860,574,925 +-709,-193,-213,138,-410,-403 +861,91,708,-187,5,-222 +789,646,777,154,90,-49 +-267,-830,-114,531,591,-698 +-126,-82,881,-418,82,652 +-894,130,-726,-935,393,-815 +-142,563,654,638,-712,-597 +-759,60,-23,977,100,-765 +-305,595,-570,-809,482,762 +-161,-267,53,963,998,-529 +-300,-57,798,353,703,486 +-990,696,-764,699,-565,719 +-232,-205,566,571,977,369 +740,865,151,-817,-204,-293 +94,445,-768,229,537,-406 +861,620,37,-424,-36,656 +390,-369,952,733,-464,569 +-482,-604,959,554,-705,-626 +-396,-615,-991,108,272,-723 +143,780,535,142,-917,-147 +138,-629,-217,-908,905,115 +915,103,-852,64,-468,-642 +570,734,-785,-268,-326,-759 +738,531,-332,586,-779,24 +870,440,-217,473,-383,415 +-296,-333,-330,-142,-924,950 +118,120,-35,-245,-211,-652 +61,634,153,-243,838,789 +726,-582,210,105,983,537 +-313,-323,758,234,29,848 +-847,-172,-593,733,-56,617 +54,255,-512,156,-575,675 +-873,-956,-148,623,95,200 +700,-370,926,649,-978,157 +-639,-202,719,130,747,222 +194,-33,955,943,505,114 +-226,-790,28,-930,827,783 +-392,-74,-28,714,218,-612 +209,626,-888,-683,-912,495 +487,751,614,933,631,445 +-348,-34,-411,-106,835,321 +-689,872,-29,-800,312,-542 +-52,566,827,570,-862,-77 +471,992,309,-402,389,912 +24,520,-83,-51,555,503 +-265,-317,283,-970,-472,690 +606,526,137,71,-651,150 +217,-518,663,66,-605,-331 +-562,232,-76,-503,205,-323 +842,-521,546,285,625,-186 +997,-927,344,909,-546,974 +-677,419,81,121,-705,771 +719,-379,-944,-797,784,-155 +-378,286,-317,-797,-111,964 +-288,-573,784,80,-532,-646 +-77,407,-248,-797,769,-816 +-24,-637,287,-858,-927,-333 +-902,37,894,-823,141,684 +125,467,-177,-516,686,399 +-321,-542,641,-590,527,-224 +-400,-712,-876,-208,632,-543 +-676,-429,664,-242,-269,922 +-608,-273,-141,930,687,380 +786,-12,498,494,310,326 +-739,-617,606,-960,804,188 +384,-368,-243,-350,-459,31 +-550,397,320,-868,328,-279 +969,-179,853,864,-110,514 +910,793,302,-822,-285,488 +-605,-128,218,-283,-17,-227 +16,324,667,708,750,3 +485,-813,19,585,71,930 +-218,816,-687,-97,-732,-360 +-497,-151,376,-23,3,315 +-412,-989,-610,-813,372,964 +-878,-280,87,381,-311,69 +-609,-90,-731,-679,150,585 +889,27,-162,605,75,-770 +448,617,-988,0,-103,-504 +-800,-537,-69,627,608,-668 +534,686,-664,942,830,920 +-238,775,495,932,-793,497 +-343,958,-914,-514,-691,651 +568,-136,208,359,728,28 +286,912,-794,683,556,-102 +-638,-629,-484,445,-64,-497 +58,505,-801,-110,872,632 +-390,777,353,267,976,369 +-993,515,105,-133,358,-572 +964,996,355,-212,-667,38 +-725,-614,-35,365,132,-196 +237,-536,-416,-302,312,477 +-664,574,-210,224,48,-925 +869,-261,-256,-240,-3,-698 +712,385,32,-34,916,-315 +895,-409,-100,-346,728,-624 +-806,327,-450,889,-781,-939 +-586,-403,698,318,-939,899 +557,-57,-920,659,333,-51 +-441,232,-918,-205,246,1 +783,167,-797,-595,245,-736 +-36,-531,-486,-426,-813,-160 +777,-843,817,313,-228,-572 +735,866,-309,-564,-81,190 +-413,645,101,719,-719,218 +-83,164,767,796,-430,-459 +122,779,-15,-295,-96,-892 +462,379,70,548,834,-312 +-630,-534,124,187,-737,114 +-299,-604,318,-591,936,826 +-879,218,-642,-483,-318,-866 +-691,62,-658,761,-895,-854 +-822,493,687,569,910,-202 +-223,784,304,-5,541,925 +-914,541,737,-662,-662,-195 +-622,615,414,358,881,-878 +339,745,-268,-968,-280,-227 +-364,855,148,-709,-827,472 +-890,-532,-41,664,-612,577 +-702,-859,971,-722,-660,-920 +-539,-605,737,149,973,-802 +800,42,-448,-811,152,511 +-933,377,-110,-105,-374,-937 +-766,152,482,120,-308,390 +-568,775,-292,899,732,890 +-177,-317,-502,-259,328,-511 +612,-696,-574,-660,132,31 +-119,563,-805,-864,179,-672 +425,-627,183,-331,839,318 +-711,-976,-749,152,-916,261 +181,-63,497,211,262,406 +-537,700,-859,-765,-928,77 +892,832,231,-749,-82,613 +816,216,-642,-216,-669,-912 +-6,624,-937,-370,-344,268 +737,-710,-869,983,-324,-274 +565,952,-547,-158,374,-444 +51,-683,645,-845,515,636 +-953,-631,114,-377,-764,-144 +-8,470,-242,-399,-675,-730 +-540,689,-20,47,-607,590 +-329,-710,-779,942,-388,979 +123,829,674,122,203,563 +46,782,396,-33,386,610 +872,-846,-523,-122,-55,-190 +388,-994,-525,974,127,596 +781,-680,796,-34,-959,-62 +-749,173,200,-384,-745,-446 +379,618,136,-250,-224,970 +-58,240,-921,-760,-901,-626 +366,-185,565,-100,515,688 +489,999,-893,-263,-637,816 +838,-496,-316,-513,419,479 +107,676,-15,882,98,-397 +-999,941,-903,-424,670,-325 +171,-979,835,178,169,-984 +-609,-607,378,-681,184,402 +-316,903,-575,-800,224,983 +591,-18,-460,551,-167,918 +-756,405,-117,441,163,-320 +456,24,6,881,-836,-539 +-489,-585,915,651,-892,-382 +-177,-122,73,-711,-386,591 +181,724,530,686,-131,241 +737,288,886,216,233,33 +-548,-386,-749,-153,-85,-982 +-835,227,904,160,-99,25 +-9,-42,-162,728,840,-963 +217,-763,870,771,47,-846 +-595,808,-491,556,337,-900 +-134,281,-724,441,-134,708 +-789,-508,651,-962,661,315 +-839,-923,339,402,41,-487 +300,-790,48,703,-398,-811 +955,-51,462,-685,960,-717 +910,-880,592,-255,-51,-776 +-885,169,-793,368,-565,458 +-905,940,-492,-630,-535,-988 +245,797,763,869,-82,550 +-310,38,-933,-367,-650,824 +-95,32,-83,337,226,990 +-218,-975,-191,-208,-785,-293 +-672,-953,517,-901,-247,465 +681,-148,261,-857,544,-923 +640,341,446,-618,195,769 +384,398,-846,365,671,815 +578,576,-911,907,762,-859 +548,-428,144,-630,-759,-146 +710,-73,-700,983,-97,-889 +-46,898,-973,-362,-817,-717 +151,-81,-125,-900,-478,-154 +483,615,-537,-932,181,-68 +786,-223,518,25,-306,-12 +-422,268,-809,-683,635,468 +983,-734,-694,-608,-110,4 +-786,-196,749,-354,137,-8 +-181,36,668,-200,691,-973 +-629,-838,692,-736,437,-871 +-208,-536,-159,-596,8,197 +-3,370,-686,170,913,-376 +44,-998,-149,-993,-200,512 +-519,136,859,497,536,434 +77,-985,972,-340,-705,-837 +-381,947,250,360,344,322 +-26,131,699,750,707,384 +-914,655,299,193,406,955 +-883,-921,220,595,-546,794 +-599,577,-569,-404,-704,489 +-594,-963,-624,-460,880,-760 +-603,88,-99,681,55,-328 +976,472,139,-453,-531,-860 +192,-290,513,-89,666,432 +417,487,575,293,567,-668 +655,711,-162,449,-980,972 +-505,664,-685,-239,603,-592 +-625,-802,-67,996,384,-636 +365,-593,522,-666,-200,-431 +-868,708,560,-860,-630,-355 +-702,785,-637,-611,-597,960 +-137,-696,-93,-803,408,406 +891,-123,-26,-609,-610,518 +133,-832,-198,555,708,-110 +791,617,-69,487,696,315 +-900,694,-565,517,-269,-416 +914,135,-781,600,-71,-600 +991,-915,-422,-351,-837,313 +-840,-398,-302,21,590,146 +62,-558,-702,-384,-625,831 +-363,-426,-924,-496,792,-908 +73,361,-817,-466,400,922 +-626,-164,-626,860,-524,286 +255,26,-944,809,-606,986 +-457,-256,-103,50,-867,-871 +-223,803,196,480,612,136 +-820,-928,700,780,-977,721 +717,332,53,-933,-128,793 +-602,-648,562,593,890,702 +-469,-875,-527,911,-475,-222 +110,-281,-552,-536,-816,596 +-981,654,413,-981,-75,-95 +-754,-742,-515,894,-220,-344 +795,-52,156,408,-603,76 +474,-157,423,-499,-807,-791 +260,688,40,-52,702,-122 +-584,-517,-390,-881,302,-504 +61,797,665,708,14,668 +366,166,458,-614,564,-983 +72,539,-378,796,381,-824 +-485,201,-588,842,736,379 +-149,-894,-298,705,-303,-406 +660,-935,-580,521,93,633 +-382,-282,-375,-841,-828,171 +-567,743,-100,43,144,122 +-281,-786,-749,-551,296,304 +11,-426,-792,212,857,-175 +594,143,-699,289,315,137 +341,596,-390,107,-631,-804 +-751,-636,-424,-854,193,651 +-145,384,749,675,-786,517 +224,-865,-323,96,-916,258 +-309,403,-388,826,35,-270 +-942,709,222,158,-699,-103 +-589,842,-997,29,-195,-210 +264,426,566,145,-217,623 +217,965,507,-601,-453,507 +-206,307,-982,4,64,-292 +676,-49,-38,-701,550,883 +5,-850,-438,659,745,-773 +933,238,-574,-570,91,-33 +-866,121,-928,358,459,-843 +-568,-631,-352,-580,-349,189 +-737,849,-963,-486,-662,970 +135,334,-967,-71,-365,-792 +789,21,-227,51,990,-275 +240,412,-886,230,591,256 +-609,472,-853,-754,959,661 +401,521,521,314,929,982 +-499,784,-208,71,-302,296 +-557,-948,-553,-526,-864,793 +270,-626,828,44,37,14 +-412,224,617,-593,502,699 +41,-908,81,562,-849,163 +165,917,761,-197,331,-341 +-687,314,799,755,-969,648 +-164,25,578,439,-334,-576 +213,535,874,-177,-551,24 +-689,291,-795,-225,-496,-125 +465,461,558,-118,-568,-909 +567,660,-810,46,-485,878 +-147,606,685,-690,-774,984 +568,-886,-43,854,-738,616 +-800,386,-614,585,764,-226 +-518,23,-225,-732,-79,440 +-173,-291,-689,636,642,-447 +-598,-16,227,410,496,211 +-474,-930,-656,-321,-420,36 +-435,165,-819,555,540,144 +-969,149,828,568,394,648 +65,-848,257,720,-625,-851 +981,899,275,635,465,-877 +80,290,792,760,-191,-321 +-605,-858,594,33,706,593 +585,-472,318,-35,354,-927 +-365,664,803,581,-965,-814 +-427,-238,-480,146,-55,-606 +879,-193,250,-890,336,117 +-226,-322,-286,-765,-836,-218 +-913,564,-667,-698,937,283 +872,-901,810,-623,-52,-709 +473,171,717,38,-429,-644 +225,824,-219,-475,-180,234 +-530,-797,-948,238,851,-623 +85,975,-363,529,598,28 +-799,166,-804,210,-769,851 +-687,-158,885,736,-381,-461 +447,592,928,-514,-515,-661 +-399,-777,-493,80,-544,-78 +-884,631,171,-825,-333,551 +191,268,-577,676,137,-33 +212,-853,709,798,583,-56 +-908,-172,-540,-84,-135,-56 +303,311,406,-360,-240,811 +798,-708,824,59,234,-57 +491,693,-74,585,-85,877 +509,-65,-936,329,-51,722 +-122,858,-52,467,-77,-609 +850,760,547,-495,-953,-952 +-460,-541,890,910,286,724 +-914,843,-579,-983,-387,-460 +989,-171,-877,-326,-899,458 +846,175,-915,540,-1000,-982 +-852,-920,-306,496,530,-18 +338,-991,160,85,-455,-661 +-186,-311,-460,-563,-231,-414 +-932,-302,959,597,793,748 +-366,-402,-788,-279,514,53 +-940,-956,447,-956,211,-285 +564,806,-911,-914,934,754 +575,-858,-277,15,409,-714 +848,462,100,-381,135,242 +330,718,-24,-190,860,-78 +479,458,941,108,-866,-653 +212,980,962,-962,115,841 +-827,-474,-206,881,323,765 +506,-45,-30,-293,524,-133 +832,-173,547,-852,-561,-842 +-397,-661,-708,819,-545,-228 +521,51,-489,852,36,-258 +227,-164,189,465,-987,-882 +-73,-997,641,-995,449,-615 +151,-995,-638,415,257,-400 +-663,-297,-748,537,-734,198 +-585,-401,-81,-782,-80,-105 +99,-21,238,-365,-704,-368 +45,416,849,-211,-371,-1 +-404,-443,795,-406,36,-933 +272,-363,981,-491,-380,77 +713,-342,-366,-849,643,911 +-748,671,-537,813,961,-200 +-194,-909,703,-662,-601,188 +281,500,724,286,267,197 +-832,847,-595,820,-316,637 +520,521,-54,261,923,-10 +4,-808,-682,-258,441,-695 +-793,-107,-969,905,798,446 +-108,-739,-590,69,-855,-365 +380,-623,-930,817,468,713 +759,-849,-236,433,-723,-931 +95,-320,-686,124,-69,-329 +-655,518,-210,-523,284,-866 +144,303,639,70,-171,269 +173,-333,947,-304,55,40 +274,878,-482,-888,-835,375 +-982,-854,-36,-218,-114,-230 +905,-979,488,-485,-479,114 +877,-157,553,-530,-47,-321 +350,664,-881,442,-220,-284 +434,-423,-365,878,-726,584 +535,909,-517,-447,-660,-141 +-966,191,50,353,182,-642 +-785,-634,123,-907,-162,511 +146,-850,-214,814,-704,25 +692,1,521,492,-637,274 +-662,-372,-313,597,983,-647 +-962,-526,68,-549,-819,231 +740,-890,-318,797,-666,948 +-190,-12,-468,-455,948,284 +16,478,-506,-888,628,-154 +272,630,-976,308,433,3 +-169,-391,-132,189,302,-388 +109,-784,474,-167,-265,-31 +-177,-532,283,464,421,-73 +650,635,592,-138,1,-387 +-932,703,-827,-492,-355,686 +586,-311,340,-618,645,-434 +-951,736,647,-127,-303,590 +188,444,903,718,-931,500 +-872,-642,-296,-571,337,241 +23,65,152,125,880,470 +512,823,-42,217,823,-263 +180,-831,-380,886,607,762 +722,443,-149,-216,-115,759 +-19,660,-36,901,923,231 +562,-322,-626,-968,194,-825 +204,-920,938,784,362,150 +-410,-266,-715,559,-672,124 +-198,446,-140,454,-461,-447 +83,-346,830,-493,-759,-382 +-881,601,581,234,-134,-925 +-494,914,-42,899,235,629 +-390,50,956,437,774,-700 +-514,514,44,-512,-576,-313 +63,-688,808,-534,-570,-399 +-726,572,-896,102,-294,-28 +-688,757,401,406,955,-511 +-283,423,-485,480,-767,908 +-541,952,-594,116,-854,451 +-273,-796,236,625,-626,257 +-407,-493,373,826,-309,297 +-750,955,-476,641,-809,713 +8,415,695,226,-111,2 +733,209,152,-920,401,995 +921,-103,-919,66,871,-947 +-907,89,-869,-214,851,-559 +-307,748,524,-755,314,-711 +188,897,-72,-763,482,103 +545,-821,-232,-596,-334,-754 +-217,-788,-820,388,-200,-662 +779,160,-723,-975,-142,-998 +-978,-519,-78,-981,842,904 +-504,-736,-295,21,-472,-482 +391,115,-705,574,652,-446 +813,-988,865,830,-263,487 +194,80,774,-493,-761,-872 +-415,-284,-803,7,-810,670 +-484,-4,881,-872,55,-852 +-379,822,-266,324,-48,748 +-304,-278,406,-60,959,-89 +404,756,577,-643,-332,658 +291,460,125,491,-312,83 +311,-734,-141,582,282,-557 +-450,-661,-981,710,-177,794 +328,264,-787,971,-743,-407 +-622,518,993,-241,-738,229 +273,-826,-254,-917,-710,-111 +809,770,96,368,-818,725 +-488,773,502,-342,534,745 +-28,-414,236,-315,-484,363 +179,-466,-566,713,-683,56 +560,-240,-597,619,916,-940 +893,473,872,-868,-642,-461 +799,489,383,-321,-776,-833 +980,490,-508,764,-512,-426 +917,961,-16,-675,440,559 +-812,212,784,-987,-132,554 +-886,454,747,806,190,231 +910,341,21,-66,708,725 +29,929,-831,-494,-303,389 +-103,492,-271,-174,-515,529 +-292,119,419,788,247,-951 +483,543,-347,-673,664,-549 +-926,-871,-437,337,162,-877 +299,472,-771,5,-88,-643 +-103,525,-725,-998,264,22 +-505,708,550,-545,823,347 +-738,931,59,147,-156,-259 +456,968,-162,889,132,-911 +535,120,968,-517,-864,-541 +24,-395,-593,-766,-565,-332 +834,611,825,-576,280,629 +211,-548,140,-278,-592,929 +-999,-240,-63,-78,793,573 +-573,160,450,987,529,322 +63,353,315,-187,-461,577 +189,-950,-247,656,289,241 +209,-297,397,664,-805,484 +-655,452,435,-556,917,874 +253,-756,262,-888,-778,-214 +793,-451,323,-251,-401,-458 +-396,619,-651,-287,-668,-781 +698,720,-349,742,-807,546 +738,280,680,279,-540,858 +-789,387,530,-36,-551,-491 +162,579,-427,-272,228,710 +689,356,917,-580,729,217 +-115,-638,866,424,-82,-194 +411,-338,-917,172,227,-29 +-612,63,630,-976,-64,-204 +-200,911,583,-571,682,-579 +91,298,396,-183,788,-955 +141,-873,-277,149,-396,916 +321,958,-136,573,541,-777 +797,-909,-469,-877,988,-653 +784,-198,129,883,-203,399 +-68,-810,223,-423,-467,-512 +531,-445,-603,-997,-841,641 +-274,-242,174,261,-636,-158 +-574,494,-796,-798,-798,99 +95,-82,-613,-954,-753,986 +-883,-448,-864,-401,938,-392 +913,930,-542,-988,310,410 +506,-99,43,512,790,-222 +724,31,49,-950,260,-134 +-287,-947,-234,-700,56,588 +-33,782,-144,948,105,-791 +548,-546,-652,-293,881,-520 +691,-91,76,991,-631,742 +-520,-429,-244,-296,724,-48 +778,646,377,50,-188,56 +-895,-507,-898,-165,-674,652 +654,584,-634,177,-349,-620 +114,-980,355,62,182,975 +516,9,-442,-298,274,-579 +-238,262,-431,-896,506,-850 +47,748,846,821,-537,-293 +839,726,593,285,-297,840 +634,-486,468,-304,-887,-567 +-864,914,296,-124,335,233 +88,-253,-523,-956,-554,803 +-587,417,281,-62,-409,-363 +-136,-39,-292,-768,-264,876 +-127,506,-891,-331,-744,-430 +778,584,-750,-129,-479,-94 +-876,-771,-987,-757,180,-641 +-777,-694,411,-87,329,190 +-347,-999,-882,158,-754,232 +-105,918,188,237,-110,-591 +-209,703,-838,77,838,909 +-995,-339,-762,750,860,472 +185,271,-289,173,811,-300 +2,65,-656,-22,36,-139 +765,-210,883,974,961,-905 +-212,295,-615,-840,77,474 +211,-910,-440,703,-11,859 +-559,-4,-196,841,-277,969 +-73,-159,-887,126,978,-371 +-569,633,-423,-33,512,-393 +503,143,-383,-109,-649,-998 +-663,339,-317,-523,-2,596 +690,-380,570,378,-652,132 +72,-744,-930,399,-525,935 +865,-983,115,37,995,826 +594,-621,-872,443,188,-241 +-1000,291,754,234,-435,-869 +-868,901,654,-907,59,181 +-868,-793,-431,596,-446,-564 +900,-944,-680,-796,902,-366 +331,430,943,853,-851,-942 +315,-538,-354,-909,139,721 +170,-884,-225,-818,-808,-657 +-279,-34,-533,-871,-972,552 +691,-986,-800,-950,654,-747 +603,988,899,841,-630,591 +876,-949,809,562,602,-536 +-693,363,-189,495,738,-1000 +-383,431,-633,297,665,959 +-740,686,-207,-803,188,-520 +-820,226,31,-339,10,121 +-312,-844,624,-516,483,621 +-822,-529,69,-278,800,328 +834,-82,-759,420,811,-264 +-960,-240,-921,561,173,46 +-324,909,-790,-814,-2,-785 +976,334,-290,-891,704,-581 +150,-798,689,-823,237,-639 +-551,-320,876,-502,-622,-628 +-136,845,904,595,-702,-261 +-857,-377,-522,-101,-943,-805 +-682,-787,-888,-459,-752,-985 +-571,-81,623,-133,447,643 +-375,-158,72,-387,-324,-696 +-660,-650,340,188,569,526 +727,-218,16,-7,-595,-988 +-966,-684,802,-783,-272,-194 +115,-566,-888,47,712,180 +-237,-69,45,-272,981,-812 +48,897,439,417,50,325 +348,616,180,254,104,-784 +-730,811,-548,612,-736,790 +138,-810,123,930,65,865 +-768,-299,-49,-895,-692,-418 +487,-531,802,-159,-12,634 +808,-179,552,-73,470,717 +720,-644,886,-141,625,144 +-485,-505,-347,-244,-916,66 +600,-565,995,-5,324,227 +-771,-35,904,-482,753,-303 +-701,65,426,-763,-504,-479 +409,733,-823,475,64,718 +865,975,368,893,-413,-433 +812,-597,-970,819,813,624 +193,-642,-381,-560,545,398 +711,28,-316,771,717,-865 +-509,462,809,-136,786,635 +618,-49,484,169,635,547 +-747,685,-882,-496,-332,82 +-501,-851,870,563,290,570 +-279,-829,-509,397,457,816 +-508,80,850,-188,483,-326 +860,-100,360,119,-205,787 +-870,21,-39,-827,-185,932 +826,284,-136,-866,-330,-97 +-944,-82,745,899,-97,365 +929,262,564,632,-115,632 +244,-276,713,330,-897,-214 +-890,-109,664,876,-974,-907 +716,249,816,489,723,141 +-96,-560,-272,45,-70,645 +762,-503,414,-828,-254,-646 +909,-13,903,-422,-344,-10 +658,-486,743,545,50,674 +-241,507,-367,18,-48,-241 +886,-268,884,-762,120,-486 +-412,-528,879,-647,223,-393 +851,810,234,937,-726,797 +-999,942,839,-134,-996,-189 +100,979,-527,-521,378,800 +544,-844,-832,-530,-77,-641 +43,889,31,442,-934,-503 +-330,-370,-309,-439,173,547 +169,945,62,-753,-542,-597 +208,751,-372,-647,-520,70 +765,-840,907,-257,379,918 +334,-135,-689,730,-427,618 +137,-508,66,-695,78,169 +-962,-123,400,-417,151,969 +328,689,666,427,-555,-642 +-907,343,605,-341,-647,582 +-667,-363,-571,818,-265,-399 +525,-938,904,898,725,692 +-176,-802,-858,-9,780,275 +580,170,-740,287,691,-97 +365,557,-375,361,-288,859 +193,737,842,-808,520,282 +-871,65,-799,836,179,-720 +958,-144,744,-789,797,-48 +122,582,662,912,68,757 +595,241,-801,513,388,186 +-103,-677,-259,-731,-281,-857 +921,319,-696,683,-88,-997 +775,200,78,858,648,768 +316,821,-763,68,-290,-741 +564,664,691,504,760,787 +694,-119,973,-385,309,-760 +777,-947,-57,990,74,19 +971,626,-496,-781,-602,-239 +-651,433,11,-339,939,294 +-965,-728,560,569,-708,-247 \ No newline at end of file diff --git a/p104/solution.jl b/p104/solution.jl new file mode 100644 index 0000000..91bcd31 --- /dev/null +++ b/p104/solution.jl @@ -0,0 +1,15 @@ + +function solution() + fn = fp = n = BigInt(1) + while true + fn, fp, n = fn+fp, fn, n+1 + if is_pandigital(fn) return n+1 end + end +end + +function is_pandigital(n) + if log10(n) + 1 < 9 return false end + d = digits(n) + S = Set(1:9) + return Set(d[1:9]) == S && Set(d[end-8:end]) == S +end diff --git a/p11/__pycache__/solution.cpython-37.pyc b/p11/__pycache__/solution.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2f040a96912898e410a5658f86503e169830ee8e GIT binary patch literal 2254 zcma)-%T60v5Qa~8+hBq*#2Ac8fM5tV&D~v{?`TsT$XOu-~^>_O8sZ;e=ooXB_D|@2w_vgP;2Y=w{FHRo* zTJbQ7`%(<0M2YrU#g*t{h)wKLB*o&865LOuRGd;KE-9A^c`9zH6#d8}ysBVPEncY+ zpVZ1TJeSCGsgrtXz^)h4C=OV9Vd6JeC>6Zcc8I%YZkT*~ll1f!BQh#uSc&0%39fOOkV$x*f@Qx< zV|OjIcFGL)&myBq#CE~{t<1?hR3k4~Mxfn`y$etflto!W6{vF=e!JnZ2J;2!hGh_I zb5Ld=!wNk0K*Nf>19j}EgslhjRV#Y4tf77r$iE7^?1<*VwJsZ|MTcxc`><@maus^Q z@*e6O5{Jq;sGWz6Lq0&S9hQEKJ+O4aM>}-dVC#pLV#Ml{DO9ZyHEDs5c2sK&mQiSO zqK@nEg?+D<5#MZITHxmD~Mf_=5D!Ey(Y zyvW^&sM9#1abz}zT5sd@s?i;#*xxKAuq?$J9eLW}wF+9w@Z>|4qo~6YdSOy_QSk{_ zc0kDh`p1V1=41=m>|r$sHlw}~RHzL()muLMu)hf>v5(w(k;4k?YY=A-xkOO?MpQ2Z z%QajKkoeemlI^;Tt%y;0u;mC93iEBwcsgl|qE=@^tRRw-J)bBq&2gV}Y zeTF=-r#drFx?IOIXF8rG+AMMe90ueVD@%z#8kr+E4 zO{_=-b1PDQ{!O$mi1sU@{rpWf=ZN-^**?bK%I7DKewgD!l)^k8l;qb6a{o@Qzi1bp zO$F*duHb8hA0ri1`B70pr5`lsM~^DZAF+S46nx%P85{b-zL;ZQ)qKe7rK zS>q&`%G%BS)KM~PobF!-9ND7N{j_;}oz+rV4ZMk$;{EQqc_vqf>8y5~)jnm5@29^j zvmB28?v_Ym**rTk_fJocQ%8yAoAk%CR039?l85Q!)k)G!oOg94F3(P`(#L11&hwkB z<6%Nkmu-O3oSH+o87|GOMK!nK)?D|aTbt3UF}FtDd_joKNQ4O|(M>E6ABZmEkgx)+@X1XK5>aB4I3U`INg_lH5W_?RF-!ClON5K4 zBescYf?sH^m)Iie0n?IO#%VJ#MobaAgqJ8Kf1gh5T4oFJ70brIS>f}5u(J6Wv7XRA`2l(6h)*!IvH8!c4H3TkF$41Hab^{ zL@4PflM;!C;5n{Mm7XdUGn+Wh1F)+Z?ab`%%=gW_uGd$A)}ME8KVAxeOEwnEp~EYZ zyiH1h!Wa?^1oBzLP9g(IXGh6X2wd%HSGgy6g5>iKp;^14SJ1?2Lr)8xDy{l?q`zqL z$g#;(h#aR?BatMWF8@tR;T%as0Vgnbraw!vc43aCbB-lmko6e8!;Piz5!`yP5Z~Yk zl~B&9e+K8y1-t<+Xf7#&6p=Q9_abg7OLq(AUg?!$Bu%6AD6cF9!yq46A7$k{TcF&h zgWGb@8Fx+nAlUm~H*qGr-G;5^lB)1jX_f5BQ?d(*}P#1;=rIN%^Ez{Dm5T(+1icmE<+1ete5jzEcS_MP~?UOZt{|m%HK<< Rz*u*A&T max_factors: + max_factors = n_factors_product + print(max_factors) + if n_factors_product > n: + return i*(i+1)/2, n_factors_product + +print(solution(500)) diff --git a/p13/solution.py b/p13/solution.py new file mode 100644 index 0000000..878123e --- /dev/null +++ b/p13/solution.py @@ -0,0 +1,111 @@ +from math import log10, floor + +def solution(numbers, n): + numbers_sum = sum(numbers) + n_digits = floor(log10(numbers_sum)) + 1 + return numbers_sum//(10**(n_digits-n)) + +numbers = [ +37107287533902102798797998220837590246510135740250, +46376937677490009712648124896970078050417018260538, +74324986199524741059474233309513058123726617309629, +91942213363574161572522430563301811072406154908250, +23067588207539346171171980310421047513778063246676, +89261670696623633820136378418383684178734361726757, +28112879812849979408065481931592621691275889832738, +44274228917432520321923589422876796487670272189318, +47451445736001306439091167216856844588711603153276, +70386486105843025439939619828917593665686757934951, +62176457141856560629502157223196586755079324193331, +64906352462741904929101432445813822663347944758178, +92575867718337217661963751590579239728245598838407, +58203565325359399008402633568948830189458628227828, +80181199384826282014278194139940567587151170094390, +35398664372827112653829987240784473053190104293586, +86515506006295864861532075273371959191420517255829, +71693888707715466499115593487603532921714970056938, +54370070576826684624621495650076471787294438377604, +53282654108756828443191190634694037855217779295145, +36123272525000296071075082563815656710885258350721, +45876576172410976447339110607218265236877223636045, +17423706905851860660448207621209813287860733969412, +81142660418086830619328460811191061556940512689692, +51934325451728388641918047049293215058642563049483, +62467221648435076201727918039944693004732956340691, +15732444386908125794514089057706229429197107928209, +55037687525678773091862540744969844508330393682126, +18336384825330154686196124348767681297534375946515, +80386287592878490201521685554828717201219257766954, +78182833757993103614740356856449095527097864797581, +16726320100436897842553539920931837441497806860984, +48403098129077791799088218795327364475675590848030, +87086987551392711854517078544161852424320693150332, +59959406895756536782107074926966537676326235447210, +69793950679652694742597709739166693763042633987085, +41052684708299085211399427365734116182760315001271, +65378607361501080857009149939512557028198746004375, +35829035317434717326932123578154982629742552737307, +94953759765105305946966067683156574377167401875275, +88902802571733229619176668713819931811048770190271, +25267680276078003013678680992525463401061632866526, +36270218540497705585629946580636237993140746255962, +24074486908231174977792365466257246923322810917141, +91430288197103288597806669760892938638285025333403, +34413065578016127815921815005561868836468420090470, +23053081172816430487623791969842487255036638784583, +11487696932154902810424020138335124462181441773470, +63783299490636259666498587618221225225512486764533, +67720186971698544312419572409913959008952310058822, +95548255300263520781532296796249481641953868218774, +76085327132285723110424803456124867697064507995236, +37774242535411291684276865538926205024910326572967, +23701913275725675285653248258265463092207058596522, +29798860272258331913126375147341994889534765745501, +18495701454879288984856827726077713721403798879715, +38298203783031473527721580348144513491373226651381, +34829543829199918180278916522431027392251122869539, +40957953066405232632538044100059654939159879593635, +29746152185502371307642255121183693803580388584903, +41698116222072977186158236678424689157993532961922, +62467957194401269043877107275048102390895523597457, +23189706772547915061505504953922979530901129967519, +86188088225875314529584099251203829009407770775672, +11306739708304724483816533873502340845647058077308, +82959174767140363198008187129011875491310547126581, +97623331044818386269515456334926366572897563400500, +42846280183517070527831839425882145521227251250327, +55121603546981200581762165212827652751691296897789, +32238195734329339946437501907836945765883352399886, +75506164965184775180738168837861091527357929701337, +62177842752192623401942399639168044983993173312731, +32924185707147349566916674687634660915035914677504, +99518671430235219628894890102423325116913619626622, +73267460800591547471830798392868535206946944540724, +76841822524674417161514036427982273348055556214818, +97142617910342598647204516893989422179826088076852, +87783646182799346313767754307809363333018982642090, +10848802521674670883215120185883543223812876952786, +71329612474782464538636993009049310363619763878039, +62184073572399794223406235393808339651327408011116, +66627891981488087797941876876144230030984490851411, +60661826293682836764744779239180335110989069790714, +85786944089552990653640447425576083659976645795096, +66024396409905389607120198219976047599490197230297, +64913982680032973156037120041377903785566085089252, +16730939319872750275468906903707539413042652315011, +94809377245048795150954100921645863754710598436791, +78639167021187492431995700641917969777599028300699, +15368713711936614952811305876380278410754449733078, +40789923115535562561142322423255033685442488917353, +44889911501440648020369068063960672322193204149535, +41503128880339536053299340368006977710650566631954, +81234880673210146739058568557934581403627822703280, +82616570773948327592232845941706525094512325230608, +22918802058777319719839450180888072429661980811197, +77158542502016545090413245809786882778948721859617, +72107838435069186155435662884062257473692284509516, +20849603980134001723930671666823555245252804609722, +53503534226472524250874054075591789781264330331690 +] + +print(solution(numbers, 10)) diff --git a/p14/solution.py b/p14/solution.py new file mode 100644 index 0000000..5a47cb9 --- /dev/null +++ b/p14/solution.py @@ -0,0 +1,34 @@ +def solution(n): + n_steps = {} + i = 1 + number = 1 + chain = [1] + result = (i, len(chain)) + while i < n: + if number == 1: + chain_length = len(chain) + for j in range(chain_length-1): + n_steps[chain[j]] = chain_length - j + if chain_length > result[1]: + result = (i, chain_length) + i += 1 + number = i + chain = [i] + if number in n_steps: + chain_length = len(chain) + n_steps[number] - 1 + for j in range(len(chain)-1): + n_steps[chain[j]] = chain_length - j + if chain_length > result[1]: + result = (i, chain_length) + i += 1 + number = i + chain = [i] + elif number % 2 == 0: + number //= 2 + chain.append(number) + else: + number = 3*number +1 + chain.append(number) + return result + +print(solution(1000000)) \ No newline at end of file diff --git a/p15/solution.py b/p15/solution.py new file mode 100644 index 0000000..69d04df --- /dev/null +++ b/p15/solution.py @@ -0,0 +1,6 @@ +from math import factorial + +def solution(a, b): + return factorial(a+b) / (factorial(a) * factorial(b)) + +print(solution(20, 20)) \ No newline at end of file diff --git a/p16/solution.py b/p16/solution.py new file mode 100644 index 0000000..cb35b67 --- /dev/null +++ b/p16/solution.py @@ -0,0 +1,4 @@ +def solution(n): + return sum([int(d) for d in str(2**n)]) + +print(solution(1000)) \ No newline at end of file diff --git a/p17/solution.py b/p17/solution.py new file mode 100644 index 0000000..e22231a --- /dev/null +++ b/p17/solution.py @@ -0,0 +1,29 @@ +def solution(): + # 1 digit + l1 = ['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'] + d1 = len(combine_words(l1)) + + # 2 digits + l2 = ['twenty', 'thirty', 'fourty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety'] + l3 = ['ten', 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen'] + d2 = len(combine_words(l2)) + d1*len(l2) + len(combine_words(l2))*(len(l1)+1) + + # 3 digits + w1 = 'hundred' + w2 = 'and' + d3 = len(w1)*900 + d1*100 + len(w2)*9*99 + 9*d2 + + # 4 digits + w3 = 'thousand' + d4 = len(w3) + + return d1 + d2 + d3 + d4 + +def combine_words(words): + w = '' + for word in words: + w += word + return w + +# solved by chatGPT +print(solution()) diff --git a/p18/solution.jl b/p18/solution.jl new file mode 100644 index 0000000..8281a46 --- /dev/null +++ b/p18/solution.jl @@ -0,0 +1,41 @@ +function solution(T) + a, b = size(T); + if a == b + n = a + else + return + end + weights = zeros(n, n) + for i = 1:n + i = n-i+1 + println(i) + for j = 1:i + if i == n + weights[i, j] = T[i, j] + else + weights[i, j] = max(weights[i+1, j], weights[i+1, j+1]) + T[i, j] + end + end + end + return weights[1, 1] +end + +T = [ + 75 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 95 64 0 0 0 0 0 0 0 0 0 0 0 0 0 + 17 47 82 0 0 0 0 0 0 0 0 0 0 0 0 + 18 35 87 10 0 0 0 0 0 0 0 0 0 0 0 + 20 04 82 47 65 0 0 0 0 0 0 0 0 0 0 + 19 01 23 75 03 34 0 0 0 0 0 0 0 0 0 + 88 02 77 73 07 63 67 0 0 0 0 0 0 0 0 + 99 65 04 28 06 16 70 92 0 0 0 0 0 0 0 + 41 41 26 56 83 40 80 70 33 0 0 0 0 0 0 + 41 48 72 33 47 32 37 16 94 29 0 0 0 0 0 + 53 71 44 65 25 43 91 52 97 51 14 0 0 0 0 + 70 11 33 28 77 73 17 78 39 68 17 57 0 0 0 + 91 71 52 38 17 14 91 43 58 50 27 29 48 0 0 + 63 66 04 68 89 53 67 30 73 16 69 87 40 31 0 + 04 62 98 27 23 09 70 98 73 93 38 53 60 04 23 +] + +print(solution(T)) diff --git a/p19/solution.jl b/p19/solution.jl new file mode 100644 index 0000000..78fb9fe --- /dev/null +++ b/p19/solution.jl @@ -0,0 +1,29 @@ +function solution() + n_months = 12 + n_years = 100 + n = 0 + day = 1 + for i = 1:n_months*n_years + if (day-1)%7+1 == 7 + n += 1 + end + day += step(i) + end + return n +end + +function step(next::Int) + year = (next-1)÷12+1 + month = (next-1)%12+1 + if month ∈ [4, 6, 9, 11] + return 30 + elseif month ∈ [1, 3, 5, 7, 8, 10, 12] + return 31 + elseif year % 4 == 0 + return 29 + else return 28 + end +end + +# solved by chatGPT +println(solution()) diff --git a/p20/solution.jl b/p20/solution.jl new file mode 100644 index 0000000..e217aa4 --- /dev/null +++ b/p20/solution.jl @@ -0,0 +1,17 @@ +function solution(n) + fac = factorial(big(n)) + places = log10(fac) + sum = 0 + for i = 0:places + clip = fac÷(10^i) + sum += clip%10 + end + v = collect(string(fac)) + sum2 = 0 + for e ∈ v + sum2 += parse(Int, e) + end + return sum, sum2 +end + +print(solution(100)) diff --git a/p21/solution.jl b/p21/solution.jl new file mode 100644 index 0000000..063da8d --- /dev/null +++ b/p21/solution.jl @@ -0,0 +1,48 @@ +include("../util/sieve.jl") +import .erastothenes_sieve: get_extended_sieve, run, get + +function solution(n) + s = get_extended_sieve() + run(s, n) + sum = 0 + for i = 1:n + spds = compute_divisors(i, s) + if spds > i + spds_2 = compute_divisors(spds, s) + if spds_2 == i + sum += spds + spds_2 + println("found pair ", spds, ", ", spds_2) + end + end + end + return sum +end + +function compute_divisors(value, s) + if value == 1 + return 1 + end + pvc = get(s, value, false) + n = sum(collect(values(pvc[2]))) + pds = zeros(n) + j = 1 + for key in keys(pvc[2]) + for i = 1:pvc[2][key] + pds[j] = key + j += 1 + end + end + divisors = Set([]) + for i = 1:2^n-1 + prod = 1 + for j = 0:length(pds)-1 + if i & (1 << j) > 0 + prod *= pds[j+1] + end + end + push!(divisors, prod) + end + return round(Int, sum(collect(divisors)) + 1 - value) +end + +println(solution(10000)) diff --git a/p22/p022_names.txt b/p22/p022_names.txt new file mode 100644 index 0000000..7b8986b --- /dev/null +++ b/p22/p022_names.txt @@ -0,0 +1 @@ +"MARY","PATRICIA","LINDA","BARBARA","ELIZABETH","JENNIFER","MARIA","SUSAN","MARGARET","DOROTHY","LISA","NANCY","KAREN","BETTY","HELEN","SANDRA","DONNA","CAROL","RUTH","SHARON","MICHELLE","LAURA","SARAH","KIMBERLY","DEBORAH","JESSICA","SHIRLEY","CYNTHIA","ANGELA","MELISSA","BRENDA","AMY","ANNA","REBECCA","VIRGINIA","KATHLEEN","PAMELA","MARTHA","DEBRA","AMANDA","STEPHANIE","CAROLYN","CHRISTINE","MARIE","JANET","CATHERINE","FRANCES","ANN","JOYCE","DIANE","ALICE","JULIE","HEATHER","TERESA","DORIS","GLORIA","EVELYN","JEAN","CHERYL","MILDRED","KATHERINE","JOAN","ASHLEY","JUDITH","ROSE","JANICE","KELLY","NICOLE","JUDY","CHRISTINA","KATHY","THERESA","BEVERLY","DENISE","TAMMY","IRENE","JANE","LORI","RACHEL","MARILYN","ANDREA","KATHRYN","LOUISE","SARA","ANNE","JACQUELINE","WANDA","BONNIE","JULIA","RUBY","LOIS","TINA","PHYLLIS","NORMA","PAULA","DIANA","ANNIE","LILLIAN","EMILY","ROBIN","PEGGY","CRYSTAL","GLADYS","RITA","DAWN","CONNIE","FLORENCE","TRACY","EDNA","TIFFANY","CARMEN","ROSA","CINDY","GRACE","WENDY","VICTORIA","EDITH","KIM","SHERRY","SYLVIA","JOSEPHINE","THELMA","SHANNON","SHEILA","ETHEL","ELLEN","ELAINE","MARJORIE","CARRIE","CHARLOTTE","MONICA","ESTHER","PAULINE","EMMA","JUANITA","ANITA","RHONDA","HAZEL","AMBER","EVA","DEBBIE","APRIL","LESLIE","CLARA","LUCILLE","JAMIE","JOANNE","ELEANOR","VALERIE","DANIELLE","MEGAN","ALICIA","SUZANNE","MICHELE","GAIL","BERTHA","DARLENE","VERONICA","JILL","ERIN","GERALDINE","LAUREN","CATHY","JOANN","LORRAINE","LYNN","SALLY","REGINA","ERICA","BEATRICE","DOLORES","BERNICE","AUDREY","YVONNE","ANNETTE","JUNE","SAMANTHA","MARION","DANA","STACY","ANA","RENEE","IDA","VIVIAN","ROBERTA","HOLLY","BRITTANY","MELANIE","LORETTA","YOLANDA","JEANETTE","LAURIE","KATIE","KRISTEN","VANESSA","ALMA","SUE","ELSIE","BETH","JEANNE","VICKI","CARLA","TARA","ROSEMARY","EILEEN","TERRI","GERTRUDE","LUCY","TONYA","ELLA","STACEY","WILMA","GINA","KRISTIN","JESSIE","NATALIE","AGNES","VERA","WILLIE","CHARLENE","BESSIE","DELORES","MELINDA","PEARL","ARLENE","MAUREEN","COLLEEN","ALLISON","TAMARA","JOY","GEORGIA","CONSTANCE","LILLIE","CLAUDIA","JACKIE","MARCIA","TANYA","NELLIE","MINNIE","MARLENE","HEIDI","GLENDA","LYDIA","VIOLA","COURTNEY","MARIAN","STELLA","CAROLINE","DORA","JO","VICKIE","MATTIE","TERRY","MAXINE","IRMA","MABEL","MARSHA","MYRTLE","LENA","CHRISTY","DEANNA","PATSY","HILDA","GWENDOLYN","JENNIE","NORA","MARGIE","NINA","CASSANDRA","LEAH","PENNY","KAY","PRISCILLA","NAOMI","CAROLE","BRANDY","OLGA","BILLIE","DIANNE","TRACEY","LEONA","JENNY","FELICIA","SONIA","MIRIAM","VELMA","BECKY","BOBBIE","VIOLET","KRISTINA","TONI","MISTY","MAE","SHELLY","DAISY","RAMONA","SHERRI","ERIKA","KATRINA","CLAIRE","LINDSEY","LINDSAY","GENEVA","GUADALUPE","BELINDA","MARGARITA","SHERYL","CORA","FAYE","ADA","NATASHA","SABRINA","ISABEL","MARGUERITE","HATTIE","HARRIET","MOLLY","CECILIA","KRISTI","BRANDI","BLANCHE","SANDY","ROSIE","JOANNA","IRIS","EUNICE","ANGIE","INEZ","LYNDA","MADELINE","AMELIA","ALBERTA","GENEVIEVE","MONIQUE","JODI","JANIE","MAGGIE","KAYLA","SONYA","JAN","LEE","KRISTINE","CANDACE","FANNIE","MARYANN","OPAL","ALISON","YVETTE","MELODY","LUZ","SUSIE","OLIVIA","FLORA","SHELLEY","KRISTY","MAMIE","LULA","LOLA","VERNA","BEULAH","ANTOINETTE","CANDICE","JUANA","JEANNETTE","PAM","KELLI","HANNAH","WHITNEY","BRIDGET","KARLA","CELIA","LATOYA","PATTY","SHELIA","GAYLE","DELLA","VICKY","LYNNE","SHERI","MARIANNE","KARA","JACQUELYN","ERMA","BLANCA","MYRA","LETICIA","PAT","KRISTA","ROXANNE","ANGELICA","JOHNNIE","ROBYN","FRANCIS","ADRIENNE","ROSALIE","ALEXANDRA","BROOKE","BETHANY","SADIE","BERNADETTE","TRACI","JODY","KENDRA","JASMINE","NICHOLE","RACHAEL","CHELSEA","MABLE","ERNESTINE","MURIEL","MARCELLA","ELENA","KRYSTAL","ANGELINA","NADINE","KARI","ESTELLE","DIANNA","PAULETTE","LORA","MONA","DOREEN","ROSEMARIE","ANGEL","DESIREE","ANTONIA","HOPE","GINGER","JANIS","BETSY","CHRISTIE","FREDA","MERCEDES","MEREDITH","LYNETTE","TERI","CRISTINA","EULA","LEIGH","MEGHAN","SOPHIA","ELOISE","ROCHELLE","GRETCHEN","CECELIA","RAQUEL","HENRIETTA","ALYSSA","JANA","KELLEY","GWEN","KERRY","JENNA","TRICIA","LAVERNE","OLIVE","ALEXIS","TASHA","SILVIA","ELVIRA","CASEY","DELIA","SOPHIE","KATE","PATTI","LORENA","KELLIE","SONJA","LILA","LANA","DARLA","MAY","MINDY","ESSIE","MANDY","LORENE","ELSA","JOSEFINA","JEANNIE","MIRANDA","DIXIE","LUCIA","MARTA","FAITH","LELA","JOHANNA","SHARI","CAMILLE","TAMI","SHAWNA","ELISA","EBONY","MELBA","ORA","NETTIE","TABITHA","OLLIE","JAIME","WINIFRED","KRISTIE","MARINA","ALISHA","AIMEE","RENA","MYRNA","MARLA","TAMMIE","LATASHA","BONITA","PATRICE","RONDA","SHERRIE","ADDIE","FRANCINE","DELORIS","STACIE","ADRIANA","CHERI","SHELBY","ABIGAIL","CELESTE","JEWEL","CARA","ADELE","REBEKAH","LUCINDA","DORTHY","CHRIS","EFFIE","TRINA","REBA","SHAWN","SALLIE","AURORA","LENORA","ETTA","LOTTIE","KERRI","TRISHA","NIKKI","ESTELLA","FRANCISCA","JOSIE","TRACIE","MARISSA","KARIN","BRITTNEY","JANELLE","LOURDES","LAUREL","HELENE","FERN","ELVA","CORINNE","KELSEY","INA","BETTIE","ELISABETH","AIDA","CAITLIN","INGRID","IVA","EUGENIA","CHRISTA","GOLDIE","CASSIE","MAUDE","JENIFER","THERESE","FRANKIE","DENA","LORNA","JANETTE","LATONYA","CANDY","MORGAN","CONSUELO","TAMIKA","ROSETTA","DEBORA","CHERIE","POLLY","DINA","JEWELL","FAY","JILLIAN","DOROTHEA","NELL","TRUDY","ESPERANZA","PATRICA","KIMBERLEY","SHANNA","HELENA","CAROLINA","CLEO","STEFANIE","ROSARIO","OLA","JANINE","MOLLIE","LUPE","ALISA","LOU","MARIBEL","SUSANNE","BETTE","SUSANA","ELISE","CECILE","ISABELLE","LESLEY","JOCELYN","PAIGE","JONI","RACHELLE","LEOLA","DAPHNE","ALTA","ESTER","PETRA","GRACIELA","IMOGENE","JOLENE","KEISHA","LACEY","GLENNA","GABRIELA","KERI","URSULA","LIZZIE","KIRSTEN","SHANA","ADELINE","MAYRA","JAYNE","JACLYN","GRACIE","SONDRA","CARMELA","MARISA","ROSALIND","CHARITY","TONIA","BEATRIZ","MARISOL","CLARICE","JEANINE","SHEENA","ANGELINE","FRIEDA","LILY","ROBBIE","SHAUNA","MILLIE","CLAUDETTE","CATHLEEN","ANGELIA","GABRIELLE","AUTUMN","KATHARINE","SUMMER","JODIE","STACI","LEA","CHRISTI","JIMMIE","JUSTINE","ELMA","LUELLA","MARGRET","DOMINIQUE","SOCORRO","RENE","MARTINA","MARGO","MAVIS","CALLIE","BOBBI","MARITZA","LUCILE","LEANNE","JEANNINE","DEANA","AILEEN","LORIE","LADONNA","WILLA","MANUELA","GALE","SELMA","DOLLY","SYBIL","ABBY","LARA","DALE","IVY","DEE","WINNIE","MARCY","LUISA","JERI","MAGDALENA","OFELIA","MEAGAN","AUDRA","MATILDA","LEILA","CORNELIA","BIANCA","SIMONE","BETTYE","RANDI","VIRGIE","LATISHA","BARBRA","GEORGINA","ELIZA","LEANN","BRIDGETTE","RHODA","HALEY","ADELA","NOLA","BERNADINE","FLOSSIE","ILA","GRETA","RUTHIE","NELDA","MINERVA","LILLY","TERRIE","LETHA","HILARY","ESTELA","VALARIE","BRIANNA","ROSALYN","EARLINE","CATALINA","AVA","MIA","CLARISSA","LIDIA","CORRINE","ALEXANDRIA","CONCEPCION","TIA","SHARRON","RAE","DONA","ERICKA","JAMI","ELNORA","CHANDRA","LENORE","NEVA","MARYLOU","MELISA","TABATHA","SERENA","AVIS","ALLIE","SOFIA","JEANIE","ODESSA","NANNIE","HARRIETT","LORAINE","PENELOPE","MILAGROS","EMILIA","BENITA","ALLYSON","ASHLEE","TANIA","TOMMIE","ESMERALDA","KARINA","EVE","PEARLIE","ZELMA","MALINDA","NOREEN","TAMEKA","SAUNDRA","HILLARY","AMIE","ALTHEA","ROSALINDA","JORDAN","LILIA","ALANA","GAY","CLARE","ALEJANDRA","ELINOR","MICHAEL","LORRIE","JERRI","DARCY","EARNESTINE","CARMELLA","TAYLOR","NOEMI","MARCIE","LIZA","ANNABELLE","LOUISA","EARLENE","MALLORY","CARLENE","NITA","SELENA","TANISHA","KATY","JULIANNE","JOHN","LAKISHA","EDWINA","MARICELA","MARGERY","KENYA","DOLLIE","ROXIE","ROSLYN","KATHRINE","NANETTE","CHARMAINE","LAVONNE","ILENE","KRIS","TAMMI","SUZETTE","CORINE","KAYE","JERRY","MERLE","CHRYSTAL","LINA","DEANNE","LILIAN","JULIANA","ALINE","LUANN","KASEY","MARYANNE","EVANGELINE","COLETTE","MELVA","LAWANDA","YESENIA","NADIA","MADGE","KATHIE","EDDIE","OPHELIA","VALERIA","NONA","MITZI","MARI","GEORGETTE","CLAUDINE","FRAN","ALISSA","ROSEANN","LAKEISHA","SUSANNA","REVA","DEIDRE","CHASITY","SHEREE","CARLY","JAMES","ELVIA","ALYCE","DEIRDRE","GENA","BRIANA","ARACELI","KATELYN","ROSANNE","WENDI","TESSA","BERTA","MARVA","IMELDA","MARIETTA","MARCI","LEONOR","ARLINE","SASHA","MADELYN","JANNA","JULIETTE","DEENA","AURELIA","JOSEFA","AUGUSTA","LILIANA","YOUNG","CHRISTIAN","LESSIE","AMALIA","SAVANNAH","ANASTASIA","VILMA","NATALIA","ROSELLA","LYNNETTE","CORINA","ALFREDA","LEANNA","CAREY","AMPARO","COLEEN","TAMRA","AISHA","WILDA","KARYN","CHERRY","QUEEN","MAURA","MAI","EVANGELINA","ROSANNA","HALLIE","ERNA","ENID","MARIANA","LACY","JULIET","JACKLYN","FREIDA","MADELEINE","MARA","HESTER","CATHRYN","LELIA","CASANDRA","BRIDGETT","ANGELITA","JANNIE","DIONNE","ANNMARIE","KATINA","BERYL","PHOEBE","MILLICENT","KATHERYN","DIANN","CARISSA","MARYELLEN","LIZ","LAURI","HELGA","GILDA","ADRIAN","RHEA","MARQUITA","HOLLIE","TISHA","TAMERA","ANGELIQUE","FRANCESCA","BRITNEY","KAITLIN","LOLITA","FLORINE","ROWENA","REYNA","TWILA","FANNY","JANELL","INES","CONCETTA","BERTIE","ALBA","BRIGITTE","ALYSON","VONDA","PANSY","ELBA","NOELLE","LETITIA","KITTY","DEANN","BRANDIE","LOUELLA","LETA","FELECIA","SHARLENE","LESA","BEVERLEY","ROBERT","ISABELLA","HERMINIA","TERRA","CELINA","TORI","OCTAVIA","JADE","DENICE","GERMAINE","SIERRA","MICHELL","CORTNEY","NELLY","DORETHA","SYDNEY","DEIDRA","MONIKA","LASHONDA","JUDI","CHELSEY","ANTIONETTE","MARGOT","BOBBY","ADELAIDE","NAN","LEEANN","ELISHA","DESSIE","LIBBY","KATHI","GAYLA","LATANYA","MINA","MELLISA","KIMBERLEE","JASMIN","RENAE","ZELDA","ELDA","MA","JUSTINA","GUSSIE","EMILIE","CAMILLA","ABBIE","ROCIO","KAITLYN","JESSE","EDYTHE","ASHLEIGH","SELINA","LAKESHA","GERI","ALLENE","PAMALA","MICHAELA","DAYNA","CARYN","ROSALIA","SUN","JACQULINE","REBECA","MARYBETH","KRYSTLE","IOLA","DOTTIE","BENNIE","BELLE","AUBREY","GRISELDA","ERNESTINA","ELIDA","ADRIANNE","DEMETRIA","DELMA","CHONG","JAQUELINE","DESTINY","ARLEEN","VIRGINA","RETHA","FATIMA","TILLIE","ELEANORE","CARI","TREVA","BIRDIE","WILHELMINA","ROSALEE","MAURINE","LATRICE","YONG","JENA","TARYN","ELIA","DEBBY","MAUDIE","JEANNA","DELILAH","CATRINA","SHONDA","HORTENCIA","THEODORA","TERESITA","ROBBIN","DANETTE","MARYJANE","FREDDIE","DELPHINE","BRIANNE","NILDA","DANNA","CINDI","BESS","IONA","HANNA","ARIEL","WINONA","VIDA","ROSITA","MARIANNA","WILLIAM","RACHEAL","GUILLERMINA","ELOISA","CELESTINE","CAREN","MALISSA","LONA","CHANTEL","SHELLIE","MARISELA","LEORA","AGATHA","SOLEDAD","MIGDALIA","IVETTE","CHRISTEN","ATHENA","JANEL","CHLOE","VEDA","PATTIE","TESSIE","TERA","MARILYNN","LUCRETIA","KARRIE","DINAH","DANIELA","ALECIA","ADELINA","VERNICE","SHIELA","PORTIA","MERRY","LASHAWN","DEVON","DARA","TAWANA","OMA","VERDA","CHRISTIN","ALENE","ZELLA","SANDI","RAFAELA","MAYA","KIRA","CANDIDA","ALVINA","SUZAN","SHAYLA","LYN","LETTIE","ALVA","SAMATHA","ORALIA","MATILDE","MADONNA","LARISSA","VESTA","RENITA","INDIA","DELOIS","SHANDA","PHILLIS","LORRI","ERLINDA","CRUZ","CATHRINE","BARB","ZOE","ISABELL","IONE","GISELA","CHARLIE","VALENCIA","ROXANNA","MAYME","KISHA","ELLIE","MELLISSA","DORRIS","DALIA","BELLA","ANNETTA","ZOILA","RETA","REINA","LAURETTA","KYLIE","CHRISTAL","PILAR","CHARLA","ELISSA","TIFFANI","TANA","PAULINA","LEOTA","BREANNA","JAYME","CARMEL","VERNELL","TOMASA","MANDI","DOMINGA","SANTA","MELODIE","LURA","ALEXA","TAMELA","RYAN","MIRNA","KERRIE","VENUS","NOEL","FELICITA","CRISTY","CARMELITA","BERNIECE","ANNEMARIE","TIARA","ROSEANNE","MISSY","CORI","ROXANA","PRICILLA","KRISTAL","JUNG","ELYSE","HAYDEE","ALETHA","BETTINA","MARGE","GILLIAN","FILOMENA","CHARLES","ZENAIDA","HARRIETTE","CARIDAD","VADA","UNA","ARETHA","PEARLINE","MARJORY","MARCELA","FLOR","EVETTE","ELOUISE","ALINA","TRINIDAD","DAVID","DAMARIS","CATHARINE","CARROLL","BELVA","NAKIA","MARLENA","LUANNE","LORINE","KARON","DORENE","DANITA","BRENNA","TATIANA","SAMMIE","LOUANN","LOREN","JULIANNA","ANDRIA","PHILOMENA","LUCILA","LEONORA","DOVIE","ROMONA","MIMI","JACQUELIN","GAYE","TONJA","MISTI","JOE","GENE","CHASTITY","STACIA","ROXANN","MICAELA","NIKITA","MEI","VELDA","MARLYS","JOHNNA","AURA","LAVERN","IVONNE","HAYLEY","NICKI","MAJORIE","HERLINDA","GEORGE","ALPHA","YADIRA","PERLA","GREGORIA","DANIEL","ANTONETTE","SHELLI","MOZELLE","MARIAH","JOELLE","CORDELIA","JOSETTE","CHIQUITA","TRISTA","LOUIS","LAQUITA","GEORGIANA","CANDI","SHANON","LONNIE","HILDEGARD","CECIL","VALENTINA","STEPHANY","MAGDA","KAROL","GERRY","GABRIELLA","TIANA","ROMA","RICHELLE","RAY","PRINCESS","OLETA","JACQUE","IDELLA","ALAINA","SUZANNA","JOVITA","BLAIR","TOSHA","RAVEN","NEREIDA","MARLYN","KYLA","JOSEPH","DELFINA","TENA","STEPHENIE","SABINA","NATHALIE","MARCELLE","GERTIE","DARLEEN","THEA","SHARONDA","SHANTEL","BELEN","VENESSA","ROSALINA","ONA","GENOVEVA","COREY","CLEMENTINE","ROSALBA","RENATE","RENATA","MI","IVORY","GEORGIANNA","FLOY","DORCAS","ARIANA","TYRA","THEDA","MARIAM","JULI","JESICA","DONNIE","VIKKI","VERLA","ROSELYN","MELVINA","JANNETTE","GINNY","DEBRAH","CORRIE","ASIA","VIOLETA","MYRTIS","LATRICIA","COLLETTE","CHARLEEN","ANISSA","VIVIANA","TWYLA","PRECIOUS","NEDRA","LATONIA","LAN","HELLEN","FABIOLA","ANNAMARIE","ADELL","SHARYN","CHANTAL","NIKI","MAUD","LIZETTE","LINDY","KIA","KESHA","JEANA","DANELLE","CHARLINE","CHANEL","CARROL","VALORIE","LIA","DORTHA","CRISTAL","SUNNY","LEONE","LEILANI","GERRI","DEBI","ANDRA","KESHIA","IMA","EULALIA","EASTER","DULCE","NATIVIDAD","LINNIE","KAMI","GEORGIE","CATINA","BROOK","ALDA","WINNIFRED","SHARLA","RUTHANN","MEAGHAN","MAGDALENE","LISSETTE","ADELAIDA","VENITA","TRENA","SHIRLENE","SHAMEKA","ELIZEBETH","DIAN","SHANTA","MICKEY","LATOSHA","CARLOTTA","WINDY","SOON","ROSINA","MARIANN","LEISA","JONNIE","DAWNA","CATHIE","BILLY","ASTRID","SIDNEY","LAUREEN","JANEEN","HOLLI","FAWN","VICKEY","TERESSA","SHANTE","RUBYE","MARCELINA","CHANDA","CARY","TERESE","SCARLETT","MARTY","MARNIE","LULU","LISETTE","JENIFFER","ELENOR","DORINDA","DONITA","CARMAN","BERNITA","ALTAGRACIA","ALETA","ADRIANNA","ZORAIDA","RONNIE","NICOLA","LYNDSEY","KENDALL","JANINA","CHRISSY","AMI","STARLA","PHYLIS","PHUONG","KYRA","CHARISSE","BLANCH","SANJUANITA","RONA","NANCI","MARILEE","MARANDA","CORY","BRIGETTE","SANJUANA","MARITA","KASSANDRA","JOYCELYN","IRA","FELIPA","CHELSIE","BONNY","MIREYA","LORENZA","KYONG","ILEANA","CANDELARIA","TONY","TOBY","SHERIE","OK","MARK","LUCIE","LEATRICE","LAKESHIA","GERDA","EDIE","BAMBI","MARYLIN","LAVON","HORTENSE","GARNET","EVIE","TRESSA","SHAYNA","LAVINA","KYUNG","JEANETTA","SHERRILL","SHARA","PHYLISS","MITTIE","ANABEL","ALESIA","THUY","TAWANDA","RICHARD","JOANIE","TIFFANIE","LASHANDA","KARISSA","ENRIQUETA","DARIA","DANIELLA","CORINNA","ALANNA","ABBEY","ROXANE","ROSEANNA","MAGNOLIA","LIDA","KYLE","JOELLEN","ERA","CORAL","CARLEEN","TRESA","PEGGIE","NOVELLA","NILA","MAYBELLE","JENELLE","CARINA","NOVA","MELINA","MARQUERITE","MARGARETTE","JOSEPHINA","EVONNE","DEVIN","CINTHIA","ALBINA","TOYA","TAWNYA","SHERITA","SANTOS","MYRIAM","LIZABETH","LISE","KEELY","JENNI","GISELLE","CHERYLE","ARDITH","ARDIS","ALESHA","ADRIANE","SHAINA","LINNEA","KAROLYN","HONG","FLORIDA","FELISHA","DORI","DARCI","ARTIE","ARMIDA","ZOLA","XIOMARA","VERGIE","SHAMIKA","NENA","NANNETTE","MAXIE","LOVIE","JEANE","JAIMIE","INGE","FARRAH","ELAINA","CAITLYN","STARR","FELICITAS","CHERLY","CARYL","YOLONDA","YASMIN","TEENA","PRUDENCE","PENNIE","NYDIA","MACKENZIE","ORPHA","MARVEL","LIZBETH","LAURETTE","JERRIE","HERMELINDA","CAROLEE","TIERRA","MIRIAN","META","MELONY","KORI","JENNETTE","JAMILA","ENA","ANH","YOSHIKO","SUSANNAH","SALINA","RHIANNON","JOLEEN","CRISTINE","ASHTON","ARACELY","TOMEKA","SHALONDA","MARTI","LACIE","KALA","JADA","ILSE","HAILEY","BRITTANI","ZONA","SYBLE","SHERRYL","RANDY","NIDIA","MARLO","KANDICE","KANDI","DEB","DEAN","AMERICA","ALYCIA","TOMMY","RONNA","NORENE","MERCY","JOSE","INGEBORG","GIOVANNA","GEMMA","CHRISTEL","AUDRY","ZORA","VITA","VAN","TRISH","STEPHAINE","SHIRLEE","SHANIKA","MELONIE","MAZIE","JAZMIN","INGA","HOA","HETTIE","GERALYN","FONDA","ESTRELLA","ADELLA","SU","SARITA","RINA","MILISSA","MARIBETH","GOLDA","EVON","ETHELYN","ENEDINA","CHERISE","CHANA","VELVA","TAWANNA","SADE","MIRTA","LI","KARIE","JACINTA","ELNA","DAVINA","CIERRA","ASHLIE","ALBERTHA","TANESHA","STEPHANI","NELLE","MINDI","LU","LORINDA","LARUE","FLORENE","DEMETRA","DEDRA","CIARA","CHANTELLE","ASHLY","SUZY","ROSALVA","NOELIA","LYDA","LEATHA","KRYSTYNA","KRISTAN","KARRI","DARLINE","DARCIE","CINDA","CHEYENNE","CHERRIE","AWILDA","ALMEDA","ROLANDA","LANETTE","JERILYN","GISELE","EVALYN","CYNDI","CLETA","CARIN","ZINA","ZENA","VELIA","TANIKA","PAUL","CHARISSA","THOMAS","TALIA","MARGARETE","LAVONDA","KAYLEE","KATHLENE","JONNA","IRENA","ILONA","IDALIA","CANDIS","CANDANCE","BRANDEE","ANITRA","ALIDA","SIGRID","NICOLETTE","MARYJO","LINETTE","HEDWIG","CHRISTIANA","CASSIDY","ALEXIA","TRESSIE","MODESTA","LUPITA","LITA","GLADIS","EVELIA","DAVIDA","CHERRI","CECILY","ASHELY","ANNABEL","AGUSTINA","WANITA","SHIRLY","ROSAURA","HULDA","EUN","BAILEY","YETTA","VERONA","THOMASINA","SIBYL","SHANNAN","MECHELLE","LUE","LEANDRA","LANI","KYLEE","KANDY","JOLYNN","FERNE","EBONI","CORENE","ALYSIA","ZULA","NADA","MOIRA","LYNDSAY","LORRETTA","JUAN","JAMMIE","HORTENSIA","GAYNELL","CAMERON","ADRIA","VINA","VICENTA","TANGELA","STEPHINE","NORINE","NELLA","LIANA","LESLEE","KIMBERELY","ILIANA","GLORY","FELICA","EMOGENE","ELFRIEDE","EDEN","EARTHA","CARMA","BEA","OCIE","MARRY","LENNIE","KIARA","JACALYN","CARLOTA","ARIELLE","YU","STAR","OTILIA","KIRSTIN","KACEY","JOHNETTA","JOEY","JOETTA","JERALDINE","JAUNITA","ELANA","DORTHEA","CAMI","AMADA","ADELIA","VERNITA","TAMAR","SIOBHAN","RENEA","RASHIDA","OUIDA","ODELL","NILSA","MERYL","KRISTYN","JULIETA","DANICA","BREANNE","AUREA","ANGLEA","SHERRON","ODETTE","MALIA","LORELEI","LIN","LEESA","KENNA","KATHLYN","FIONA","CHARLETTE","SUZIE","SHANTELL","SABRA","RACQUEL","MYONG","MIRA","MARTINE","LUCIENNE","LAVADA","JULIANN","JOHNIE","ELVERA","DELPHIA","CLAIR","CHRISTIANE","CHAROLETTE","CARRI","AUGUSTINE","ASHA","ANGELLA","PAOLA","NINFA","LEDA","LAI","EDA","SUNSHINE","STEFANI","SHANELL","PALMA","MACHELLE","LISSA","KECIA","KATHRYNE","KARLENE","JULISSA","JETTIE","JENNIFFER","HUI","CORRINA","CHRISTOPHER","CAROLANN","ALENA","TESS","ROSARIA","MYRTICE","MARYLEE","LIANE","KENYATTA","JUDIE","JANEY","IN","ELMIRA","ELDORA","DENNA","CRISTI","CATHI","ZAIDA","VONNIE","VIVA","VERNIE","ROSALINE","MARIELA","LUCIANA","LESLI","KARAN","FELICE","DENEEN","ADINA","WYNONA","TARSHA","SHERON","SHASTA","SHANITA","SHANI","SHANDRA","RANDA","PINKIE","PARIS","NELIDA","MARILOU","LYLA","LAURENE","LACI","JOI","JANENE","DOROTHA","DANIELE","DANI","CAROLYNN","CARLYN","BERENICE","AYESHA","ANNELIESE","ALETHEA","THERSA","TAMIKO","RUFINA","OLIVA","MOZELL","MARYLYN","MADISON","KRISTIAN","KATHYRN","KASANDRA","KANDACE","JANAE","GABRIEL","DOMENICA","DEBBRA","DANNIELLE","CHUN","BUFFY","BARBIE","ARCELIA","AJA","ZENOBIA","SHAREN","SHAREE","PATRICK","PAGE","MY","LAVINIA","KUM","KACIE","JACKELINE","HUONG","FELISA","EMELIA","ELEANORA","CYTHIA","CRISTIN","CLYDE","CLARIBEL","CARON","ANASTACIA","ZULMA","ZANDRA","YOKO","TENISHA","SUSANN","SHERILYN","SHAY","SHAWANDA","SABINE","ROMANA","MATHILDA","LINSEY","KEIKO","JOANA","ISELA","GRETTA","GEORGETTA","EUGENIE","DUSTY","DESIRAE","DELORA","CORAZON","ANTONINA","ANIKA","WILLENE","TRACEE","TAMATHA","REGAN","NICHELLE","MICKIE","MAEGAN","LUANA","LANITA","KELSIE","EDELMIRA","BREE","AFTON","TEODORA","TAMIE","SHENA","MEG","LINH","KELI","KACI","DANYELLE","BRITT","ARLETTE","ALBERTINE","ADELLE","TIFFINY","STORMY","SIMONA","NUMBERS","NICOLASA","NICHOL","NIA","NAKISHA","MEE","MAIRA","LOREEN","KIZZY","JOHNNY","JAY","FALLON","CHRISTENE","BOBBYE","ANTHONY","YING","VINCENZA","TANJA","RUBIE","RONI","QUEENIE","MARGARETT","KIMBERLI","IRMGARD","IDELL","HILMA","EVELINA","ESTA","EMILEE","DENNISE","DANIA","CARL","CARIE","ANTONIO","WAI","SANG","RISA","RIKKI","PARTICIA","MUI","MASAKO","MARIO","LUVENIA","LOREE","LONI","LIEN","KEVIN","GIGI","FLORENCIA","DORIAN","DENITA","DALLAS","CHI","BILLYE","ALEXANDER","TOMIKA","SHARITA","RANA","NIKOLE","NEOMA","MARGARITE","MADALYN","LUCINA","LAILA","KALI","JENETTE","GABRIELE","EVELYNE","ELENORA","CLEMENTINA","ALEJANDRINA","ZULEMA","VIOLETTE","VANNESSA","THRESA","RETTA","PIA","PATIENCE","NOELLA","NICKIE","JONELL","DELTA","CHUNG","CHAYA","CAMELIA","BETHEL","ANYA","ANDREW","THANH","SUZANN","SPRING","SHU","MILA","LILLA","LAVERNA","KEESHA","KATTIE","GIA","GEORGENE","EVELINE","ESTELL","ELIZBETH","VIVIENNE","VALLIE","TRUDIE","STEPHANE","MICHEL","MAGALY","MADIE","KENYETTA","KARREN","JANETTA","HERMINE","HARMONY","DRUCILLA","DEBBI","CELESTINA","CANDIE","BRITNI","BECKIE","AMINA","ZITA","YUN","YOLANDE","VIVIEN","VERNETTA","TRUDI","SOMMER","PEARLE","PATRINA","OSSIE","NICOLLE","LOYCE","LETTY","LARISA","KATHARINA","JOSELYN","JONELLE","JENELL","IESHA","HEIDE","FLORINDA","FLORENTINA","FLO","ELODIA","DORINE","BRUNILDA","BRIGID","ASHLI","ARDELLA","TWANA","THU","TARAH","SUNG","SHEA","SHAVON","SHANE","SERINA","RAYNA","RAMONITA","NGA","MARGURITE","LUCRECIA","KOURTNEY","KATI","JESUS","JESENIA","DIAMOND","CRISTA","AYANA","ALICA","ALIA","VINNIE","SUELLEN","ROMELIA","RACHELL","PIPER","OLYMPIA","MICHIKO","KATHALEEN","JOLIE","JESSI","JANESSA","HANA","HA","ELEASE","CARLETTA","BRITANY","SHONA","SALOME","ROSAMOND","REGENA","RAINA","NGOC","NELIA","LOUVENIA","LESIA","LATRINA","LATICIA","LARHONDA","JINA","JACKI","HOLLIS","HOLLEY","EMMY","DEEANN","CORETTA","ARNETTA","VELVET","THALIA","SHANICE","NETA","MIKKI","MICKI","LONNA","LEANA","LASHUNDA","KILEY","JOYE","JACQULYN","IGNACIA","HYUN","HIROKO","HENRY","HENRIETTE","ELAYNE","DELINDA","DARNELL","DAHLIA","COREEN","CONSUELA","CONCHITA","CELINE","BABETTE","AYANNA","ANETTE","ALBERTINA","SKYE","SHAWNEE","SHANEKA","QUIANA","PAMELIA","MIN","MERRI","MERLENE","MARGIT","KIESHA","KIERA","KAYLENE","JODEE","JENISE","ERLENE","EMMIE","ELSE","DARYL","DALILA","DAISEY","CODY","CASIE","BELIA","BABARA","VERSIE","VANESA","SHELBA","SHAWNDA","SAM","NORMAN","NIKIA","NAOMA","MARNA","MARGERET","MADALINE","LAWANA","KINDRA","JUTTA","JAZMINE","JANETT","HANNELORE","GLENDORA","GERTRUD","GARNETT","FREEDA","FREDERICA","FLORANCE","FLAVIA","DENNIS","CARLINE","BEVERLEE","ANJANETTE","VALDA","TRINITY","TAMALA","STEVIE","SHONNA","SHA","SARINA","ONEIDA","MICAH","MERILYN","MARLEEN","LURLINE","LENNA","KATHERIN","JIN","JENI","HAE","GRACIA","GLADY","FARAH","ERIC","ENOLA","EMA","DOMINQUE","DEVONA","DELANA","CECILA","CAPRICE","ALYSHA","ALI","ALETHIA","VENA","THERESIA","TAWNY","SONG","SHAKIRA","SAMARA","SACHIKO","RACHELE","PAMELLA","NICKY","MARNI","MARIEL","MAREN","MALISA","LIGIA","LERA","LATORIA","LARAE","KIMBER","KATHERN","KAREY","JENNEFER","JANETH","HALINA","FREDIA","DELISA","DEBROAH","CIERA","CHIN","ANGELIKA","ANDREE","ALTHA","YEN","VIVAN","TERRESA","TANNA","SUK","SUDIE","SOO","SIGNE","SALENA","RONNI","REBBECCA","MYRTIE","MCKENZIE","MALIKA","MAIDA","LOAN","LEONARDA","KAYLEIGH","FRANCE","ETHYL","ELLYN","DAYLE","CAMMIE","BRITTNI","BIRGIT","AVELINA","ASUNCION","ARIANNA","AKIKO","VENICE","TYESHA","TONIE","TIESHA","TAKISHA","STEFFANIE","SINDY","SANTANA","MEGHANN","MANDA","MACIE","LADY","KELLYE","KELLEE","JOSLYN","JASON","INGER","INDIRA","GLINDA","GLENNIS","FERNANDA","FAUSTINA","ENEIDA","ELICIA","DOT","DIGNA","DELL","ARLETTA","ANDRE","WILLIA","TAMMARA","TABETHA","SHERRELL","SARI","REFUGIO","REBBECA","PAULETTA","NIEVES","NATOSHA","NAKITA","MAMMIE","KENISHA","KAZUKO","KASSIE","GARY","EARLEAN","DAPHINE","CORLISS","CLOTILDE","CAROLYNE","BERNETTA","AUGUSTINA","AUDREA","ANNIS","ANNABELL","YAN","TENNILLE","TAMICA","SELENE","SEAN","ROSANA","REGENIA","QIANA","MARKITA","MACY","LEEANNE","LAURINE","KYM","JESSENIA","JANITA","GEORGINE","GENIE","EMIKO","ELVIE","DEANDRA","DAGMAR","CORIE","COLLEN","CHERISH","ROMAINE","PORSHA","PEARLENE","MICHELINE","MERNA","MARGORIE","MARGARETTA","LORE","KENNETH","JENINE","HERMINA","FREDERICKA","ELKE","DRUSILLA","DORATHY","DIONE","DESIRE","CELENA","BRIGIDA","ANGELES","ALLEGRA","THEO","TAMEKIA","SYNTHIA","STEPHEN","SOOK","SLYVIA","ROSANN","REATHA","RAYE","MARQUETTA","MARGART","LING","LAYLA","KYMBERLY","KIANA","KAYLEEN","KATLYN","KARMEN","JOELLA","IRINA","EMELDA","ELENI","DETRA","CLEMMIE","CHERYLL","CHANTELL","CATHEY","ARNITA","ARLA","ANGLE","ANGELIC","ALYSE","ZOFIA","THOMASINE","TENNIE","SON","SHERLY","SHERLEY","SHARYL","REMEDIOS","PETRINA","NICKOLE","MYUNG","MYRLE","MOZELLA","LOUANNE","LISHA","LATIA","LANE","KRYSTA","JULIENNE","JOEL","JEANENE","JACQUALINE","ISAURA","GWENDA","EARLEEN","DONALD","CLEOPATRA","CARLIE","AUDIE","ANTONIETTA","ALISE","ALEX","VERDELL","VAL","TYLER","TOMOKO","THAO","TALISHA","STEVEN","SO","SHEMIKA","SHAUN","SCARLET","SAVANNA","SANTINA","ROSIA","RAEANN","ODILIA","NANA","MINNA","MAGAN","LYNELLE","LE","KARMA","JOEANN","IVANA","INELL","ILANA","HYE","HONEY","HEE","GUDRUN","FRANK","DREAMA","CRISSY","CHANTE","CARMELINA","ARVILLA","ARTHUR","ANNAMAE","ALVERA","ALEIDA","AARON","YEE","YANIRA","VANDA","TIANNA","TAM","STEFANIA","SHIRA","PERRY","NICOL","NANCIE","MONSERRATE","MINH","MELYNDA","MELANY","MATTHEW","LOVELLA","LAURE","KIRBY","KACY","JACQUELYNN","HYON","GERTHA","FRANCISCO","ELIANA","CHRISTENA","CHRISTEEN","CHARISE","CATERINA","CARLEY","CANDYCE","ARLENA","AMMIE","YANG","WILLETTE","VANITA","TUYET","TINY","SYREETA","SILVA","SCOTT","RONALD","PENNEY","NYLA","MICHAL","MAURICE","MARYAM","MARYA","MAGEN","LUDIE","LOMA","LIVIA","LANELL","KIMBERLIE","JULEE","DONETTA","DIEDRA","DENISHA","DEANE","DAWNE","CLARINE","CHERRYL","BRONWYN","BRANDON","ALLA","VALERY","TONDA","SUEANN","SORAYA","SHOSHANA","SHELA","SHARLEEN","SHANELLE","NERISSA","MICHEAL","MERIDITH","MELLIE","MAYE","MAPLE","MAGARET","LUIS","LILI","LEONILA","LEONIE","LEEANNA","LAVONIA","LAVERA","KRISTEL","KATHEY","KATHE","JUSTIN","JULIAN","JIMMY","JANN","ILDA","HILDRED","HILDEGARDE","GENIA","FUMIKO","EVELIN","ERMELINDA","ELLY","DUNG","DOLORIS","DIONNA","DANAE","BERNEICE","ANNICE","ALIX","VERENA","VERDIE","TRISTAN","SHAWNNA","SHAWANA","SHAUNNA","ROZELLA","RANDEE","RANAE","MILAGRO","LYNELL","LUISE","LOUIE","LOIDA","LISBETH","KARLEEN","JUNITA","JONA","ISIS","HYACINTH","HEDY","GWENN","ETHELENE","ERLINE","EDWARD","DONYA","DOMONIQUE","DELICIA","DANNETTE","CICELY","BRANDA","BLYTHE","BETHANN","ASHLYN","ANNALEE","ALLINE","YUKO","VELLA","TRANG","TOWANDA","TESHA","SHERLYN","NARCISA","MIGUELINA","MERI","MAYBELL","MARLANA","MARGUERITA","MADLYN","LUNA","LORY","LORIANN","LIBERTY","LEONORE","LEIGHANN","LAURICE","LATESHA","LARONDA","KATRICE","KASIE","KARL","KALEY","JADWIGA","GLENNIE","GEARLDINE","FRANCINA","EPIFANIA","DYAN","DORIE","DIEDRE","DENESE","DEMETRICE","DELENA","DARBY","CRISTIE","CLEORA","CATARINA","CARISA","BERNIE","BARBERA","ALMETA","TRULA","TEREASA","SOLANGE","SHEILAH","SHAVONNE","SANORA","ROCHELL","MATHILDE","MARGARETA","MAIA","LYNSEY","LAWANNA","LAUNA","KENA","KEENA","KATIA","JAMEY","GLYNDA","GAYLENE","ELVINA","ELANOR","DANUTA","DANIKA","CRISTEN","CORDIE","COLETTA","CLARITA","CARMON","BRYNN","AZUCENA","AUNDREA","ANGELE","YI","WALTER","VERLIE","VERLENE","TAMESHA","SILVANA","SEBRINA","SAMIRA","REDA","RAYLENE","PENNI","PANDORA","NORAH","NOMA","MIREILLE","MELISSIA","MARYALICE","LARAINE","KIMBERY","KARYL","KARINE","KAM","JOLANDA","JOHANA","JESUSA","JALEESA","JAE","JACQUELYNE","IRISH","ILUMINADA","HILARIA","HANH","GENNIE","FRANCIE","FLORETTA","EXIE","EDDA","DREMA","DELPHA","BEV","BARBAR","ASSUNTA","ARDELL","ANNALISA","ALISIA","YUKIKO","YOLANDO","WONDA","WEI","WALTRAUD","VETA","TEQUILA","TEMEKA","TAMEIKA","SHIRLEEN","SHENITA","PIEDAD","OZELLA","MIRTHA","MARILU","KIMIKO","JULIANE","JENICE","JEN","JANAY","JACQUILINE","HILDE","FE","FAE","EVAN","EUGENE","ELOIS","ECHO","DEVORAH","CHAU","BRINDA","BETSEY","ARMINDA","ARACELIS","APRYL","ANNETT","ALISHIA","VEOLA","USHA","TOSHIKO","THEOLA","TASHIA","TALITHA","SHERY","RUDY","RENETTA","REIKO","RASHEEDA","OMEGA","OBDULIA","MIKA","MELAINE","MEGGAN","MARTIN","MARLEN","MARGET","MARCELINE","MANA","MAGDALEN","LIBRADA","LEZLIE","LEXIE","LATASHIA","LASANDRA","KELLE","ISIDRA","ISA","INOCENCIA","GWYN","FRANCOISE","ERMINIA","ERINN","DIMPLE","DEVORA","CRISELDA","ARMANDA","ARIE","ARIANE","ANGELO","ANGELENA","ALLEN","ALIZA","ADRIENE","ADALINE","XOCHITL","TWANNA","TRAN","TOMIKO","TAMISHA","TAISHA","SUSY","SIU","RUTHA","ROXY","RHONA","RAYMOND","OTHA","NORIKO","NATASHIA","MERRIE","MELVIN","MARINDA","MARIKO","MARGERT","LORIS","LIZZETTE","LEISHA","KAILA","KA","JOANNIE","JERRICA","JENE","JANNET","JANEE","JACINDA","HERTA","ELENORE","DORETTA","DELAINE","DANIELL","CLAUDIE","CHINA","BRITTA","APOLONIA","AMBERLY","ALEASE","YURI","YUK","WEN","WANETA","UTE","TOMI","SHARRI","SANDIE","ROSELLE","REYNALDA","RAGUEL","PHYLICIA","PATRIA","OLIMPIA","ODELIA","MITZIE","MITCHELL","MISS","MINDA","MIGNON","MICA","MENDY","MARIVEL","MAILE","LYNETTA","LAVETTE","LAURYN","LATRISHA","LAKIESHA","KIERSTEN","KARY","JOSPHINE","JOLYN","JETTA","JANISE","JACQUIE","IVELISSE","GLYNIS","GIANNA","GAYNELLE","EMERALD","DEMETRIUS","DANYELL","DANILLE","DACIA","CORALEE","CHER","CEOLA","BRETT","BELL","ARIANNE","ALESHIA","YUNG","WILLIEMAE","TROY","TRINH","THORA","TAI","SVETLANA","SHERIKA","SHEMEKA","SHAUNDA","ROSELINE","RICKI","MELDA","MALLIE","LAVONNA","LATINA","LARRY","LAQUANDA","LALA","LACHELLE","KLARA","KANDIS","JOHNA","JEANMARIE","JAYE","HANG","GRAYCE","GERTUDE","EMERITA","EBONIE","CLORINDA","CHING","CHERY","CAROLA","BREANN","BLOSSOM","BERNARDINE","BECKI","ARLETHA","ARGELIA","ARA","ALITA","YULANDA","YON","YESSENIA","TOBI","TASIA","SYLVIE","SHIRL","SHIRELY","SHERIDAN","SHELLA","SHANTELLE","SACHA","ROYCE","REBECKA","REAGAN","PROVIDENCIA","PAULENE","MISHA","MIKI","MARLINE","MARICA","LORITA","LATOYIA","LASONYA","KERSTIN","KENDA","KEITHA","KATHRIN","JAYMIE","JACK","GRICELDA","GINETTE","ERYN","ELINA","ELFRIEDA","DANYEL","CHEREE","CHANELLE","BARRIE","AVERY","AURORE","ANNAMARIA","ALLEEN","AILENE","AIDE","YASMINE","VASHTI","VALENTINE","TREASA","TORY","TIFFANEY","SHERYLL","SHARIE","SHANAE","SAU","RAISA","PA","NEDA","MITSUKO","MIRELLA","MILDA","MARYANNA","MARAGRET","MABELLE","LUETTA","LORINA","LETISHA","LATARSHA","LANELLE","LAJUANA","KRISSY","KARLY","KARENA","JON","JESSIKA","JERICA","JEANELLE","JANUARY","JALISA","JACELYN","IZOLA","IVEY","GREGORY","EUNA","ETHA","DREW","DOMITILA","DOMINICA","DAINA","CREOLA","CARLI","CAMIE","BUNNY","BRITTNY","ASHANTI","ANISHA","ALEEN","ADAH","YASUKO","WINTER","VIKI","VALRIE","TONA","TINISHA","THI","TERISA","TATUM","TANEKA","SIMONNE","SHALANDA","SERITA","RESSIE","REFUGIA","PAZ","OLENE","NA","MERRILL","MARGHERITA","MANDIE","MAN","MAIRE","LYNDIA","LUCI","LORRIANE","LORETA","LEONIA","LAVONA","LASHAWNDA","LAKIA","KYOKO","KRYSTINA","KRYSTEN","KENIA","KELSI","JUDE","JEANICE","ISOBEL","GEORGIANN","GENNY","FELICIDAD","EILENE","DEON","DELOISE","DEEDEE","DANNIE","CONCEPTION","CLORA","CHERILYN","CHANG","CALANDRA","BERRY","ARMANDINA","ANISA","ULA","TIMOTHY","TIERA","THERESSA","STEPHANIA","SIMA","SHYLA","SHONTA","SHERA","SHAQUITA","SHALA","SAMMY","ROSSANA","NOHEMI","NERY","MORIAH","MELITA","MELIDA","MELANI","MARYLYNN","MARISHA","MARIETTE","MALORIE","MADELENE","LUDIVINA","LORIA","LORETTE","LORALEE","LIANNE","LEON","LAVENIA","LAURINDA","LASHON","KIT","KIMI","KEILA","KATELYNN","KAI","JONE","JOANE","JI","JAYNA","JANELLA","JA","HUE","HERTHA","FRANCENE","ELINORE","DESPINA","DELSIE","DEEDRA","CLEMENCIA","CARRY","CAROLIN","CARLOS","BULAH","BRITTANIE","BOK","BLONDELL","BIBI","BEAULAH","BEATA","ANNITA","AGRIPINA","VIRGEN","VALENE","UN","TWANDA","TOMMYE","TOI","TARRA","TARI","TAMMERA","SHAKIA","SADYE","RUTHANNE","ROCHEL","RIVKA","PURA","NENITA","NATISHA","MING","MERRILEE","MELODEE","MARVIS","LUCILLA","LEENA","LAVETA","LARITA","LANIE","KEREN","ILEEN","GEORGEANN","GENNA","GENESIS","FRIDA","EWA","EUFEMIA","EMELY","ELA","EDYTH","DEONNA","DEADRA","DARLENA","CHANELL","CHAN","CATHERN","CASSONDRA","CASSAUNDRA","BERNARDA","BERNA","ARLINDA","ANAMARIA","ALBERT","WESLEY","VERTIE","VALERI","TORRI","TATYANA","STASIA","SHERISE","SHERILL","SEASON","SCOTTIE","SANDA","RUTHE","ROSY","ROBERTO","ROBBI","RANEE","QUYEN","PEARLY","PALMIRA","ONITA","NISHA","NIESHA","NIDA","NEVADA","NAM","MERLYN","MAYOLA","MARYLOUISE","MARYLAND","MARX","MARTH","MARGENE","MADELAINE","LONDA","LEONTINE","LEOMA","LEIA","LAWRENCE","LAURALEE","LANORA","LAKITA","KIYOKO","KETURAH","KATELIN","KAREEN","JONIE","JOHNETTE","JENEE","JEANETT","IZETTA","HIEDI","HEIKE","HASSIE","HAROLD","GIUSEPPINA","GEORGANN","FIDELA","FERNANDE","ELWANDA","ELLAMAE","ELIZ","DUSTI","DOTTY","CYNDY","CORALIE","CELESTA","ARGENTINA","ALVERTA","XENIA","WAVA","VANETTA","TORRIE","TASHINA","TANDY","TAMBRA","TAMA","STEPANIE","SHILA","SHAUNTA","SHARAN","SHANIQUA","SHAE","SETSUKO","SERAFINA","SANDEE","ROSAMARIA","PRISCILA","OLINDA","NADENE","MUOI","MICHELINA","MERCEDEZ","MARYROSE","MARIN","MARCENE","MAO","MAGALI","MAFALDA","LOGAN","LINN","LANNIE","KAYCE","KAROLINE","KAMILAH","KAMALA","JUSTA","JOLINE","JENNINE","JACQUETTA","IRAIDA","GERALD","GEORGEANNA","FRANCHESCA","FAIRY","EMELINE","ELANE","EHTEL","EARLIE","DULCIE","DALENE","CRIS","CLASSIE","CHERE","CHARIS","CAROYLN","CARMINA","CARITA","BRIAN","BETHANIE","AYAKO","ARICA","AN","ALYSA","ALESSANDRA","AKILAH","ADRIEN","ZETTA","YOULANDA","YELENA","YAHAIRA","XUAN","WENDOLYN","VICTOR","TIJUANA","TERRELL","TERINA","TERESIA","SUZI","SUNDAY","SHERELL","SHAVONDA","SHAUNTE","SHARDA","SHAKITA","SENA","RYANN","RUBI","RIVA","REGINIA","REA","RACHAL","PARTHENIA","PAMULA","MONNIE","MONET","MICHAELE","MELIA","MARINE","MALKA","MAISHA","LISANDRA","LEO","LEKISHA","LEAN","LAURENCE","LAKENDRA","KRYSTIN","KORTNEY","KIZZIE","KITTIE","KERA","KENDAL","KEMBERLY","KANISHA","JULENE","JULE","JOSHUA","JOHANNE","JEFFREY","JAMEE","HAN","HALLEY","GIDGET","GALINA","FREDRICKA","FLETA","FATIMAH","EUSEBIA","ELZA","ELEONORE","DORTHEY","DORIA","DONELLA","DINORAH","DELORSE","CLARETHA","CHRISTINIA","CHARLYN","BONG","BELKIS","AZZIE","ANDERA","AIKO","ADENA","YER","YAJAIRA","WAN","VANIA","ULRIKE","TOSHIA","TIFANY","STEFANY","SHIZUE","SHENIKA","SHAWANNA","SHAROLYN","SHARILYN","SHAQUANA","SHANTAY","SEE","ROZANNE","ROSELEE","RICKIE","REMONA","REANNA","RAELENE","QUINN","PHUNG","PETRONILA","NATACHA","NANCEY","MYRL","MIYOKO","MIESHA","MERIDETH","MARVELLA","MARQUITTA","MARHTA","MARCHELLE","LIZETH","LIBBIE","LAHOMA","LADAWN","KINA","KATHELEEN","KATHARYN","KARISA","KALEIGH","JUNIE","JULIEANN","JOHNSIE","JANEAN","JAIMEE","JACKQUELINE","HISAKO","HERMA","HELAINE","GWYNETH","GLENN","GITA","EUSTOLIA","EMELINA","ELIN","EDRIS","DONNETTE","DONNETTA","DIERDRE","DENAE","DARCEL","CLAUDE","CLARISA","CINDERELLA","CHIA","CHARLESETTA","CHARITA","CELSA","CASSY","CASSI","CARLEE","BRUNA","BRITTANEY","BRANDE","BILLI","BAO","ANTONETTA","ANGLA","ANGELYN","ANALISA","ALANE","WENONA","WENDIE","VERONIQUE","VANNESA","TOBIE","TEMPIE","SUMIKO","SULEMA","SPARKLE","SOMER","SHEBA","SHAYNE","SHARICE","SHANEL","SHALON","SAGE","ROY","ROSIO","ROSELIA","RENAY","REMA","REENA","PORSCHE","PING","PEG","OZIE","ORETHA","ORALEE","ODA","NU","NGAN","NAKESHA","MILLY","MARYBELLE","MARLIN","MARIS","MARGRETT","MARAGARET","MANIE","LURLENE","LILLIA","LIESELOTTE","LAVELLE","LASHAUNDA","LAKEESHA","KEITH","KAYCEE","KALYN","JOYA","JOETTE","JENAE","JANIECE","ILLA","GRISEL","GLAYDS","GENEVIE","GALA","FREDDA","FRED","ELMER","ELEONOR","DEBERA","DEANDREA","DAN","CORRINNE","CORDIA","CONTESSA","COLENE","CLEOTILDE","CHARLOTT","CHANTAY","CECILLE","BEATRIS","AZALEE","ARLEAN","ARDATH","ANJELICA","ANJA","ALFREDIA","ALEISHA","ADAM","ZADA","YUONNE","XIAO","WILLODEAN","WHITLEY","VENNIE","VANNA","TYISHA","TOVA","TORIE","TONISHA","TILDA","TIEN","TEMPLE","SIRENA","SHERRIL","SHANTI","SHAN","SENAIDA","SAMELLA","ROBBYN","RENDA","REITA","PHEBE","PAULITA","NOBUKO","NGUYET","NEOMI","MOON","MIKAELA","MELANIA","MAXIMINA","MARG","MAISIE","LYNNA","LILLI","LAYNE","LASHAUN","LAKENYA","LAEL","KIRSTIE","KATHLINE","KASHA","KARLYN","KARIMA","JOVAN","JOSEFINE","JENNELL","JACQUI","JACKELYN","HYO","HIEN","GRAZYNA","FLORRIE","FLORIA","ELEONORA","DWANA","DORLA","DONG","DELMY","DEJA","DEDE","DANN","CRYSTA","CLELIA","CLARIS","CLARENCE","CHIEKO","CHERLYN","CHERELLE","CHARMAIN","CHARA","CAMMY","BEE","ARNETTE","ARDELLE","ANNIKA","AMIEE","AMEE","ALLENA","YVONE","YUKI","YOSHIE","YEVETTE","YAEL","WILLETTA","VONCILE","VENETTA","TULA","TONETTE","TIMIKA","TEMIKA","TELMA","TEISHA","TAREN","TA","STACEE","SHIN","SHAWNTA","SATURNINA","RICARDA","POK","PASTY","ONIE","NUBIA","MORA","MIKE","MARIELLE","MARIELLA","MARIANELA","MARDELL","MANY","LUANNA","LOISE","LISABETH","LINDSY","LILLIANA","LILLIAM","LELAH","LEIGHA","LEANORA","LANG","KRISTEEN","KHALILAH","KEELEY","KANDRA","JUNKO","JOAQUINA","JERLENE","JANI","JAMIKA","JAME","HSIU","HERMILA","GOLDEN","GENEVIVE","EVIA","EUGENA","EMMALINE","ELFREDA","ELENE","DONETTE","DELCIE","DEEANNA","DARCEY","CUC","CLARINDA","CIRA","CHAE","CELINDA","CATHERYN","CATHERIN","CASIMIRA","CARMELIA","CAMELLIA","BREANA","BOBETTE","BERNARDINA","BEBE","BASILIA","ARLYNE","AMAL","ALAYNA","ZONIA","ZENIA","YURIKO","YAEKO","WYNELL","WILLOW","WILLENA","VERNIA","TU","TRAVIS","TORA","TERRILYN","TERICA","TENESHA","TAWNA","TAJUANA","TAINA","STEPHNIE","SONA","SOL","SINA","SHONDRA","SHIZUKO","SHERLENE","SHERICE","SHARIKA","ROSSIE","ROSENA","RORY","RIMA","RIA","RHEBA","RENNA","PETER","NATALYA","NANCEE","MELODI","MEDA","MAXIMA","MATHA","MARKETTA","MARICRUZ","MARCELENE","MALVINA","LUBA","LOUETTA","LEIDA","LECIA","LAURAN","LASHAWNA","LAINE","KHADIJAH","KATERINE","KASI","KALLIE","JULIETTA","JESUSITA","JESTINE","JESSIA","JEREMY","JEFFIE","JANYCE","ISADORA","GEORGIANNE","FIDELIA","EVITA","EURA","EULAH","ESTEFANA","ELSY","ELIZABET","ELADIA","DODIE","DION","DIA","DENISSE","DELORAS","DELILA","DAYSI","DAKOTA","CURTIS","CRYSTLE","CONCHA","COLBY","CLARETTA","CHU","CHRISTIA","CHARLSIE","CHARLENA","CARYLON","BETTYANN","ASLEY","ASHLEA","AMIRA","AI","AGUEDA","AGNUS","YUETTE","VINITA","VICTORINA","TYNISHA","TREENA","TOCCARA","TISH","THOMASENA","TEGAN","SOILA","SHILOH","SHENNA","SHARMAINE","SHANTAE","SHANDI","SEPTEMBER","SARAN","SARAI","SANA","SAMUEL","SALLEY","ROSETTE","ROLANDE","REGINE","OTELIA","OSCAR","OLEVIA","NICHOLLE","NECOLE","NAIDA","MYRTA","MYESHA","MITSUE","MINTA","MERTIE","MARGY","MAHALIA","MADALENE","LOVE","LOURA","LOREAN","LEWIS","LESHA","LEONIDA","LENITA","LAVONE","LASHELL","LASHANDRA","LAMONICA","KIMBRA","KATHERINA","KARRY","KANESHA","JULIO","JONG","JENEVA","JAQUELYN","HWA","GILMA","GHISLAINE","GERTRUDIS","FRANSISCA","FERMINA","ETTIE","ETSUKO","ELLIS","ELLAN","ELIDIA","EDRA","DORETHEA","DOREATHA","DENYSE","DENNY","DEETTA","DAINE","CYRSTAL","CORRIN","CAYLA","CARLITA","CAMILA","BURMA","BULA","BUENA","BLAKE","BARABARA","AVRIL","AUSTIN","ALAINE","ZANA","WILHEMINA","WANETTA","VIRGIL","VI","VERONIKA","VERNON","VERLINE","VASILIKI","TONITA","TISA","TEOFILA","TAYNA","TAUNYA","TANDRA","TAKAKO","SUNNI","SUANNE","SIXTA","SHARELL","SEEMA","RUSSELL","ROSENDA","ROBENA","RAYMONDE","PEI","PAMILA","OZELL","NEIDA","NEELY","MISTIE","MICHA","MERISSA","MAURITA","MARYLN","MARYETTA","MARSHALL","MARCELL","MALENA","MAKEDA","MADDIE","LOVETTA","LOURIE","LORRINE","LORILEE","LESTER","LAURENA","LASHAY","LARRAINE","LAREE","LACRESHA","KRISTLE","KRISHNA","KEVA","KEIRA","KAROLE","JOIE","JINNY","JEANNETTA","JAMA","HEIDY","GILBERTE","GEMA","FAVIOLA","EVELYNN","ENDA","ELLI","ELLENA","DIVINA","DAGNY","COLLENE","CODI","CINDIE","CHASSIDY","CHASIDY","CATRICE","CATHERINA","CASSEY","CAROLL","CARLENA","CANDRA","CALISTA","BRYANNA","BRITTENY","BEULA","BARI","AUDRIE","AUDRIA","ARDELIA","ANNELLE","ANGILA","ALONA","ALLYN","DOUGLAS","ROGER","JONATHAN","RALPH","NICHOLAS","BENJAMIN","BRUCE","HARRY","WAYNE","STEVE","HOWARD","ERNEST","PHILLIP","TODD","CRAIG","ALAN","PHILIP","EARL","DANNY","BRYAN","STANLEY","LEONARD","NATHAN","MANUEL","RODNEY","MARVIN","VINCENT","JEFFERY","JEFF","CHAD","JACOB","ALFRED","BRADLEY","HERBERT","FREDERICK","EDWIN","DON","RICKY","RANDALL","BARRY","BERNARD","LEROY","MARCUS","THEODORE","CLIFFORD","MIGUEL","JIM","TOM","CALVIN","BILL","LLOYD","DEREK","WARREN","DARRELL","JEROME","FLOYD","ALVIN","TIM","GORDON","GREG","JORGE","DUSTIN","PEDRO","DERRICK","ZACHARY","HERMAN","GLEN","HECTOR","RICARDO","RICK","BRENT","RAMON","GILBERT","MARC","REGINALD","RUBEN","NATHANIEL","RAFAEL","EDGAR","MILTON","RAUL","BEN","CHESTER","DUANE","FRANKLIN","BRAD","RON","ROLAND","ARNOLD","HARVEY","JARED","ERIK","DARRYL","NEIL","JAVIER","FERNANDO","CLINTON","TED","MATHEW","TYRONE","DARREN","LANCE","KURT","ALLAN","NELSON","GUY","CLAYTON","HUGH","MAX","DWAYNE","DWIGHT","ARMANDO","FELIX","EVERETT","IAN","WALLACE","KEN","BOB","ALFREDO","ALBERTO","DAVE","IVAN","BYRON","ISAAC","MORRIS","CLIFTON","WILLARD","ROSS","ANDY","SALVADOR","KIRK","SERGIO","SETH","KENT","TERRANCE","EDUARDO","TERRENCE","ENRIQUE","WADE","STUART","FREDRICK","ARTURO","ALEJANDRO","NICK","LUTHER","WENDELL","JEREMIAH","JULIUS","OTIS","TREVOR","OLIVER","LUKE","HOMER","GERARD","DOUG","KENNY","HUBERT","LYLE","MATT","ALFONSO","ORLANDO","REX","CARLTON","ERNESTO","NEAL","PABLO","LORENZO","OMAR","WILBUR","GRANT","HORACE","RODERICK","ABRAHAM","WILLIS","RICKEY","ANDRES","CESAR","JOHNATHAN","MALCOLM","RUDOLPH","DAMON","KELVIN","PRESTON","ALTON","ARCHIE","MARCO","WM","PETE","RANDOLPH","GARRY","GEOFFREY","JONATHON","FELIPE","GERARDO","ED","DOMINIC","DELBERT","COLIN","GUILLERMO","EARNEST","LUCAS","BENNY","SPENCER","RODOLFO","MYRON","EDMUND","GARRETT","SALVATORE","CEDRIC","LOWELL","GREGG","SHERMAN","WILSON","SYLVESTER","ROOSEVELT","ISRAEL","JERMAINE","FORREST","WILBERT","LELAND","SIMON","CLARK","IRVING","BRYANT","OWEN","RUFUS","WOODROW","KRISTOPHER","MACK","LEVI","MARCOS","GUSTAVO","JAKE","LIONEL","GILBERTO","CLINT","NICOLAS","ISMAEL","ORVILLE","ERVIN","DEWEY","AL","WILFRED","JOSH","HUGO","IGNACIO","CALEB","TOMAS","SHELDON","ERICK","STEWART","DOYLE","DARREL","ROGELIO","TERENCE","SANTIAGO","ALONZO","ELIAS","BERT","ELBERT","RAMIRO","CONRAD","NOAH","GRADY","PHIL","CORNELIUS","LAMAR","ROLANDO","CLAY","PERCY","DEXTER","BRADFORD","DARIN","AMOS","MOSES","IRVIN","SAUL","ROMAN","RANDAL","TIMMY","DARRIN","WINSTON","BRENDAN","ABEL","DOMINICK","BOYD","EMILIO","ELIJAH","DOMINGO","EMMETT","MARLON","EMANUEL","JERALD","EDMOND","EMIL","DEWAYNE","WILL","OTTO","TEDDY","REYNALDO","BRET","JESS","TRENT","HUMBERTO","EMMANUEL","STEPHAN","VICENTE","LAMONT","GARLAND","MILES","EFRAIN","HEATH","RODGER","HARLEY","ETHAN","ELDON","ROCKY","PIERRE","JUNIOR","FREDDY","ELI","BRYCE","ANTOINE","STERLING","CHASE","GROVER","ELTON","CLEVELAND","DYLAN","CHUCK","DAMIAN","REUBEN","STAN","AUGUST","LEONARDO","JASPER","RUSSEL","ERWIN","BENITO","HANS","MONTE","BLAINE","ERNIE","CURT","QUENTIN","AGUSTIN","MURRAY","JAMAL","ADOLFO","HARRISON","TYSON","BURTON","BRADY","ELLIOTT","WILFREDO","BART","JARROD","VANCE","DENIS","DAMIEN","JOAQUIN","HARLAN","DESMOND","ELLIOT","DARWIN","GREGORIO","BUDDY","XAVIER","KERMIT","ROSCOE","ESTEBAN","ANTON","SOLOMON","SCOTTY","NORBERT","ELVIN","WILLIAMS","NOLAN","ROD","QUINTON","HAL","BRAIN","ROB","ELWOOD","KENDRICK","DARIUS","MOISES","FIDEL","THADDEUS","CLIFF","MARCEL","JACKSON","RAPHAEL","BRYON","ARMAND","ALVARO","JEFFRY","DANE","JOESPH","THURMAN","NED","RUSTY","MONTY","FABIAN","REGGIE","MASON","GRAHAM","ISAIAH","VAUGHN","GUS","LOYD","DIEGO","ADOLPH","NORRIS","MILLARD","ROCCO","GONZALO","DERICK","RODRIGO","WILEY","RIGOBERTO","ALPHONSO","TY","NOE","VERN","REED","JEFFERSON","ELVIS","BERNARDO","MAURICIO","HIRAM","DONOVAN","BASIL","RILEY","NICKOLAS","MAYNARD","SCOT","VINCE","QUINCY","EDDY","SEBASTIAN","FEDERICO","ULYSSES","HERIBERTO","DONNELL","COLE","DAVIS","GAVIN","EMERY","WARD","ROMEO","JAYSON","DANTE","CLEMENT","COY","MAXWELL","JARVIS","BRUNO","ISSAC","DUDLEY","BROCK","SANFORD","CARMELO","BARNEY","NESTOR","STEFAN","DONNY","ART","LINWOOD","BEAU","WELDON","GALEN","ISIDRO","TRUMAN","DELMAR","JOHNATHON","SILAS","FREDERIC","DICK","IRWIN","MERLIN","CHARLEY","MARCELINO","HARRIS","CARLO","TRENTON","KURTIS","HUNTER","AURELIO","WINFRED","VITO","COLLIN","DENVER","CARTER","LEONEL","EMORY","PASQUALE","MOHAMMAD","MARIANO","DANIAL","LANDON","DIRK","BRANDEN","ADAN","BUFORD","GERMAN","WILMER","EMERSON","ZACHERY","FLETCHER","JACQUES","ERROL","DALTON","MONROE","JOSUE","EDWARDO","BOOKER","WILFORD","SONNY","SHELTON","CARSON","THERON","RAYMUNDO","DAREN","HOUSTON","ROBBY","LINCOLN","GENARO","BENNETT","OCTAVIO","CORNELL","HUNG","ARRON","ANTONY","HERSCHEL","GIOVANNI","GARTH","CYRUS","CYRIL","RONNY","LON","FREEMAN","DUNCAN","KENNITH","CARMINE","ERICH","CHADWICK","WILBURN","RUSS","REID","MYLES","ANDERSON","MORTON","JONAS","FOREST","MITCHEL","MERVIN","ZANE","RICH","JAMEL","LAZARO","ALPHONSE","RANDELL","MAJOR","JARRETT","BROOKS","ABDUL","LUCIANO","SEYMOUR","EUGENIO","MOHAMMED","VALENTIN","CHANCE","ARNULFO","LUCIEN","FERDINAND","THAD","EZRA","ALDO","RUBIN","ROYAL","MITCH","EARLE","ABE","WYATT","MARQUIS","LANNY","KAREEM","JAMAR","BORIS","ISIAH","EMILE","ELMO","ARON","LEOPOLDO","EVERETTE","JOSEF","ELOY","RODRICK","REINALDO","LUCIO","JERROD","WESTON","HERSHEL","BARTON","PARKER","LEMUEL","BURT","JULES","GIL","ELISEO","AHMAD","NIGEL","EFREN","ANTWAN","ALDEN","MARGARITO","COLEMAN","DINO","OSVALDO","LES","DEANDRE","NORMAND","KIETH","TREY","NORBERTO","NAPOLEON","JEROLD","FRITZ","ROSENDO","MILFORD","CHRISTOPER","ALFONZO","LYMAN","JOSIAH","BRANT","WILTON","RICO","JAMAAL","DEWITT","BRENTON","OLIN","FOSTER","FAUSTINO","CLAUDIO","JUDSON","GINO","EDGARDO","ALEC","TANNER","JARRED","DONN","TAD","PRINCE","PORFIRIO","ODIS","LENARD","CHAUNCEY","TOD","MEL","MARCELO","KORY","AUGUSTUS","KEVEN","HILARIO","BUD","SAL","ORVAL","MAURO","ZACHARIAH","OLEN","ANIBAL","MILO","JED","DILLON","AMADO","NEWTON","LENNY","RICHIE","HORACIO","BRICE","MOHAMED","DELMER","DARIO","REYES","MAC","JONAH","JERROLD","ROBT","HANK","RUPERT","ROLLAND","KENTON","DAMION","ANTONE","WALDO","FREDRIC","BRADLY","KIP","BURL","WALKER","TYREE","JEFFEREY","AHMED","WILLY","STANFORD","OREN","NOBLE","MOSHE","MIKEL","ENOCH","BRENDON","QUINTIN","JAMISON","FLORENCIO","DARRICK","TOBIAS","HASSAN","GIUSEPPE","DEMARCUS","CLETUS","TYRELL","LYNDON","KEENAN","WERNER","GERALDO","COLUMBUS","CHET","BERTRAM","MARKUS","HUEY","HILTON","DWAIN","DONTE","TYRON","OMER","ISAIAS","HIPOLITO","FERMIN","ADALBERTO","BO","BARRETT","TEODORO","MCKINLEY","MAXIMO","GARFIELD","RALEIGH","LAWERENCE","ABRAM","RASHAD","KING","EMMITT","DARON","SAMUAL","MIQUEL","EUSEBIO","DOMENIC","DARRON","BUSTER","WILBER","RENATO","JC","HOYT","HAYWOOD","EZEKIEL","CHAS","FLORENTINO","ELROY","CLEMENTE","ARDEN","NEVILLE","EDISON","DESHAWN","NATHANIAL","JORDON","DANILO","CLAUD","SHERWOOD","RAYMON","RAYFORD","CRISTOBAL","AMBROSE","TITUS","HYMAN","FELTON","EZEQUIEL","ERASMO","STANTON","LONNY","LEN","IKE","MILAN","LINO","JAROD","HERB","ANDREAS","WALTON","RHETT","PALMER","DOUGLASS","CORDELL","OSWALDO","ELLSWORTH","VIRGILIO","TONEY","NATHANAEL","DEL","BENEDICT","MOSE","JOHNSON","ISREAL","GARRET","FAUSTO","ASA","ARLEN","ZACK","WARNER","MODESTO","FRANCESCO","MANUAL","GAYLORD","GASTON","FILIBERTO","DEANGELO","MICHALE","GRANVILLE","WES","MALIK","ZACKARY","TUAN","ELDRIDGE","CRISTOPHER","CORTEZ","ANTIONE","MALCOM","LONG","KOREY","JOSPEH","COLTON","WAYLON","VON","HOSEA","SHAD","SANTO","RUDOLF","ROLF","REY","RENALDO","MARCELLUS","LUCIUS","KRISTOFER","BOYCE","BENTON","HAYDEN","HARLAND","ARNOLDO","RUEBEN","LEANDRO","KRAIG","JERRELL","JEROMY","HOBERT","CEDRICK","ARLIE","WINFORD","WALLY","LUIGI","KENETH","JACINTO","GRAIG","FRANKLYN","EDMUNDO","SID","PORTER","LEIF","JERAMY","BUCK","WILLIAN","VINCENZO","SHON","LYNWOOD","JERE","HAI","ELDEN","DORSEY","DARELL","BRODERICK","ALONSO" \ No newline at end of file diff --git a/p22/solution.jl b/p22/solution.jl new file mode 100644 index 0000000..09bfdee --- /dev/null +++ b/p22/solution.jl @@ -0,0 +1,15 @@ +function solution() + file_str = "" + open(f -> file_str = read(f, String), "p22_/p022_names.txt") + file_str_cleaned = replace(file_str, "\"" => "") + names = sort!(split(file_str_cleaned, ",")) + n = length(names) + f = char -> (Int(char) - 1)%32 + 1 + score = 0 + for i = 1:n + score += sum(f.(collect(names[i])))*i + end + return score +end + +println(solution()) diff --git a/p23/main.jl b/p23/main.jl new file mode 100644 index 0000000..9b111fa --- /dev/null +++ b/p23/main.jl @@ -0,0 +1,46 @@ +include("./../util/julia/erastothenes_extended_sieve.jl") +import .erastothenes_extended_sieve: extended_sieve, get_extended_sieve, run! +import Combinatorics: multiset_combinations + +function answer(max) + b = BitVector(undef, max) + + a = Vector{Int}(undef, 0) + + s = get_extended_sieve() + run!(s, max) + + for i ∈ 1:max + if ~s.sieve.sieve[i] && is_abundant(s.factors[i]) + push!(a, i) + end + end + + for i ∈ a + for j ∈ a + if i+j <= max + b[i+j] = true + end + end + end + + sum = 0 + for i ∈ 1:max + if ~b[i] + sum += i + end + end + + return sum +end + +function is_abundant(V) + n = length(V) + sum = 1 + for i ∈ 1:n-1 + for j ∈ multiset_combinations(V, i) + sum += prod(j) + end + end + return sum > prod(V) +end diff --git a/p24/solution.jl b/p24/solution.jl new file mode 100644 index 0000000..0dcfcce --- /dev/null +++ b/p24/solution.jl @@ -0,0 +1,32 @@ + +function solution(V, p) + l = length(V) + n = factorial(l) + if p > n + print("p too large") + return + end + sort!(V) + + m = n + r = p + vals = zeros(Int, l-1) + for i ∈ 0:(l-2) + m = div(m, l-i) + vals[i+1] = cld(r, m) + r = mod(r-1, m)+1 + end + sol = zeros(Int, l) + V = copy(V) + for i ∈ 1:(l-1) + sol[i] = popat!(V, vals[i]) + end + sol[l] = pop!(V) + return sol +end + +function printsols(V) + for i ∈ 1:factorial(length(V)) + println(solution(V, i)) + end +end diff --git a/p25/solution.jl b/p25/solution.jl new file mode 100644 index 0000000..2dc474a --- /dev/null +++ b/p25/solution.jl @@ -0,0 +1,11 @@ + +function solution(n_digits) + n = 1 + f_n = BigInt(1) + f_n_1 = 0 + while log10(f_n)+1 < n_digits + f_n_1, f_n = f_n, f_n + f_n_1 + n += 1 + end + return n +end diff --git a/p26_/solution.jl b/p26_/solution.jl new file mode 100644 index 0000000..f2cb56b --- /dev/null +++ b/p26_/solution.jl @@ -0,0 +1,38 @@ + +function solution(n_max) + longest_cycle = 0 + cycle_length = 0 + + for i ∈ 2:n_max + if check_if_finite(i) + continue + end + + println(i) + + n = 1 + p = i + while ~(Set(digits(p)) == Set(9)) + p *= i + @info n += 1 + end + if n > cycle_length + longest_cycle = i + cycle_length = n + end + end + return longest_cycle, cycle_length +end + +function check_if_finite(n) + print("checking ") + println(n) + k = n + while k%2 == 0 + k = div(k, 2) + end + while k%5 == 0 + k = div(k, 5) + end + return k == 1 +end diff --git a/p27/solution.jl b/p27/solution.jl new file mode 100644 index 0000000..df77b62 --- /dev/null +++ b/p27/solution.jl @@ -0,0 +1,37 @@ +include("../util/sieve.jl") +import .erastothenes_sieve: get_sieve, is_prime, get_primes, run + +function solution() + s = get_sieve() + run(s, 1000) + amax = 0 + bmax = 0 + nmax = 0 + for a = -999:2:999 + println("value for a: ", a) + for b = get_primes(s, 1000) + if a+b > 1 + n = 0 + number = n*n+a*n+b + while is_prime(s, number) + n += 1 + number = n*n+a*n+b + end + if n > nmax + amax = a + bmax = b + nmax = n + println("found new maximum for:") + println("a= ", a) + println("b= ", b) + println("n= ", n) + end + end + end + end + println('\n') + println("a: ", amax, " b: ", bmax, " n: ", nmax) + println(amax*bmax) +end + +solution() diff --git a/p28/solution.jl b/p28/solution.jl new file mode 100644 index 0000000..e3afe46 --- /dev/null +++ b/p28/solution.jl @@ -0,0 +1,12 @@ + +function solution(n) + if n % 2 == 0 + return -1 + end + if n == 1 + return 1 + else + sum_n = 4*n^2 - 6*(n-1) + return solution(n-2) + sum_n + end +end diff --git a/p29/solution.jl b/p29/solution.jl new file mode 100644 index 0000000..f75696e --- /dev/null +++ b/p29/solution.jl @@ -0,0 +1,10 @@ + +function solution(a, b) + S = Set{BigInt}() + for i ∈ 2:a + for j ∈ 2:b + push!(S, BigInt(i)^j) + end + end + return length(S) +end diff --git a/p30/solution.jl b/p30/solution.jl new file mode 100644 index 0000000..a2e7b79 --- /dev/null +++ b/p30/solution.jl @@ -0,0 +1,11 @@ + +function solution(p) + V = Vector{Int}(undef, 0) + for i ∈ 2:999999 + if i == sum(digits(i).^p) + println(i) + push!(V, i) + end + end + return V +end diff --git a/p314_/solution.py b/p314_/solution.py new file mode 100644 index 0000000..443c2a6 --- /dev/null +++ b/p314_/solution.py @@ -0,0 +1,11 @@ +import numpy as np +import math + +n = 250 +R = np.add(list(range(np.ceil(n*1.41))), 1) + +LL = np.subtract(np.square(R), n**2) +L = np.clip(LL, 0, LL) + +A_tri = np.divide(np.add(L, n), 2) +A_seg = np.multiply(np.divide(np.arccos(np.divide(n, L)), ), np.multiply(np.square(R), math.pi)) diff --git a/p31_/solution.jl b/p31_/solution.jl new file mode 100644 index 0000000..dce0c9d --- /dev/null +++ b/p31_/solution.jl @@ -0,0 +1,4 @@ + +function solution(limit) + +end diff --git a/p345/solution.py b/p345/solution.py new file mode 100644 index 0000000..723a150 --- /dev/null +++ b/p345/solution.py @@ -0,0 +1,34 @@ +import numpy as np +from scipy.sparse import csr_matrix +from scipy.sparse.csgraph import min_weight_full_bipartite_matching + +A = np.array([ +[ 7, 53, 183, 439, 863, 497, 383, 563, 79, 973, 287, 63, 343, 169, 583], +[627, 343, 773, 959, 943, 767, 473, 103, 699, 303, 957, 703, 583, 639, 913], +[447, 283, 463, 29, 23, 487, 463, 993, 119, 883, 327, 493, 423, 159, 743], +[217, 623, 3, 399, 853, 407, 103, 983, 89, 463, 290, 516, 212, 462, 350], +[960, 376, 682, 962, 300, 780, 486, 502, 912, 800, 250, 346, 172, 812, 350], +[870, 456, 192, 162, 593, 473, 915, 45, 989, 873, 823, 965, 425, 329, 803], +[973, 965, 905, 919, 133, 673, 665, 235, 509, 613, 673, 815, 165, 992, 326], +[322, 148, 972, 962, 286, 255, 941, 541, 265, 323, 925, 281, 601, 95, 973], +[445, 721, 11, 525, 473, 65, 511, 164, 138, 672, 18, 428, 154, 448, 848], +[414, 456, 310, 312, 798, 104, 566, 520, 302, 248, 694, 976, 430, 392, 198], +[184, 829, 373, 181, 631, 101, 969, 613, 840, 740, 778, 458, 284, 760, 390], +[821, 461, 843, 513, 17, 901, 711, 993, 293, 157, 274, 94, 192, 156, 574], +[ 34, 124, 4, 878, 450, 476, 712, 914, 838, 669, 875, 299, 823, 329, 699], +[815, 559, 813, 459, 522, 788, 168, 586, 966, 232, 308, 833, 251, 631, 107], +[813, 883, 451, 509, 615, 77, 281, 613, 459, 205, 380, 274, 302, 35, 805] +]) + +A_sparse = csr_matrix(A) + +I1, I2 = min_weight_full_bipartite_matching(-A_sparse) +print(I1) +print(I2) + +maxima = np.zeros((1, len(I1))).squeeze() +for i in I1: + maxima[i] = A[i, I2[i]] + +print(maxima) +print(sum(maxima)) diff --git a/p4/solution.py b/p4/solution.py new file mode 100644 index 0000000..a136e21 --- /dev/null +++ b/p4/solution.py @@ -0,0 +1,24 @@ +from math import log10, floor + +from numpy import number + +def solution(digits): + limit = 10**digits + max_palindrome = 1 + numbers = (1, 1) + for i in range(2, limit): + for j in range(i, limit): + product = i*j + n_digits = floor(log10(product))+1 + digits = [(product//(10**n))%10 for n in range(n_digits)] + palindrome = True + for k in range(n_digits//2): + if digits[k] != digits[-1-k]: + palindrome = False + break + if palindrome & (product > max_palindrome): + max_palindrome = product + numbers = (i, j) + return max_palindrome, numbers + +print(solution(3)) \ No newline at end of file diff --git a/p453_/test.py b/p453_/test.py new file mode 100644 index 0000000..c844b42 --- /dev/null +++ b/p453_/test.py @@ -0,0 +1,30 @@ +import numpy as np + +def calc_quads(a, b): + for i in range(a): + for j in range(b): + pos_1 = (i, j) + for ii in range(a): + for jj in range(b): + if (ii, jj) == pos_1: + continue + pos_2 = (ii, jj) + angle_12 = np. + + + blocked = [pos_1, pos_2] + delta_i = ii-i + delta_j = jj-j + gcd = np.gcd(abs(delta_i), abs(delta_j)) + for k in range(gcd-1): + blocked.append(pos_1+(delta_i, delta_j)*(k+1)) + for iii in range(a, b): + for jjj in range(a, b): + if (iii, jjj) in blocked: + continue + pos_3 = (iii, jjj) + + for iiii in range(a): + for jjjj in range(b): + if (iiii, jjjj) in blocked or (iiii, jjjj) == pos_3: + continue diff --git a/p46/solution.jl b/p46/solution.jl new file mode 100644 index 0000000..5532d5f --- /dev/null +++ b/p46/solution.jl @@ -0,0 +1,26 @@ +include("../util/sieve.jl") +import .erastothenes_sieve: get_sieve, run, get, get_primes, get_composites + +function solution(n::Int) + sieve = get_sieve() + run(sieve, n) + primes = get_primes(sieve) + composites = vcat([0], get_composites(sieve)); + n_max = primes[end] + composite_doable = falses(n_max) + for i = 0:floor(sqrt(n)) + for p = primes + number = p + 2*i*i + if number <= n_max + composite_doable[Int(number)] = true + end + end + end + for i = 1:length(composite_doable) + if !composite_doable[i] && !iseven(i) + println(i) + end + end +end + +solution(10000) \ No newline at end of file diff --git a/p5/solution.py b/p5/solution.py new file mode 100644 index 0000000..b301ea0 --- /dev/null +++ b/p5/solution.py @@ -0,0 +1,13 @@ +from math import gcd + +def solution(n): + solution = 1 + for i in range(n): + solution = lcm(solution, i+1) + return solution + +def lcm(a, b): + return a*b // gcd(a, b) + + +print(solution(20)) \ No newline at end of file diff --git a/p6/solution.py b/p6/solution.py new file mode 100644 index 0000000..48a3114 --- /dev/null +++ b/p6/solution.py @@ -0,0 +1,14 @@ +from re import S + + +def solution(n): + s = n*(n+1)/2 + qos = s*s + + soq = 0 + for i in range(n): + soq += (i+1)*(i+1) + + return abs(soq - qos) + +print(solution(100)) \ No newline at end of file diff --git a/p7/__pycache__/solution.cpython-37.pyc b/p7/__pycache__/solution.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1522358641c870d9194a81b0647815b96c5d1b15 GIT binary patch literal 516 zcmYk2!Ab)$5Qb;6*=<_dqMq~xlm#hxu^=L%;!y+-!m=Q>8+CQFyUj*vVSB2t;=xzS z)swH_$w{Q(z)a>(GLvs|HW>7P?BnP1ejfq8oLE~x$tihrK_P<-3s9IKx||hE1xcWI z!o3cPP(?|kI!T8#&%$>|gzQR@MJrsnn$8Wx;+r}_jF!Keyoi|%ABw8dmNzqPoNRLW zCT(BNjV!Y}ucn0MjZ<_;=j0x#g(VtjseQ_pY#GdV4Yq8BExdp}Y-t_48;r7G#s2Qh zwr-(iEe*2`J3vV6>f1dK2Rfw128AqjabAT|LXGk*|f+X+2Jxs-Quua#Sy@SPS<~OZZCLBPG#>F^7`QItSXCKuow#Wm ML7|TuxWR<@1(DNr2mk;8 literal 0 HcmV?d00001 diff --git a/p7/solution.py b/p7/solution.py new file mode 100644 index 0000000..5dc0e10 --- /dev/null +++ b/p7/solution.py @@ -0,0 +1,13 @@ +from ctypes import util +from math import floor, sqrt +from util.sieve import sieve, extend_sieve + +def solution(n): + sieve_max = n + p, s = sieve(sieve_max) + while len(p) < n: + sieve_max += n + p, s = extend_sieve(sieve_max, s) + return p[n-1] + +print(solution(10001)) \ No newline at end of file diff --git a/p8/solution.py b/p8/solution.py new file mode 100644 index 0000000..0c5347e --- /dev/null +++ b/p8/solution.py @@ -0,0 +1,19 @@ +from math import log10, floor + +def solution(number, n): + digits = floor(log10(number)+1) + max_prod = 0 + i_max = 0 + for i in range(digits-n+1): + product = 1 + for j in range(n): + product *= number//(10**(i+j))%10 + if product > max_prod: + max_prod = product + i_max = i + return max_prod, i_max + + +number = 7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450 + +print(solution(number, 13)) \ No newline at end of file diff --git a/p851_/solution.jl b/p851_/solution.jl new file mode 100644 index 0000000..2b0e3d8 --- /dev/null +++ b/p851_/solution.jl @@ -0,0 +1,8 @@ + +function solution(n) + +end + +function get_set_iterator(n) + +end diff --git a/p9/__init__.py b/p9/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/p9/solution.py b/p9/solution.py new file mode 100644 index 0000000..2bca138 --- /dev/null +++ b/p9/solution.py @@ -0,0 +1,13 @@ +from math import gcd, sqrt, floor + +def solution(s): + m = floor(sqrt(s/2)) + while m > 0: + diff = s - 2*m*m + if gcd(diff, 2*m) == 2*m: + n = diff//(2*m) + if m > n & n > 0: + return(m*m-n*n, 2*m*n, m*m+n*n, (m*m-n*n)*(2*m*n)*(m*m+n*n)) + m -= 1 + +print(solution(1000)) \ No newline at end of file diff --git a/util/julia/erastothenes_extended_sieve.jl b/util/julia/erastothenes_extended_sieve.jl new file mode 100644 index 0000000..4052d19 --- /dev/null +++ b/util/julia/erastothenes_extended_sieve.jl @@ -0,0 +1,7 @@ + +module erastothenes_extended_sieve + include("files/_erastothenes_extended_sieve.jl") + export extended_sieve, get_extended_sieve + export run! + export get, get_primes +end diff --git a/util/julia/erastothenes_sieve.jl b/util/julia/erastothenes_sieve.jl new file mode 100644 index 0000000..5c8b65e --- /dev/null +++ b/util/julia/erastothenes_sieve.jl @@ -0,0 +1,8 @@ + +module erastothenes_sieve + include("files/_erastothenes_sieve.jl") + export sieve, get_sieve + export run! + export get, get_primes, get_composites + export is_prime +end diff --git a/util/julia/files/_erastothenes_extended_sieve.jl b/util/julia/files/_erastothenes_extended_sieve.jl new file mode 100644 index 0000000..aba3e1d --- /dev/null +++ b/util/julia/files/_erastothenes_extended_sieve.jl @@ -0,0 +1,59 @@ +include("_erastothenes_sieve.jl") +include("_math.jl") + +mutable struct extended_sieve + sieve::sieve + factors::Vector{Vector{Int}} +end + +function get_extended_sieve() + return extended_sieve(sieve(falses(1), 1, 1, 1000), [[]]) +end + +function _elongate!(es::extended_sieve) + s = es.sieve + length = s._length + target = s._target + diff = target - length + run!(s, target) + + factors = append!(es.factors, fill([], nneg(diff))) + done = [trues(length); falses(diff)] + if diff > 0 + for i ∈ get_primes(s) + if i > length + factors[i] = [i] + end + for j ∈ cld(length+1, i):fld(target, i) + prod = i*j + if ~done[prod] + if done[j] + index = searchsortedfirst(factors[j], i) + factors[prod] = insert!(copy(factors[j]), index, i) + done[prod] = true + else + push!(factors[prod], i) + end + end + end + end + end + return Nothing +end + +function run!(es::extended_sieve, n::Int) + es.sieve._target = n; + _elongate!(es) + return Nothing +end + +function get(es::extended_sieve, n::Int, prerun=true::Bool) + if n > es.sieve._length + run(s, prerun ? n + es.sieve._prerun_size : n) + end + return (es.sieve[n], es.factors[n]) +end + +function get_primes(es::extended_sieve) + return get_primes(es.sieve) +end diff --git a/util/julia/files/_erastothenes_sieve.jl b/util/julia/files/_erastothenes_sieve.jl new file mode 100644 index 0000000..bb3f182 --- /dev/null +++ b/util/julia/files/_erastothenes_sieve.jl @@ -0,0 +1,88 @@ +mutable struct sieve + sieve::BitVector + _length::Int + _target::Int + _prerun_size::Int +end + +function get_sieve() + return sieve([false], 1, 1, 1000) +end + +function _elongate!(s::sieve) + length = s._length + target = s._target + diff = target - length + if diff > 0 + s.sieve = [s.sieve; trues(diff)] + for i = 1:floor(Int, sqrt(target)) + if s.sieve[i] + _floor = length÷i + 1 + _ceil = target÷i + for j = _floor:_ceil + actual = i*j + if actual > i + s.sieve[actual] = false + end + end + end + end + s._length = target + end + return nothing +end + +# runs the sieve until index n +function run!(s::sieve, n::Int) + s._target = n + _elongate!(s) + return nothing +end + +# fetches data about a specific integer +function get(s::sieve, n::Int, prerun=true::Bool) + if n > s._length + run(s, prerun ? n + s._prerun_size : n) + end + return s.sieve[n] +end + +# returns all primes in the sieve +function get_primes(s::sieve, n_max=(-1)::Int) + if n_max == -1 + trimmed_sieve = s.sieve + else + trimmed_sieve = s.sieve[1:n_max] + end + n = length(trimmed_sieve) + c = count(trimmed_sieve) + primes = Vector(undef, c) + j = 1 + for i = 1:n + if s.sieve[i] + primes[j] = i + j += 1 + end + end + return primes +end + +function get_composites(s::sieve) + n = length(s.sieve) + c = count(s.sieve) + composites = Vector(undef, n-c) + j = 1 + for i = 1:n + if !s.sieve[i] + composites[j] = i + j += 1 + end + end + return composites +end + +function is_prime(s::sieve, i::Int) + if i < 0 return false end + run(s, i) + return s.sieve[i] +end diff --git a/util/julia/files/_math.jl b/util/julia/files/_math.jl new file mode 100644 index 0000000..870f4b3 --- /dev/null +++ b/util/julia/files/_math.jl @@ -0,0 +1,3 @@ + +nneg(v) = max(v, 0) +npos(v) = min(v, 0) diff --git a/util/julia/files/_sorting.jl b/util/julia/files/_sorting.jl new file mode 100644 index 0000000..b5044af --- /dev/null +++ b/util/julia/files/_sorting.jl @@ -0,0 +1,31 @@ + +function mergeSorted(A::Vector{T}, B::Vector{T}) where T + la = length(A) + lb = length(B) + C = Vector{T}(undef, la + lb) + + a = b = 1 + while (a <= la && b <= lb) + if A[a] < B[b] + C[a+b-1] = A[a] + a += 1 + else + C[a+b-1] = B[b] + b += 1 + end + end + + if a > la + while b <= lb + C[a+b-1] = B[b] + b += 1 + end + else + while a <= la + C[a+b-1] = A[a] + a += 1 + end + end + + return C +end diff --git a/util/julia/math.jl b/util/julia/math.jl new file mode 100644 index 0000000..6eee0de --- /dev/null +++ b/util/julia/math.jl @@ -0,0 +1,6 @@ + +module math + include("files/_math.jl") + + export nneg, npos +end diff --git a/util/julia/sorting.jl b/util/julia/sorting.jl new file mode 100644 index 0000000..e1f65cc --- /dev/null +++ b/util/julia/sorting.jl @@ -0,0 +1,5 @@ + +module sorting + include("files/_sorting.jl") + export mergeSorted +end diff --git a/util/python/__pycache__/prod.cpython-37.pyc b/util/python/__pycache__/prod.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..dc1be6f34d6999880b434ce2374e913181b79f35 GIT binary patch literal 273 zcmYLCy9&ZU5ZpaQLr6MndmF745nr7mf`uZn(A?pJ#KcPi3Q6bB_)FJXS=(8;XA}o! zc5e4(w{P1f5PGBWWrf295XyuQW(O@ z%2h<=dMIEWwd=d?}?7iK8f%K DHl;Sw literal 0 HcmV?d00001 diff --git a/util/python/__pycache__/sieve.cpython-37.pyc b/util/python/__pycache__/sieve.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e2e60d35b6856d248e40537f91e9e89e346a8f89 GIT binary patch literal 2842 zcmbtW&u<$=6rMLbyWY5I8imlrp+KM@VNr#M3sM!8ibg@IkX5ObT3IP8j2uSZm(S%+9>|-mh=`&BcpVf#M<&hPy|~{uZJwJv5}li9$u)>jG)ar5)THHO(R8$<72eRQJ-l6A(LUauo`ddc z?k1h^$FNP<$q&C--7U0a6+%-)nFs(95-K637TD@EcAoRbxc_oO$UX<>mleSD0 zrgZ}1Fy8xBm^mzXv8k``-ZA~iw7T6+FWS9xlJ56=yN9O#C~T+UaU7c6Vn9t{_YC6mu>M$8YtOY}<^WEOiSp3*r?v$&~Im!^Vm`CJgj z{a(~cL(KR*Lp=+%5FF3kF~>dbBy6MLv*(JlG5^Z39AoRWkI~^{ABh8Hmig$6&WQwO zWJa1+MUCAj8-}fd_t-A8z=F>hLopY5g8eoP243ZbV^>tETEfAXGKRd1bz3-ppu=EB z42ecE1Bg{IaxzB~0REl{1z<%ArkFjYZE;Fp!Ht0&3{odmshi1D;@`G-s7J~gqH4n2 zhM7vM6|p8pSX1`B!4@>RnRhC&V`Ee)zGM|%yNm?K`F`dXv%rvP*Xs1Q#8Gx%9NoSz zppA2m9pyC)r&(zo$CsUb7cE(Yh+yACe}ts}MII^apnKM5s2I7inNu+1#uwGCxRa#q ze)sSOXL!OIJu$pGPO3>#Y;48-b}LS9pfg!-W42TGilA{870K_KRxb(-<1(zSK361^ zH?9e5o!kp-8Ru@$4m)v9k8-coPLEsh3|KP{ZSSBZS0Fe6J(Pe?SLiaL zKabxcEkiER@X`$aM!mun)N6IaAjqph(Cup!8T#`nsUt>mu#K@Z;Uz6= z!j>$EAXS-s>YjrP4m|S!1?jk8E)8mM1Pb*_O+3dvlUg|p$|eEkB=(ttocERv#C$R#;X z!&xuQQY2R|Csp!2(hC-dpIH)!lFkGu3RKAy`GicfAjzM^9?}kXwGVm&CB7ueCp1{X zoTbPo^iY9bneE{TO*H`xRnRTS?~Lz+v+|qE9xc8^W51q_$DmY&$k|;?uY=#9UuF1L zfcQKZdBvB^o1)Z8Rw-t2#xr|Hr3RwaUgm4i^+Xp&?qn3v3W}&$i%33W@-5L}k5&f` zXnt%9>(XkxpXaPzrgN->&Qcd=1(P_goH2=4UPI!XrIy(~K*y5!WhQZW0H`!01GX`x z%X_wxZ33WHnD)&I1nPE~`!89FZ~d>)CaivKrdG;3|Bdu+KEn1LB%-~TOO7{;bym;(VXkYItY8IIVn(&ky>71j=heSdPfM0VRqKUH||9 literal 0 HcmV?d00001 diff --git a/util/python/prod.py b/util/python/prod.py new file mode 100644 index 0000000..a00e6d6 --- /dev/null +++ b/util/python/prod.py @@ -0,0 +1,5 @@ +def prod(l): + product = 1 + for e in l: + product *= e + return product \ No newline at end of file diff --git a/util/python/sieve.py b/util/python/sieve.py new file mode 100644 index 0000000..46944e3 --- /dev/null +++ b/util/python/sieve.py @@ -0,0 +1,78 @@ +from math import sqrt, floor + +class sieve: + + def __init__(self): + self.sieve = [False] + self._length = 1 + self._target = 1 + + def run(self, n): + self._target = n + self._elongate() + + def get(self, n): + if n > self._length: + self.run(n) + return self.sieve[n-1] + + def _elongate(self): + length = self._length + target = self._target + diff = target - length + if diff > 0: + self.sieve += [True for _ in range(diff)] + for i in range(floor(sqrt(target))): + if self.sieve[i]: + _floor = length//(i+1) + _ceil = target//(i+1) + for j in range(_floor, _ceil): + actual = (i+1)*(j+1)-1 + if actual > i+1: + self.sieve[actual] = False + self._length = target + +class extended_sieve: + + def __init__(self): + self.sieve = [[False, 1, []]] + self._length = 1 + self._target = 1 + self.prerun_step = 1000 + + def run(self, n): + self._target = n + self._elongate() + + def get(self, n): + if n > self._length: + self.run(n+self.prerun_step) + prime_decomp = {} + for e in self.sieve[n-1][2]: + if e in list(prime_decomp.keys()): + prime_decomp[e] += 1 + else: + prime_decomp[e] = 1 + return [self.sieve[n-1][0], prime_decomp] + + def _elongate(self): + length = self._length + target = self._target + diff = target - length + if diff > 0: + self.sieve += [[True, length+i+1, []] for i in range(diff)] + for i in range(target): + if self.sieve[i][0]: + if i+1 > length: + self.sieve[i][2] += [i+1] + _floor = length//(i+1) + _ceil = target//(i+1) + for j in range(_floor, _ceil): + actual = (i+1)*(j+1)-1 + if actual > i+1: + old_entry = self.sieve[actual] + self.sieve[actual] = [False, old_entry[1]//(i+1), old_entry[2]+[i+1]] + elif self.sieve[i][1] != 1: + old_entry = self.sieve[i] + self.sieve[i] = [False, 1, old_entry[2]+self.sieve[old_entry[1]-1][2]] + self._length = target