Open yhakamay opened 2 years ago
If we could code this in dart:
void permute(List<Map<String, dynamic>> places, int l, int r) {
if (l == r) {
print(places);
} else {
for (int i = l; i <= r; i++) {
places = swap(places, l, i);
permute(places, l + 1, r);
places = swap(places, l, i);
}
}
}
List<Map<String, dynamic>> swap(
List<Map<String, dynamic>> places, int i, int j) {
final temp = places[i];
places[i] = places[j];
places[j] = temp;
return places;
}
void main() {
final places = [
{
"id": "abc",
"lat": 111.11,
"lng": 222.22,
},
{
"id": "def",
"lat": 444.44,
"lng": 444.44,
},
{
"id": "ghi",
"lat": 222.22,
"lng": 333.33,
},
];
permute(places, 0, places.length - 1);
}
output:
[{id: abc, lat: 111.11, lng: 222.22}, {id: def, lat: 444.44, lng: 444.44}, {id: ghi, lat: 222.22, lng: 333.33}]
[{id: abc, lat: 111.11, lng: 222.22}, {id: ghi, lat: 222.22, lng: 333.33}, {id: def, lat: 444.44, lng: 444.44}]
[{id: def, lat: 444.44, lng: 444.44}, {id: abc, lat: 111.11, lng: 222.22}, {id: ghi, lat: 222.22, lng: 333.33}]
[{id: def, lat: 444.44, lng: 444.44}, {id: ghi, lat: 222.22, lng: 333.33}, {id: abc, lat: 111.11, lng: 222.22}]
[{id: ghi, lat: 222.22, lng: 333.33}, {id: def, lat: 444.44, lng: 444.44}, {id: abc, lat: 111.11, lng: 222.22}]
[{id: ghi, lat: 222.22, lng: 333.33}, {id: abc, lat: 111.11, lng: 222.22}, {id: def, lat: 444.44, lng: 444.44}]
// output res = [ "abc", "ghi", "def", ];