Python: unikalne kombinacje z dwóch list (sztuczka start

9-Gru-2020

Załóżmy, że mamy listę portów lotniczych i zastanawiamy się, jakie można zbudować trasy między nimi:

W routes zostanie wygenerowanych 255 tras, ale niestety znajdą się w niej zbędne wartości. Będzie trasa WAW-WAW,  ale znajdą się też duplikaty WAW-KRK oraz KRK-WAW. Jak je wykluczyć? Zmieniając wyrażenie generujące wartości dostaniemy już tylko 210 wyników, ale wyeliminowaliśmy tylko trasy z tego samego miasta do tego samego miasta:

No to idźmy dalej. Polecenie w tej postaci da o wiele lepszy wynik – 105 tras:

Zapis start<stop jest nieco dziwny. Porównujemy napisy: A<B, B<C, C<D itd.  Tak jak lista obecności w dzienniku szkolnym. Ten znak ostrej nierówności to „sztuczka programistyczna”.  Skoro A jest mniejsze od B, to nasz wzór wykryje tylko połączenie A do B, ale połączenie B do A pominie, bo B nie jest mniejsze od A.

Programowanie to nie tylko instrukcje i kod. Programowanie to też sztuczki, które sprawiają, że ten sam problem da się rozwiązać na kilka(set) różnych sposobów – a my musimy tylko wybrać ten lepszy z pewnego punktu widzenia!

Dodaj komentarz: