]> gitweb.factorcode.org Git - factor.git/blob - extra/sequences/rotated/rotated.factor
Refactor columns, sequences.{extra, frozen, rotated} using sequence-view
[factor.git] / extra / sequences / rotated / rotated.factor
1 ! Copyright (C) 2012 John Benediktsson
2 ! See https://factorcode.org/license.txt for BSD license
3 USING: accessors kernel math sequences ;
4 IN: sequences.rotated
5
6 TUPLE: rotated < sequence-view
7 { n integer read-only } ;
8
9 C: <rotated> rotated
10
11 M: rotated virtual@
12     [ n>> + ] [ seq>> ] bi [
13         length over 0 < [ + ] [
14             2dup >= [ - ] [ drop ] if
15         ] if
16     ] keep ;
17
18 : all-rotations ( seq -- seq' )
19     dup length <iota> [ <rotated> ] with map ;