Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var test = {
- 'op': 'equal',
- 'lhs': {
- 'op': 'add',
- 'lhs': 1,
- 'rhs': {
- 'op': 'multiply',
- 'lhs': 'x',
- 'rhs': 10
- }
- },
- 'rhs': 21
- };
- function strToOp(str){
- switch(str){
- case 'add':
- return '+';
- case 'multiply':
- return '*';
- case 'divide':
- return '/';
- case 'subtract':
- return '-';
- case 'equal':
- return '=';
- }
- }
- var my_string = "";
- function makeString(myObj){
- if(typeof myObj === 'object'){
- my_string+= '(';
- makeString(myObj['lhs']);
- my_string+= strToOp(myObj.op);
- if(typeof myObj['rhs'] === 'object'){
- makeString(myObj['rhs']);
- my_string+= ')';
- }else{
- makeString(myObj['rhs']);
- my_string+= ')';
- }
- }else{
- my_string+= myObj;
- }
- }
- function opposite_op(str){
- switch(str){
- case 'add':
- return 'subtract';
- case 'multiply':
- return 'divide';
- case 'divide':
- return 'multiply';
- case 'subtract':
- return 'add';
- case 'rhs':
- return 'lhs';
- case 'lhs':
- return 'rhs';
- }
- }
- function srch(obj){
- //search for x in obj; if Found return true else false
- if(typeof obj === 'object'){
- return srch(obj['lhs']) || srch(obj['rhs']);
- }
- if(obj==='x'){
- return true;
- }else{
- return false;
- }
- }
- function has_x(obj){
- //obj['lhs'] is passed in this function;
- //will return 'lhs' or 'rhs'
- if(srch(obj['lhs'])){
- return 'lhs';
- }else{
- return 'rhs';
- }
- }
- function transfer_lhs_rhs(obj){
- obj['rhs'] = {'lhs': obj['rhs']};
- obj['rhs']['op'] = opposite_op(obj['lhs']['op']);
- obj['rhs']['rhs'] = obj['lhs'][opposite_op(has_x(obj['lhs']))];
- obj['lhs'] = obj['lhs'][has_x(obj['lhs'])];
- if(obj['lhs'] !== 'x'){
- transfer_lhs_rhs(obj);
- }
- }
- makeString(test);
- var result1 = my_string.slice(1, -1);
- console.log(result1);
- my_string = "";
- transfer_lhs_rhs(test);
- makeString(test);
- var result2 = my_string.slice(1, -1);
- console.log(result2);
- var to_eval = result2.substring(result2.indexOf('=')+1, result2.length);
- //console.log(to_eval);
- console.log("x = " + eval(to_eval));
Add Comment
Please, Sign In to add comment