From c5c884a5fd54de74a9077db36d5daac38e5862f5 Mon Sep 17 00:00:00 2001
From: James Bowden <jbowden@caltech.edu>
Date: Sun, 19 Feb 2023 18:34:16 -0800
Subject: [PATCH] template codes and clean imports and test helper

---
 src/edu/caltech/cs2/coloring/DSatur.java      |  3 -
 src/edu/caltech/cs2/coloring/Program.java     |  1 -
 .../cs2/datastructures/ArrayDeque.java        | 76 ++++++++++++++++++
 .../ChainingHashDictionary.java               | 78 +++++++++++++++++++
 .../cs2/datastructures/LinkedDeque.java       | 75 ++++++++++++++++++
 .../datastructures/MoveToFrontDictionary.java | 57 ++++++++++++++
 .../caltech/cs2/helpers/RuntimeCounter.java   |  9 +++
 7 files changed, 295 insertions(+), 4 deletions(-)
 create mode 100644 src/edu/caltech/cs2/datastructures/ArrayDeque.java
 create mode 100644 src/edu/caltech/cs2/datastructures/ChainingHashDictionary.java
 create mode 100644 src/edu/caltech/cs2/datastructures/LinkedDeque.java
 create mode 100644 src/edu/caltech/cs2/datastructures/MoveToFrontDictionary.java
 create mode 100644 tests/edu/caltech/cs2/helpers/RuntimeCounter.java

diff --git a/src/edu/caltech/cs2/coloring/DSatur.java b/src/edu/caltech/cs2/coloring/DSatur.java
index 49ced3f..17c67c0 100644
--- a/src/edu/caltech/cs2/coloring/DSatur.java
+++ b/src/edu/caltech/cs2/coloring/DSatur.java
@@ -1,10 +1,7 @@
 package edu.caltech.cs2.coloring;
 
-import edu.caltech.cs2.datastructures.ChainingHashDictionary;
 import edu.caltech.cs2.datastructures.ChainingHashSet;
 import edu.caltech.cs2.datastructures.MinFourHeap;
-import edu.caltech.cs2.datastructures.MoveToFrontDictionary;
-import edu.caltech.cs2.interfaces.IDictionary;
 import edu.caltech.cs2.interfaces.IPriorityQueue;
 import edu.caltech.cs2.interfaces.ISet;
 
diff --git a/src/edu/caltech/cs2/coloring/Program.java b/src/edu/caltech/cs2/coloring/Program.java
index 3b663e4..e578b55 100644
--- a/src/edu/caltech/cs2/coloring/Program.java
+++ b/src/edu/caltech/cs2/coloring/Program.java
@@ -5,7 +5,6 @@ import edu.caltech.cs2.datastructures.ChainingHashSet;
 import edu.caltech.cs2.interfaces.IDeque;
 import edu.caltech.cs2.interfaces.IDictionary;
 import edu.caltech.cs2.interfaces.ISet;
-import edu.caltech.cs2.interfaces.IStack;
 
 import java.util.Iterator;
 
diff --git a/src/edu/caltech/cs2/datastructures/ArrayDeque.java b/src/edu/caltech/cs2/datastructures/ArrayDeque.java
new file mode 100644
index 0000000..4a7d0bf
--- /dev/null
+++ b/src/edu/caltech/cs2/datastructures/ArrayDeque.java
@@ -0,0 +1,76 @@
+package edu.caltech.cs2.datastructures;
+
+import edu.caltech.cs2.interfaces.IDeque;
+import edu.caltech.cs2.interfaces.IQueue;
+import edu.caltech.cs2.interfaces.IStack;
+
+import java.util.Iterator;
+
+public class ArrayDeque<E> implements IDeque<E>, IQueue<E>, IStack<E> {
+
+    @Override
+    public void addFront(E e) {
+
+    }
+
+    @Override
+    public void addBack(E e) {
+
+    }
+
+    @Override
+    public E removeFront() {
+        return null;
+    }
+
+    @Override
+    public E removeBack() {
+        return null;
+    }
+
+    @Override
+    public boolean enqueue(E e) {
+        return false;
+    }
+
+    @Override
+    public E dequeue() {
+        return null;
+    }
+
+    @Override
+    public boolean push(E e) {
+        return false;
+    }
+
+    @Override
+    public E pop() {
+        return null;
+    }
+
+    @Override
+    public E peekFront() {
+        return null;
+    }
+
+    @Override
+    public E peekBack() {
+        return null;
+    }
+
+    @Override
+    public E peek() {
+        return null;
+    }
+
+    @Override
+    public Iterator<E> iterator() {
+        return null;
+    }
+
+    @Override
+    public int size() {
+        return 0;
+    }
+}
+
diff --git a/src/edu/caltech/cs2/datastructures/ChainingHashDictionary.java b/src/edu/caltech/cs2/datastructures/ChainingHashDictionary.java
new file mode 100644
index 0000000..7a771e4
--- /dev/null
+++ b/src/edu/caltech/cs2/datastructures/ChainingHashDictionary.java
@@ -0,0 +1,78 @@
+package edu.caltech.cs2.datastructures;
+
+import edu.caltech.cs2.interfaces.ICollection;
+import edu.caltech.cs2.interfaces.IDeque;
+import edu.caltech.cs2.interfaces.IDictionary;
+import edu.caltech.cs2.interfaces.IQueue;
+
+import java.util.Iterator;
+import java.util.function.Supplier;
+import java.util.stream.Stream;
+
+public class ChainingHashDictionary<K, V> implements IDictionary<K, V> {
+    private Supplier<IDictionary<K, V>> chain;
+
+    public ChainingHashDictionary(Supplier<IDictionary<K, V>> chain) {
+        // student: TODO fill me in!
+    }
+
+    /**
+     * @param key
+     * @return value corresponding to key
+     */
+    @Override
+    public V get(K key) {
+        return null;
+    }
+
+    @Override
+    public V remove(K key) {
+        return null;
+    }
+
+    @Override
+    public V put(K key, V value) {
+        return null;
+    }
+
+    @Override
+    public boolean containsKey(K key) {
+        return false;
+    }
+
+    /**
+     * @param value
+     * @return true if the HashDictionary contains a key-value pair with
+     * this value, and false otherwise
+     */
+    @Override
+    public boolean containsValue(V value) {
+        return false;
+    }
+
+    /**
+     * @return number of key-value pairs in the HashDictionary
+     */
+    @Override
+    public int size() {
+        return 0;
+    }
+
+    @Override
+    public ICollection<K> keys() {
+        return null;
+    }
+
+    @Override
+    public ICollection<V> values() {
+        return null;
+    }
+
+    /**
+     * @return An iterator for all entries in the HashDictionary
+     */
+    @Override
+    public Iterator<K> iterator() {
+        return null;
+    }
+}
diff --git a/src/edu/caltech/cs2/datastructures/LinkedDeque.java b/src/edu/caltech/cs2/datastructures/LinkedDeque.java
new file mode 100644
index 0000000..212e5ff
--- /dev/null
+++ b/src/edu/caltech/cs2/datastructures/LinkedDeque.java
@@ -0,0 +1,75 @@
+package edu.caltech.cs2.datastructures;
+
+import edu.caltech.cs2.interfaces.IDeque;
+import edu.caltech.cs2.interfaces.IQueue;
+import edu.caltech.cs2.interfaces.IStack;
+
+import java.util.Iterator;
+
+public class LinkedDeque<E> implements IDeque<E>, IQueue<E>, IStack<E> {
+
+    @Override
+    public void addFront(E e) {
+
+    }
+
+    @Override
+    public void addBack(E e) {
+
+    }
+
+    @Override
+    public E removeFront() {
+        return null;
+    }
+
+    @Override
+    public E removeBack() {
+        return null;
+    }
+
+    @Override
+    public boolean enqueue(E e) {
+        return false;
+    }
+
+    @Override
+    public E dequeue() {
+        return null;
+    }
+
+    @Override
+    public boolean push(E e) {
+        return false;
+    }
+
+    @Override
+    public E pop() {
+        return null;
+    }
+
+    @Override
+    public E peekFront() {
+        return null;
+    }
+
+    @Override
+    public E peekBack() {
+        return null;
+    }
+
+    @Override
+    public E peek() {
+        return null;
+    }
+
+    @Override
+    public Iterator<E> iterator() {
+        return null;
+    }
+
+    @Override
+    public int size() {
+        return 0;
+    }
+}
diff --git a/src/edu/caltech/cs2/datastructures/MoveToFrontDictionary.java b/src/edu/caltech/cs2/datastructures/MoveToFrontDictionary.java
new file mode 100644
index 0000000..1f7a813
--- /dev/null
+++ b/src/edu/caltech/cs2/datastructures/MoveToFrontDictionary.java
@@ -0,0 +1,57 @@
+package edu.caltech.cs2.datastructures;
+
+import edu.caltech.cs2.interfaces.ICollection;
+import edu.caltech.cs2.interfaces.IDictionary;
+
+import java.util.Iterator;
+
+public class MoveToFrontDictionary<K, V> implements IDictionary<K,V> {
+
+    public MoveToFrontDictionary() {
+        // student: TODO fill this in
+    }
+
+    @Override
+    public V remove(K key) {
+        return null;
+    }
+
+    @Override
+    public V put(K key, V value) {
+        return null;
+    }
+
+    @Override
+    public boolean containsKey(K key) {
+        return this.get(key) != null;
+    }
+
+    @Override
+    public boolean containsValue(V value) {
+        return this.values().contains(value);
+    }
+
+    @Override
+    public int size() {
+        return 0;
+    }
+
+    @Override
+    public ICollection<K> keys() {
+        return null;
+    }
+
+    @Override
+    public ICollection<V> values() {
+        return null;
+    }
+
+    public V get(K key) {
+        return null;
+    }
+
+    @Override
+    public Iterator<K> iterator() {
+        return null;
+    }
+}
diff --git a/tests/edu/caltech/cs2/helpers/RuntimeCounter.java b/tests/edu/caltech/cs2/helpers/RuntimeCounter.java
new file mode 100644
index 0000000..960c169
--- /dev/null
+++ b/tests/edu/caltech/cs2/helpers/RuntimeCounter.java
@@ -0,0 +1,9 @@
+package edu.caltech.cs2.helpers;
+
+public class RuntimeCounter {
+    public static int NUM_CALLS = 0;
+
+    public static void inc() {
+        NUM_CALLS++;
+    }
+}
-- 
GitLab