fork download
  1. <?php
  2.  
  3.  
  4. $input = '567*7+546-111=';
  5. $input2 = '243+257-300+55=';
  6. $inputLength = mb_strlen($input);
  7.  
  8. $number = 0;
  9. $result = 0;
  10. $op = '';
  11.  
  12. for($i = 0; $i < $inputLength; $i++) {
  13.  
  14. $char = mb_substr($input, $i, 1);
  15. //echo "Result-[{$result}], Number-[{$number}], OP-[{$op}], char-[{$char}]\n";
  16.  
  17. if (is_numeric($char)) {
  18. $number = $number * 10 + $char;
  19. //echo "Result-[{$result}], Number-[{$number}], OP-[{$op}], char-[{$char}]\n";
  20. } elseif ($char == '*' || $char == '+' || $char == '-' || $char == '=') {
  21. if ($op == '') {
  22. $result = intval($number);
  23. $number = 0;
  24. //echo "Result-[{$result}], Number-[{$number}], OP-[{$op}], char-[{$char}]\n";
  25. }
  26. elseif ($op != '') {
  27. if ($op == '*') {
  28. $result *= $number;
  29. } elseif ($op == '+') {
  30. $result += $number;
  31. } elseif ($op == '-') {
  32. $result -= $number;
  33. }
  34. //echo "Result-[{$result}], Number-[{$number}], OP-[{$op}], char-[{$char}]\n";
  35. }
  36. $op = $char;
  37. $number = 0;
  38. echo "Result-[{$result}], Number-[{$number}], OP-[{$op}], char-[{$char}]\n";
  39. if ($op == '=') {
  40. echo "{$input}{$result}";
  41. }
  42.  
  43. }
  44. }
Success #stdin #stdout 0.01s 52488KB
stdin
Standard input is empty
stdout
Result-[567], Number-[0], OP-[*], char-[*]
Result-[3969], Number-[0], OP-[+], char-[+]
Result-[4515], Number-[0], OP-[-], char-[-]
Result-[4404], Number-[0], OP-[=], char-[=]
567*7+546-111=4404