public class NovFifth {
public static void main(String args[]){
int a = 10;
int b = 100;
String inputOperation1 =
"*2";
String inputOperation2 =
"*3";
String inputOperation3 =
"+1";
char[] operations1 = inputOperation1.toCharArray();
char[] operations2 = inputOperation2.toCharArray();
char[] operations3 = inputOperation3.toCharArray();
char operator1 = operations1[0];
int operand1 = Character.getNumericValue(operations1[1]);
char operator2 = operations2[0];
int operand2 = Character.getNumericValue(operations2[1]);
char operator3 = operations3[0];
int operand3 = Character.getNumericValue(operations3[1]);
Operation[] operationArray =
new Operation[3];
Operation Operation1 =
new Operation(operator1, operand1);
Operation Operation2 =
new Operation(operator2, operand2);
Operation Operation3 =
new Operation(operator3, operand3);
operationArray[0] = Operation1;
operationArray[1] = Operation2;
operationArray[2] = Operation3;
Node startPoint =
new Node();
Node start =
new Node();
start.level = 0;
start.number = a;
startPoint = start;
Node endPoint =
new Node();
endPoint = start;
Node currentNode = start;
int minimunLength = 0;
while(
true){
boolean answerFlag =
false;
int currentLevel = currentNode.level;
for(
int i=0; i<3; i++){
Operation op = operationArray[i];
int answer = calc(currentNode.number, op.operator, op.operand);
if(answer == b){
answerFlag =
true;
minimunLength = currentLevel + 1;
}
else if(answer < b){
//Push Queue
Node node =
new Node();
node.level = currentLevel + 1;
node.number = answer;
endPoint.next = node;
endPoint = endPoint.next;
}
}
if(answerFlag){
break;
}
//Pop Queue
currentNode = startPoint;
startPoint = startPoint.next;
}
printQueue(startPoint);
System.out.println(
"Answer : "+minimunLength);
}
public static int calc(
int current,
char operator,
int operand){
int returnNum = 0;
if(operator ==
'*'){
returnNum = current * operand;
}
else{
returnNum = current + operand;
}
return returnNum;
}
public static void printQueue(Node node){
int count = 0;
while(
true){
//System.out.print(node.number+" ");
if(node.next ==
null){
break;
}
else{
node = node.next;
count++;
}
}
}
}
class Operation{
public char operator;
public int operand;
public Operation(
char operator,
int operand){
this.operator = operator;
this.operand = operand;
}
}
class Node{
int number;
int level;
Node next;
}