diff --git a/.DS_Store b/.DS_Store
new file mode 100644
index 0000000..c614366
Binary files /dev/null and b/.DS_Store differ
diff --git a/.classpath b/.classpath
new file mode 100644
index 0000000..8a94ddd
--- /dev/null
+++ b/.classpath
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..ae3c172
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/.project b/.project
new file mode 100644
index 0000000..df4a539
--- /dev/null
+++ b/.project
@@ -0,0 +1,17 @@
+
+
+ LZW_Compression
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/Writer.java b/Writer.java
deleted file mode 100644
index 43facb6..0000000
--- a/Writer.java
+++ /dev/null
@@ -1,3 +0,0 @@
-public class Writer {
-
-}
diff --git a/decoded.txt b/decoded.txt
new file mode 100644
index 0000000..7e75d29
--- /dev/null
+++ b/decoded.txt
@@ -0,0 +1 @@
+abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcdefgabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcdefgabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabc
\ No newline at end of file
diff --git a/intcodesOutput.txt b/intcodesOutput.txt
new file mode 100644
index 0000000..98ea32f
--- /dev/null
+++ b/intcodesOutput.txt
@@ -0,0 +1 @@
+97 98 99 256 258 257 259 262 261 264 260 266 263 267 265 268 271 270 273 269 275 272 276 274 277 280 279 282 278 284 281 285 283 286 289 288 283 100 101 102 103 290 287 298 297 300 291 99 293 295 301 299 302 306 309 308 311 307 313 310 314 312 315 318 317 320 316 322 319 323 321 324 327 326 329 325 331 328 99
\ No newline at end of file
diff --git a/lzw-file1.txt b/lzw-file1.txt
new file mode 100644
index 0000000..50a0185
--- /dev/null
+++ b/lzw-file1.txt
@@ -0,0 +1 @@
+abcabcabcabcabcabcabcabcabcabcabcabc
diff --git a/lzw-file2.txt b/lzw-file2.txt
new file mode 100644
index 0000000..5fa2b99
--- /dev/null
+++ b/lzw-file2.txt
@@ -0,0 +1,2 @@
+abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcdefgabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcdefgabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabc
+
diff --git a/lzw-file3.txt b/lzw-file3.txt
new file mode 100644
index 0000000..20fb9d1
--- /dev/null
+++ b/lzw-file3.txt
@@ -0,0 +1,83 @@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&,,*#########################################################################################################################&,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&,,*###########################################################&,,,/###########################################################&,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&,,*#########################################################&,,,,,,,########################################################&,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&,,*#################% #################################&,,,,,,,,,,,################################## ################&,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&,,*################& .###############################&,,,,,,,,,,,,,,,##############################& ################&,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&,,*################ ############################(,,,,,,,&&&,,,,,,,,############################ ##############&,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&,,*###############% %###########################&,,,,,,,&&&&&&&,,,,,,,*%########################### ################&,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&,,*################ ########################&,,,,,,,%&&&&&&&&&&,,,,,,,######################### ##############&,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&,,*#######% *###( ###% ##############&,,,,,,,,&&&&&&&&&&&&&&,,,,,,,##############% *###% ###& ######&,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&,,*###### ##########&,,,,,,,,&&&&&&&&&&&&&&&&&%,,,,,,,########### ####&,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&,,*###### *% (& #########(,,,,,,,&&&&&&&&&&&&&&&&&&&&&*,,,,,,,######### ,% /% ####&,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&,,*#######.%######* %& % %###### %#########&,,,,,,,&&&&&&&&&&&&&&&&&&&&&&&&&,,,,,,,,%#########.%######( #& % %###### %######&,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&,,*################/ ## ################&,,,,,,,%&&&&&&&&&&&&&&&&&&&&&&&&&&&&,,,,,,,%#################/ ## ###############&,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&,,*################# #% %###############&,,,,,,,*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&,,,,,,,############### #% %################&,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&,,*###############* &, # %###########&,,,,,,,,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%,,,,,,,###########/ &, # %##############&,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&,,*############## %# # #######%/,,,,,,,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&*,,,,,,,######## %& #. ############&,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&,,*#################% *###########&,,,,,,,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&,,,,,,,,#########& (#################&,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&,,*##############################&,,,,,,,%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&,,,,,,,###############################&,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&,,*############################&,,,,,,,*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&,,,,,,,###########################&,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&,,*##########################&,,,,,,,,&&&&&&&&&&&&&&&%(&&&&&&&&&, ,&&&&&%&&%/&&&&&&&&&&&&&%,,,,,,,#########################&,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&,,*########################%/,,,,,,,&&&&&&&&&&&&&&&&&&, , ,, ,, , ,&&&&&&&&&&&&&&&*,,,,,,,#######################&,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&,,*##############&&&%#####&&,&,,,,&&&&&&&&&&&&&&&&&&&&&, ,&&&&&&&&&&&&, .&&&,,,,*///#####################&,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&,,*##############&,,,,,,&/,&,,,&%&&&&&&&&&&&&&&&&&&&&&&&,,,,,,,,,,,,,,,,,,,,,&&&&&&&&&&&, ,,,, ,*################&,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&,,*###############&, ,(, ,&&&&&&&&&&&&&&&&&,,,,, ,, ., , ,&&&&&&&, ,##############&,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&,,*#############%&&&. %&&&&&&&&&&&&&&&&, ,,,,,, ,,,, , ,&&&&&&&&. ,,, ,&&&&,#&, ,&&/,,%#######&,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&,,*#########&,,,, ,#&&&&&&&&&&&&, ,&%. .,,. ,.., , ,&&&&&&&, ,&&&&,&*,,&, , ,########&,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&,,*#########&&&(, ,&&&&&&&&&&&, #&&&&&&,,,,, ,,, . ,&&&&&&&, ,,,, ,&&,,&, ,#########&,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&,,*############&,, .%&&&&&&&&&&&/,, .,,,,..,, , ,, ,%&&&&&&&&&, ,, %&&&&*, ,%**%#######&,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&,,*##########&,,,&, . ,&&&&&&&&&&&&&&&&&,, .,, , , ,, ,,(,,&&&&, ,&,,,%&&&&&&&, ,#######&,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&,,*########&,/,,,,,. ,*&, ,/&&&&&(, , , , , , *&&&&, ., , ,&&&&&&&&&&&, ,&#######&,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&,,*######%*,,,,,*(&&&&&&&, , ,*&&, ,,, .,,,, ,. ,, , . ,&&&&&&&&, ,, , ,&&&&&& ,&,,,,#####&,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&,,*#####%,,,,,,,&&&&&&&, ,*( ,,..,, , , , , , . , ,&&&&(, ,,&&&, , ,,*. ,(,,,,,###&,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&,,*###&,,,,,,,&&&&&&&&&&&&, .,, , , ., . , . , ,&, .,,&&&&&&&&&&* ., ,, ,&&&,,,,,,,*%##&,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&,,*#&,,,,,,,*&&&&&&&&&&&&&&&, ,*, , , ,, , , , , (&&&%&&&&&&&&&&&&&&&&,, ,, ,&&&&&&&&,,,,,,,%#&,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&,,,,,,,,,,,&&&&&&&&&&&&&&&&&&&&, , , ,, , , , , ,, , ,&&&&&&&&&&&&&&&%, ,,, ,. ,&&&&&&&&&,,,,,,,*,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&,,,,,,,,,&&&&&&&&&&&&&&&&&&&&&***, , , , ,, ,,,.. , , ,&&&&&&&&&&&&&, ,#&&&&&&&, &&&&&&&&&/,,,,,,,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&,,,,,,,&&&&&,,,,, ,&&&&&&&&&&, , , , ,, ,&&&&&&&&&&&&&&&&, (&&&&&&&&&&&&&, ,&&&&&&&&&&,,,,,,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&,,,,,&&&&&&&&&&, ,&&&&&&&*, , , , , , , *,. ,&&&&(,. .,(&% ,&, ,*&&&&&&, ,&&&&&&&&&&&&,,,,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&,,,/&&&,,,, , ,(*,, , . , , , , , , ,&&&&&&&* , ,&&&&&&&&/,&&&&&&&&&&&&&&&&,,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&,,,&&&&& , , , . , ,(&&&&&&&&&,.,&&&&(, ,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&,,,&&&&&&&&%(,. , , , , ., ,(&&&&&&&&&, %&&&&&&&&&&&&&&&&&&&&&&&&&&&&&,,/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&,,,&&&&&&,, , ,, ,, , ,, ,& ., ,*&&&&&, ,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&,,,&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@/,,&&&&&,,,,, .,(&, (& &, ,, ,&,,&&, ,&&&,, ,&&&, ,*&&(, .&&&, ,&&&&&&&&&&&&&&&&&&&&,,,&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&,,,&&&(,&&&&&&&&&,,,,&&&/ ,&&,,&&,&&&&&&&&&&&&&&&&&&&&&&%*,,. , ,&&&&&&&&&&&&, ,, ,&&&&&&&&&&&&&&&&&&&&&&,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@,,,&&&&&&&&&&&&&&&,,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%, ,&&&&&&&&&&&&, .&&&&&&&&&&&&&&&&&&&&&&,,,&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&,,,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&,, .,,,,,,,,, ,&&&&&&&&&&&&, ,, ,&&&&&&&&&&&&&&&(,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%,,,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&, , .#&&&&&&&&&&, .,,, (&&&&&&&&&&&&&&,,,&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@,,,#&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&,. , , ,(&&&&&&&* ,&&&&%&&&&&&&&&&&&&&&,,,&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&,,,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&( . , ,&, ,,,, ,&&&&&&&&&&&&&&&&&&&&&,,,&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&,,,#&&&&&&&&&&&&&&&&&&&&&&&&&&&&&,,,(, ,&&&&, , ,&&&&&,. ,%&&&&&&&&&&&&&&&&&&&&&&&,,,&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&,,,,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&,, ,,, , ,&&&&&&&& ,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&,,,&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@&&@@@@@@@@@@@@@@@@@@@@@@@@@@#,,,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&,,&&, ,&&&&&&. ,&&&&, ,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&(,,,&@@@@@@@@@@@@@@@@@@@@@@@@@&&@@@@@@@@@@@@@@
+@(&@@@@@@@@@@@@&,&@@@@@@@@@@@@@@@@@@@@@@@@@@&,,,&&&&&&&&&&&&&&&&&&&&&&&/,,,,%&&&&&&&&. ,&&&&, %, , ,/&&,&&&&&&&&&&&&&&&&&&&&,,,,&@@@@@@@@@@@@@@@@@@@@@@@@@&,&@@@@@@@@@@@@&/
+@&,,#&@@@@@@@@@@,,,&@@@@@@@@@@@@@@@@@@@@@@@@@&,,,,&&&&&&&&&&&&&&&&&&,,,,, ,&&&&&&, . #&&&, % ,, /. , ,,&&&&&&&&&&&&&&&&&&&*,,,&@@@@@@@@@@@@@@@@@@@@@@@@@&,,,@@@@@@@@@@,,&
+@@(,,,,&@@@@@@@@&,,,,&@@@@@@@@@@@@@@@@@@@@@@@@@&,,,,&&&&&&&&&&&&&&&&&&&&,,, &,.&&&&,&&&&&,,&&,,&&,,%#&, ,,%&&&&&&&&&&&&&&&&&&&&,,,(@@@@@@@@@@@@@@@@@@@@@@@@@&,,,,&@@@@@@@@&,,,,(@
+@@&,,,,,,&@@@@@@&,,,,,,%&@@@@@@@@@@@@@@@@@@@@@@@@&,,,,&&&&&&&&&&&&&&&,, * ,&/&&&&&&&&&&&&&&&&&&&&&&, ,,&&&&&&&&&&&&&&&&&,,,,&@@@@@@@@@@@@@@@@@@@@@@@&%,,,,,,&@@@@@@&,,,,,,&@
+@@@#,,&&,,,,&@@@&,,,&&,,,,&&@@@@@@@@@@@@@@@@@@@@@@@&,,,,&&&&&&&&&&&&,,,, .,. ,, ,,.&&&&&&&&&&&&&&*,,,#&,. ,(&&&&&&&&&&&&&&&&&,,,,&@@@@@@@@@@@@@@@@@@@@@@&&,,,,&&,,,&@@@&,,,,&&,,/@@
+@@@&,,,& &,,,,#&&,,( &,,,,,(&@@@@@@@@@@@@@@@@@@@@@&,,,,&&&&&&&&&&&&&&&&, &, ,&,&&&&&&&&&&&&&&&,,,, ,,,,,,*&&&&&&&&&&&&&,,,,#&@@@@@@@@@@@@@@@@@@@@,,,,,& #,,&&(,,,,& &,,,&@@
+@@@@&,,,& &/,,,,,,& &(,,,,,,&&@@@@@@@@@@@@@@@@@&(,,,,&&&&&&&&&&&&,,,,,,,&&&&&,,,&&&&&&&&&&&&&&&&&&&&&*,, ,/&&&&&&&&&&&&&&/,,,,&@@@@@@@@@@@@@@@@@&&,,,,,,(& &,,,,,,/& &,,,&@@@
+@@@@@@/,,,* (&,,,& &&,,,,,,&@@@@@@@@@@@@@@@@&,,,,,&&&&&&&&,(&&&&&&&&&,&&&&&&&&&&&&&&&&&&&&&&,, , &&&&,,,&&&&&&&&&&&*,,,,&&@@@@@@@@@@@@@@@&,,,,,,&& &,,,&( *,,,*@@@@@
+@@@@@@@&,,,,& &,,,*&& &,,,&@@@@@@@@@@@@@@@@@&,,,,,(&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&,,,%&&&, ,&&&&&&&&&&&&&&&,,,,,&&@@@@@@@@@@@@@@@@&,,,& &&*,,,& &,,,,&@@@@@@
+@@@@@@@@@&(,,,/& &/&&&,,,,,,,,&& (&@@@@@@@@@@@@@@@@@@@@@&&,,,,,/&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&,,,&&&&&&&&&&&,,,,,,&@@@@@@@@@@@@@@@@@@@@@&& &&,,,,,,,,&&&/& &*,,,*&@@@@@@@@
+@@@@@@@@@@@@&(,,,,%& &,,,&, &&,,,,,&@@@@@@@@@@@@@@@@@@@@@@@@@@&&,,,,,,/&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&,,,,,,*&@@@@@@@@@@@@@@@@@@@@@@@@@@&,,,,,&& .&,,,& ,,,,/&@@@@@@@@@@@
+@@@@@@@@@@@@@@@@&*,,,,, &,,,,,,&& &@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&&,,,,,,,,%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&,,,,,,,,*&&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@& &&,,,,,,& ,,,,,*&@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@&& (&*,,,,,,%&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&&,,,,,,,,,,,,,,,/#%&&&(,,,,,,,,,,,,,,,&&&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&%,,,,,,*&( &&@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@& &. .&(,,,,,,&&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&&&&%*,,,,,,,,,,,,,,,,(&&&&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&&,,,,,,(&, &@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@& .& & %&,,,,,,&&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&&,,,,,,&% &&& &@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@& *& &&% (&,,,,,*&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&*,,,,,&/ , & &&.&& &@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@&& & & & , &&,,,,,%&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&%,,,,,&% .& & & & &&@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@,,,,,&* # #& & # &(,,,,,%&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&%,,,,,(& & & ,&,,,,,@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@&&,,,,,,/&( ( .& && &(,,,,,,&&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&&,,,,,,(& &&& (&/,,,,,,%&@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@&&&,,,,,,,&( & / & %&*,,,,,,,%&&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&&%,,,,,,,*&% & %, % (&,,,,,,,&&&@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&&,,,,,,%& ( % & & &&*,,,,,,,,,,,,(%&&&&&&@@@@@@@@@&&&&&&%(,,,,,,,,,,,,*&& %& #& &%& &%,,,,,,&&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&/,,,,,%& & && & .%&&&/*,,,,,,,,,,,,,,,,,,,,,,,,/&&&%. (. &% #& & &%,,,,,/&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&*,,,,,&* ,&( /& & && &&. *&,,,,,*&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&&,,,,,*&. & && %. %& & % %& & .&,,,,,,&&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&&,,,,,,&/ &&& & / &, && & && ,& & . .&&& (& ( /&,,,,,,&&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&&,,,,,,/&% %& & & #& &* & & &,& %&*,,,,,,&&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&&,,,,,,,,/& #&&/,,,,,,,,&&&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&,,,,,,,,,,,,,,,/#%&&&&&&&&&&&&&&&&&&&%#/,,,,,,,,,,,,,,,(&&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&&&&&%(*,,,,,,,,,,,,,,,,,,,,,,,*(%&&&&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
\ No newline at end of file
diff --git a/src/Decoder.java b/src/Decoder.java
new file mode 100644
index 0000000..3a30eb4
--- /dev/null
+++ b/src/Decoder.java
@@ -0,0 +1,76 @@
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.FileInputStream;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.util.*;
+
+public class Decoder {
+
+ //private static double maxTableSize;
+ private static String decodedOutputFileName = "decoded.txt";
+
+ public static String decode (String inputFile, int maxDictSize) throws IOException{
+ //maxTableSize = Math.pow(2, bit_Length);
+
+ String[] compressedValuesStr = null;
+ List compressedValues = new ArrayList();
+ int dictSize = 255;
+
+ String inputIntCodes = "";
+ BufferedReader br = null;
+ br = new BufferedReader(new FileReader(inputFile));
+ inputIntCodes = br.readLine();
+ br.close();
+ compressedValuesStr = inputIntCodes.split(" ");
+ for (String str: compressedValuesStr) {
+ int num = Integer.parseInt(str);
+ compressedValues.add(num);
+ }
+
+ Map dict = new HashMap();
+ for (int i = 0; i < 255; i++)
+ dict.put(i, "" + (char) i);
+
+ String oldStr = "" + compressedValues.get(0);
+ StringBuffer decodedValues = new StringBuffer();
+
+ String newStr = null;
+ for (int key : compressedValues) {
+ if (dict.containsKey(key))
+ newStr = dict.get(key);
+ else
+ newStr = oldStr + oldStr.charAt(0);
+ decodedValues.append(newStr);
+
+ if(dictSize dictionary;
BufferedReader in;
- String output;
- int tracker;
- int binary;
+ int dictTracker;
public Encoder (String filename) throws IOException {
in = new BufferedReader (new FileReader(new File (filename)));
dictionary = new HashMap();
- output = "";
- tracker = 256;
- binary = 0;
+ dictTracker = 256;
}
public String encode () throws IOException {
- while (true) {
- StringBuilder cur = new StringBuilder (in.read());
- if (in.read() >= 0) {
- String next = in.read();
- if (dictionary.containsKey(cur + next)) {
- cur.append(next);
- }
- else {
- output += cur;
- dictionary.put(cur + next, tracker++);
- cur = next;
- }
- }
- else
- break;
+ for (int i = 0; i < 256; i++)//load ascii table
+ dictionary.put("" + (char)i, i);
+ StringBuilder sb = new StringBuilder ();
+ String cur = "";
+ while (in.ready()) {
+ String next = ""+(char)in.read();
+ String combined = cur + next;
+ if (dictionary.containsKey(combined)) {
+ cur = combined;
+ }else {
+ sb.append(dictionary.get(cur) + " ");
+ dictionary.put(combined, dictTracker++);
+ cur = next;
+ }
}
- }
-
- /**
- * variable naming is very poor here but they are simple placeholders to go from char to a big binary int.
- */
- public void toBinary () {
- for (int i = 0; i