{ "abc" " " } [ "abc" "" CHAR: \s pad-longest ] unit-test
{ "abc..." "foobar" } [ "abc" "foobar" CHAR: . pad-longest ] unit-test
+{
+ {
+ "ABC"
+ "ABC"
+ "ABC"
+ "ABC"
+ "ABC-"
+ "-ABC-"
+ "-ABC--"
+ "--ABC--"
+ }
+} [
+ "ABC" 8 iota [ CHAR: - pad-center ] with map
+] unit-test
+
{ { 0 1 0 1 } } [
{ 0 0 0 0 } { 1 3 } over [ 1 + ] change-nths
] unit-test
: pad-longest ( seq1 seq2 elt -- seq1 seq2 )
[ 2dup max-length ] dip [ pad-tail ] 2curry bi@ ;
+:: pad-center ( seq n elt -- padded )
+ n seq length [-] :> extra
+ extra 2/ :> left
+ extra left - :> right
+ left elt <repetition> seq right elt <repetition>
+ seq 3append-as ;
+
: change-nths ( ... indices seq quot: ( ... elt -- ... elt' ) -- ... )
[ change-nth ] 2curry each ; inline