Comment detail

アルファベットの繰り上がり (Nested Flatten)
前の桁で生成した値の頭にA..Zを付加するという戦略です。

無限桁に対応。A-Zの26進数以外もいけます。

ただ、メモリの消費量が激しいです。
 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
ExcelNumber: class {
    + _chars: "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

    + generate: method fiber {
        before: [""];
        while (true) {
            before = generate_and_yield(before);
        }
    }

    - generate_and_yield: method(before) {
        r: [];
        _chars.split("") {|c|
            before {|b|
                n: c ~ b;
                r.push_back(n);
                yield n;
            }
        }
        return r;
    }
}

excelnum: ExcelNumber();
excelnum.generate.take(100).to_a.p;

excelnum.chars = "abc";
excelnum.generate.take(100).to_a.p;

Index

Feed

Other

Link

Pathtraq

loading...