Split a character string based on change of character: Difference between revisions

Add Common Lisp implementation
(Add Common Lisp implementation)
Line 208:
NEXT
= split$</lang>
{{out}}
<pre>g, HHH, 5, YY, ++, ///, \</pre>
 
=={{header|Common Lisp}}==
<lang lisp>(defun split (string)
(flet ((make-buffer ()
(make-array 0 :element-type 'character :adjustable t :fill-pointer t)))
(loop with buffer = (make-buffer)
with result
for prev = nil then c
for c across string
when (and prev (char/= c prev))
do (push buffer result)
(setf buffer (make-buffer))
do (vector-push-extend c buffer)
finally (push buffer result)
(return (format t "~{~A~^, ~}"(nreverse result))))))
 
(split "gHHH5YY++///\\")</lang>
{{out}}
<pre>g, HHH, 5, YY, ++, ///, \</pre>
68

edits