Doing people's homework are we?
On 5/17/2017 8:08 PM, Matthew Butterick wrote:
`slice-at`
http://docs.racket-lang.org/sugar/index.html?q=slice-at#%28def._%28%28lib._sugar%2Flist..rkt%29._slice-at%29%29
<http://docs.racket-lang.org/sugar/index.html?q=slice-at#%28def._%28%28lib._sugar/list..rkt%29._slice-at%29%29>
On May 17, 2017, at 3:56 PM, Don Green <infodeveloper...@gmail.com
<mailto:infodeveloper...@gmail.com>> wrote:
Racket code that could perform this list manipulation?
(every-n-lists-into-list <n-lists-to-group> '(<in-list>))
(every-n-lists-into-list 1 '((1) (2))) ;=> '(((1) (2)))
(every-n-lists-into-list 2 '((1) (2) (3) (4))) ;=> '(((1) (2)) ((3) (4)))
(every-n-lists-into-list 3 '((1) (2) (3) (4)) (5) (6))) ;=> '(((1)
(2) (3)) ((4) (5) (6)))
Very nice! Unfortunately, the existence of sugar was unknown to me
until just now. More evidence that one can spend a lifetime learning
what batteries Racket already has included.
My 1st thought was to use split-at:
#lang racket
(define (group-items n items)
;; check # of items
(unless (= 0 (modulo (length items) n))
(error "not enough items"))
;; split and reassemble
(let loop [
(items items)
(result '())
]
(if [null? items]
(reverse result)
(let-values [((head tail)(split-at items n))]
(loop tail (cons head result)))
))
)
George
--
You received this message because you are subscribed to the Google Groups "Racket
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.