Added Dart examples for chapter 3 to chapter 9 (#265)

* fix: corrected method return value following Dart's newest linter version

* feat: added Dart recursion examples for chapter 3

* feat: added quicksort example in Dart for chapter 4

* feat: added examples in Dart for the chapter 5

* feat: added Dart example for chapter 6 bfs

* feat: added djikstra example in Dart for chapter 7

* feat: added example of set covering in Dart for chapter 8

* feat: added examples for dynamic programming in dart for chapter 9
This commit is contained in:
Gabriel Santos
2023-08-08 20:10:15 -03:00
committed by GitHub
parent 182f89b2c4
commit 3e99cccfc0
12 changed files with 312 additions and 0 deletions

View File

@@ -0,0 +1,52 @@
void main(List<String> args) {
final fruits = {'avocado', 'tomato', 'banana'};
final vegetables = {'beet', 'carrot', 'tomato'};
print(fruits.union(vegetables));
print(fruits.intersection(vegetables));
print(fruits.difference(vegetables));
print(vegetables.difference(fruits));
final coverStates = {
'mt',
'wa',
'or',
'id',
'nv',
'ut',
'ca',
'az',
};
final stations = <String, Set<String>>{}..addAll(
{
'kone': {'id', 'nv', 'uy'},
'ktwo': {'wa', 'id', 'mt'},
'kthree': {'or', 'nv', 'ca'},
'kfour': {'nv', 'ut'},
'kfive': {'ca', 'az'},
},
);
final finalStations = stationSet(coverStates, stations);
print(finalStations);
}
Set<String> stationSet(
Set<String> coverStates, Map<String, Set<String>> stations) {
final finalStations = <String>{};
while (coverStates.isNotEmpty) {
String? bestStation;
Set<String> coveredStates = {};
for (String station in stations.keys) {
final covered = coverStates.intersection(stations[station] ?? {});
if (covered.length > coveredStates.length) {
bestStation = station;
coveredStates = covered;
}
}
coverStates.removeWhere((element) => coveredStates.contains(element));
finalStations.add(bestStation!);
}
return finalStations;
}