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.
popularity-contest
histocrat
źródło
źródło
-1
skrzynce?Odpowiedzi:
JavaScript
Weź konwencjonalny algorytm i napisz go z błędem:
Ten kod zawiera dokładnie jeden literał
1
. Jeśli zostanie zmieniony na-1
, duplikaty zostaną usunięte. Może być stosowany na dowolnych porównywalnych wartościach.źródło
APL 22/23
Monituje o wprowadzenie ekranu za pomocą ← ⎕ i zwraca uporządkowaną scaloną listę z lub, jeśli wiodąca jest ustawiona na ujemną, bez duplikatów.
Liczniki bajtów należy pamiętać, że jednobajtowe znaki APL zostały przekonwertowane na UTF8, aby poprawnie renderować na tej stronie.
źródło
k (18)
Powinien działać dla każdego prawidłowego typu listy
Przykład:
źródło
Pyton
źródło
Grzmotnąć
W duchu kontekstu ten program usuwa duplikaty, jeśli dodasz znak minus przed małymi literami
l
wgrep
wierszu. Jeśli dodasz znak minus przed dużymi literamiI
w poprzednim wierszu lub przed cyfrą1
w następnym wierszu, program nie będzie zachowywać się inaczej.Pliki wejściowe zawierają jedną liczbę całkowitą w wierszu (jest to zwykle reprezentacja list jako plików tekstowych). Należy je podać jako dwa argumenty. Powstała lista jest zapisywana w standardowym ouptut.
Możesz użyć tego programu jako przykładu najlepszego kodu w wywiadzie. Proszę tylko, żebyś nie powiedział, że to mój najlepszy kod.
źródło
Tcl
W duchu cytatu
Jeśli jest to duplikat, pomnóż go przez (-) 1, a następnie odfiltruj wartości ujemne.
źródło
Jestem początkującym w PHP Nie wiem, czy to poprawne
źródło