Comment detail

仲間はずれの判定 (Nested Flatten)
効率は悪いけれど短い版。

実行例:
gosh> (classify '(1 1 1 1 1))
(homo 1)
gosh> (classify '(1 1 2 1 1))
(quasi-homo 1 2)
gosh> (classify '(2 1 1 1 1))
(quasi-homo 1 2)
gosh> (classify '(2 1 4 1 1))
hetero
gosh> (classify '())
hetero
1
2
3
4
5
6
7
8
9
(use gauche.collection)
(use util.match)

(define (classify lis)
  (match (group-collection lis)
    [((x ...))     `(homo ,(car x))]
    [((x ...) (y)) `(quasi-homo ,(car x) ,y)]
    [((y) (x ...)) `(quasi-homo ,(car x) ,y)]
    [_ 'hetero]))

Index

Feed

Other

Link

Pathtraq

loading...