From c745b21b858deee2c24c6ed54bc2b98e7d7e18b4 Mon Sep 17 00:00:00 2001 From: Jacob Signorovitch Date: Mon, 16 Dec 2024 09:17:19 -0500 Subject: [PATCH] Added Huffman Coding. --- huffman_coding/.project | 28 +++++++++++ .../org.eclipse.core.resources.prefs | 2 + .../.settings/org.eclipse.jdt.core.prefs | 11 +++++ huffman_coding/src/huffman_coding/Main.java | 46 +++++++++++++++++++ 4 files changed, 87 insertions(+) create mode 100644 huffman_coding/.project create mode 100644 huffman_coding/.settings/org.eclipse.core.resources.prefs create mode 100644 huffman_coding/.settings/org.eclipse.jdt.core.prefs create mode 100644 huffman_coding/src/huffman_coding/Main.java diff --git a/huffman_coding/.project b/huffman_coding/.project new file mode 100644 index 0000000..f022a5b --- /dev/null +++ b/huffman_coding/.project @@ -0,0 +1,28 @@ + + + huffman_coding + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + + + 1734357118166 + + 30 + + org.eclipse.core.resources.regexFilterMatcher + node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + + + + diff --git a/huffman_coding/.settings/org.eclipse.core.resources.prefs b/huffman_coding/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..99f26c0 --- /dev/null +++ b/huffman_coding/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/huffman_coding/.settings/org.eclipse.jdt.core.prefs b/huffman_coding/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..9a7984b --- /dev/null +++ b/huffman_coding/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,11 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=21 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=21 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=21 diff --git a/huffman_coding/src/huffman_coding/Main.java b/huffman_coding/src/huffman_coding/Main.java new file mode 100644 index 0000000..6b1f2c6 --- /dev/null +++ b/huffman_coding/src/huffman_coding/Main.java @@ -0,0 +1,46 @@ +package huffman_coding; + +import java.util.ArrayList; +import tester.Tester; + +class Examples { + + void testTest(Tester t) { + t.checkExpect(1, 1); + } +} + +class Huffman { + + ArrayList charset; // Character set. + ArrayList freqs; // Relative frequencies of characters. + + Huffman(ArrayList charset, ArrayList freqs) { + if (charset.size() != freqs.size()) throw new IllegalArgumentException( + "Character set must match frequencies." + ); + + if (charset.size() < 2) throw new IllegalArgumentException( + "Character set too small." + ); + + this.charset = charset; + this.freqs = freqs; + } +} + +// Binary tree. +interface ITree {} + +class Node implements ITree { + + ITree l; + ITree r; + + Node(ITree l, ITree r) { + this.l = l; + this.r = r; + } +} + +class Leaf implements ITree {}