Emacs Lisp

Hello

1
2
3
4
(defun wrap-text-in-waves (text)
  "Wrap TEXT in a wave-like decorative pattern and return the result."
  (let ((wave-pattern "⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅ॱ˙˙ॱᐧ.˳˳.⋅"))
    (concat wave-pattern " " text " " wave-pattern)))
wrap-text-in-waves
1
2
;; Example usage
(message (wrap-text-in-waves "Hello, Emacs!"))
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅ॱ˙˙ॱᐧ.˳˳.⋅ Hello, Emacs! ⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅ॱ˙˙ॱᐧ.˳˳.⋅

Helpers

(defun largest-n (numbers)
  "Return the largest number from a list of NUMBERS."
  (when numbers
    (cl-reduce #'max numbers)))
largest-n

Sum the multiples of 3 or 5 below 1000.

1
2
3
4
5
6
7
(defun sum-multiples-of-3-or-5-below-n (n)
  "Sum the multiples of 3 or 5 below n."
  (apply #'+
         (seq-filter (lambda (x) (or (= (% x 3) 0) (= (% x 5) 0)))
                     (number-sequence 1 (1- n)))))

(sum-multiples-of-3-or-5-below-n 1000)
233168

Fibonacci Numbers

1
2
3
4
5
6
7
(defun fibonacci (n)
  "Generate the fibonacci sequence below n."
  (let ((fib (lambda (a b)
               (if (>= a n)
                   nil
                 (cons a (funcall fib b (+ a b) ))))))
    (funcall fib 1 2)))
fibonacci
1
(fibonacci 200) ;; generate all the fibonacci numbers below 200
1 2 3 5 8 13 21 34 55 89 144
1
2
3
4
5
6
(defun sum-even-valued-fibonacci-numbers-below-n (n)
  "Sum the even valued fibonacci numbers below n."
  (apply #'+
         (seq-filter (lambda (x) (= (% x 2) 0) )
                     (fibonacci n))))
(sum-even-valued-fibonacci-numbers-below-n 4000000)
4613732

Prime Factors

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
(defun prime-factors (n)
"Calculate the prime factors of n."
(let ((factors '())
      (divisor 2))
  ;; Remove factors of 2
  (while (zerop (mod n divisor))
    (push divisor factors)
    (setq n (/ n divisor)))
  ;; Check odd divisors
  (setq divisor 3)
  (while (<= (* divisor divisor) n)
    (if (zerop (mod n divisor))
        (progn
          (push divisor factors)
          (setq n (/ n divisor)))
      (setq divisor (+ divisor 2))))
  ;; If n is still greater than 1, it is a prime number
  (if (> n 1)
      (push n factors))
  (reverse factors)))
prime-factors
1
(prime-factors 13195)
5 7 13 29
1
2
;; What is the largest prime factor of 600851475143?
(largest-n (prime-factors 600851475143))
6857