Comment detail

与えられた並べ替えを実現するあみだくじの生成 (Nested Flatten)
あいかわらず汚ないコードです。PostScript のカバレッジ稼ぎ。
ソートを記録して逆順に出力しているだけです。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
%!PS
/Data (352401) def

/MaxStringLength 100 def
/Log [] def

/Append { % String1 String2 Append NewString  / Depend on MaxStringLength
    exch
    MaxStringLength string dup dup
    0 5 -1 roll dup length 4 1 roll putinterval
    4 -1 roll dup length 2 index add 4 1 roll putinterval
    0 exch getinterval
} def

/Swap { % String/Array N0 N1 Swap -
    2 copy                % String N0 N1 N0 N1
    4 index exch get      % 
    exch 4 index exch get exch % String N0 N1 V0 V1
    4 index 4 -2 roll put put
} def

/Sort {
    /AmidaData exch def
    /InitialData AmidaData 100 string copy def
    /N AmidaData length def
    0 1 N 1 sub {
        /Line () def
        /Change false def
        dup
        dup 2 mod 0 ne {
            /Line Line (| ) Append def
        } if
        2 mod 2 N 2 sub {
            dup
            AmidaData exch 2 getinterval dup 0 get exch 1 get
            gt {
                AmidaData exch dup 1 add Swap
                /Line Line (|-| ) Append def
                /Change true def
            } {
                pop
                /Line Line (| | ) Append def
            } ifelse
        } for
        N sub 2 mod 0 ne {(|)}{()} ifelse Line exch Append /Line exch def
        Change { /Log [ Log aload pop Line ] def } if
    } for

    0 1 InitialData length 1 sub { InitialData exch 1 getinterval print ( ) print } for () =
    Log { = } forall
    0 1 AmidaData length 1 sub { AmidaData exch 1 getinterval print ( ) print } for  () =
} def

Data Sort

Index

Feed

Other

Link

Pathtraq

loading...