]> gitweb.factorcode.org Git - factor.git/blob - extra/rosetta-code/multisplit/multisplit.factor
sequences: rename subsequence? words to subseq? again.
[factor.git] / extra / rosetta-code / multisplit / multisplit.factor
1 ! Copyright (C) 2020 Alexander Ilin.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: arrays assocs kernel make sequences ;
4
5 IN: rosetta-code.multisplit
6
7 : first-subseq ( seq separators -- n separator )
8     tuck
9     [ [ subseq-index ] dip 2array ] withd map-index sift-keys
10     [ drop f f ] [ [ first ] infimum-by first2 rot nth ] if-empty ;
11
12 : multisplit ( string separators -- seq )
13     '[
14         [ dup _ first-subseq dup ] [
15             length -rot cut-slice [ , ] dip swap tail-slice
16         ] while 2drop ,
17     ] { } make ;