47 lines
1.1 KiB
Java
47 lines
1.1 KiB
Java
|
import java.util.ArrayList;
|
||
|
import java.util.LinkedList;
|
||
|
import java.util.Queue;
|
||
|
|
||
|
public class MiningSuccessHistory {
|
||
|
|
||
|
int queueSize;
|
||
|
int numberOfTruesInQueue;
|
||
|
Queue<Boolean> miningSuccessHistory;
|
||
|
|
||
|
public MiningSuccessHistory() {
|
||
|
queueSize = 30;
|
||
|
this.numberOfTruesInQueue = queueSize;
|
||
|
miningSuccessHistory = new LinkedList<Boolean>();
|
||
|
for (int i = 0; i < queueSize; i++) {
|
||
|
miningSuccessHistory.add(true);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public boolean updateHistory(boolean success) {
|
||
|
miningSuccessHistory.add(success);
|
||
|
if (success) {
|
||
|
numberOfTruesInQueue++;
|
||
|
}
|
||
|
if (miningSuccessHistory.poll()) {
|
||
|
numberOfTruesInQueue--;
|
||
|
}
|
||
|
return isMiningRateSufficient();
|
||
|
}
|
||
|
|
||
|
private boolean isMiningRateSufficient() {
|
||
|
return numberOfTruesInQueue < (queueSize * 0.6);
|
||
|
}
|
||
|
|
||
|
public void resetQueue() {
|
||
|
this.numberOfTruesInQueue = queueSize;
|
||
|
miningSuccessHistory.clear();
|
||
|
for (int i = 0; i < queueSize; i++) {
|
||
|
miningSuccessHistory.add(true);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public void displayStats() {
|
||
|
System.out.println("Mining success rate: " + (numberOfTruesInQueue * 1.0 / queueSize));
|
||
|
}
|
||
|
}
|