Эта проблема связана с пятью проблемами программирования, которые должен решить каждый инженер-программист менее чем за 1 час, что само по себе интересно. Первые несколько проблем тривиальны, но четвертая может быть немного интереснее.
Учитывая список целых чисел, разделенных одним пробелом на стандартном вводе, выведите наибольшее и наименьшее значения, которые можно получить путем объединения целых чисел в отдельной строке.
Например:
Входные данные:
5 56 50
Выход:
50556
56550
Различные пункты заказа:
- Порядок результатов наименьший, чем наибольший.
- Могут быть распечатаны только самые маленькие и самые большие значения (итерации по всем вариантам и их распечатка недопустимы).
- В списке всегда будет два или более целых числа.
- Возможно, что самые большие и самые маленькие результаты будут одинаковыми. В случае ввода
5 55
номер555
должен быть напечатан дважды. - Целые числа не обязательно различны.
5 5
допустимый вход. - Ведущие
0
с целыми числами не являются допустимыми входными данными. Вам не нужно будет учитывать05 55
.
Поскольку это код гольф, выигрывает самый короткий вход.
05
), мы рассматриваем это как05
или просто5
?Ответы:
CJam,
1413 байтовДовольно прямо вперед. Вот как это работает:
Попробуйте онлайн здесь
источник
e!
существовал (даже не появляется в вики).Pyth,
1413 байтовГенерирует все перестановки и сортирует их, печатая первый и последний элемент.
источник
J
hJSmsd.pcz)eJ
Python 2,
10499 байтАга.
Редактировать: спасибо xnor за -5 байтов!
источник
sorted
работает без скобок, но вы также можете избежать сортировки и просто взятьmin
иmax
.Mathematica,
6458 байтЭто определяет безымянную функцию, принимающую строку и печатающую две строки. Это довольно просто, как и другие: получить все перестановки, объединить их, отсортировать и распечатать первый и последний результат.
Шесть байтов спасены благодаря алефальфе.
источник
{#&@@#,Last@#}
=>#[[{1,-1}]]
JavaScript (ES6)
54 7285Это проще, чем кажется. Просто рассортируйте их лексикографически. Хорошая новость в том, что именно так работает обычная сортировка javascript.Ну ... нет, это неправильно ... все же (более запутанное) сравнение лексикографов может сделать эту работу.Примечание: имея числа a и b, a + [b] является сокращением для a + '' + b, так как нам нужна конкатенация строк, а не сумма.
Примечание 2: символ новой строки внутри `` является значимым и должен быть посчитан
Редактировать Не спорь с модератором (... шучу)
Edit2 Исправлен формат ввода / вывода с использованием всплывающих окон (см. « Код по умолчанию» для Code Golf: методы ввода / вывода )
Тест в консоли Firefox / FireBug
источник
J, 34,
36,42байтапростая грубая сила:
источник
Haskell, 98 байт
Разбить входную строку на пробелы, объединить каждую перестановку и отсортировать. Напечатайте первый и последний элемент.
источник
Юлия, 77 байт
Это создает безымянную функцию, которая принимает вектор в качестве входных данных и печатает минимум и максимум перестановок соединенных элементов. Чтобы назвать его, дайте ему имя, например
f=v->...
.Ungolfed + объяснение:
Предложения приветствуются!
источник
Javascript ( ES6 ) 134
К сожалению, в JS нет встроенной функции перестановки :(
источник
R, 59 байт
источник
combinat::permn
.::
что пакет должен быть загружен (черезlibrary
илиrequire
), но нет:::
. Я могу ошибаться; нужно прочитать немного больше об этом. Благодарю.permn
напрямую безlibrary(combinat)
.library(combinat)
прежде чем выpermn
все равно сможете ее использовать . ;)Руби 75
Не мой «родной» язык, но тот, на котором я решил попробовать ... таким образом, можно (возможно) использовать некоторые советы по игре в гольф. Тем не менее, не плохой участник.
Я бы не сказал, что это элегантно, что все встроено в язык. Должно быть достаточно очевидно, как именно это работает.
источник
{|x|x.join}
с в(&:join)
течение 3 -х экономии байт.puts$<.read.split.permutation.map(&:join).minmax
puts gets.split.permutation.map(&:join).minmax
Perl,
7970B (68 + 2)use Math::Combinatorics;say for(sort map{join'',@$_}permute@F)[0,-1]
Позвони с
echo 13 42 532 3 6|perl -M5.10.0 -an scratch.pl
. За штраф +2 байта-an
. Позор о длине имени модуля ...источник
JavaScript (ES6), 85 байт
использование:
источник