Добро пожаловать в ваш первый день в PPCG Inc. Как наш новый сортировщик документов для младших помощников, вы несете ответственность за то, чтобы все документы, которые мы отправили вам, были заархивированы в алфавитном порядке. Это так просто, обезьяна может это сделать. Ну, образно говоря, как мы наняли обезьяну, чтобы сделать это. Угадай, что? Оказывается, обезьянам не хватает понимания нашего алфавита. Во всяком случае, сейчас нет времени, чтобы исправить беспорядок, так что просто постарайтесь не усугубить ситуацию, хорошо? Тогда доберитесь до этого! Если вы проголодались, у кулера с водой есть бананы. Удачи!
Описание вакансии
вход
- Вы получите список строк (архив) и строку, которую необходимо добавить в этот список (документ)
- Все строки будут содержать только заглавные буквы, строчные буквы и пробелы
- Строки всегда начинаются и заканчиваются буквой
задача
Определите целевую позицию документа: позицию, которую он должен получить в архиве. Целевая позиция может быть определена следующим образом:
- Для каждой позиции:
- Подсчитайте количество строк в архиве до той позиции, которые расположены в алфавитном порядке перед документом
- Подсчитайте количество строк в архиве после этой позиции, которые расположены в алфавитном порядке после документа
- Определите счет позиции как сумму двух вышеупомянутых пунктов.
- Целевой позицией документа является позиция с наивысшим баллом
- В случае ничьей все позиции с наибольшим количеством очков одинаково действительны как целевая позиция. Только один должен быть выбран.
При сортировке:
- Прописные и строчные буквы эквивалентны
- Пробелы идут перед буквами
Выход
- Архив с добавленным в него документом в любой форме
ИЛИ
- Целевая позиция документа, в индексе на основе 0 или 1
Оценка работы
Побеждает несколько байтов!
Пример ввода / вывода
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
Ответы:
JavaScript (ES6), 81 байт
Ungolfed:
Редактировать: Сохранено много байтов благодаря @ user81655.
источник
indexOf
переменной результата, которая устанавливается во время карты, также будет короче.Pyth,
4038 байтКредиты @Katenkyo за то, что научили меня, что
A xnor B
в основномA==B
. (A xor B
такжеA!=B
)Попробуйте онлайн!
Как это устроено:
Он суммирует XNOR того, меньше ли запись, чем документ, и меньше ли индекс записи, чем индекс документа.
Он находит позицию, в которой эта сумма является максимальной, а затем выводит ее.
источник
Python 3,
135167 байтисточник
Рубин, 97 байт
Анонимная функция, возвращает целевую позицию.
При фактической вставке в архив 110 байтов :
источник
Pyth,
54524745 байтОжидаемый ввод - это список, первый элемент - список строк (архив), второй элемент - строка (документ)
Тест здесь
источник
0
если я правильно читаю ваш код, это может сэкономить вам место["Applebuck Season","Friendship is Magic","The Ticket Master","Griffon the BrushOff","Boast Busters","Bridle Gossip"]\n "Dragonshy"
качестве ввода и использованиеE
вместо@Q0
и@Q1
может сэкономить четыре байта.AQ
вместоJ@Q0K@Q1
.MATL , 32 байта
Входные данные - это массив ячеек строк (несколько строк, разделенных пробелами и заключенных в фигурные скобки) для архива, и строка для документа. Выход основан на 1. В случае галстука возвращается первая позиция.
Попробуйте онлайн!
объяснение
источник