Best Python code snippet using lisa_python
huffman_compression.py
Source:huffman_compression.py  
...45        # build Huffman trie46        root = self._build_trie(freq)47        # build symbol table for chars and their binary representation48        st = dict()49        self._build_code(st, root, '')50        bw = BitWriter(output_file)51        # write the Huffman trie binary representation to the file52        self._write_trie(root, bw)53        # write number of bytes in original uncompressed message54        bw.writebits(length, 8)55        # use Huffman code to encode input56        for i in xrange(length):57            self.file.seek(i)58            code = st[ord(self.file.read(1))]59            for c in code:60                if c == '0':61                    bw.writebit(False)62                else:63                    bw.writebit(True)64                    # close the output file65        # output_file.close()66    def extract(self, output_file):67        """68        Restore the compressed data69        """70        br = BitReader(self.file)71        root = self._read_trie(br)72        # number of bytes to write73        length = int(br.readbits(8))74        bw = BitWriter(output_file)75        # decode using the Huffman trie76        for i in xrange(length):77            node = root78            while not node.is_leaf:79                bit = br.readbit()80                if bit:81                    node = node.right82                else:83                    node = node.left84            # write the character to output85            bw.writebits(node.char, 8)86        # output_file.close()87    def _read_trie(self, br):88        bit = br.readbit()89        if bit:90            # it is a leaf, so read the next 8 bits and create the leaf node91            return self.Node(int(br.readbits(8)), -1)92        else:93            # it is an intermediary node, recursively create left and right nodes94            return self.Node(0, -1, self._read_trie(br), self._read_trie(br))95    def _write_trie(self, node, bw):96        if node.is_leaf:97            # put "1" at the beginning of the leaf node char98            bw.writebit(True)99            # put node character in 8 bits representation100            bw.writebits(node.char, 8)101        else:102            # put "0" for the intermediary node (as a delimiter)103            bw.writebit(False)104            self._write_trie(node.left, bw)105            self._write_trie(node.right, bw)106    def _build_trie(self, frequency):107        """108        Build a binary trie and return its root node109        """110        nodes = PriorityQueue()111        for char, freq in frequency.iteritems():112            if freq > 0:113                nodes.put(self.Node(char, freq))114        # merge two smallest tries115        while nodes.qsize() > 1:116            left = nodes.get()117            right = nodes.get()118            parent = self.Node(0, left.frequency + right.frequency, left, right)119            nodes.put(parent)120        # return the root node121        return nodes.get()122    def _build_code(self, st, node, s):123        """124        Build a symbol table from a Huffman trie.125        Each key has a binary value.126        """127        if not node.is_leaf:128            self._build_code(st, node.left, s + '0')129            self._build_code(st, node.right, s + '1')130        else:131            st[node.char] = s132if __name__ == '__main__':133    from StringIO import StringIO134    original_file = StringIO('abracadabra!')135    h = Huffman(original_file)136    compressed_file = StringIO()137    h.compress(compressed_file)138    compressed_file.seek(0)139    h2 = Huffman(compressed_file)140    restored_file = StringIO()141    h2.extract(restored_file)142    restored_file.seek(0)143    assert restored_file.read() == 'abracadabra!'huffman1.py
Source:huffman1.py  
...14        return T[0] #]full15    16    def build_code(self, freq: "IMap<Symbol, Real>") -> "IMap<Symbol, str>":17        code = self.createMap()18        def _build_code(t, prefix):19            if len(t[0]) > 1:20                code[t[0][1]] = prefix21            else:22                _build_code(t[1], prefix + '0')23                _build_code(t[2], prefix + '1')24        tree = self.build_tree(freq)25        _build_code(tree, '')
...Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
