Run-length encoding: Difference between revisions

Emacs Lisp: Completely rewrite solutions to something readable
(Emacs Lisp: Completely rewrite solutions to something readable)
Line 2,286:
 
=={{header|Emacs Lisp}}==
<lang lisp>(defun run-length-encode (str)
(let (output)
(defun run-length-encode (str_arg)
(with-temp-buffer
"Return the run length encoding of a string argument STR_ARG."
(insert str)
(goto-char (point-min))
(while (not (eobp))
(let* ((char (char-after (point)))
(count (skip-chars-forward (string char))))
(push (format "%c%d" char count) output))))
(mapconcat #'identity (nreverse output) "")))</lang>
 
{{libheader|seq.el}}
(let ((dalist (string-to-list str_arg)) (letters) (frequency))
<lang lisp>(require 'seq)
 
(defun run-length-encode (str_argstr)
(dolist (element dalist)
(let ((grouped (mapcar #'cdr (seq-group-by #'identity (string-to-list str)))))
(if (not (equal (car letters) element))
(apply #'concat (mapcar (lambda (items)
(progn
(format "%c%d" (car items) (length items)))
(setq letters (cons element letters))
grouped))))</lang>
(setq frequency (cons 1 frequency)))
(setq frequency (cons (+ (car frequency ) 1) (cdr frequency)))))
 
(apply 'concat
(reverse
(mapcar*
(lambda (x y) (concat (number-to-string x)
(char-to-string y)))
frequency letters)))))
</lang>
 
=={{header|Erlang}}==
Anonymous user