yhakamay / zipli

1 stars 0 forks source link

Calculate the shortest route on Firebase Cloud Functions #13

Open yhakamay opened 2 years ago

yhakamay commented 2 years ago

// output res = [ "abc", "ghi", "def", ];

yhakamay commented 1 year 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}]