D45Hub
3 years ago
6 changed files with 169 additions and 0 deletions
-
6CDMASignalCalculator/.classpath
-
2CDMASignalCalculator/.gitignore
-
17CDMASignalCalculator/.project
-
60CDMASignalCalculator/src/de/denisthiessen/base/CDMASignalCalculator.java
-
48CDMASignalCalculator/src/de/denisthiessen/base/CDMASignalResult.java
-
36CDMASignalCalculator/src/de/denisthiessen/base/SignalCalculatorExecutor.java
@ -0,0 +1,6 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<classpath> |
|||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jdk1.8.0_211"/> |
|||
<classpathentry kind="src" path="src"/> |
|||
<classpathentry kind="output" path="bin"/> |
|||
</classpath> |
@ -0,0 +1,2 @@ |
|||
/bin/ |
|||
/.settings/ |
@ -0,0 +1,17 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<projectDescription> |
|||
<name>CDMASignalCalculator</name> |
|||
<comment></comment> |
|||
<projects> |
|||
</projects> |
|||
<buildSpec> |
|||
<buildCommand> |
|||
<name>org.eclipse.jdt.core.javabuilder</name> |
|||
<arguments> |
|||
</arguments> |
|||
</buildCommand> |
|||
</buildSpec> |
|||
<natures> |
|||
<nature>org.eclipse.jdt.core.javanature</nature> |
|||
</natures> |
|||
</projectDescription> |
@ -0,0 +1,60 @@ |
|||
package de.denisthiessen.base; |
|||
|
|||
import java.util.List; |
|||
|
|||
|
|||
public class CDMASignalCalculator |
|||
{ |
|||
private List<Integer> incomingSignal; |
|||
|
|||
public CDMASignalCalculator(List<Integer> incomingList) |
|||
{ |
|||
this.incomingSignal = incomingList; |
|||
} |
|||
|
|||
public void addToSignal(List<Integer> addedSignal) |
|||
{ |
|||
checkEqualLengthList(incomingSignal, addedSignal); |
|||
|
|||
for (int i = 0; i < incomingSignal.size(); i++) |
|||
{ |
|||
incomingSignal.set(i, incomingSignal.get(i) + addedSignal.get(i)); |
|||
} |
|||
} |
|||
|
|||
public CDMASignalResult calculateSignalResult(List<Integer> stationCodes) |
|||
{ |
|||
int signalResultValue = calculateSignalResultValue(incomingSignal, stationCodes); |
|||
return CDMASignalResult.getSignalValueFromResult(signalResultValue); |
|||
} |
|||
|
|||
public String getCurrentSignalValue() |
|||
{ |
|||
return incomingSignal.toString(); |
|||
} |
|||
|
|||
private int calculateSignalResultValue(List<Integer> signal, List<Integer> station) |
|||
{ |
|||
checkEqualLengthList(signal, station); |
|||
|
|||
int listLength = signal.size(); |
|||
int result = 0; |
|||
|
|||
for (int i = 0; i < listLength; i++) |
|||
{ |
|||
result += (signal.get(i) * station.get(i)); |
|||
} |
|||
|
|||
result /= listLength; |
|||
|
|||
return result; |
|||
} |
|||
|
|||
private void checkEqualLengthList(List<Integer> signal, List<Integer> station) |
|||
{ |
|||
if (signal.size() != station.size()) |
|||
{ |
|||
throw new IllegalArgumentException("Signal and Station are not equally long"); |
|||
} |
|||
} |
|||
} |
@ -0,0 +1,48 @@ |
|||
package de.denisthiessen.base; |
|||
|
|||
public enum CDMASignalResult |
|||
{ |
|||
ONE_SENT(1), ZERO_SENT(-1), NOTHING_SENT(0); |
|||
|
|||
private int signalResult; |
|||
|
|||
private CDMASignalResult(int signalResult) |
|||
{ |
|||
this.signalResult = signalResult; |
|||
} |
|||
|
|||
public int getSignalValue() |
|||
{ |
|||
return signalResult; |
|||
} |
|||
|
|||
@Override |
|||
public String toString() |
|||
{ |
|||
switch (signalResult) |
|||
{ |
|||
case 1: |
|||
return "One got sent."; |
|||
case 0: |
|||
return "Nothing got sent."; |
|||
case -1: |
|||
return "Zero got sent."; |
|||
default: |
|||
return "Invalid Signal Result."; |
|||
} |
|||
} |
|||
|
|||
public static CDMASignalResult getSignalValueFromResult(int signalResult) |
|||
{ |
|||
for (CDMASignalResult iteratedResult : values()) |
|||
{ |
|||
if (iteratedResult.getSignalValue() == signalResult) |
|||
{ |
|||
return iteratedResult; |
|||
} |
|||
} |
|||
|
|||
throw new IllegalArgumentException( |
|||
"Signal Result of " + signalResult + " cannot be resolved."); |
|||
} |
|||
} |
@ -0,0 +1,36 @@ |
|||
package de.denisthiessen.base; |
|||
|
|||
import java.util.Arrays; |
|||
import java.util.List; |
|||
|
|||
|
|||
public class SignalCalculatorExecutor |
|||
{ |
|||
public static void main(String[] args) |
|||
{ |
|||
List<Integer> signalList1 = Arrays.asList(0, 0, -2, 2, 0, -2, 0, 2); |
|||
List<Integer> signalList2 = Arrays.asList(0, 2, 2, 2, 0, 4, -2, 2); |
|||
List<Integer> signalList3 = Arrays.asList(2, 0, 2, -2, 0, 2, 0, 2); |
|||
|
|||
List<Integer> stationList1 = Arrays.asList(-1, -1, -1, 1, 1, -1, 1, 1); |
|||
List<Integer> stationList2 = Arrays.asList(-1, -1, 1, -1, 1, 1, 1, -1); |
|||
List<Integer> stationList3 = Arrays.asList(-1, 1, -1, 1, 1, 1, -1, -1); |
|||
|
|||
CDMASignalCalculator calculator = new CDMASignalCalculator(signalList1); |
|||
System.out.println(calculator.getCurrentSignalValue()); |
|||
|
|||
calculator.addToSignal(signalList2); |
|||
System.out.println(calculator.getCurrentSignalValue()); |
|||
|
|||
calculator.addToSignal(signalList3); |
|||
System.out.println(calculator.getCurrentSignalValue()); |
|||
|
|||
CDMASignalResult signalResult1 = calculator.calculateSignalResult(stationList1); |
|||
CDMASignalResult signalResult2 = calculator.calculateSignalResult(stationList2); |
|||
CDMASignalResult signalResult3 = calculator.calculateSignalResult(stationList3); |
|||
|
|||
System.out.println("Signal Result for First List:\n" + signalResult1.toString()); |
|||
System.out.println("Signal Result for Second List:\n" + signalResult2.toString()); |
|||
System.out.println("Signal Result for Third List:\n" + signalResult3.toString()); |
|||
} |
|||
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue