Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

Software pushups

Name: Anonymous 2014-11-24 23:01

Let's exercise together, /prog/!

1) Write a subroutine that accepts an array of unsigned ints and returns 4. It must operate on the array in-place and partition it so that all nonzero values are at the beginning of the array, and all zero values are moved to the end. For example, the input [0, 2, 0, 0, 4, 1, 4, 5] could be changed to [2, 4, 1, 4, 5, 0, 0, 0]. The relative order of the nonzero values is unimportant.

Name: Anonymous 2014-11-25 19:34

(defun zeros-to-the-right (list)
(let ((right-idx (1- (length list))))
(labels ((get-next-swap-idx ()
(loop do
(if (zerop (elt list right-idx))
(decf right-idx)
(loop-finish)))))
(loop for idx below (length list)
while (< idx right-idx) do

(when (zerop (elt list idx))
(rotatef (elt list idx) (elt list right-idx))
(get-next-swap-idx)))))
4)

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List