/* (Here's a link to a much neater version of this:
https://github.com/HectorC1/Tasks/blob/master/bicycleLock.java
*/
import java.util.Scanner;
import java.util.HashMap;
import java.util.*;
class BicycleLock{
public static int[] lock = new int[]{1,7,1,4};
public static int[] unlock = new int[]{5,7,1,4};
int currentRing = 0;
HashMap<Integer, Integer> mapNum = new HashMap<>();
public void createMap(){
for(int i = 0; i < 10; i++){
mapNum.put(i,i);
}
}
public void printLock(){
for(int i = 0; i < lock.length; i++){
System.out.print(lock[i]+" ");
}
}
public String userInput(){
Scanner input = new Scanner(System.in);
String ring;
System.out.println("Choose a ring: ");
ring = input.nextLine();
return ring;
}
public boolean lockEquals(int[] array1, int[] array2){
for(int i = 0; i < array1.length; i++){
if(array1[i] == array2[i]){
return true;
}
else
return false;
}
return false;
}
public boolean hasTwistUp(String twistUp){
if(twistUp.contains("Twist up") || twistUp.contains("twist up")){
return true;
}
else return false;
}
public boolean hasRing(String ring){
if (ring.contains("ring") ||
ring.contains("Ring")){
return true;
}
else return false;
}
public boolean hasTwistDown(String twistDown){
if(twistDown.contains("Twist down") || twistDown.contains("twist down")){
return true;
}
else return false;
}
public void turnCell1(int n){
for(int i = 0; i < n; i++){
lock[0] += 1;
if(lock[0] > 9){
lock[0] = 0;
}
}
}
public void turnCell2(int n){
for(int i = 0; i < n; i++){
lock[1] += 1;
if(lock[1] > 9){
lock[1] = 0;
}
}
}
public void turnCell3(int n){
for(int i = 0; i < n; i++){
lock[2] += 1;
if(lock[2] > 9){
lock[2] = 0;
}
}
}
public void turnCell4(int n){
for(int i = 0; i < n; i++){
lock[3] += 1;
if(lock[3] > 9){
lock[3] = 0;
}
}
}
public void currentRing(int ring){
}
public void setRing(int currentRing){
this.currentRing = currentRing;
}
public int getRing(){
return currentRing;
}
public void containsRing(String s){
String ring = "";
String numbers = "";
int ringNum = 0;
int firstNum = 0;
int turnTimes = 0;
String ringSub = s.substring(0, 7);
String turnSub= s.substring(7, s.length());
String turnSubString = s.substring(7, s.length()); // "once or twice"
char[] charArray = new char[s.length()];
for(int i = 0; i < s.length(); i++){
//loop through substring then get the number
ring += s.charAt(i);
numbers += s.charAt(i);
// }
}
System.out.println(ring);
if(hasRing(ring)){
System.out.println("has ring");
}
if(hasTwistUp(s)){
System.out.println("has twist up ");
// changing the cell turnTimes incrementing by 1 each time
}
if(hasTwistDown(s)){
System.out.println("has twist down");
}
if(ring.contains("ring 1")){
System.out.println(1);
}
else if(ring.equals("ring 2")){
System.out.println(2);
}
else if(ring.equals("ring 3")){
System.out.println(3);
}
else if(ring.equals("ring 4")){
System.out.println(4);
}
for(int j = 0; j < ringSub.length(); j++){
if(Character.isDigit(ringSub.charAt(j))){
ringNum = ringSub.charAt(j);
ringNum = Character.getNumericValue(ringNum);
System.out.println("Ring number: " + ringNum);
setRing(ringNum);
}
}
// do if statement for string number of turns i.e once or twice
for(int k = 0; k < turnSub.length(); k++){
if(Character.isDigit(turnSub.charAt(k))){
turnTimes = turnSub.charAt(k);
turnTimes = Character.getNumericValue(turnTimes);
System.out.println("Turn times: " + turnTimes);
if(hasRing(s) && hasTwistUp(s)){
switch(getRing()){
// turn array([ringnumber])
case 1: turnCell1(turnTimes);
break;
case 2: turnCell2(turnTimes);
break;
case 3: turnCell3(turnTimes);
break;
case 4: turnCell4(turnTimes);
break;
}
}
}
}
}
/*
public final boolean containsDigit(String s) {
boolean containsDigit = false;
if (s != null && !s.isEmpty()) {
for (char c : s.toCharArray()) {
if (containsDigit = Character.isDigit(c)) {
break;
}
}
}
return containsDigit;
}*/
int actualNumber = 0;
public BicycleLock(){
}
public void setLockNumber(int value){
actualNumber = value;
}
public static void main(String...args){
BicycleLock newLock = new BicycleLock();
String userInput;
newLock.createMap();
while(!newLock.lockEquals(lock, unlock)){
userInput = newLock.userInput();
newLock.containsRing(userInput);
newLock.printLock();
System.out.println();
}
System.out.println("unlocked");
}
/*
Ring 1: Twist up 4 times
Ring 3: Twist down once
Ring 4: Twist up or down 5 times
*/
}