diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4a4c4d8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,41 @@ + +# Created by https://www.toptal.com/developers/gitignore/api/vscode,java +# Edit at https://www.toptal.com/developers/gitignore?templates=vscode,java + +### Java ### +# Compiled class file +*.class + +.classpath +.project + +# Log file +*.log + +# BlueJ files +*.ctxt + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.nar +*.ear +*.zip +*.tar.gz +*.rar + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + +### vscode ### +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +*.code-workspace + +# End of https://www.toptal.com/developers/gitignore/api/vscode,java \ No newline at end of file diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..5b781ec --- /dev/null +++ b/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,3 @@ +eclipse.preferences.version=1 +encoding//src/main/java=UTF-8 +encoding//src/test/java=UTF-8 diff --git a/.settings/org.eclipse.jdt.apt.core.prefs b/.settings/org.eclipse.jdt.apt.core.prefs new file mode 100644 index 0000000..d4313d4 --- /dev/null +++ b/.settings/org.eclipse.jdt.apt.core.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.apt.aptEnabled=false diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..1b6e1ef --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,9 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore +org.eclipse.jdt.core.compiler.processAnnotations=disabled +org.eclipse.jdt.core.compiler.release=disabled +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 0000000..f897a7f --- /dev/null +++ b/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/README.md b/README.md index 47cc334..8fffff0 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,4 @@ na wydziale Elektrotechniki, Elektroniki Informatyki i Automatyki Politechniki ## materiały i dodatkowe informacje - -## ogólne zasady oceny pracy na laboratoriach - - [WIKI projektu z opisem zadań oraz sposobu współpracy studentów w ich realizacji](https://github.com/iis-io-team/pio_git_rhymers/wiki) diff --git a/powp-rhymers.iml b/powp-rhymers.iml new file mode 100644 index 0000000..4e3316b --- /dev/null +++ b/powp-rhymers.iml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/edu/kis/vh/nursery/DefaultCountingOutRhymer.java b/src/main/java/edu/kis/vh/nursery/DefaultCountingOutRhymer.java new file mode 100644 index 0000000..4759f04 --- /dev/null +++ b/src/main/java/edu/kis/vh/nursery/DefaultCountingOutRhymer.java @@ -0,0 +1,38 @@ +package edu.kis.vh.nursery; + +import edu.kis.vh.nursery.containers.Container; +import edu.kis.vh.nursery.containers.IntArrayStack; +import edu.kis.vh.nursery.containers.IntLinkedList; + +public class DefaultCountingOutRhymer { + + // private Container container = new IntArrayStack(); + private Container container = new IntLinkedList(); + + public DefaultCountingOutRhymer(){} + + public void countIn(final int in) { + container.push(in); + } + + public boolean callCheck() { + return container.isEmpty(); + } + + public boolean isFull() { + return container.isFull(); + } + + protected int peekaboo() { + return container.peekaboo(); + } + + public int countOut() { + return container.pop(); + } + + public DefaultCountingOutRhymer(IntArrayStack intArrayStack){ + this.container = intArrayStack; + } + +} diff --git a/src/main/java/edu/kis/vh/nursery/FIFORhymer.java b/src/main/java/edu/kis/vh/nursery/FIFORhymer.java index 489e7b3..6e5744e 100644 --- a/src/main/java/edu/kis/vh/nursery/FIFORhymer.java +++ b/src/main/java/edu/kis/vh/nursery/FIFORhymer.java @@ -1,21 +1,24 @@ package edu.kis.vh.nursery; -public class FIFORhymer extends defaultCountingOutRhymer { +public class FIFORhymer extends DefaultCountingOutRhymer { - public defaultCountingOutRhymer temp = new defaultCountingOutRhymer(); - + private final DefaultCountingOutRhymer temp = new DefaultCountingOutRhymer(); + + // final public defaultCountingOutRhymer temp = new defaultCountingOutRhymer(); + /** + * @param none + * @return int + */ @Override public int countOut() { while (!callCheck()) - - temp.countIn(super.countOut()); - + temp.countIn(super.countOut()); + int ret = temp.countOut(); - + while (!temp.callCheck()) - - countIn(temp.countOut()); - + countIn(temp.countOut()); + return ret; } } diff --git a/src/main/java/edu/kis/vh/nursery/HanoiRhymer.java b/src/main/java/edu/kis/vh/nursery/HanoiRhymer.java index 62b1d00..115cfe9 100644 --- a/src/main/java/edu/kis/vh/nursery/HanoiRhymer.java +++ b/src/main/java/edu/kis/vh/nursery/HanoiRhymer.java @@ -1,17 +1,20 @@ package edu.kis.vh.nursery; -public class HanoiRhymer extends defaultCountingOutRhymer { +public class HanoiRhymer extends DefaultCountingOutRhymer { -int totalRejected = 0; + private int totalRejected = 0; public int reportRejected() { return totalRejected; } + @Override public void countIn(int in) { - if (!callCheck() && in > peekaboo()) + if (!callCheck() && in > peekaboo()) totalRejected++; - else - super.countIn(in); + else + super.countIn(in); } } +// alt + strzałka w VSCode przełącza między ostatnio otwieranymi plikami w +// projekcie \ No newline at end of file diff --git a/src/main/java/edu/kis/vh/nursery/containers/Container.java b/src/main/java/edu/kis/vh/nursery/containers/Container.java new file mode 100644 index 0000000..6b57c5e --- /dev/null +++ b/src/main/java/edu/kis/vh/nursery/containers/Container.java @@ -0,0 +1,15 @@ +package edu.kis.vh.nursery.containers; + +public interface Container { + public int pop(); + + public void push(int value); + + public int peekaboo(); + + public int size(); + + public boolean isEmpty(); + + public boolean isFull(); +} diff --git a/src/main/java/edu/kis/vh/nursery/containers/IntArrayStack.java b/src/main/java/edu/kis/vh/nursery/containers/IntArrayStack.java new file mode 100644 index 0000000..53ba15f --- /dev/null +++ b/src/main/java/edu/kis/vh/nursery/containers/IntArrayStack.java @@ -0,0 +1,44 @@ +package edu.kis.vh.nursery.containers; + +public class IntArrayStack implements Container { + public static final int DEFAULT_VALUE = -1; + public static final int MAX_SIZE = 12; + public static final int EMPTY_RHYMER_INDICATOR = -1; + + final private int[] numbers = new int[MAX_SIZE]; + public int CURRENT_TOTAL_NUMBERS = EMPTY_RHYMER_INDICATOR; + + @Override + public void push(final int in) { + if (!isFull()) + numbers[++CURRENT_TOTAL_NUMBERS] = in; + } + + @Override + public boolean isEmpty() { + return CURRENT_TOTAL_NUMBERS == EMPTY_RHYMER_INDICATOR; + } + + @Override + public boolean isFull() { + return CURRENT_TOTAL_NUMBERS == 11; + } + + public int peekaboo() { + if (isEmpty()) + return EMPTY_RHYMER_INDICATOR; + return numbers[CURRENT_TOTAL_NUMBERS]; + } + + @Override + public int pop() { + if (isEmpty()) + return EMPTY_RHYMER_INDICATOR; + return numbers[CURRENT_TOTAL_NUMBERS--]; + } + + @Override + public int size() { + return CURRENT_TOTAL_NUMBERS + 1; + } +} diff --git a/src/main/java/edu/kis/vh/nursery/containers/IntLinkedList.java b/src/main/java/edu/kis/vh/nursery/containers/IntLinkedList.java new file mode 100644 index 0000000..b9272e8 --- /dev/null +++ b/src/main/java/edu/kis/vh/nursery/containers/IntLinkedList.java @@ -0,0 +1,59 @@ +package edu.kis.vh.nursery.containers; + +public class IntLinkedList implements Container { + + public static final int DEFAULT_VALUE = -1; + Node last; + int i; + + public void push(int i) { + if (last == null) + last = new Node(i); + else { + last.next = new Node(i); + last.next.prev = last; + last = last.next; + } + } + + public boolean isEmpty() { + return last == null; + } + + public boolean isFull() { + return false; + } + + public int peekaboo() { + if (isEmpty()) + return DEFAULT_VALUE; + return last.getValue(); + } + + public int pop() { + if (isEmpty()) + return DEFAULT_VALUE; + int ret = last.getValue(); + last = last.prev; + return ret; + } + + @Override + public int size() { + int size = 0; + Node current = last; + while (true) { + if (current.prev == null) + break; + current = current.prev; + } + while (true) { + if (current.next == null) + break; + current = current.next; + size++; + } + return size; + } + +} diff --git a/src/main/java/edu/kis/vh/nursery/containers/Node.java b/src/main/java/edu/kis/vh/nursery/containers/Node.java new file mode 100644 index 0000000..05b0c03 --- /dev/null +++ b/src/main/java/edu/kis/vh/nursery/containers/Node.java @@ -0,0 +1,16 @@ +package edu.kis.vh.nursery.containers; + +public class Node { + + final private int value; + public Node prev, next; + + public Node(int i) { + value = i; + } + + public int getValue(){ + return value; + } + +} diff --git a/src/main/java/edu/kis/vh/nursery/defaultCountingOutRhymer.java b/src/main/java/edu/kis/vh/nursery/defaultCountingOutRhymer.java deleted file mode 100644 index d54e347..0000000 --- a/src/main/java/edu/kis/vh/nursery/defaultCountingOutRhymer.java +++ /dev/null @@ -1,34 +0,0 @@ -package edu.kis.vh.nursery; - -public class defaultCountingOutRhymer { - - private int[] NUMBERS = new int[12]; - - public int total = -1; - - public void countIn(int in) { - if (!isFull()) - NUMBERS[++total] = in; - } - - public boolean callCheck() { - return total == -1; - } - - public boolean isFull() { - return total == 11; - } - - protected int peekaboo() { - if (callCheck()) - return -1; - return NUMBERS[total]; - } - - public int countOut() { - if (callCheck()) - return -1; - return NUMBERS[total--]; - } - -} diff --git a/src/main/java/edu/kis/vh/nursery/factory/DefaultRhymersFactory.java b/src/main/java/edu/kis/vh/nursery/factory/DefaultRhymersFactory.java index 37aa0f6..8d07a57 100644 --- a/src/main/java/edu/kis/vh/nursery/factory/DefaultRhymersFactory.java +++ b/src/main/java/edu/kis/vh/nursery/factory/DefaultRhymersFactory.java @@ -1,6 +1,6 @@ package edu.kis.vh.nursery.factory; -import edu.kis.vh.nursery.defaultCountingOutRhymer; +import edu.kis.vh.nursery.DefaultCountingOutRhymer; import edu.kis.vh.nursery.FIFORhymer; import edu.kis.vh.nursery.HanoiRhymer; import edu.kis.vh.nursery.factory.Rhymersfactory; @@ -8,22 +8,22 @@ public class DefaultRhymersFactory implements Rhymersfactory { @Override - public defaultCountingOutRhymer GetStandardRhymer() { - return new defaultCountingOutRhymer(); + public DefaultCountingOutRhymer getStandardRhymer() { + return new DefaultCountingOutRhymer(); } @Override - public defaultCountingOutRhymer GetFalseRhymer() { - return new defaultCountingOutRhymer(); + public DefaultCountingOutRhymer getFalseRhymer() { + return new DefaultCountingOutRhymer(); } @Override - public defaultCountingOutRhymer GetFIFORhymer() { + public DefaultCountingOutRhymer getFIFORhymer() { return new FIFORhymer(); } @Override - public defaultCountingOutRhymer GetHanoiRhymer() { + public DefaultCountingOutRhymer getHanoiRhymer() { return new HanoiRhymer(); } diff --git a/src/main/java/edu/kis/vh/nursery/factory/Rhymersfactory.java b/src/main/java/edu/kis/vh/nursery/factory/Rhymersfactory.java index b46d7b5..04e745a 100644 --- a/src/main/java/edu/kis/vh/nursery/factory/Rhymersfactory.java +++ b/src/main/java/edu/kis/vh/nursery/factory/Rhymersfactory.java @@ -1,15 +1,15 @@ package edu.kis.vh.nursery.factory; -import edu.kis.vh.nursery.defaultCountingOutRhymer; +import edu.kis.vh.nursery.DefaultCountingOutRhymer; public interface Rhymersfactory { - public defaultCountingOutRhymer GetStandardRhymer(); + public DefaultCountingOutRhymer getStandardRhymer(); - public defaultCountingOutRhymer GetFalseRhymer(); + public DefaultCountingOutRhymer getFalseRhymer(); - public defaultCountingOutRhymer GetFIFORhymer(); + public DefaultCountingOutRhymer getFIFORhymer(); - public defaultCountingOutRhymer GetHanoiRhymer(); + public DefaultCountingOutRhymer getHanoiRhymer(); } diff --git a/src/main/java/edu/kis/vh/nursery/list/IntLinkedList.java b/src/main/java/edu/kis/vh/nursery/list/IntLinkedList.java deleted file mode 100644 index 3e29f48..0000000 --- a/src/main/java/edu/kis/vh/nursery/list/IntLinkedList.java +++ /dev/null @@ -1,40 +0,0 @@ -package edu.kis.vh.nursery.list; - -public class IntLinkedList { - - Node last; - int i; - - public void push(int i) { - if (last == null) - last = new Node(i); - else { - last.next = new Node(i); - last.next.prev = last; - last = last.next; - } - } - - public boolean isEmpty() { - return last == null; - } - - public boolean isFull() { - return false; - } - - public int top() { - if (isEmpty()) - return -1; - return last.value; - } - - public int pop() { - if (isEmpty()) - return -1; - int ret = last.value; - last = last.prev; - return ret; - } - -} diff --git a/src/main/java/edu/kis/vh/nursery/list/Node.java b/src/main/java/edu/kis/vh/nursery/list/Node.java deleted file mode 100644 index 0db70ae..0000000 --- a/src/main/java/edu/kis/vh/nursery/list/Node.java +++ /dev/null @@ -1,12 +0,0 @@ -package edu.kis.vh.nursery.list; - -public class Node { - - public int value; - public Node prev, next; - - public Node(int i) { - value = i; - } - -} diff --git a/src/test/java/edu/kis/vh/nursery/RhymersDemo.java b/src/test/java/edu/kis/vh/nursery/RhymersDemo.java index 7897c2c..a363923 100644 --- a/src/test/java/edu/kis/vh/nursery/RhymersDemo.java +++ b/src/test/java/edu/kis/vh/nursery/RhymersDemo.java @@ -1,35 +1,38 @@ package edu.kis.vh.nursery; -import edu.kis.vh.nursery.defaultCountingOutRhymer; -import edu.kis.vh.nursery.HanoiRhymer; import edu.kis.vh.nursery.factory.DefaultRhymersFactory; import edu.kis.vh.nursery.factory.Rhymersfactory; +//TODO: many unused imports + class RhymersDemo { public static void main(String[] args) { Rhymersfactory factory = new DefaultRhymersFactory(); - - defaultCountingOutRhymer[] rhymers = { factory.GetStandardRhymer(), factory.GetFalseRhymer(), - factory.GetFIFORhymer(), factory.GetHanoiRhymer()}; - + + testRhymers(factory); + + } + + private static void testRhymers(Rhymersfactory factory) { + DefaultCountingOutRhymer[] rhymers = { factory.getStandardRhymer(), factory.getFalseRhymer(), + factory.getFIFORhymer(), factory.getHanoiRhymer() }; + for (int i = 1; i < 15; i++) for (int j = 0; j < 3; j++) rhymers[j].countIn(i); - + java.util.Random rn = new java.util.Random(); for (int i = 1; i < 15; i++) rhymers[3].countIn(rn.nextInt(20)); - + for (int i = 0; i < rhymers.length; i++) { while (!rhymers[i].callCheck()) System.out.print(rhymers[i].countOut() + " "); System.out.println(); } - - System.out.println("total rejected is " - + ((HanoiRhymer) rhymers[3]).reportRejected()); - + + System.out.println("total rejected is " + ((HanoiRhymer) rhymers[3]).reportRejected()); } - + } \ No newline at end of file diff --git a/src/test/java/edu/kis/vh/nursery/RhymersJUnitTest.java b/src/test/java/edu/kis/vh/nursery/RhymersJUnitTest.java index 1b8c941..4d59052 100644 --- a/src/test/java/edu/kis/vh/nursery/RhymersJUnitTest.java +++ b/src/test/java/edu/kis/vh/nursery/RhymersJUnitTest.java @@ -7,7 +7,7 @@ public class RhymersJUnitTest { @Test public void testCountIn() { - defaultCountingOutRhymer rhymer = new defaultCountingOutRhymer(); + DefaultCountingOutRhymer rhymer = new DefaultCountingOutRhymer(); int testValue = 4; rhymer.countIn(testValue); @@ -17,7 +17,7 @@ public void testCountIn() { @Test public void testCallCheck() { - defaultCountingOutRhymer rhymer = new defaultCountingOutRhymer(); + DefaultCountingOutRhymer rhymer = new DefaultCountingOutRhymer(); boolean result = rhymer.callCheck(); Assert.assertEquals(true, result); @@ -29,7 +29,7 @@ public void testCallCheck() { @Test public void testIsFull() { - defaultCountingOutRhymer rhymer = new defaultCountingOutRhymer(); + DefaultCountingOutRhymer rhymer = new DefaultCountingOutRhymer(); final int STACK_CAPACITY = 12; for (int i = 0; i < STACK_CAPACITY; i++) { boolean result = rhymer.isFull(); @@ -43,7 +43,7 @@ public void testIsFull() { @Test public void testPeekaboo() { - defaultCountingOutRhymer rhymer = new defaultCountingOutRhymer(); + DefaultCountingOutRhymer rhymer = new DefaultCountingOutRhymer(); final int EMPTY_STACK_VALUE = -1; int result = rhymer.peekaboo(); @@ -60,7 +60,7 @@ public void testPeekaboo() { @Test public void testCountOut() { - defaultCountingOutRhymer rhymer = new defaultCountingOutRhymer(); + DefaultCountingOutRhymer rhymer = new DefaultCountingOutRhymer(); final int EMPTY_STACK_VALUE = -1; int result = rhymer.countOut();