Comment detail

数値リストの圧縮 (Nested Flatten)
//[1, [3, 6], 12, 13, [15, 25, 5], 26, 27] <=
//compact_number_list([1, 3, 4, 5, 6, 12, 13, 15, 20, 25, 26, 27]) 
 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
function compact_number_list(anArray){
    var len = anArray.length;
    var result = new Array();

    for(var i=0;i<len;i++){
        var seq;
        if(seq=isSequence(anArray[i], i, anArray)){
            result.push(seq);
            i += (seq[2])? (seq[1]-seq[0])/seq[2] : seq[1]-seq[0];
        } else {
            result.push(anArray[i]);
        }
    }
    return result;
}
function isSequence(el, index, array){
    var next=array[index+1];
    if(next == undefined){ return false; }

    var d = next - el;
    for(var i=0;array[index + i] == el + i * d;i++);

    if(i>2){
        return (d==1) ? [el, array[index + i -1]] : [el, array[index + i -1], d];
    } else {
        return false;
    }
}

Index

Feed

Other

Link

Pathtraq

loading...