Exemple #1
0
    // check whether compressed file can be
    // decompressd to original one
    bool check(string fn, string cfn, int bs, int cbs)
    {
        var obits       = read_bits(fn);
        var cbits       = read_bits(cfn);
        var cbits_list  = cbits.ToList();
        var cbits_queue = new Queue <int>(cbits_list);
        var dar         = new Ar(cbits_queue);

        // reset models
        for (var i = 0; i < N; i++)
        {
            m[i] = new Model(i);
        }

        for (var i = 0; i < bs; i++)
        {
            var n   = predict();
            var bit = dar.decode(n[0], n[1]);
            if (bit != obits[i])
            {
                WriteLine($"decompression error at {i}-th bit");
                WriteLine($"{obits[i]} was expected instead of {bit}");
                return(false);
            }
            update(bit);
        }
        return(true);
    }