Wyzwanie
Biorąc pod uwagę listę unikalnych nazw kolorów jako danych wejściowych, posortuj je w kolejności, w jakiej pojawiają się w Amazing Amazing Technicolor Dreamcoat Josepha .
Przykład
Input: green, blue, red, brown
Output: red, green, brown, blue
Pełna lista kolorów, w kolejności, to:
1. red
2. yellow
3. green
4. brown
5. scarlet
6. black
7. ochre
8. peach
9. ruby
10. olive
11. violet
12. fawn
13. lilac
14. gold
15. chocolate
16. mauve
17. cream
18. crimson
19. silver
20. rose
21. azure
22. lemon
23. russet
24. grey
25. purple
26. white
27. pink
28. orange
29. blue
Lub jako tablica ciągów:
["red","yellow","green","brown","scarlet","black","ochre","peach","ruby","olive","violet","fawn","lilac","gold","chocolate","mauve","cream","crimson","silver","rose","azure","lemon","russet","grey","purple","white","pink","orange","blue"]
Zasady
- Możesz przyjmować dane wejściowe za pomocą dowolnych rozsądnych i dogodnych środków (np. Tablica ciągów, łańcuch rozdzielany, pojedyncze łańcuchy), o ile jest to dozwolone przez nasze standardowe reguły We / Wy , ale proszę podać metodę wprowadzania w odpowiedzi.
- Możesz zrobić to samo dla swoich wyników.
- Dane wejściowe zawsze będą zawierały tylko kolory z powyższej listy.
- Twoje rozwiązanie powinno obsługiwać puste dane wejściowe.
- Możesz wybrać, czy wszystkie słowa na wejściu mają być konsekwentnie pisane wielkimi, małymi lub tytułowymi literami, ale obudowa twojego wyjścia musi pasować do twoich danych wejściowych.
- To jest golf golfowy, więc wygrywa najniższa liczba bajtów w każdym języku.
- Jak zawsze standardowe luki są zabronione.
Przypadki testowe
Input: []
Output: []
Input: ["green", "blue", "red", "brown"]
Output: ["red", "green", "brown", "blue"]
Input: ["gold", "grey", "green"]
Output: ["green", "gold", "grey"]
Input: ["ruby","yellow","red","grey"]
Output: ["red", "yellow", "ruby", "grey"]
Input: ["gold", "green", "fawn", "white", "azure", "rose", "black", "purple", "orange", "silver", "ruby", "blue", "lilac", "crimson", "pink", "cream", "lemon", "russet", "grey", "olive", "violet", "mauve", "chocolate", "yellow", "peach", "brown", "ochre", "scarlet", "red"]
Output: ["red", "yellow", "green", "brown", "scarlet", "black", "ochre", "peach", "ruby", "olive", "violet", "fawn", "lilac", "gold", "chocolate", "mauve", "cream", "crimson", "silver", "rose", "azure", "lemon", "russet", "grey", "purple", "white", "pink", "orange", "blue"]
code-golf
array-manipulation
Kudłaty
źródło
źródło
Odpowiedzi:
PowerShell ,
26215515112712595 bajtówWypróbuj online!
Naiwne podejście.PowerShellsort-object
może sortować na podstawie bloku skryptu, który jest wykonywany dla każdego obiektu. Tutaj po prostu pobieramy.IndexOf()
kolor z łańcucha, który przypisze wartość liczbową do każdego koloru, a następnie sortuje na podstawie tych liczb. Ciąg składa się z czwartej i pierwszej litery każdego koloru, aby zapewnić wyjątkowość. Wynik jest niejawny.-4 bajty dzięki Shaggy.
-2 bajty dzięki mazzy.
Ogromne -30 bajtów dzięki KGlasier.
źródło
green grey
odpowiednia kolejność alfabetyczna..IndexOf()
zwróci,-1
jeśli ciąg nie zostanie znaleziony, co posortujered
się w odpowiedniej kolejności. Dzięki!JavaScript (SpiderMonkey) ,
106 105104 bajtów„W razie wątpliwości po prostu zbierz krwawe dane”.
Wypróbuj online!
źródło
%99%55
Nie jest lepsze niż%123%55
przy takim podejściu). To z pewnością nie jest optymalne. Jednak później mogę spróbować czegoś nieco bardziej wyrafinowanego.Galaretka , 28 bajtów
Wypróbuj online!
Jak to działa
µ
zamienia wszystko w lewo w monadyczny łańcuch, któryÞ
odwzorowuje tablicę wejściową i sortuje dane wejściowe zgodnie z wygenerowanymi wartościami.“½Ṗ©cƘʂẒẹMMỤẓHP’
ustawia wartość zwracaną na 176073885534954276199526358143331.Œ?
“ðÑþQ’
daje 391695582;,
dodaje to do permutacji. Następnieḥ
oblicz 39- tą funkcję hashową Jelly 391695582 , mapując powstałe wiadra na liczby całkowite permutacji.Stała magiczna 391695582 została znaleziona przez narzędzia Jelly .
źródło
Python 3 , 93 bajty
Wypróbuj online!
Czyta każdy kolor jako bazę-36
int
. Brute zmusił moduły i wybrał dowolne przesunięcie spośród 19, które nie wymagało ucieczek.źródło
PowerShell,
124120124119118102 bajtówWypróbuj online!
Wyjaśnienie:
Ciąg danych zawiera pierwsze znaczące litery kolorowych etykiet w porządku malejącym. Z wyjątkiem
Grey
etykiety -G*y
jest krótszy.-csplit'(?=[A-Z])'
dzieli ciąg danych na tablicę(blu,Or,Pi,W,Pu,G*y,Rus,Le,A,Ro,Si,Cri,Cr,M,C,Go,L,F,V,Ol,Ru,P,O,Bl,S,B,G,Y,R)
|%{$c-like"$_*"}
odwzorowuje tablicę ciągów na tablicę boolean. GdzieTrue
oznacza „etykieta koloru zaczyna się od tego ciągu” (podobnie jak operator bez rozróżniania wielkości liter, csplit - rozróżnia małe i wielkie litery. Patrz dokument ).sort{}
sortuje kolor lables według tablic boolean w porządku rosnącym .Sortowanie według tablicy jest bardzo interesującą funkcją Powershell. W tym skrypcie wszystkie tablice mają tę samą długość i zawierają tylko wartości logiczne. Sortowanie odbywa się w porządku leksykograficznym tablic boolowskich.
Dlatego ciąg może zawierać jednoliterowe skróty dla ostatnich etykiet. Jeśli istnieje dopasowanie na początku tablicy, dopasowania na końcu nie mają wpływu.
Gdzie
T
jesttrue
i-
jestfalse
.Skrypt testowy:
Wydajność:
źródło
This site can’t be reached
błąd Przepraszam.Za chwilę poprawię kompresję łańcucha
Japt ,
887871 bajtówWypróbuj online!
źródło
Wolfram Language
255 213199 bajtówCzternaście bajtów zapisanych przez Dennisa, który unikał znaków „, używając symboli zamiast ciągów.
Wypróbuj online!
źródło
Python 2 , 186 bajtów
Wypróbuj online!
Znajduje wszystkie dopasowania dla ciągów znaków progresywnych (np. „Zielony” sprawdzi, czy „g”, „gr”, „gre”, „gree” i „zielony”) w ciągu identyfikatora i zachowuje maksymalny indeks. „czerwony” jest zawsze pierwszy, anf find () zwraca -1 dla brakujących dopasowań, więc nie ma specjalnie identyfikatora dla czerwonego.
Po przekształceniu kolorów w pary (indeks, kolor) sortuje tablicę na pierwszym elemencie pary, a następnie odrzuca pierwszy element każdej pary.
źródło
Python 3 , 130 bajtów
Wypróbuj online!
źródło
ca
jest to podłożecca
do czekolady.C # (interaktywny kompilator Visual C #) ,
321219210161159138 bajtówWypróbuj online!
-3 bajty dzięki Shaggy, -18 dzięki TheLethalCoder
Pobiera dane wejściowe jako
List<string>
, zwraca wartość anIOrderedEnumerable<string>
Działa to tak, że porządkuje listę według indeksu każdego łańcucha w oryginalnym ciągu. Oryginalny ciąg ma każdy kolor z wyjątkiem szarego zamienionego na pierwsze trzy litery. Nie ma szarego, ponieważ zielony i szary spowodowałby niejednoznaczność. Od tamtej pory nie ma też czerwonego
IndexOf
zwraca -1, jeśli ciąg nie pojawi się.Krótsza wersja przyjmująca jako dane wejściowe IOrdersEnumerable, 137 bajtów
Wykorzystuje fakt, że
ThenBy
jest o 1 bajt krótszy niżOrderBy
, aleThenBy
działa tylko naIOrderedEnumerable
s.Wypróbuj online!
źródło
red
ciąg wyszukiwania i zastąpić68
go,65
aby zapisać 3 bajty. Na moim telefonie nie przetestowałem go w pełni.n=>n.OrderBy(a=>a!="grey"?"redyelgrebroscablaochperuboliviofawlilgolchomaucrecrisilrosazulemruspurwhipinorablu".IndexOf(a.Substring(0,3)):68);
Musisz jednak uwzględnićusing
w swojej liczbie bajtów, ponieważ są one wymagane do uruchomienia. Możesz jednak użyć sztuczki przestrzeni nazw, aby skrócić wymaganą liczbę.namespace System.Linq{}
lub cokolwiek byś wybrał.Węgiel drzewny ,
69686356 bajtówWypróbuj online!Link jest do pełnej wersji kodu. Wyjaśnienie:
Weź skompresowany ciąg
edyeeebrscckhrpeubivvifa99gohomaamrisiosazemuseypuwhpiorlu
i zapętl nad każdym podciągiem o długości 2.Dla każdego podłańcucha wypisz ciągi wejściowe zawierające ten podłańcuch, chyba że podłańcuch jest
99
, w takim przypadku poszukajlil
zamiast niego. (lilac
jest jedynym kolorem, który nie ma unikatowego dwuliterowego podłańcucha;olive
zawierali
;silver
zawierail
iblack
zawieralac
.fawn
iazure
można go wykryć za pomocą tylko jednej litery, ale to nie pomaga tutaj).źródło
Pyth, 66 bajtów
Wypróbuj online tutaj lub sprawdź jednocześnie wszystkie przypadki testowe tutaj .
Kolory na liście można jednoznacznie zidentyfikować, biorąc znaki za indeks
0
i3
zakładając modułowe indeksowanie. Powoduje to następujące mapowanie:Pełne wyjaśnienie:
źródło
05AB1E , 48 bajtów
Takie samo rozwiązanie jak większość innych odpowiedzi. Spróbuję później zagrać w golfa.
Wypróbuj online lub sprawdź wszystkie przypadki testowe .
Wyjaśnienie:
Zobacz poradę 05AB1E (sekcja Jak kompresować ciągi znaków nie będące częścią słownika? ), Aby zrozumieć, jak
.•Aå₂мÕh∊þèmvƶ\kΛ1YŠíJ>J#θ₁2©€,Ù{η¦ù-•
to jest"rrylgebwsrbcorpcryovvlfnlagdccmvcacmsvrearlorsgyppwtpkonbe"
.źródło