Конечно, сеть SE очень хорошо осведомлена о том, как быть уважительным в туалете, но для тех из вас, кто нуждается в подведении итогов, уважительное отношение означает смывание туалета и т. Д. Самое главное, тем не менее, это означает использование кабинки как можно дальше от других, насколько это возможно.
Соревнование
Учитывая план набора киосков с указанием того, какие из них используются в качестве строки, вы должны вернуться или распечатать из функции или программы, где наиболее уважительным местом для вашего бизнеса является.
Вход
0 1 2 3 4 5 <- The stall number which is not actually visible in the input.
| | |-| |-|-| <- the stalls
Киоски пронумерованы в порядке возрастания слева направо. Там всегда будет хотя бы один пустой ларек. На входе может быть до 50 киосков. Вы также можете принять входные данные в виде массива или строки 0
s и 1
s или логических значений, если вы предпочитаете это делать.
В них есть киоски -
(между трубами).
Выход
Самым уважаемым киоском, который стоит посетить, является тот, который в среднем находится дальше всего от используемых. Расстояние между двумя киосками является абсолютной величиной разности чисел над ними.
Просто чтобы прояснить: вы находите среднее расстояние от всех киосков, а не только от соседних.
Вы должны вывести наименьшее число самых уважительных киосков, чтобы перейти к пустым .
Примеры
Input:
|-| |-| OR 101
Output:
1
Input:
| | |-| |-|-| OR 001011
Output:
0
Input:
|-| |-| | | | |-|-| OR 101000011
Output:
1
Input:
|-| | | | | |-|-| | | | | OR 100000110000
Output:
11
Input:
|-|-|-|-| | | | | | |-| OR 11110000001
Output:
9
Input:
|-| | OR 10
Output:
1
Input:
|-| | |-| OR 1001
Output:
1
Это код-гольф , поэтому выигрывает самый короткий код в байтах!
Вы можете использовать 0 или 1 на основе индексации в вашем ответе - что вы предпочитаете; если вы используете индексирование на основе 1, то вы должны прямо указать это в своем ответе.
[1,0,0,1]
в качестве контрольного примера. Ни один из текущих тестов не проверяет, правильно ли нарушены связи.101000011
возвращается 1 (вместо 4 или 5)?Ответы:
Желе ,
109 байтИспользует индексирование на основе 1. Попробуйте онлайн! или проверьте все контрольные примеры .
Как это работает
источник
Swift,
158, 157, 128,100 байтПринимает входные данные из
Array<Bool>
переменнойi
, возвращает ответ из последнего выражения.Изменить 1:
Сохранение байта путем преобразования в bools с помощью сравнения строк
Изменить 2:
Переработан мой алгоритм:
Изменить 3:
Воспользовался новым правилом, которое позволяет получать входные данные непосредственно из логического массива.
Ungolfed:
источник
Желе , 13 байт
1-индексироваться.
Попробуйте онлайн!
Алгоритм
Наивная реализация вопроса.
источник
Ява "только"
270 200 196 187 196 138 148146 байт!спасла
4 13бесчисленных байтов благодаря Leaky Nun!1 байт благодаря MichealGolfedUngolfed
input как логический массив, где true подразумевает открытый ларек.
источник
a
.Рубин,
797876 +n
флаг = 77 байтВывод индексации на основе 0. Вводом является строка STDIN, состоящая из 0 и 1.
источник
0...~/$/
хороший трюк JMATL , 14 байтов
Попробуйте онлайн!
Выход основан на 1.
объяснение
источник
Perl 84 + 3 (
-alp
флаги) = 87 байтНужны
-alp
флаги для запуска. Принимает строку из 1 и 0 через пробел в качестве входных данных. Например :Обратите внимание, что я добавил
$m=0
в начале, но это только для проверки нескольких записей.источник
+7
:F'' alp
.-
с не учитываются.Matlab, 87 байт
Принимает множество единиц и нулей; использует индексирование на основе 1.
Как и некоторые другие ответы максимизирует общее, а не среднее расстояние.
Возможно, есть еще возможная игра в гольф ...
источник
JavaScript (ES6),
87868275 байтПринимает логический массив (true / false или 1/0). Нет смысла вычислять среднее расстояние, так как все они используют один и тот же общий коэффициент, поэтому просто вычислите общее расстояние для каждого киоска и найдите первый индекс самого высокого. Редактировать: 1 байт, используя
*
вместо&&
. Сохранение 5 байт путем нахождения наибольшего расстояния вручную на основе комментария @Dendrobium. Сохранение 7 байтов путем повторного использованияu
в качестве псевдоредуцирующего аккумулятора на основе комментария @ edc65.источник
a=>(x=0,a.map((o,i)=>x<(t=a.reduce((r,u,j)=>r+(b=i-j)*b*u*!o,0))&&(x=t,r=i)),r)
reduce
вместоmap
-s=>s.map((u,i)=>u||(s.map((w,j)=>u-=w*Math.abs(j-i)),u<x&&(x=u,r=i)),x=0)|r
1100011101
связей в2
и8
при использовании абсолютного,8
при использовании квадрата), не то, чтобы это имело значение, так как кажется, что правила были уточнены, и теперь связи разрешены с самым левым киоском ...J, 27 байт
Онлайн переводчик .
источник
Рубин,
8776 байтБыстро скомбинировал этот первый черновик, но тем временем Value Ink уже опубликовал 80-байтовый ответ Ruby ...
редактировать: снял несколько байтов с помощью Value Ink:
Это анонимная функция, которая принимает массив истинных / ложных значений, например, так:
источник
(r=0...a.size)
а затем карту на том , что вместо использованияwith_index
:r.map{|j|a[j]?(i-j).abs: 0}
. Это должно получить 78 байт.Mathematica, 53 байта
Использует индексирование на основе 1 и принимает входные данные в виде списка нулей и единиц.
источник
Javascript ES6 -
989591868488 байтИзменить: Кажется, что в случае ничьей следует использовать крайний левый стойло. Квадратные расстояния больше не работают, возвращаются к абсолютному расстоянию.
Ungolfed:
Тестовые прогоны:
источник
Lua,
165150 ByesЭто немного обманывает, используя тот факт, что обычно lua передает таблицу с именем arg, содержащую любые входные данные командной строки.
Я немного разочарован тем, что использовал цикл for in, но я не мог придумать иного способа, как это осуществить.
Кроме того, поскольку использовалась индексация на основе lua, 1.
Отредактировано 15 байт из расточительного gsub.
источник
C #, 127 байт
Испытательный стенд
источник