aboutsummaryrefslogtreecommitdiffstats
path: root/14-Longest-Collatz-Sequence
diff options
context:
space:
mode:
authormjfernez <mjfernez@gmail.com>2020-02-09 15:16:26 -0500
committermjfernez <mjfernez@gmail.com>2020-02-09 15:16:26 -0500
commit93ea7fe5957b62f18e8fbd17a21696bd7de6332d (patch)
treed90aed60d687bcf195f1150777f37cbe8a149814 /14-Longest-Collatz-Sequence
parent125ec5bc3d8bfc224b7d32bcfbbc37b9fb5d441f (diff)
downloadProject_Euler_Solutions-93ea7fe5957b62f18e8fbd17a21696bd7de6332d.tar.gz
Organized everything, update README
Diffstat (limited to '14-Longest-Collatz-Sequence')
-rwxr-xr-x14-Longest-Collatz-Sequence/collatzbin0 -> 16696 bytes
-rw-r--r--14-Longest-Collatz-Sequence/collatz.c31
-rw-r--r--14-Longest-Collatz-Sequence/collatz.py28
3 files changed, 59 insertions, 0 deletions
diff --git a/14-Longest-Collatz-Sequence/collatz b/14-Longest-Collatz-Sequence/collatz
new file mode 100755
index 0000000..37da709
--- /dev/null
+++ b/14-Longest-Collatz-Sequence/collatz
Binary files differ
diff --git a/14-Longest-Collatz-Sequence/collatz.c b/14-Longest-Collatz-Sequence/collatz.c
new file mode 100644
index 0000000..ec77af6
--- /dev/null
+++ b/14-Longest-Collatz-Sequence/collatz.c
@@ -0,0 +1,31 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <math.h>
+// In C, it's immediately obvious my python solution is inefficient
+
+// For keeping track of the length of sequences
+// c is a temporary counter, s changes when c reaches a new maximum
+long int c = 0;
+long int s = 0;
+long int collatz(long int seed){
+ c++;
+ if(seed == 1)
+ return 0;
+ if(seed % 2 == 0)
+ seed = seed / 2;
+ else
+ seed = 3 * seed + 1;
+ collatz(seed);
+}
+
+int main(){
+ for(long int i = 1; i < pow(10, 6); i++){
+ c = 0;
+ collatz(i);
+ if(c > s){
+ s = c;
+ }
+ }
+ printf("The longest sequence has %d numbers \n", s);
+ return 0;
+}
diff --git a/14-Longest-Collatz-Sequence/collatz.py b/14-Longest-Collatz-Sequence/collatz.py
new file mode 100644
index 0000000..74d5e1e
--- /dev/null
+++ b/14-Longest-Collatz-Sequence/collatz.py
@@ -0,0 +1,28 @@
+import PIL
+import math
+
+# Problem 14 Longest Collatz sequence
+# Note, a little slow, takes about 15 seconds.
+# There is probably a more efficient solution out there
+chain = []
+biggo = []
+
+
+def collatz(seed):
+ chain.append(seed)
+ if(seed == 1):
+ return 0
+ if(seed % 2 == 0):
+ seed = seed/2
+ else:
+ seed = 3*seed + 1
+ collatz(seed)
+
+
+for n in range(1, pow(10, 6)):
+ collatz(n)
+ if(len(chain) > len(biggo)):
+ biggo = chain
+ chain = []
+print(biggo)
+print("Has " + str(len(biggo)) + " numbers.")