Вызов
Учитывая список уникальных названий цветов в качестве входных данных, сортируйте их в порядке, в котором они сначала появляются в Amazing Technicolor Dreamcoat Джозефа .
пример
Input: green, blue, red, brown
Output: red, green, brown, blue
Полный список цветов по порядку:
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
Или как массив строк:
["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"]
правила
- Вы можете принимать ввод любым разумным и удобным способом (например, массивом строк, строкой с разделителями, отдельными строками), если это разрешено нашими стандартными правилами ввода / вывода , но, пожалуйста, укажите свой метод ввода в своем ответе.
- Вы можете сделать то же самое для вашего вывода.
- На входе будут только цвета из приведенного выше списка.
- Ваше решение должно быть в состоянии обрабатывать пустые входы.
- Вы можете выбрать, будут ли все слова на входе последовательно прописными, строчными или заглавными, но регистр вашего вывода должен совпадать с регистром ввода.
- Это код-гольф, поэтому выигрывает наименьшее количество байтов на каждом языке.
- Как всегда, стандартные лазейки запрещены.
Контрольные примеры
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
мохнатый
источник
источник
Ответы:
PowerShell ,
26215515112712595 байтПопробуйте онлайн!
Наивный подход.PowerShellsort-object
может выполнять сортировку на основе блока скрипта, который выполняется для каждого объекта. Здесь мы просто получаем.IndexOf()
цвет из строки, которая присваивает числовое значение каждому цвету, а затем сортирует на основе этих чисел. Строка состоит из четвертой и первой букв каждого цвета, чтобы обеспечить уникальность. Вывод неявный.-4 байта благодаря Шегги.
-2 байта благодаря маззи.
Колоссальные -30 байтов благодаря KGlasier.
источник
green grey
происходит в правильном алфавитном порядке..IndexOf()
что вернется,-1
если строка не найдена, что сортируетred
в правильном порядке. Благодарность!JavaScript (SpiderMonkey) ,
106 105104 байта«Если есть сомнения, просто хэш кровавый вклад».
Попробуйте онлайн!
источник
%99%55
, не лучше, чем%123%55
при таком подходе). Так что это, безусловно, неоптимально. Я могу попробовать что-то более сложное позже.Желе , 28 байт
Попробуйте онлайн!
Как это работает
µ
превращает все влево в монадическую цепочку, котораяÞ
отображает входной массив и сортирует входные данные в соответствии с сгенерированными значениями.“½Ṗ©cƘʂẒẹMMỤẓHP’
устанавливает возвращаемое значение 176073885534954276199526358143331.Œ?
“ðÑþQ’
выходы 391695582;,
добавляет его к перестановке. Затемḥ
вычислите 391695582- ю хеш-функцию Джелли , сопоставив получившиеся сегменты с целыми числами перестановки.Магическая константа 391695582 была найдена утилитой Желе .
источник
Python 3 , 93 байта
Попробуйте онлайн!
Читает каждый цвет как основание-36
int
. Брут-форс модули и выбрал произвольное смещение среди 19, которые не требуют побегов.источник
Powershell,
124120124119118102 байтаПопробуйте онлайн!
Объяснение:
Строка данных содержит первые значащие буквы цветовых меток в порядке убывания. За исключением
Grey
этикетки -G*y
короче.-csplit'(?=[A-Z])'
разбивает строку данных на массив(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"$_*"}
отображает массив строк в массив логических значений. ГдеTrue
означает «цветовая метка начинается с этой строки» (например, оператор без учета регистра, csplit - с учетом регистра. См. Документ ).sort{}
сортирует цветные метки по массивам логических значений в порядке возрастания .Сортировка по массиву - очень интересная функция в Powershell. В этом сценарии все массивы имеют одинаковую длину и содержат только логические значения. Эта сортировка выполняется в лексографическом порядке булевых массивов.
Поэтому строка может содержать однобуквенные сокращения для последних меток. Если есть совпадение в начале массива, совпадения в конце не имеют никакого эффекта.
Где
T
этоtrue
и-
естьfalse
.Тестовый скрипт:
Выход:
источник
This site can’t be reached
ошибка. Сожалею.Я улучшу сжатие строк через некоторое время
Japt ,
887871 байтПопробуйте онлайн!
источник
Wolfram Language
255 213199 байтЧетырнадцать байтов спасен Деннисом, который избегал «отметок», используя символы вместо строк.
Попробуйте онлайн!
источник
Python 2 , 186 байт
Попробуйте онлайн!
Находит все совпадения для прогрессивных символьных подстрок (например, «green» проверит наличие «g», «gr», «gre», «gree» и «green») в строке идентификатора и сохраняет максимальный индекс. «red» всегда первый, anf find () возвращает -1 для пропущенных совпадений, поэтому для красного нет идентификатора.
Как только цвета превращаются в пары (индекс, цвет), сортирует массив по первому элементу пары, а затем отбрасывает первый элемент каждой пары.
источник
Python 3 , 130 байт
Попробуйте онлайн!
источник
ca
является подстрокойcca
для шоколадного масла.C # (интерактивный компилятор Visual C #) ,
321219210161159138 байтПопробуйте онлайн!
-3 байта благодаря Shaggy, -18 благодаря TheLethalCoder
Принимает вход как
List<string>
, возвращаетIOrderedEnumerable<string>
Как это работает, так это то, что он упорядочивает список по индексу каждой строки в исходной строке. Оригинальная строка имеет все цвета, кроме серого, превращенного в первые три буквы. Серого там нет, так как зеленый и серый вызовут двусмысленность. Красного там тоже нет, так как
IndexOf
возвращает -1, если строка не появляется.Укороченная версия, принимающая IOrderedEnumerable в качестве входных данных, 137 байт
Использует тот факт, что
ThenBy
он на 1 байт корочеOrderBy
, ноThenBy
работает только наIOrderedEnumerable
s.Попробуйте онлайн!
источник
red
из строки поиска и заменить68
на,65
чтобы сохранить 3 байта. На моем телефоне, так что еще не полностью протестировал его.n=>n.OrderBy(a=>a!="grey"?"redyelgrebroscablaochperuboliviofawlilgolchomaucrecrisilrosazulemruspurwhipinorablu".IndexOf(a.Substring(0,3)):68);
Однако вам необходимо включитьusing
s в ваш счетчик байтов, так как они необходимы для выполнения. Вы можете использовать трюк пространства имен, чтобы сократить необходимое количество.namespace System.Linq{}
или что бы вы ни выбрали.Древесный уголь ,
69686356 байтПопробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
Возьмите сжатую строку
edyeeebrscckhrpeubivvifa99gohomaamrisiosazemuseypuwhpiorlu
и обведите каждую подстроку длиной 2.Для каждой подстроки выведите те входные строки, которые содержат эту подстроку, если только не подстрока
99
, в этом случае ищитеlil
вместо этого. (lilac
это единственный цвет, который не имеет уникальной двухбуквенной подстроки;olive
включаетli
;silver
включаетil
иblack
включаетlac
.fawn
иazure
может быть обнаружен с использованием только одной буквы, но здесь это не поможет.)источник
Pyth, 66 байт
Попробуйте онлайн здесь или проверьте все тестовые примеры сразу здесь .
Цвета в списке могут быть однозначно идентифицированы путем взятия символов в индексе
0
и3
при условии модульной индексации. Это приводит к следующему отображению:Полное объяснение:
источник
05AB1E , 48 байтов
То же решение, что и большинство других ответов. Постараюсь сделать это позже.
Попробуйте онлайн или проверьте все контрольные примеры .
Объяснение:
См. Этот совет 05AB1E (раздел Как сжимать строки, не являющийся частью словаря? ), Чтобы понять, как
.•Aå₂мÕh∊þèmvƶ\kΛ1YŠíJ>J#θ₁2©€,Ù{η¦ù-•
это происходит"rrylgebwsrbcorpcryovvlfnlagdccmvcacmsvrearlorsgyppwtpkonbe"
.источник