Hash Compression
Assignment 9
by Alan Harris
HTML
<form id="form">Enter a Phrase.
<br>
<textarea id='phrase' rows='10' cols='50'>I want what I want and I know what I want.</textarea>
<br>
<input type="button" value="Parse Phrase" id="parse" onClick='parsePhrase();'>
</form>
<div id="output"></div>
CSS
button:focus {
border: 1px solid black;
padding: 4px 4px;
}
button {
background-color: grey;
border: 1px solid black;
color: white;
padding: 4px 8px;
text-decoration: none;
margin: 4px 2px;
}
button:hover {
background-color:black;
}
JavaScript
var hashTable = new HashTable(); // Global
var ANode = new Node();
var aList = new List1();
function parsePhrase() {
var phrase = document.getElementById('phrase').value;
var phraseAsStringArray = phrase.split(' ');
var len = phraseAsStringArray.length;
for (var i = 0; i < len; i++) {
//alert(phraseAsStringArray[i]);
hashTable.addWord(phraseAsStringArray[i]);
}
}
function Node(input) {
// this.id = null;
this.content = input;
this.next = null;
this.last = null;
return this;
}
function List1(input) {
this.head = new Node(input);
this.length = 1;
this.last = this.head;
return this;
}
List1.prototype.add = function(ANode) {
var element = new Node();
element.content = ANode;
if (this.head == null){
this.head = element;
this.length = 1;
return element;
}
if (this.tail == null) {
this.tail = element;
this.tail.prev = this.head;
this.head.next = this.tail;
this.length++;
return element;
}
this.tail.next = element;
element.prev = this.tail;
this.tail = element;
return element;
}
function HashTable(){
// Decide how to store the bins - add here
// This will contain all the Words
//USE LIST to store bins
// this.bins = []; // using array as example (list is better)
this.addWord = function(word) {
return word;
// You will add a word to the HashTable
// If word is in table add to Word
// If not create new one
};
this.hasWord = function(word) {
// Implement
return word;
};
this.addNewWord = function(word) {
// Implement
return word;
};
this.addExistingWord = function(word) {
// Adds Word to structure that already exists
return word;
};
}
function Word(word) {
this.word = word; // store word
this.indexes = []; // using array to store indexes
// Probably want some logic here
}