commit 66f0049

Artur Manuel  ·  2025-08-22 14:34:37 +0000 UTC
parent c528829
feat(emacs): add emacs lisp
1 files changed,  +40, -0
+40, -0
 1@@ -0,0 +1,40 @@
 2+;;; collatz.el --- collatz sequence in emacs lisp -*- lexical-binding: t -*-
 3+
 4+;; Author: Artur Manuel
 5+;; Maintainer: Artur Manuel
 6+;; Version: 0.0.0
 7+;; Package-Requires: ()
 8+;; Homepage: https://codeberg.org/amadaluzia/rosetta-collatz
 9+;; Keywords: :D
10+
11+
12+;; This file is not part of GNU Emacs
13+
14+
15+;;; Commentary:
16+
17+;; Does exactly what you expect.
18+
19+;;; Code:
20+
21+(defun collatz (x)
22+  "Get the collatz number of X."
23+  (if (= (% x 2) 0) (/ x 2)
24+    (+ (* 3 x) 1)))
25+
26+(defun collatz--sequence (x)
27+  "Get the sequence of the collatz numbers of X without proper formatting."
28+  (if (= x 1) "1"
29+    (format "%d, %s" x (collatz--sequence (collatz x)))))
30+
31+(defun collatz-sequence (x)
32+  "Get the sequence of the collatz nummbers of X."
33+  (format "%d: %s" x (collatz--sequence x)))
34+
35+(let ((sequences (mapcar 'collatz-sequence (number-sequence 1 10000))))
36+  (dolist (sequence sequences nil)
37+    (print sequence)))
38+
39+(provide 'collatz)
40+
41+;;; collatz.el ends here