Witamy w pierwszym dniu w PPCG Inc. Jako nasz najnowszy młodszy asystent sortownika dokumentów, jesteś odpowiedzialny za to, aby wszystkie dokumenty, które do ciebie wysłaliśmy, były archiwizowane w kolejności alfabetycznej. To takie proste, że małpa może to zrobić. Cóż, mówiąc metaforycznie, ponieważ wynajęliśmy do tego małpę. Zgadnij co? Okazuje się, że małpy nie rozumieją naszego alfabetu. W każdym razie nie ma czasu, aby naprawić bałagan, który jest teraz, więc po prostu staraj się nie pogarszać sytuacji, dobrze? Więc przejdź do tego! Jeśli zgłodniejesz, przy chłodziarce są banany. Powodzenia!
Opis pracy
Wejście
- Otrzymasz listę ciągów (archiwum) i ciąg, który należy dodać do tej listy (dokumentu)
- Wszystkie ciągi będą zawierać tylko wielkie litery, małe litery i spacje
- Ciągi znaków zawsze zaczynają się i kończą literą
Zadanie
Określ pozycję docelową dokumentu: pozycję, którą powinna otrzymać w archiwum. Miejsce docelowe można określić w następujący sposób:
- Dla każdej pozycji:
- Policz liczbę ciągów w archiwum przed tą pozycją, które są alfabetycznie przed dokumentem
- Policz liczbę ciągów w archiwum po tej pozycji, które są alfabetycznie po dokumencie
- Zdefiniuj wynik pozycji jako sumę powyższych dwóch liczb
- Pozycja docelowa dokumentu to pozycja z najwyższym wynikiem
- W przypadku remisu wszystkie pozycje z najwyższym wynikiem są równie ważne jak pozycja docelowa. Należy wybrać tylko jeden.
Podczas sortowania:
- Wielkie i małe litery są równoważne
- Spacje pojawiają się przed literami
Wynik
- Archiwum z dokumentem dodanym do niego w dowolnej formie
LUB
- Pozycja docelowa dokumentu w indeksie 0 lub 1
Ocena pracy
Wygrywa najmniej bajtów!
Przykład I / O
Archive:
Applebuck Season
Friendship is Magic
The Ticket Master
Griffon the BrushOff
Boast Busters
Bridle Gossip
Document: Dragonshy
Position scores (0-based index):
0: 0 + 3 = 3
1: 1 + 3 = 4
2: 1 + 2 = 3
3: 1 + 1 = 2
4: 1 + 0 = 1
5: 2 + 0 = 2
6: 3 + 0 = 3
Target position: 1
Odpowiedzi:
JavaScript (ES6), 81 bajtów
Nie golfowany:
Edycja: Zapisano wiele bajtów dzięki @ user81655.
źródło
indexOf
zmienną wynikową ustawioną podczas mapy również byłoby krótsze.Pyth,
4038 bajtówPodziękowania dla @Katenkyo za nauczenie mnie, że w
A xnor B
zasadzieA==B
. (A xor B
jest równieżA!=B
)Wypróbuj online!
Jak to działa:
Sumuje XNOR tego, czy pozycja jest mniejsza niż dokument i czy indeks pozycji jest mniejszy niż indeks dokumentu.
Znajduje pozycję, w której ta suma jest wartością maksymalną, a następnie wyprowadza ją.
źródło
Python 3,
135167 bajtówźródło
Ruby, 97 bajtów
Funkcja anonimowa zwraca pozycję docelową.
Podczas wstawiania do archiwum 110 bajtów :
źródło
Pyth,
54524745 bajtówOczekuj, że dane wejściowe to lista, pierwszy element to lista ciągów (archiwum), drugi element to ciąg (dokument)
Przetestuj tutaj
źródło
0
którego jeśli poprawnie czytam Twój kod, możesz zaoszczędzić miejsce["Applebuck Season","Friendship is Magic","The Ticket Master","Griffon the BrushOff","Boast Busters","Bridle Gossip"]\n "Dragonshy"
jako danych wejściowych i używanieE
zamiast@Q0
i@Q1
może zaoszczędzić cztery bajty.AQ
zamiastJ@Q0K@Q1
.MATL , 32 bajty
Dane wejściowe to tablica komórek ciągów (kilka ciągów oddzielonych spacjami i ujętych w nawiasy klamrowe) dla archiwum oraz ciąg dla dokumentu. Wyjście jest oparte na 1. W przypadku remisu zwracana jest pierwsza pozycja.
Wypróbuj online!
Wyjaśnienie
źródło