Solution to Gem Stones Problem Using Lisp


Improve your writing skills in 5 minutes a day with the Daily Writing Tips email newsletter.

The problem:

My Solution in Common Lisp

(defun processString (line position)
  (if (< position (length line))
    (progn
      (setf (nth (- (char-code (char line position)) 97) gemArray) (+ (nth (- (char-code (char line position)) 97) gemArray) 1))
      (processString line (+ position 1))
    )))

(defun outputResult (position n)
  (if (< position 26)
    (if (eql (nth position gemArray) n)
      (+ 1 (outputResult (+ position 1) n))
      (outputResult (+ position 1) n))
    0))

(defun main (iteration n)
  (if (> iteration 0)
    (progn
      (setq line (read-line))
      (processString (remove-duplicates line) 0)
      (main (- iteration 1) n))
    (outputResult 0 n)
  ))

(setq gemArray '(0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
(setq line (read-line))
(setq tests (parse-integer line))

(format t "~d" (main tests tests))

Leave a Reply

Your email address will not be published. Required fields are marked *