Вызов
Имеется массив целых чисел, полученный из stdin, аргументы функции, аргументы программы или какой-либо другой метод:
Выведите только минимальные и максимальные числа в массиве через возвращаемое значение, стандартный вывод или другие методы подбора.
Пример сеанса
> minmax( {0, 15, 2, 3, 7, 18, -2, 9, 6, -5, 3, 8, 9, -14} )
-14 18
Ссылочная реализация
// C++14
void minmax(std::vector<int> v) {
int min = v[0]; int max = v[0];
for(auto it : v) {
if (*it < min)
min = *it;
if (*it > max)
max = *it;
}
std::cout << min << ' ' << max << std::endl;
}
правила
- Вы не можете использовать встроенную функцию для вычисления значений.
- Стандартные лазейки запрещены.
- Творческие реализации поощряются.
- Это код-гольф , самый короткий ответ выигрывает, но не будет выбран.
Разъяснения
- Если массив содержит 1 элемент, вам нужно вывести его дважды.
- Если минимальное и максимальное значения совпадают, вам необходимо вывести их оба.
code-golf
number
array-manipulation
dkudriavtsev
источник
источник
code golf
Ответы:
Желе , 3 байта
Попробуйте онлайн!
Сортировать массив, а затем взять 0,5-й элемент.
Jelly использует 1-индексирование, а средства индексации с плавающей запятой занимают свое место и свою позицию.
Таким образом, 0,5-й элемент даст вам 0-й элемент и 1-й элемент.
0-й элемент является последним элементом.
источник
Python,
614937363431 байт-12 байт благодаря RootTwo
Еще -12 байт благодаря чепнеру
-2 байта благодаря johnLate
-3 байта благодаря johnLate
источник
[::(len(s)-1)or 1]
для первого индекса. И второй срок можно сократить доs[:len(s)<2]
.lambda s:sorted(s)[:1]+sorted(s)[-1:]
.lambda s:sorted(s)[::len(s)-1]
lambda s:sorted(s)[::len(s)-1]
) не работает для массивов с одним элементом (ValueError: slice step cannot be zero
). Возможное исправление будетlambda s:sorted(s*2)[::len(s*2)-1]
(34 байта).Brain-Flak
220218 байтПопробуйте онлайн!
объяснение
Сначала он удваивает верхнее значение (в списке приведен только один длинный)
Затем он использует мой алгоритм сортировки пузырьков:
Затем он выбирает верхнее значение стека (т.е. минимальное)
Затем он появляется до тех пор, пока высота стека не станет равной единице:
источник
JavaScript (ES6), 34 байта
sort
сортирует на месте, так что я могу просто сослаться на индекс [0] для самого низкого значения иpop
самого высокого значения из массива, однако он выполняет сортировку строк по умолчанию, поэтому я должен передать компаратор.источник
(x,y)=>x-y
часть, если только использованиеsort()
с алгоритмом по умолчанию считается встроенным.sort()
внутренне рассматривает все как строки - извините!Mathematica, 18 байт
Сортирует массив и извлекает первое и последнее значения.
источник
R, 31 байт
Не , что оригинал, но эй!
источник
Машинный код ARM, 26 байтов
Шестнадцатеричный дамп (little endian):
Это функция без системного вызова или зависимости от библиотеки. Кодировка Thumb-2, переменная (2 или 4 байта) кодировка для 32-битного ARM. Как можно себе представить, здесь нет простого способа сортировки и выбора первого и последнего элементов. В целом, здесь нет ничего особенного, это более или менее похоже на эталонную реализацию.
Неуправляемая сборка (синтаксис GNU):
Проверено на Raspberry Pi 3; Вот тестовый скрипт (C99, ввод через argv):
источник
Haskell, 27 байт
В Haskell
min
иmax
приведите минимум и максимум двух аргументов, а не списка. Я не мог сказать, запрещено ли это (кажется, что только вместо этогоminimum
иmaximum
будет запрещено), поэтому, пожалуйста, дайте мне знать, если они есть, и я немедленно удалю этот ответ.источник
Октава, 20 байт
Это сортирует входной вектор и выводит первое и последнее значение.
источник
На самом деле, 5 байтов
Попробуйте онлайн!
Объяснение:
источник
05AB1E ,
64 байтаобъяснение
Попробуйте онлайн
источник
MATL , 4 байта
Попробуйте онлайн!
объяснение
источник
Python, 29 байт
Проверьте это на Ideone .
источник
C
838179 байтисточник
...f(a,s)int*a{...
в этомm,M;f(a,s)int*a;{for(m=M=*a;s--;++a)*a<m?m=*a:*a>M?M=*a:0;printf("%i %i",m,M);}
gcc
вы можете заменить*a>M?M=*a:0
с*a<M?:M=*a
Брахилог , 9 байт
Попробуйте онлайн!
источник
V , 12 байт
Попробуйте онлайн!
Кредит DJMcMayhem для этого.
источник
\o/
Да, я больше не единственный человек, который когда-либо использовал этот язык!CJam,
109 байтовПопробуйте онлайн.
Я действительно не очень хорош в CJam.
источник
0=
(но, к сожалению, это не сохраняет байты). Два других 9-байтовых решения:0W]q~$f=p
или безымянный блок{$2*_,(%}
.q~$(p)p;
. Вы можете использовать,)
чтобы получить последний элемент, как вы используете,(
чтобы получить первый.Python 2, 34 байта
источник
PHP, 44 байта
источник
Обработка
5952 байтаОбработка фактически не позволяет мне читать из стандартного ввода, который я смог найти, и я не знаю, поддерживает ли его внутренний Java-компилятор лямбды (и это было так давно, когда мне приходилось писать серьезную Java, что я надеваю не помню как).
источник
int[]
Perl 6 13 байт
Тестовое задание:
источник
C #, 60 байтов
Наивный метод на 93 байта:
источник
POSIX Awk, 44 байта
источник
Октава , 35 байт
Это анонимная функция. Попробуйте в Ideone .
Код избегает использования сортировки. А именно, он выполняет все попарные сравнения «меньше или равно» между элементами ввода. Минимум - это элемент, для которого все сравнения верны. Максимум - это то, для которого верно только одно сравнение.
источник
Python,
3534 байтаАльтернативная версия:
Старая версия, 35 байт.
Довольно просто: взять входной список, добавить первый элемент, отсортировать его, затем взять первый и (длинный) элемент в результирующем списке. Поскольку длина ввода после добавления элемента равна длине + 1, это заканчивается тем, что он берет первый и последний элемент указанного списка, которые являются минимальным и максимальным элементами.
источник
zsh, 22 байта
определяет лямбда-функцию, которая печатает свой первый arg (
$1
) и последний аргумент предыдущей команде ($_
) и передает ее$@
после сортировки, чтобы предыдущая команда стала вызовом этой лямбдызш, 21 байт
это работает нормально только если есть более 1 аргумент :(
сортирует
$@
, делает его строкой и заменяет все от первого пробела до последнего одним пробелом, а затем передает его в качестве входных данных для<<<
использование:
источник
Скала, 55 байт
Выполнить:
$ scala minmax.scala 1 2 3 4 5 6 7 8 9
источник
Bash + coreutils, 30 байт
Скрипт sed печатает после сортировки ввода первое и последнее целые числа.
источник
постоянный ток, 110 байт
Помоги мне,
dc
эрс! Ты моя единственная надежда!Спасибо @seshoumara за то, что нашли эту ошибку!
Я добавлю объяснение позже. Здесь это немного разбито:
источник
M
иm
. Но если в списке ввода ни одно число не меньшеm=0
или нет больше, чемM=0
, то вы получите неправильный результат, потому что вы искусственно добавили 0 к номерам выборки. Решение состоит в том, чтобы заменить этот первый 0 на?d
, который считывает числа и инициализирует,M
иm
на последний номер, что делает его частью выборки. Затем запустите код следующим образом: echo "8 _2 5" | dc -e "? DdsMsm ....".Java, 115 байт
Ungolfed:
Мое первое в истории решение для игры в гольф.
источник