Skip to content

Commit cfbfea5

Browse files
authored
Add files via upload
0 parents  commit cfbfea5

31 files changed

+1893
-0
lines changed

Makefile

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
JAVAC ?= javac
2+
JAVA ?= java
3+
INPUT_FILE ?= INP
4+
EXPECTED_OUTPUT_FILE ?= EXPECTED_OUTPUT
5+
SCORE_FILE ?= score
6+
score=2
7+
8+
logtrieerror= (echo 'ERROR '; echo 'EXPECTED_OUTPUT:'; echo "--------------"; cat Trie/$(EXPECTED_OUTPUT_FILE); echo "==============" ;echo "Your OUTPUT"; echo "--------------"; cat Trie/tmp;)
9+
logrberror = (echo "ERROR"; echo "EXPECTED_OUTPUT:"; echo "--------------"; cat RedBlack/$(EXPECTED_OUTPUT_FILE); echo "==============" ;echo "Your OUTPUT:"; echo "--------------"; cat RedBlack/tmp;)
10+
logpqerror = (echo 'ERROR '; echo 'EXPECTED_OUTPUT:'; echo "--------------"; cat PriorityQueue/$(EXPECTED_OUTPUT_FILE); echo "=============="; echo "Your OUTPUT:"; echo "--------------"; cat PriorityQueue/tmp; )
11+
logpmerror = (echo 'ERROR '; echo 'EXPECTED_OUTPUT:'; echo "--------------"; cat ProjectManagement/$(EXPECTED_OUTPUT_FILE); echo "=============="; echo "Your OUTPUT:"; echo "--------------"; cat ProjectManagement/tmp; )
12+
13+
all: triebuild triecheck rbtreebuild rbtreecheck pqbuild pqcheck pmbuild pmcheck clean
14+
testcase: pqtestcase rbtestcase trietestcase pmtestcase
15+
build: triebuild rbtreebuild pqbuild pmbuild
16+
check: triecheck pqcheck rbtreecheck pmcheck
17+
trie: triebuild triecheck trieclean
18+
rbtree: rbtreebuild rbtreecheck rbtreeclean
19+
pq: pqbuild pqcheck pqclean
20+
pm: pmbuild pmcheck pmclean
21+
22+
23+
triebuild:
24+
@echo "**********"
25+
@echo "Building Trie"
26+
@echo "**********"
27+
@$(JAVAC) -encoding ISO-8859-1 Trie/*.java
28+
triecheck: triebuild
29+
@echo "**********"
30+
@echo "Checking Trie"
31+
@echo "**********"
32+
@$(JAVA) Trie.TrieDriverCode Trie/$(INPUT_FILE) >Trie/tmp
33+
@cd Trie && sed -i 's/[^[:print:]]//g' tmp && sed -i 's/[^[:print:]]//g' $(EXPECTED_OUTPUT_FILE)
34+
@diff -i Trie/tmp Trie/$(EXPECTED_OUTPUT_FILE) && echo 'TRIE SUCCESS' || $(call logtrieerror)
35+
trieclean:
36+
-@rm Trie/tmp -f
37+
-@rm Trie/*.class -f
38+
39+
rbtreebuild:
40+
@echo "\n**********"
41+
@echo "Building Red-Black Tree"
42+
@echo "**********"
43+
@$(JAVAC) -encoding ISO-8859-1 RedBlack/*.java
44+
rbtreecheck: rbtreebuild
45+
@echo "\n**********"
46+
@echo "Checking Red-Black"
47+
@echo "**********"
48+
@$(JAVA) RedBlack.RedBlackDriverCode RedBlack/$(INPUT_FILE) >RedBlack/tmp
49+
@cd RedBlack && sed -i 's/[^[:print:]]//g' tmp && sed -i 's/[^[:print:]]//g' $(EXPECTED_OUTPUT_FILE)
50+
@diff -i RedBlack/tmp RedBlack/$(EXPECTED_OUTPUT_FILE) && echo 'RBTREE SUCCESS' || $(call logrberror)
51+
rbtreeclean:
52+
-@rm RedBlack/tmp -f
53+
-@rm RedBlack/*.class -f
54+
55+
pqbuild:
56+
@echo "\n**********"
57+
@echo "Building PriorityQueue"
58+
@echo "**********"
59+
@$(JAVAC) -encoding ISO-8859-1 PriorityQueue/*.java
60+
pqcheck: pqbuild
61+
@echo "\n**********"
62+
@echo "Checking PriorityQueue"
63+
@echo "**********"
64+
@$(JAVA) PriorityQueue.PriorityQueueDriverCode PriorityQueue/$(INPUT_FILE) >PriorityQueue/tmp
65+
@cd PriorityQueue && sed -i 's/[^[:print:]]//g' tmp && sed -i 's/[^[:print:]]//g' $(EXPECTED_OUTPUT_FILE)
66+
@diff -i PriorityQueue/tmp PriorityQueue/$(EXPECTED_OUTPUT_FILE) && echo 'PQ SUCCESS' || $(call logpqerror)
67+
pqclean:
68+
-@rm PriorityQueue/tmp -f
69+
-@rm PriorityQueue/*.class -f
70+
71+
pmbuild:
72+
@echo "\n**********"
73+
@echo "Building ProjectManagement"
74+
@echo "**********"
75+
@$(JAVAC) -encoding ISO-8859-1 ProjectManagement/*.java
76+
pmcheck: pmbuild
77+
@echo "\n**********"
78+
@echo "Checking ProjectManagement"
79+
@echo "**********"
80+
@$(JAVA) ProjectManagement.Scheduler_Driver ProjectManagement/$(INPUT_FILE) >ProjectManagement/tmp
81+
@cd ProjectManagement && sed -i 's/[^[:print:]]//g' tmp && sed -i 's/[^[:print:]]//g' $(EXPECTED_OUTPUT_FILE)
82+
@diff -i ProjectManagement/tmp ProjectManagement/$(EXPECTED_OUTPUT_FILE) && echo 'PM SUCCESS' || $(call logpmerror)
83+
pmclean:
84+
-@rm ProjectManagement/tmp -f
85+
-@rm ProjectManagement/*.class -f
86+
87+
88+
clean: trieclean pqclean rbtreeclean pmclean
89+
-@rm -f Util/*.class
90+
@echo "Done"
91+
92+
trietestcase:
93+
@make triebuild
94+
@$(JAVA) Trie.TrieDriverCode Trie/$(INPUT_FILE) >Trie/$(EXPECTED_OUTPUT_FILE)
95+
@make clean
96+
pqtestcase:
97+
@make pqbuild
98+
@$(JAVA) PriorityQueue.PriorityQueueDriverCode PriorityQueue/$(INPUT_FILE) >PriorityQueue/$(EXPECTED_OUTPUT_FILE)
99+
@make clean
100+
rbtestcase:
101+
@make rbtreebuild
102+
@$(JAVA) RedBlack.RedBlackDriverCode RedBlack/$(INPUT_FILE) >RedBlack/$(EXPECTED_OUTPUT_FILE)
103+
@make clean
104+
pmtestcase:
105+
@make pmbuild
106+
@$(JAVA) ProjectManagement.Scheduler_Driver ProjectManagement/$(INPUT_FILE) >ProjectManagement/$(EXPECTED_OUTPUT_FILE)
107+
@make clean

PriorityQueue/EXPECTED_OUTPUT

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
Inserting: Diljeet Singh
2+
Inserting: Bhavesh Kumar
3+
Inserting: Dishant Kumar
4+
Student{name='Bhavesh Kumar', marks=100}
5+
Student{name='Dishant Kumar', marks=67}
6+
Student{name='Diljeet Singh', marks=10}
7+
Heap is empty.

PriorityQueue/INP

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
INSERT
2+
Diljeet Singh, 10
3+
INSERT
4+
Bhavesh Kumar, 100
5+
INSERT
6+
Dishant Kumar, 67
7+
EXTRACTMAX
8+
EXTRACTMAX
9+
EXTRACTMAX
10+
EXTRACTMAX

PriorityQueue/MaxHeap.java

Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,154 @@
1+
package PriorityQueue;
2+
3+
import java.util.ArrayList;
4+
5+
public class MaxHeap<T extends Comparable> implements PriorityQueueInterface<T> {
6+
private class Wrap<T extends Comparable> implements Comparable<Wrap<T>>{
7+
T el;
8+
int stamp;
9+
10+
public Wrap(T el,int stamp){
11+
this.el=el;
12+
this.stamp=stamp;
13+
}
14+
15+
@Override
16+
public int compareTo(Wrap<T> W){
17+
if (this.el.compareTo(W.el)!=0)
18+
return this.el.compareTo(W.el);
19+
if (this.stamp<W.stamp)
20+
return 1;
21+
else
22+
return -1;
23+
}
24+
}
25+
ArrayList<Wrap<T>> arr=new ArrayList();
26+
int ct=0;
27+
int token=0;
28+
29+
@Override
30+
public void insert(T element) {
31+
arr.add(new Wrap<T>(element,token++));
32+
int i=ct++;
33+
Wrap<T> app=arr.get(i);
34+
while (i>0 && app.compareTo(arr.get((int)((i-1)/2)))>0){
35+
arr.set(i,arr.get((int)(i-1)/2));
36+
i=(int)(i-1)/2;
37+
}
38+
arr.set(i,app);
39+
}
40+
41+
@Override
42+
public T extractMax() {
43+
if (arr.isEmpty())
44+
return null;
45+
46+
ct--;
47+
T ret=arr.get(0).el;
48+
Wrap<T> rem=arr.get(ct);
49+
//arr.set(0,rem);
50+
arr.remove(ct);
51+
52+
if (ct==0)
53+
return ret;
54+
55+
int i=0;
56+
57+
while (2*i+1<ct){
58+
int probed;
59+
if (2*i+2>=arr.size()){ //ONE CHILD
60+
/* OLD >>
61+
if (rem.el.compareTo(arr.get(2*i+1).el)==0){ //Not required
62+
if (rem.stamp>arr.get(2*i+1).stamp){
63+
arr.set(i,arr.get(2*i+1));
64+
probed=2*i+1;
65+
}
66+
else
67+
break;
68+
}
69+
else if (rem.el.compareTo(arr.get(2*i+1).el)<0){
70+
arr.set(i,arr.get(2*i+1));
71+
probed=2*i+1;
72+
}
73+
else
74+
break;
75+
76+
NEW >> */
77+
if (rem.compareTo(arr.get(2*i+1))<0){
78+
arr.set(i,arr.get(2*i+1));
79+
probed=2*i+1;
80+
}
81+
else
82+
break;
83+
}
84+
/* OLD >>>
85+
else if (arr.get(2*i+1).el.compareTo(arr.get(2*i+2).el)==0){ // EQUAL
86+
if (arr.get(2*i+1).stamp<arr.get(2*i+2).stamp){ // Left came first
87+
if (rem.el.compareTo(arr.get(2*i+1).el)<=0){
88+
arr.set(i,arr.get(2*i+1));
89+
probed=2*i+1;
90+
}
91+
else
92+
break;
93+
94+
}
95+
else{
96+
if (rem.el.compareTo(arr.get(2*i+2).el)<=0){
97+
arr.set(i,arr.get(2*i+2));
98+
probed=2*i+2;
99+
}
100+
else
101+
break; // Right came first
102+
}
103+
}
104+
else{
105+
Wrap<T> maxChild;
106+
if (arr.get(2*i+1).el.compareTo(arr.get(2*i+2).el)>0){
107+
maxChild=arr.get(2*i+1);
108+
probed=2*i+1;
109+
}
110+
else{
111+
maxChild=arr.get(2*i+2);
112+
probed=2*i+2;
113+
// Not equal, get Max
114+
}
115+
if (rem.el.compareTo(maxChild.el)<=0){
116+
arr.set(i,maxChild);
117+
}
118+
else
119+
break;
120+
}
121+
122+
NEW >>>*/
123+
else{
124+
Wrap<T> maxChild;
125+
if (arr.get(2*i+1).compareTo(arr.get(2*i+2))>0){
126+
maxChild=arr.get(2*i+1);
127+
probed=2*i+1;
128+
}
129+
else{
130+
maxChild=arr.get(2*i+2);
131+
probed=2*i+2;
132+
// Not equal, get Max
133+
}
134+
if (rem.compareTo(maxChild)<0){
135+
arr.set(i,maxChild);
136+
}
137+
else
138+
break;
139+
}
140+
141+
i=probed;
142+
}
143+
144+
arr.set(i,rem);
145+
146+
147+
return ret;
148+
}
149+
150+
public boolean isEmpty(){
151+
return arr.isEmpty();
152+
}
153+
154+
}
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package PriorityQueue;
2+
3+
import java.io.*;
4+
import java.net.URL;
5+
6+
public class PriorityQueueDriverCode {
7+
8+
9+
public static void main(String[] args) throws IOException {
10+
MaxHeap<Student> maxHeap = new MaxHeap<>();
11+
12+
File file;
13+
if (args.length == 0) {
14+
URL url = PriorityQueueDriverCode.class.getResource("INP");
15+
file = new File(url.getPath());
16+
} else {
17+
file = new File(args[0]);
18+
}
19+
20+
BufferedReader br = null;
21+
try {
22+
br = new BufferedReader(new FileReader(file));
23+
24+
String st;
25+
while ((st = br.readLine()) != null) {
26+
String[] cmd = st.split(" ");
27+
if (cmd.length == 0) {
28+
System.err.println("Error parsing: " + st);
29+
return;
30+
}
31+
32+
switch (cmd[0]) {
33+
case "INSERT":
34+
String contact = br.readLine();
35+
Student student = new Student(contact.split(",")[0].trim(), Integer.parseInt(contact.split(",")[1].trim()));
36+
System.out.println("Inserting: " + student.getName());
37+
maxHeap.insert(student);
38+
break;
39+
case "EXTRACTMAX":
40+
Student max_student = maxHeap.extractMax();
41+
if (max_student != null)
42+
System.out.println(max_student.toString());
43+
else {
44+
System.out.println("Heap is empty.");
45+
}
46+
break;
47+
default:
48+
System.err.println("Unknown command: " + cmd[0]);
49+
}
50+
}
51+
} catch (FileNotFoundException e) {
52+
System.err.println("Input file Not found. " + file.getAbsolutePath());
53+
54+
} catch (NullPointerException ne) {
55+
ne.printStackTrace();
56+
57+
}
58+
}
59+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package PriorityQueue;
2+
3+
/**
4+
* DO NOT EDIT
5+
*
6+
* @param <T>
7+
*/
8+
public interface PriorityQueueInterface<T extends Comparable> {
9+
10+
/**
11+
* @param element Insert and element to the Priority Queue
12+
*/
13+
void insert(T element);
14+
15+
/**
16+
* Extract the current maximum element from the Queue (assuming a max heap).
17+
* @return
18+
*/
19+
T extractMax();
20+
21+
}

PriorityQueue/Student.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package PriorityQueue;
2+
3+
public class Student implements Comparable<Student> {
4+
private String name;
5+
private Integer marks;
6+
7+
public Student(String trim, int parseInt) {
8+
name = trim;
9+
marks = Integer.valueOf(parseInt);
10+
}
11+
12+
13+
@Override
14+
public int compareTo(Student student) {
15+
return this.marks.compareTo(student.marks);
16+
}
17+
18+
public String getName() {
19+
return name;
20+
}
21+
22+
23+
//ADDED
24+
@Override
25+
public String toString(){
26+
return "Student{name=\'"+name+"\', marks="+marks+"}";
27+
}
28+
}

0 commit comments

Comments
 (0)