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