Ta anegdota zawiera następującą intrygującą wymianę:
„W porządku Fred”, przerwał Avi. „W takim razie jak byś to zmienił, aby uniknąć powielania wpisów?
„Och, po prostu zmień ten tam na negatywny”.
Chociaż twierdzenie to nie jest dokładne w kontekście, zastanawiam się, czy istnieje jakiś wiarygodny kod, dla którego ma to sens.
Twoim wyzwaniem jest napisanie kodu (programu, funkcji, cokolwiek), który spełnia te kryteria:
- Łączy dwie listy wejściowe w jedną, zachowując duplikaty. [edytuj: Możesz opcjonalnie założyć, że są to liczby całkowite i / lub same listy są unikalne. Nie można zakładać, że liczby całkowite są dodatnie (jedna odpowiedź, która to robi, jest dziadkiem).]
- Dosłownie „1” pojawia się gdzieś w kodzie. Jeśli zmienisz to na dosłowne „-1”, kod robi to samo, ale usuwa duplikaty.
- Kod nie rozgałęzia się po prostu 1 / -1. Nie szukasz
if (1 < 1) removeDuplicates()lub[do_nothing, merge_with_dups, merge_without_dups][1].call(), na przykład.
Dane wejściowe i wyjściowe mogą być w dowolnym rozsądnym formacie, który wybierzesz. Jednym z przykładów może być
[1,2],[2,3]->[1,2,2,3]przed zmianą znaku i [1,2,3]po.
To konkurs popularności. To nie jest golf golfowy , chyba że chcesz się pochwalić. Przyjmuję najwyżej głosowaną odpowiedź za około dwa tygodnie.
-1skrzynce?