1 ! Copyright (C) 2012 John Benediktsson
2 ! See https://factorcode.org/license.txt for BSD license
4 USING: io kernel math random sequences sequences.private ;
10 : each-numbered-line ( ... quot: ( ... line number -- ... ) -- ... )
11 [ 1 ] dip '[ swap _ [ 1 + ] bi ] each-line drop ; inline
15 : random-line ( -- line/f )
16 f [ random zero? [ nip ] [ drop ] if ] each-numbered-line ;
18 :: random-lines ( n -- lines )
25 r n < [ line r accum set-nth-unsafe ] when
27 ] each-numbered-line accum ;