Возьмите два ввода, непустой вектор / список, содержащий цифры 1
и 2
строку (нет, вы не можете взять 0/1
вместо этого). Строка будет одной из следующих (в нижнем регистре, точно так, как написано ниже:
increasing
decreasing
ones
twos
all
none
Если строка ____, вы должны вернуть индексы ___:
increasing
... где список меняется с1
на2
(все,2
что следует сразу после a1
)decreasing
... где список меняется с2
на1
(все,1
что следует сразу после a2
)ones
... из всех цифр, которые1
twos
... из всех цифр, которые2
all
... все цифрыnone
... ни одна из цифр.0
хорошо, если список 1-индексирован. Отрицательное число хорошо, если список индексируется 0. Вы также можете вывести пустой список или строку.
Тестовые случаи:
Это 1-индексированные. Вы можете выбрать, хотите ли вы 1-индексированный или 0-индексированный. Одни и те же векторы используются для разных строк в тестовых случаях.
--------------------------------
Vector:
1 1 2 2 2 1 2 2 1 1 2
String - Output
increasing - 3, 7, 11
decreasing - 6, 9
ones - 1, 2, 6, 9, 10
twos - 3, 4, 5, 7, 8, 11
all - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
none - 0 / []
------------------------------------
Vector:
1
String:
ones - 1
all - 1
decreasing / increasing / twos / none - 0 / []
счет
Как это Код-гольфответ с наименьшим количеством байтов выигрывает.
Ответы:
JavaScript (Firefox 30-57),
7473 байтаПонимание массива - это аккуратный способ объединения
map
иfilter
за один раз. Редактировать: 1 байт сохранен благодаря @ edc65.источник
Python 2 ,
13613111910897 байтlambda
функцию.enumerate()
вместоrange(len())
.0
-indexing (как в ответе TFeld ) и играя"adinot".find(m[0])
в гольф наord(m[0])/3-32
.Попробуйте онлайн!
источник
1
или2
, вы можете изменить(l[j]>1)*(l[~-j]<2)
в(l[j]>l[~-j])
течение 119 байт1
-indexed.enumerate()
Python 2 ,
117111110999792 байтаПопробуйте онлайн!
0
-indexedПерешел с помощью индексации Джонатана , и golfed
ord(m[0])/3-32
кord(t[0])/3%7
источник
l[i]==2
в гольф наl[i]>1
.Haskell ,
1128381 байтПопробуйте онлайн! Пример использования:
"increasing"%[1,1,2,1,2]
. Результаты 1-индексированы.Отчасти вдохновлен ответом Линн на Хаскелл .
источник
MATL ,
32313029 байтВывод на основе 1 или пустой.
Попробуйте онлайн!
объяснение
Код вычисляет шесть возможных выходных данных для массива, а затем выбирает соответствующий выход в зависимости от ввода строки.
Чтобы выбрать вывод, добавляются кодовые точки ASCII всех символов ввода строки. Результат по модулю 9 дает
6
,1
,5
,2
,7
,0
соответственно'increasing'
,'decreasing'
,'ones'
,'twos'
,'all'
,'none'
. Поскольку все полученные числа различны, это может быть использовано в качестве критерия выбора.Вместо того, чтобы фактически выполнять операцию по модулю 9 над суммой, список возможных входов расширен до 9 записей (некоторые из которых являются фиктивными), и поэтому индексация в этом списке автоматически выполняется по модулю 9.
источник
Python 2 , 92 байта
Попробуйте онлайн!
источник
Желе , 27 байт
Попробуйте онлайн!
-3 спасибо Джонатану Аллану .
источник
0
была самой нижней ссылкой, но, видимо, этоÇ
немного странно, спасибо! (также я только что выучил новое слово: p)Шелуха , 27 байт
Попробуйте онлайн!
-9 спасибо H.PWiz .
Я очень горжусь этим ответом.
источник
ΘẊ>
иΘẊ<
и`fN
0
является последним элементом.¨₆Żσa¨
вместо этого будет сжатая строка , поэтому я не использовал эту функцию, спасибо. И теперь я могу сказать, что это связывает Желе .Java (OpenJDK 8) ,
266217213205172171155131 байтПопробуйте онлайн!
источник
y
какchar
вы можете испытанию гольф равенства нравитсяy.equals("a")
вy=='a'
,y==97
или дажеy<98
.19
этоc
самое высокое значение,c==19
равноc>18
.s->a->{int i=0,l=0,c=s.charAt(0)-97;for(int e:a){if(++i>1&(c==8&e>l|c==3&e<l)|c==14&(l=e)<2|c>18&l>1|c<1)System.out.print(i+",");}}
Jq 1,5 , 131 байт
Основан на подходе xcali , поскольку сопоставление строк короче, чем моя версия массива.
Предполагается, что JQ вызывается с
-Rs
параметрами, и ввод отображается в двух строках, напримерExpanded:
Попробуйте онлайн!
источник
Haskell , 91 байт
Попробуйте онлайн!
Лайкони спас байт.
источник
(i,y,x)<-zip3[1..]l$l!!0:l
.J, 73 байта
Было бы любопытно увидеть, как это может быть значительно сокращено - я верю, что это возможно (10 символов только для всех этих пунктов повестки дня!)
g
- глагол-помощник для увеличения и уменьшения, что равносильно сравнению значений инфиксных\
прогонов размера 2@.
Попробуйте онлайн!
источник
1=]
и2=]
не работает? Кроме того, что, еслиg
взять число в качестве левого аргумента и список в качестве правого аргумента и вернуть индексы, которые2-/\
применяются к списку, равняются левому аргументу. Таким образом, вы можете пропустить это_1
или1
найти уменьшение и увеличение вместо использования наречий.Java 8,
233229216 байтЭтот строковый подход закончился дольше, чем я ожидал. Но даже подумав, что я остался в стороне от другого ответа на Java 8 , я решил опубликовать его в любом случае.
Это может определенно быть в гольфе, даже при таком подходе. «Нет» и «увеличение / уменьшение» в основном вызывали обходной путь, который стоил несколько байтов.
Результат 1-индексирован.
Объяснение:
Попробуй это здесь.
источник
Perl 5 , 71 + 2 (
-nl
) = 73 байтаПопробуйте онлайн!
Пересмотренная логика фактически такая же, как в приведенном ниже объяснении, но совпадения шаблонов были сокращены.
Ранее:
Попробуйте онлайн!
Ничего не выводится, если критерии не совпадают.
Разъяснение:
источник