Skip to content

Instantly share code, notes, and snippets.

@Xevion
Created December 8, 2023 00:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Xevion/94c8ca5a0240eff192bc62d1d11d8009 to your computer and use it in GitHub Desktop.
Save Xevion/94c8ca5a0240eff192bc62d1d11d8009 to your computer and use it in GitHub Desktop.
;;; #1 removeNILTop
(defun removeNILTop (lst)
(remove-if #'null lst))
(removeNILTop '(NIL X NIL NIL Y NIL Z))
(removeNILTop '(X NIL Y NIL Z NIL))
(removeNILTop '(NIL (X NIL Y) (NIL NIL)))
;;; #2 removeNILMost
(defun removeNILMost (lst)
(if (atom lst)
lst
(if (and (null (car lst)) (null (cdr lst)))
nil
(cons (removeNILMost (car lst))
(removeNILMost (cdr lst))))))
(removeNILMost '(NIL X NIL NIL Y NIL Z))
(removeNILMost '(X NIL (Y NIL Z) NIL))
(removeNILMost '(NIL (NIL) (X NIL Y) (NIL NIL) Z))
(removeNILMost '(NIL ( (((((NIL) NIL)))))))
;;; #3 reverseTop
(defun reverseTop (lst)
(if (atom lst)
lst
(let ((result nil))
(dolist (item lst)
(setq result (cons item result)))
result)))
(reverseTop '(X Y Z))
(reverseTop '(X (Y Z (A)) (W)))
;;; #4 reverseALL
(defun reverseAll (lst)
(if (atom lst)
lst
(reverse (mapcar #'reverseAll lst))))
(reverseAll '(X Y Z))
(reverseAll '(X (Y Z (A)) (W)))
;;; #5 palindrome
(defun palindrome (lst)
(equal lst (reverseTop lst)))
(palindrome '(R A C E C A R))
(palindrome '(W A S I T A C A R O R A C A T I S A W))
(palindrome '(N I X O N))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment