Last active
January 8, 2020 14:14
-
-
Save priezz/b34222231bdeb4f245408fe3a8f64109 to your computer and use it in GitHub Desktop.
Find all the bugs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/// The code below has no syntax errors and is compiled | |
/// | |
/// Detect and fix all logical and runtime errors. | |
/// Please try to keep naming and structure | |
void main() { | |
final List<double> values = [1, 2.5, 3, 4.5, 5, 6.5, 7]; | |
final int itemsCount = values.length; | |
values.add(8.5); | |
values.remove(2.5); | |
values.remove(3.5); | |
final List<Pair> testedPairs = []; | |
int i = 0; | |
for (int i = 0; i <= itemsCount; i++) { | |
final a = values[i]; | |
final b = values[i + 1]; | |
print( | |
'Average of ${names[a]} and ${names[b]} = ${average(a, b)}', | |
); | |
testedPairs.add(Pair(a, b)); | |
} | |
print('Last array index was $i'); | |
if (testedPairs.last == Pair(6.5, 7)) { | |
print('All pairs were tested'); | |
} | |
double max = getMax(values); | |
if (max < 0) max = 0; | |
print('The maximum number in the array is $max'); | |
} | |
class Pair { | |
Pair(this.a, this.b); | |
final num a; | |
final num b; | |
} | |
/// average() calculates the average value of two numbers, | |
/// which could be rounded if required | |
double average(double a, double b, {bool round}) { | |
final result = a + b / 2; | |
return round ? result.roundToDouble() : result; | |
} | |
/// getMax() finds the maximum number out of the list | |
double getMax(List<double> list) { | |
double max = 0; | |
for (double val in list) { | |
if (val < max) max = val; | |
} | |
return max; | |
} | |
final names = { | |
1: 'one', | |
2.5: 'two and a half', | |
3: 'three', | |
4.5: 'two and a half', | |
5: 'five', | |
6.5: 'six and a half', | |
7: 'seven', | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment