September 2017 Update
This commit is contained in:
parent
bba7bfd280
commit
ba8067c3b7
14570 changed files with 153136 additions and 63871 deletions
4
Task/Natural-sorting/Zkl/natural-sorting-1.zkl
Normal file
4
Task/Natural-sorting/Zkl/natural-sorting-1.zkl
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
fcn dsuSort(x,orig){ // decorate-sort-undecorate sort
|
||||
x.enumerate().sort(fcn([(_,a)],[(_,b)]){a<b})
|
||||
.apply('wrap([(n,_)]){orig[n]});
|
||||
}
|
||||
4
Task/Natural-sorting/Zkl/natural-sorting-2.zkl
Normal file
4
Task/Natural-sorting/Zkl/natural-sorting-2.zkl
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
# Ignoring leading spaces
|
||||
ts1:=T("ignore leading spaces: 2-2", " ignore leading spaces: 2-1",
|
||||
" ignore leading spaces: 2+0", " ignore leading spaces: 2+1");
|
||||
dsuSort(ts1.apply("strip"),ts1).println();
|
||||
4
Task/Natural-sorting/Zkl/natural-sorting-3.zkl
Normal file
4
Task/Natural-sorting/Zkl/natural-sorting-3.zkl
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
# Ignoring multiple adjacent spaces (m.a.s)
|
||||
ts2:=T("ignore m.a.s spaces: 2-2", "ignore m.a.s spaces: 2-1",
|
||||
"ignore m.a.s spaces: 2+0", "ignore m.a.s spaces: 2+1");
|
||||
dsuSort(ts2.apply('-(" ")),ts2).println();
|
||||
4
Task/Natural-sorting/Zkl/natural-sorting-4.zkl
Normal file
4
Task/Natural-sorting/Zkl/natural-sorting-4.zkl
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
# Equivalent whitespace characters
|
||||
ts3:=T("Equiv. spaces: 3-3", "Equiv.\rspaces: 3-2", "Equiv.\x0cspaces: 3-1",
|
||||
"Equiv.\x0bspaces: 3+0", "Equiv.\nspaces: 3+1", "Equiv.\tspaces: 3+2");
|
||||
dsuSort(ts3.apply('-.fp1("\n\r\t\f\b\x0b ")),ts3).println();
|
||||
4
Task/Natural-sorting/Zkl/natural-sorting-5.zkl
Normal file
4
Task/Natural-sorting/Zkl/natural-sorting-5.zkl
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
# Case Indepenent sort
|
||||
ts4:=T("cASE INDEPENENT: 3-2", "caSE INDEPENENT: 3-1",
|
||||
"casE INDEPENENT: 3+0", "case INDEPENENT: 3+1");
|
||||
dsuSort(ts4.apply("toLower"),ts4).println();
|
||||
15
Task/Natural-sorting/Zkl/natural-sorting-6.zkl
Normal file
15
Task/Natural-sorting/Zkl/natural-sorting-6.zkl
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
# Numeric fields as numerics
|
||||
fcn fieldize(s){
|
||||
s.apply(fcn(c){"1234567890".holds(c) and c or "."}).split(".")
|
||||
.filter().apply("toInt");
|
||||
}
|
||||
fcn fcmp(a,b){ // T(key, T(numeric fields)), eg L(0, L(100,99,0))
|
||||
a[1].zip(b[1]).reduce(fcn(_,[(a,b)]){
|
||||
if(a==b)return(True); // continue to next field
|
||||
return(Void.Stop,a<b);
|
||||
},True);
|
||||
}
|
||||
fcn fsort(list){
|
||||
list.apply(fieldize).enumerate().sort(fcmp)
|
||||
.apply('wrap([(n,_)]){list[n]});
|
||||
}
|
||||
6
Task/Natural-sorting/Zkl/natural-sorting-7.zkl
Normal file
6
Task/Natural-sorting/Zkl/natural-sorting-7.zkl
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
ts5:=T("foo100bar99baz0.txt", "foo100bar10baz0.txt", "foo1000bar99baz10.txt",
|
||||
"foo1000bar99baz9.txt");
|
||||
fsort(ts5).println();
|
||||
|
||||
x:=T("x9y99","foo10.txt","x10y0","foo9.txt","x9y100");
|
||||
fsort(x).println();
|
||||
Loading…
Add table
Add a link
Reference in a new issue