// outline sort (factoring exercise) o:("1.0";"1.0.1";"1.1.1";"1.2";"1.10";"1.11";"1.20";"1.20.1";"1.30";"1.9") f:{x y z x} / multi-field sort s:{1_'(&x=".")_ x:".",x} / split string on . p:{,/x#,".0"} / pad string with .0 n:|0$+: / reverse cast flip k:{f/[_n;x;n y{s y,p x-z}[|/c]'c:+/'y="."]} / grade y with x u:k[<:];d:k[>:] / up/down \ u o 0 1 2 3 9 4 5 6 7 8 o u o ("1.0" "1.0.1" "1.1.1" "1.2" "1.9" "1.10" "1.11" "1.20" "1.20.1" "1.30") \t u 1000000#0 4093