スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Google Apps Scriptで範囲から欠けた数を列挙する

Google Apps Scriptで範囲から欠けた数を列挙する

今回もまたみらい研究室実行委員会の3/19に行ったイベントのアンケート解析をしています。

で、委員みんなでアンケートの内容を私が作ったGoogleFormに打ち込んでデータ化して、それを私がいい感じにまとめて「解析は任せた」の投げつけるお仕事をしているわけです
GoogleFormで打ち込むためにアンケートに通し番号を付けてそれを入力してもらうんですが、順番ばらばらでみんな打ち込むので、どれが欠けてるかわかりにくくて仕方ないです。
というわけで、欠けた数をカンマ区切りの文字列で返すlist_missing_num関数を作りました。

function list_missing_num(numbers) {
    if(
        "undefined" !== typeof(numbers) && Array.isArray(numbers)
        && "object" === typeof(numbers[0]) && Array.isArray(numbers[0]) && "number" === typeof(numbers[0][0])
    ){
        var arr = [];
        var i;
        for(i = 0; i < numbers.length; ++i) arr.push(numbers[i][0]);//convert
        arr.sort(function(a, b){ return a - b; });//sort
        arr = arr.filter(function (x, i, self) { return self.indexOf(x) === i; });//unique
        var re = [];
        var push_back = function(min, max){
            for(var i = min; i <= max; ++i) re.push(i);
        }
        var j;
        for(i = 1, j = arr[0]; i < arr.length; j = arr[i], ++i){
            if(1 !== arr[i] - j){
                push_back(j + 1, arr[i] - 1);//push missing nums
            }
        }
        return (re.length === 0) ? "nothing" : re.join();
    }
    else{
        throw new TypeError("unexpected input. numbers:" + typeof(numbers) + " min:" + typeof(min) + " max:" + typeof(max));
    }
}

まあ特に説明することは無いですね。重複はfilterで無視してます。

スポンサーサイト

テーマ : プログラミング
ジャンル : コンピュータ

検索フォーム
デジタル・コルクマ3
コルクマワールド
東京 での時間:
更新履歴


総記事数:
Calendar 1.1
<
>
- - - - - - -
- 1 2 3 4 56
7 8 9 10 11 1213
14 15 16 17 18 1920
21 22 23 24 25 2627
28 29 30 31 - - -

全記事

Designed by 石津 花

最新記事
カテゴリ
最新コメント
最新トラックバック
月別アーカイブ
リンク
RSSリンクの表示
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
プロフィール

yumetodo

Author:yumetodo
FC2ブログへようこそ!

Powered By FC2ブログ

今すぐブログを作ろう!

Powered By FC2ブログ

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。