Sort an outline at every level: Difference between revisions
Content added Content deleted
m (→{{header|Phix}}: added without js) |
(J draft) |
||
Line 769: | Line 769: | ||
-> Inconsistent indent depths: [4,3,8,9,8,4,4,4,4]</pre> |
-> Inconsistent indent depths: [4,3,8,9,8,4,4,4,4]</pre> |
||
=={{header|J}}== |
|||
Implementation:<lang J>parse2=: {{ |
|||
((=<./)y (1 i.~ -.@e.)S:0 m) m {{ |
|||
({.y),<m parse2^:(*@#)}.y |
|||
}};.1 y |
|||
}} |
|||
parseout=: {{ |
|||
ws=. ' ',TAB |
|||
lines=: <;.2 y |
|||
indents=: lines (1 i.~ -.@e.)S:0 ws |
|||
unit=: +./indents |
|||
if. -. (-: i.@#)~.indents%unit do. |
|||
echo 'inconsistent indent widths' |
|||
end. |
|||
if. 1~:#~.;indents unit{{<(1,:m) <;._3 x{.;y }}"0 lines do. |
|||
echo 'inconsistent use of whitespace characters' |
|||
end. |
|||
ws parse2 lines |
|||
}} :.unparse |
|||
sortout=: {{ if. L.y do. u~ ({."1 y),.u sortout each}."1 y else. u~y end. }} |
|||
unparse=: {{ ;<S:0 y }}</lang> |
|||
Task examples (task data defined below):<lang J> /:sortout&.parseout sample1 |
|||
alpha |
|||
epsilon |
|||
iota |
|||
theta |
|||
zeta |
|||
beta |
|||
delta |
|||
gamma |
|||
kappa |
|||
lambda |
|||
mu |
|||
\:sortout&.parseout sample1 |
|||
zeta |
|||
gamma |
|||
mu |
|||
lambda |
|||
kappa |
|||
delta |
|||
beta |
|||
alpha |
|||
theta |
|||
iota |
|||
epsilon |
|||
/:sortout&.parseout sample2 |
|||
alpha |
|||
epsilon |
|||
iota |
|||
theta |
|||
zeta |
|||
beta |
|||
delta |
|||
gamma |
|||
kappa |
|||
lambda |
|||
mu |
|||
/:sortout&.parseout sample3 |
|||
inconsistent indent widths |
|||
inconsistent use of whitespace characters |
|||
alpha |
|||
iota |
|||
theta |
|||
zeta |
|||
beta |
|||
delta |
|||
gamma |
|||
kappa |
|||
lambda |
|||
mu |
|||
/:sortout&.parseout sample4 |
|||
inconsistent indent widths |
|||
alpha |
|||
epsilon |
|||
iota |
|||
theta |
|||
zeta |
|||
gamma |
|||
delta |
|||
</lang> |
|||
Data for task examples: |
|||
<lang J>sample1=: {{)n |
|||
zeta |
|||
beta |
|||
gamma |
|||
lambda |
|||
kappa |
|||
mu |
|||
delta |
|||
alpha |
|||
theta |
|||
iota |
|||
epsilon |
|||
}} |
|||
sample2=:{{)n |
|||
zeta |
|||
gamma |
|||
mu |
|||
lambda |
|||
kappa |
|||
delta |
|||
beta |
|||
alpha |
|||
theta |
|||
iota |
|||
epsilon |
|||
}} |
|||
sample3=:{{)n |
|||
alpha |
|||
epsilon |
|||
iota |
|||
theta |
|||
zeta |
|||
beta |
|||
delta |
|||
gamma |
|||
kappa |
|||
lambda |
|||
mu |
|||
}} |
|||
sample4=:{{)n |
|||
zeta |
|||
beta |
|||
gamma |
|||
lambda |
|||
kappa |
|||
mu |
|||
delta |
|||
alpha |
|||
theta |
|||
iota |
|||
epsilon |
|||
}}</lang> |
|||
=={{header|Julia}}== |
=={{header|Julia}}== |