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;
}
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;
}
No comments:
Post a Comment