/ collatz Public

Implementing the Collatz Conjecture in Haskell

matheusportela/collatz

Switch branches/tags
Nothing to show

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Files

Failed to load latest commit information.
Type
Name
Commit time

collatz

Implementing the Collatz Conjecture in Haskell

What is the Collatz Conjecture?

Consider the series generated by the following expression:

``````f(x) =
if x is odd: 3*x + 1
otherwise: x/2
``````

Lothar Collatz conjectured that, when generating the series, it will eventually reach 1 independently of the starting number. It is known that even 2^60 reaches 1.

Usage

Generating Collatz series given a starting number:

```:l collatz.h
*Main> collatz 9
[9,28,14,7,22,11,34,17,52,26,13,40,20,10,5,16,8,4,2,1]
*Main> collatz 100
[100,50,25,76,38,19,58,29,88,44,22,11,34,17,52,26,13,40,20,10,5,16,8,4,2,1]
*Main> collatz 999999999
[999999999,2999999998,1499999999,4499999998,2249999999,6749999998,3374999999,10124999998,5062499999,15187499998,7593749999,22781249998,11390624999,34171874998,17085937499,51257812498,25628906249,76886718748,38443359374,19221679687,57665039062,28832519531,86497558594,43248779297,129746337892,64873168946,32436584473,97309753420,48654876710,24327438355,72982315066,36491157533,109473472600,54736736300,27368368150,13684184075,41052552226,20526276113,61578828340,30789414170,15394707085,46184121256,23092060628,11546030314,5773015157,17319045472,8659522736,4329761368,2164880684,1082440342,541220171,1623660514,811830257,2435490772,1217745386,608872693,1826618080,913309040,456654520,228327260,114163630,57081815,171245446,85622723,256868170,128434085,385302256,192651128,96325564,48162782,24081391,72244174,36122087,108366262,54183131,162549394,81274697,243824092,121912046,60956023,182868070,91434035,274302106,137151053,411453160,205726580,102863290,51431645,154294936,77147468,38573734,19286867,57860602,28930301,86790904,43395452,21697726,10848863,32546590,16273295,48819886,24409943,73229830,36614915,109844746,54922373,164767120,82383560,41191780,20595890,10297945,30893836,15446918,7723459,23170378,11585189,34755568,17377784,8688892,4344446,2172223,6516670,3258335,9775006,4887503,14662510,7331255,21993766,10996883,32990650,16495325,49485976,24742988,12371494,6185747,18557242,9278621,27835864,13917932,6958966,3479483,10438450,5219225,15657676,7828838,3914419,11743258,5871629,17614888,8807444,4403722,2201861,6605584,3302792,1651396,825698,412849,1238548,619274,309637,928912,464456,232228,116114,58057,174172,87086,43543,130630,65315,195946,97973,293920,146960,73480,36740,18370,9185,27556,13778,6889,20668,10334,5167,15502,7751,23254,11627,34882,17441,52324,26162,13081,39244,19622,9811,29434,14717,44152,22076,11038,5519,16558,8279,24838,12419,37258,18629,55888,27944,13972,6986,3493,10480,5240,2620,1310,655,1966,983,2950,1475,4426,2213,6640,3320,1660,830,415,1246,623,1870,935,2806,1403,4210,2105,6316,3158,1579,4738,2369,7108,3554,1777,5332,2666,1333,4000,2000,1000,500,250,125,376,188,94,47,142,71,214,107,322,161,484,242,121,364,182,91,274,137,412,206,103,310,155,466,233,700,350,175,526,263,790,395,1186,593,1780,890,445,1336,668,334,167,502,251,754,377,1132,566,283,850,425,1276,638,319,958,479,1438,719,2158,1079,3238,1619,4858,2429,7288,3644,1822,911,2734,1367,4102,2051,6154,3077,9232,4616,2308,1154,577,1732,866,433,1300,650,325,976,488,244,122,61,184,92,46,23,70,35,106,53,160,80,40,20,10,5,16,8,4,2,1]```

Finding the number that generates the largest Collatz series given a list of starting points (first is the starting point, last is the length of the Collatz series):

```*Main> largestCollatzNum 30
27
*Main> largestCollatzLength 30
112
*Main> largestCollatz 30
[27,82,41,124,62,31,94,47,142,71,214,107,322,161,484,242,121,364,182,91,274,137,412,206,103,310,155,466,233,700,350,175,526,263,790,395,1186,593,1780,890,445,1336,668,334,167,502,251,754,377,1132,566,283,850,425,1276,638,319,958,479,1438,719,2158,1079,3238,1619,4858,2429,7288,3644,1822,911,2734,1367,4102,2051,6154,3077,9232,4616,2308,1154,577,1732,866,433,1300,650,325,976,488,244,122,61,184,92,46,23,70,35,106,53,160,80,40,20,10,5,16,8,4,2,1]
*Main> largestCollatz 100000
[77031,231094,115547,346642,173321,519964,259982,129991,389974,194987,584962,292481,877444,438722,219361,658084,329042,164521,493564,246782,123391,370174,185087,555262,277631,832894,416447,1249342,624671,1874014,937007,2811022,1405511,4216534,2108267,6324802,3162401,9487204,4743602,2371801,7115404,3557702,1778851,5336554,2668277,8004832,4002416,2001208,1000604,500302,250151,750454,375227,1125682,562841,1688524,844262,422131,1266394,633197,1899592,949796,474898,237449,712348,356174,178087,534262,267131,801394,400697,1202092,601046,300523,901570,450785,1352356,676178,338089,1014268,507134,253567,760702,380351,1141054,570527,1711582,855791,2567374,1283687,3851062,1925531,5776594,2888297,8664892,4332446,2166223,6498670,3249335,9748006,4874003,14622010,7311005,21933016,10966508,5483254,2741627,8224882,4112441,12337324,6168662,3084331,9252994,4626497,13879492,6939746,3469873,10409620,5204810,2602405,7807216,3903608,1951804,975902,487951,1463854,731927,2195782,1097891,3293674,1646837,4940512,2470256,1235128,617564,308782,154391,463174,231587,694762,347381,1042144,521072,260536,130268,65134,32567,97702,48851,146554,73277,219832,109916,54958,27479,82438,41219,123658,61829,185488,92744,46372,23186,11593,34780,17390,8695,26086,13043,39130,19565,58696,29348,14674,7337,22012,11006,5503,16510,8255,24766,12383,37150,18575,55726,27863,83590,41795,125386,62693,188080,94040,47020,23510,11755,35266,17633,52900,26450,13225,39676,19838,9919,29758,14879,44638,22319,66958,33479,100438,50219,150658,75329,225988,112994,56497,169492,84746,42373,127120,63560,31780,15890,7945,23836,11918,5959,17878,8939,26818,13409,40228,20114,10057,30172,15086,7543,22630,11315,33946,16973,50920,25460,12730,6365,19096,9548,4774,2387,7162,3581,10744,5372,2686,1343,4030,2015,6046,3023,9070,4535,13606,6803,20410,10205,30616,15308,7654,3827,11482,5741,17224,8612,4306,2153,6460,3230,1615,4846,2423,7270,3635,10906,5453,16360,8180,4090,2045,6136,3068,1534,767,2302,1151,3454,1727,5182,2591,7774,3887,11662,5831,17494,8747,26242,13121,39364,19682,9841,29524,14762,7381,22144,11072,5536,2768,1384,692,346,173,520,260,130,65,196,98,49,148,74,37,112,56,28,14,7,22,11,34,17,52,26,13,40,20,10,5,16,8,4,2,1]```

Implementing the Collatz Conjecture in Haskell

Releases

No releases published

Packages 0

No packages published