Po przesłaniu wszystkich zadań tworzony jest słownik, który odwzorowuje liczbę studentów na skrót ich pliku.
Ten słownik, mapa skrótów lub mapowanie (niezależnie od tego, jak nazywa się Twój język) będzie wyglądać następująco:
{100: "aabb", 104: "43a", 52: "00ab", 430: "aabb", 332: "43a"}
Kluczem jest numer studenta, a wartością jest skrót.
Naszym zadaniem jest wybranie oszustów! Oszuści to ci, którzy mają identyczne hasze.
Biorąc pod uwagę dane wejściowe {100: "aabb", 104: "43a", 52: "00ab", 430: "aabb", 332: "43a"}
, funkcja powinna zwrócić (lub wydrukować) następujący tekst:
100 has identical files to 430
104 has identical files to 332
Zauważ, że pliki, dla których skróty są unikalne, nie są wymieniane.
Ważna jest również kolejność :
{100: "aabb", 202: "aabb", 303: "ab", 404: "aabb"}
powinien zwrócić (wydrukować) następujący tekst:
100 has identical files to 202,404
Jest to błędne wydrukować dowolny z poniższych sytuacji:
202 has identical files to 100,404
100 has identical files to 404, 202
Powinieneś wydrukować go pod kątem wyglądu w słowniku. W niektórych językach przeglądanie słownika jest losowe, więc w tym szczególnym przypadku możesz zmienić metodę wprowadzania, tak abyś mógł przeglądać go w uporządkowany sposób.
Więcej przykładów:
{} # prints nothing
{100: "ab", 303: "cd"} # prints nothing again
{100: "ab", 303: "cd", 404: "ab"}
100 has identical files to 404
{303: "abc", 304: "dd", 305: "abc", 405: "dd", 606: "abc"}
303 has identical files to 305,606
304 has identical files to 405
Najkrótszy kod wygrywa!
źródło
303 has identical files to [305, 606]
zamiast303 has identical files to 305,606
?Odpowiedzi:
JavaScript (węzeł Babel) , 113 bajtów
Pobiera dane wejściowe jako tablicę tablic w
[key, value]
formacie. Go Go gadżet podwójnie płaskiWypróbuj online!
JavaScript (węzeł Babel) , 114 bajtów
Pobiera dane wejściowe jako rodzimy obiekt JS.
Wypróbuj online!
źródło
flatMap
flatMap
nie jest jeszcze powszechnie obsługiwany. Jestem pewien, że są krótsze drogi, ale robi się późno i nie mogę już myśleć. : pPython 2 ,
127126 bajtówWypróbuj online!
Pobiera na
(<studentNumber>,<hash>)
wejściu listę uporządkowanych par .źródło
if','in
Retina 0.8.2 , 71 bajtów
Wypróbuj online! Pobiera dane w osobnych wierszach, ale link zawiera zestaw testów, który dzieli dla ciebie przykłady. Wyjaśnienie:
Powtarzaj ten mecz, dopóki nie będzie można dokonać żadnej wymiany.
Wyszukaj pary pasujących skrótów i dołącz klucz drugiego dopasowania do klucza pierwszego dopasowania za pomocą separatora przecinków.
Usuń wszystkie skróty.
Zachowaj tylko linie z przecinkami.
Zastąp pierwszy przecinek w każdym wierszu żądanym tekstem (w tym spacją końcową).
źródło
R ,
145132129126124 bajtówWypróbuj online!
Jako dane wejściowe przyjmuje nazwany wektor (nazwy to klucze)
Jeśli
", "
separator (ze spacją po przecinku) jest dozwolony w przypadku wielu duplikatów, możemy użyć tego kodu i zapisać 10 bajtów:R , 114 bajtów
Wypróbuj online!
źródło
05AB1E , 34 bajty
Wypróbuj online lub sprawdź wszystkie przypadki testowe .
Wyjaśnienie:
Zobacz moją odpowiedź 05AB1E (sekcja Jak korzystać ze słownika? ), Aby zrozumieć, dlaczego tak
“ÿ€°Ê¼‡œ€„ “
jest"ÿ has identical files to "
.źródło
Rubin ,
9896 bajtówWypróbuj online!
Pobiera dane jako Ruby Hash, zwraca przez drukowanie.
źródło
Galaretka , 39 bajtów
Wypróbuj online!
źródło
C # (interaktywny kompilator Visual C #) , 130 bajtów
Wypróbuj online!
Dziwną rzeczą w tym pytaniu jest to, że przykłady podano w formacie JSON jako pary klucz / wartość, co zwykle implikuje, że są nieuporządkowane ... W tym przypadku jednak kolejność jest ważna. Jako taki używam listy krotek dla danych wejściowych i listy ciągów jako danych wyjściowych.
źródło
Perl 5, 100 +1 (-n) bajtów
Wypróbuj online!
źródło
Japt , 34 bajty
Wypróbuj online!
W tej chwili jest to trochę niespójne w porządkowaniu linii, ale w linii wyświetla się poprawnie. Jeśli wiersze danych wyjściowych muszą być w określonej kolejności, zajmie to jeszcze kilka bajtów. Dane wejściowe to tylko tablica
[id, hash]
parWyjaśnienie:
źródło
Perl 6 ,
115110103 bajtów-2 bajty dzięki Jo King
Wypróbuj online!
Pobiera listę par, ponieważ skróty są nieuporządkowane. Lista dwuelementowych list zaoszczędziłaby kilka bajtów, ale wydaje się jednoznaczna. Zwraca listę wierszy.
9588 bajtów, jeśli kolejność linii w wyniku nie ma znaczenia:Wypróbuj online!
źródło
.[1..*]
do.skip