algorithmdartcodewarrior

why not pass all test case in problem balanced numbers in codewars?


Currently i am doing a challenge in codewars on Balanced numbers and i wrote the code in dart and it successfully completed 100 test cases but for long numbers it is not working properly...So i think that it need some conditions for this long numbers:

String balancedNum(numb) {
  // your code here
  var numb1 = numb.toString();
  List a = numb1.split("");

  var left_sum = 0;
  var right_sum = 0;

  for (var i = 0; i <= a.length / 2; i++) {
    left_sum += int.parse(a[i]);
  }

  List<String> b = a.reversed.toList();

  //print(b);

  for (var i = 0; i < b.length / 2; i++) {
    right_sum += int.parse(b[i]);
  }

  //print(right_sum);

  if (left_sum == right_sum) {
    return 'Balanced';
  } else {
    return 'Not Balanced';
  }
}

link to the challenge:https://www.codewars.com/kata/balanced-number-special-numbers-series-number-1/train/dart

enter image description here


Solution

  • The compiler verdict for the code is wrong answer because of a simple logical error.

    This is because the length of the list has not been calculated correctly

    Kindly have a look at the corrected code below, which passes all the 110 test on the platform:

    String balancedNum(numb) {
          // your code here
          var numb1 = numb.toString();
          List a = numb1.split("");
    
          var left_sum = 0;
          var right_sum = 0;
    
          double d = ((a.length-1) / 2);
          int len = d.floor();
    
          print(len);
    
          for (var i = 0; i < len; i++) {
                left_sum += int.parse(a[i]);
          }
    
          List<String> b = a.reversed.toList();
    
          print(b);
    
          for (var i = 0; i < len; i++) {
                right_sum += int.parse(b[i]);
          }
    
          print(left_sum);
          print(right_sum);
    
          if (left_sum == right_sum) {
                    return 'Balanced';
          } else {
                    return 'Not Balanced';
          }
    }