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