Dwie listy A
i B
są przystające, jeśli mają tę samą długość, i elementy, które porównują równe w A
porównaniu równe w B
.
Innymi słowy, biorąc pod uwagę dowolne dwa prawidłowe wskaźniki x
i y
:
- Jeśli
A[x] = A[y]
takB[x] = B[y]
. - Jeśli
A[x] != A[y]
takB[x] != B[y]
.
Na przykład listy [1, 2, 1, 4, 5]
i [0, 1, 0, 2, 3]
są przystające.
Zadanie
Biorąc pod uwagę niepustą listę nieujemnych liczb całkowitych A
, zwróć nową listę nieujemnych liczb całkowitych B
, które są zgodne z A
, przy jednoczesnym zminimalizowaniu sumy liczb całkowitych w B
.
Istnieje potencjalnie wiele możliwych prawidłowych wyników. Na przykład na liście [12, 700, 3]
każda permutacja [0, 1, 2]
będzie uważana za prawidłową wartość wyjściową.
Przypadki testowe
Format:
input ->
one possible valid output
[1 2 1 4 5] ->
[0 1 0 2 3] (this is the example given above)
[3 2 2 1 5 7 2] ->
[1 0 0 2 3 4 0]
[8 8 8 8 8] ->
[0 0 0 0 0]
[2] ->
[0]
[8 6 8 4 6 8 2 4 6 8 0 2 4 6 8] ->
[0 1 0 2 1 0 3 2 1 0 4 3 2 1 0]
[14 1] ->
[1 0]
[19 6 4 9 14 17 10 9 6 14 8 14 6 15] ->
[8 0 3 2 1 7 5 2 0 1 4 1 0 6]
[15] ->
[0]
[1 18 4 8 6 19 12 17 6 13 7 6 8 1 6] ->
[1 8 3 2 0 9 5 7 0 6 4 0 2 1 0]
[9 10 11 9 7 11 16 17 11 8 7] ->
[2 4 0 2 1 0 5 6 0 3 1]
[1 3 16 19 14] ->
[0 1 3 4 2]
[18 8] ->
[1 0]
[13 4 9 6] ->
[3 0 2 1]
[16 16 18 6 12 10 4 6] ->
[1 1 5 0 4 3 2 0]
[11 18] ->
[0 1]
[14 18 18 11 9 8 13 3 3 4] ->
[7 1 1 5 4 3 6 0 0 2]
[20 19 1 1 13] ->
[3 2 0 0 1]
[12] ->
[0]
[1 14 20 4 18 15 19] ->
[0 2 6 1 4 3 5]
[13 18 20] ->
[0 1 2]
[9 1 12 2] ->
[2 0 3 1]
[15 11 2 9 10 19 17 10 19 11 16 5 13 2] ->
[7 2 0 5 1 3 9 1 3 2 8 4 6 0]
[5 4 2 2 19 14 18 11 3 12 20 14 2 19 7] ->
[5 4 0 0 2 1 9 7 3 8 10 1 0 2 6]
[9 11 13 13 13 12 17 8 4] ->
[3 4 0 0 0 5 6 2 1]
[10 14 16 17 7 4 3] ->
[3 4 5 6 2 1 0]
[2 4 8 7 8 19 16 11 10 19 4 7 8] ->
[4 1 0 2 0 3 7 6 5 3 1 2 0]
[15 17 20 18 20 13 6 10 4 19 9 15 18 17 5] ->
[0 1 3 2 3 9 6 8 4 10 7 0 2 1 5]
[15 14 4 5 5 5 3 3 19 12 4] ->
[5 4 2 0 0 0 1 1 6 3 2]
[7 12] ->
[0 1]
[18 5 18 2 5 20 8 8] ->
[2 0 2 3 0 4 1 1]
[4 6 10 7 3 1] ->
[2 3 5 4 1 0]
[5] ->
[0]
[6 12 14 18] ->
[0 1 2 3]
[7 15 13 3 4 7 20] ->
[0 4 3 1 2 0 5]
[10 15 19 14] ->
[0 2 3 1]
[14] ->
[0]
[19 10 20 12 17 3 6 16] ->
[6 2 7 3 5 0 1 4]
[9 4 7 18 18 15 3] ->
[4 2 3 0 0 5 1]
[7 4 13 7] ->
[0 1 2 0]
[19 1 10 3 1] ->
[3 0 2 1 0]
[8 14 20 4] ->
[1 2 3 0]
[17 20 18 11 1 15 7 2] ->
[5 7 6 3 0 4 2 1]
[11 4 3 17] ->
[2 1 0 3]
[1 9 15 1 20 8 6] ->
[0 3 4 0 5 2 1]
[16 13 10] ->
[2 1 0]
[17 20 20 12 19 10 19 7 8 5 12 19] ->
[7 2 2 1 0 6 0 4 5 3 1 0]
[18 11] ->
[1 0]
[2 16 7 12 10 18 4 14 14 7 15 4 8 3 14] ->
[3 9 2 7 6 10 1 0 0 2 8 1 5 4 0]
[5 7 2 2 16 14 7 7 18 19 16] ->
[3 0 1 1 2 4 0 0 5 6 2]
[8 6 17 5 10 2 14] ->
[3 2 6 1 4 0 5]
To jest golf golfowy , więc wygrywa najkrótsze prawidłowe zgłoszenie (liczone w bajtach).
code-golf
array-manipulation
Esolanging Fruit
źródło
źródło
Odpowiedzi:
Python 2 ,
6254 bajtyWypróbuj online!
Edycja: zapisano 8 bajtów za pośrednictwem mapy dzięki Maltysen
źródło
lambda L:map(sorted(set(L),key=L.count)[::-1].index,L)
Pyth -
121110 bajtówPakiet testowy .
źródło
mx_o/QN{Q
.Japt , 11 bajtów
Przetestuj online!
Wyjaśnienie
źródło
J , 11 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Röda , 55 bajtów
Wypróbuj online!
źródło
Haskell ,
939185 bajtówWypróbuj online!
EDYCJA: Dzięki @Laikoni za zdjęcie 6 bajtów!
Niezbyt krótki, ale nie mogę myśleć o niczym innym. Chodzi o to, aby iterować tablicę (
x<-a
) i przeprowadzić wyszukiwanie na liście krotek ((i,y:_)<-
...,x==y
), która przypisuje nieujemną liczbę całkowitą do każdego unikalnego elementu w danych wejściowych w zależności od tego, jak często jest ona powszechna. Ta lista krotek jest generowana przez wpierwsort
wprowadzenie danych, umieszczeniegroup
ich w podlistach równych elementów, posortowanie tej listy według długości list podrzędnych (sortOn((0-).length)
; długość jest negowana, aby posortować w kolejności „malejącej”), a następnie skompresowanie jej za pomocą nieskończonej listy inkrementacja od 0. Używamy dopasowywania wzorca, aby wyodrębnić rzeczywisty element z podlistyy
.źródło
(i,y:_)
i upuścićhead<$>
część i zastąpić nawias$
.Mathematica, 94 bajty
Wypróbuj online!
źródło
CJam,
1714 bajtów-3 bajty dzięki Peterowi Taylorowi
To wersja gry w golfa, której użyłem do wygenerowania testcases.
Jest to anonimowy blok, który oczekuje danych wejściowych jako tablicy na szczycie stosu i wysyła tablicę na szczycie stosu.
Wyjaśnienie:
źródło
$W%
.TI-BASIC, 66 bajtów
Wyjaśnienie
źródło
Perl 5 , 77 + 1 (-a) = 78 bajtów
Wypróbuj online!
źródło
JavaScript (ES6), 91 bajtów
Korzystanie z listy unikalnych wartości posortowanych według częstotliwości.
Test
źródło
PHP , 92 bajty
Wypróbuj online!
źródło
R , 58 bajtów
Wypróbuj online!
Odpowiedź Pythona Port of Chas Brown .
table
oblicza liczbę każdego z elementówx
(przechowywanie wartości jaknames
atrybutu)order
zwraca permutacji wskaźników wz
imatch
zwraca wskaźnik pierwszego meczux
nanames(z)
. Następnie odejmuje,1
ponieważ indeksy R są oparte na 1.źródło