В стандартных лазейках запрещено следующее :
Утверждая, что ваш ответ написан в «MyOwnLanguage», где команда
x
означает «прочитать последовательность чисел, разбить их на группы по три и вывести последние номера тех групп, где второе число меньше первого»
Здесь мы собираемся сделать то же самое.
задача
Учитывая последовательность натуральных чисел, длина которой делится на 3, разбейте их на группы по три и выведите последние числа из тех групп, где второе число меньше первого.
Testcases
Input Output
[] []
[1,2,3,4,5,6,7,8,9] []
[2,1,3,5,4,6,8,7,9] [3,6,9]
[3,1,4,1,5,9,2,6,5] [4]
[100,99,123] [123]
[123,123,456] []
[456,123,789] [789]
счет
Это код-гольф . Кратчайший ответ в байтах побеждает.
Применяются стандартные лазейки , поэтому не забывайте иметь встроенную команду, x
которая выполняет эту задачу.
code-golf
arithmetic
array-manipulation
Дрянная Монахиня
источник
источник
MyOwnLanguage
и добавитьx
команду ...: Px
функцию, специально выполняющую эту функцию.p
, могу ли я его использовать?Ответы:
Октава, 32 байта
Попробуйте онлайн!
или же
Проверьте контрольные примеры!
источник
Желе ,
98 байтПопробуйте онлайн!
Как это устроено
источник
Haskell,
3029 байтМоя первая попытка игры в гольф на Haskell, так что, возможно, я пропустил оптимизацию или два
-1 байт благодаря @JulianWolf
источник
x d=d
может сэкономить вам байтMathematica, 37 байт
Предполагая, что это удовлетворяет спецификации, ngenisis получает кредит за этот подход, ведущий к экономии 1 байта!
Чистая функция.
BlockMap[...,#,3]&
разбивает входной список на подсписки длиной 3, а затем работает с каждым подсписком с помощью функцииIf[#>#2,Print@#3]&@@#&
. В результате печатается каждый последний соответствующий номер. Функция также возвращает значение (а именно, список наNull
треть от длины списка ввода), что, по-видимому, является допустимым поведением.Mathematica,
4238 байтСпасибо Мартину Эндеру за сохранение 4 байта!
Чистая функция.
#~Partition~3
делает то, что ты думаешь.Cases[X,P:>Q]
выбирает все элементы,X
соответствующие шаблонуP
, и возвращает результат правила преобразования,:>Q
примененного к каждому экземпляру. Здесь сопоставляемый шаблон{a__,b_}/;a>0
:b_
будет соответствовать последнему элементу списка иa__
всем другим элементам (в данном случае, первым двум); позвони имy
иz
пока. Затем подлыйa>0
расширяетсяy>z>0
, и это тест, который мы хотим применить (действительный, потому что спецификация говорит, что все будет положительным целым числом). И есть правило преобразования:>b
, которое просто заменяет каждую совпадающую упорядоченную тройку своим последним элементом.Исходное представление:
Чистая функция; в значительной степени простая реализация, кроме
#.{1,-1,0}
которой вычисляется разница между первым и вторым элементами каждого 3-элементного подсписка.источник
#>#2&@@#&
короче. Но в целом это все еще короче, чтобы использоватьCases
вместоSelect
:Cases[#~Partition~3,{a__,b_}/;a>0:>b]&
a>0:>
в нем есть два вида магии!BlockMap
дразнит здесь.BlockMap[If[#>#2,#3,Nothing]&@@#&,#,3]&
работает и только 39 байт ... мы можем сохранить пару байтов?BlockMap[If[#>#2,Print@#3]&@@#&,#,3]&
возможно , удовлетворяет спецификацииPyth, 10 байт
Тестирование
источник
R 35 байт
источник
Брахилог (2), 14 байт
Попробуйте онлайн!
Brachylog скорее борется с такой проблемой. Обратите внимание, что эта программа имеет ужасную вычислительную сложность, так как она грубой силой разделяет входные данные на группы по 3 (без встроенной функции «разбить на группы»); он работает быстро с четырьмя группами, но очень медленно с пятью.
объяснение
источник
l÷₃;?ḍ₍
это более быстрая альтернатива./
не÷
; они эквивалентны здесь), но это был байт длиннее, поэтому я отбросил его, играя в гольф.J , 14 байт
Это дает монадический глагол. Попробуйте онлайн!
объяснение
источник
Алиса ,
1211 байтСпасибо Лео за сохранение 1 байта.
Попробуйте онлайн!
Использует кодовые точки строки в качестве списка ввода и выводит символ, соответствующий выводам, которые следует сохранить.
объяснение
источник
r
вместоex
. TIO05AB1E , 8 байтов
Код:
Использует кодировку 05AB1E . Попробуйте онлайн!
источник
постоянный ток , 30 байтов
Ввод / вывод: один номер в строке.
источник
Perl 5 , 31 байт
30 байт кода +
-p
флаг.Попробуйте онлайн!
Заменяет каждую группу из 3 чисел (
\d+ (\d+) (\d+)
) на третью ($2
), если секунда ($1
) меньше первой ($&
), и ничто иное.источник
CJam , 15 байтов
Анонимный блок, который ожидает аргумент в стеке и оставляет результат в стеке.
Попробуйте онлайн! (Запускает все тестовые случаи)
объяснение
источник
Brain-Flak , 82 байта
Попробуйте онлайн!
источник
Желе , 10 байт
Попробуйте онлайн!
или же
Проверьте контрольные примеры
-3 байта благодаря @LeakyNun
объяснение
источник
s3µṪ×>/µ€ḟ0
s3µṪWx>/µ€
R, 37 байт
Версия с
scan()
которой мне не нравится, но она делает ее короче.Версия с
function()
которой легче тестировать (41 байт)Спасибо @Giuseppe! Хорошая идея использовать переработку индекса.
Контрольная работа:
Выход:
источник
x
из stdin, используяx=scan()
в начале вместо определения функции, вы также можете просто установить,i=c(1,2,0)
так как логические индексы будут переработаны, т. е.x=scan();i=c(1,2,0);x[!i][x[i>1]<x[i==1]]
x=scan()
подход, поскольку он делает ввод очень громоздким. И я не могу сделать это повторяемым тогда.matrix()
но почему-то я не верил, что можно будет сделать так коротко.JavaScript (ES6),
4644424139 байтПопробуй
Введите разделенный запятыми список чисел без пробелов.
объяснение
источник
y%3>1&a[y-1]<a[y-2]
?Шелуха , 8 байт
Попробуйте онлайн!
объяснение
Эта программа немного вовлечена, так что терпите меня.
Функция
ΓȯΓ↑<
принимает список длиной 3x = [a,b,c]
,. ПервыйΓ
разделяетсяx
наa
и[b,c]
и передает их в качестве аргументов функцииȯΓ↑<
. Это должно быть эквивалентно((Γ↑)<)
, но из-за ошибки / возможности интерпретатора, это фактически эквивалентно(Γ(↑<))
, интерпретируется как композицияΓ
и↑<
. Теперь передаетсяa
последней функции с использованием частичного применения, результирующей функции↑<a
присваиваетсяΓ
, которая деконструирует[b,c]
вb
и[c]
. Затемb
подается на↑<a
, в результате чего функция, которая берет первыеb<a
элементы из списка. Эта функция наконец применяется к[c]
; результат[c]
еслиa>b
и[]
в противном случае. Эти списки объединяютсяṁ
для формирования окончательного результата, который печатается неявно.Без «фича» у меня было бы 9 байтов:
источник
Python 3 ,
4342 байта1 байт благодаря xnor.
Попробуйте онлайн!
источник
MATL , 10 байт
Результат отображается в виде чисел, разделенных пробелами.
Попробуйте онлайн!
Или проверьте все тестовые случаи . Это отображает строковое представление вывода, так что пустой массив фактически рассматривается как
[]
. Обратите внимание, что в MATL число совпадает с одноэлементным массивом, поэтому[4]
отображается как4
.объяснение
источник
Röda , 15 байт
Рода почти такая же короткая, как и языки для игры в гольф ...
Это берет три значения из потока и
_3
возвращает третье ( ) обратно, если second (_2
) меньше первого (_1
).Подчеркивания являются синтаксическим сахаром для
for
циклов, поэтому программа может быть написана как{{[a]if[b<c]}for a,b,c}
или даже{[a]for a,b,c if[b<c]}
.Нет ссылки на TIO, потому что она по какой-то причине не работает на TIO (хотя работает с последней версией Röda, которая предшествовала этой проблеме).
источник
Java 7,
8685 байт-1 байт благодаря @ PunPun1000
Объяснение:
Попробуй это здесь.
источник
3,9
для тестового примера1,2,3,4,5,6,7,8,9
вместо3,6,9
).C #, 126 байт
Если вам нужна целая программа с методом, это будет 175 байт :
Сохранено 7 байт с помощью TheLethalCoder
источник
(int[]i)
может просто не бытьi
необходимости в типе.(i)
.Python 2 , 57 байт
Попробуйте онлайн!
источник
CJam , 16 байтов
Вывод отображается в виде чисел, разделенных пробелами.
Попробуйте онлайн!
объяснение
источник
PHP, 89 байт
Попробуйте онлайн!
источник
JavaScript,
108107108 байтЭто действительная анонимная (лямбда) функция JS. Добавить
x=
в начале и вызвать какx([5,4,9,10,5,13])
. Выходы как функцияreturn
.Фрагмент принимает входные данные как список целых чисел через запятую.
источник
martin
и вdennis
качестве идентификатора?[5,4,9,10,5,13]
.,
привело к тому, что она стала массивом строк, а не чисел! Решение прекрасно. Только фрагмент теста был неправильным. Я исправил это сейчас. Спасибо что подметил это! :)Perl5.8.9,
7360 байт(58 + 2 для флага 'n', чтобы прочитать весь файл и для автоматического разделения). Предполагается, что входные данные представляют собой строки чисел, разделенных пробелами
Снижение благодаря Дада. Включая печать в конце для видимости, это сэкономило бы 8 байт, если нет.
источник
print"\n"
в конце. Кроме того, вы можете сделать,$b[1]<$b[0]&&print"$b[2] "while@b=splice@a,0,3
чтобы сохранить 7 байтов. Наконец, вы можете использовать-a
флаг вместо выполнения@a=split
(он будет делать то же самое автоматически и сохранять результат@F
вместо@a
); с Perl 5.8.9 вам понадобится, в-na
то время как с последними Perls-a
достаточно. Это должно привести вас к 47-48 байтам.Clojure, 43 байта
Скучно: /
источник
Баш , 61 байт
Попробуйте онлайн!
источник