Вот проблема. Напишите некоторый код для вывода всех целых чисел в диапазоне. Звучит просто, но вот сложная часть. Это начнется с самого низкого числа, затем самого высокого. Тогда самое низкое число, которого еще нет в массиве. Тогда самое высокое, которого еще нет в нем.
Пример:
Давайте начнем с 1 до 5
Числа: [1, 2, 3, 4, 5].
Возьмем первое, поэтому [1]. Остальные цифры [2, 3, 4, 5]. Мы берем последний, новый массив - [1, 5]. Остальные цифры [2, 3, 4]. Возьмем первый, новый массив - [1, 5, 2]. Остальные цифры [3, 4]. Возьмем последний, новый массив: [1, 5, 2, 4]. Остальные цифры [3]. Возьмем первый, новый массив - [1, 5, 2, 4, 3]. Чисел не осталось, мы сделали. Выход [1, 5, 2, 4, 3]
Правила:
- Это код гольф, напишите его в наименьшем количестве байтов, на любом языке.
- Нет стандартных лазеек.
- Ссылки на онлайн переводчика, пожалуйста? (Например, https://tio.run/ )
- Два входа, оба целые. Нижний предел диапазона и верхний предел диапазона.
- Я не против того, что тип данных вывода, но он должен показывать числа в правильном порядке.
Примеры
Низкий: 4 Высокий: 6 Результат: 4 6 5
Низкий: 1 Высокий: 5 Результат: 1 5 2 4 3
Низкий: -1 Высокий: 1 Результат: -1 1 0
Низкий: -1 высокий: 2 Результат: -1 2 0 1
Низкий: -50 Высокий: 50 Результат: -50 50 -49 49 -48 48 -47 47 -46 46 -45 45 -44 44 -43 43 -42 42 -41 41 -40 40 -39 39 -38 38 -37 37 -36 36 -35 35 -34 34 -33 33 -32 32 -31 31 -30 30 -29 29 -28 28 -27 27 -26 26 -25 25 -24 24 -23 23 -22 22 -21 21 - 20 20 -19 19 -18 18 -17 17 -16 16 -15 15 -14 14 -13 13 -12 12 -11 11 -10 10 -9 9 -8 8 -7 7 -6 6 -5 5 -4 4 -3 3 -2 2 -1 1 0
Удачного игры в гольф!
Ответы:
R ,
383736 байтПопробуйте онлайн!
Используя тот факт, что R хранит матрицы по столбцам
источник
rbind
намного лучше, чем мой подход, но вы можете сэкономить 1 байт, используя[seq(a:b)]
вместоunique
.seq(a:b)
Haskell , 30 байт
Попробуйте онлайн!
источник
R ,
65646160 байт-1 байт благодаря Роберту С.
Еще -4 благодаря digEmAll
Попробуйте онлайн!
источник
length(z)
на,sum(z|1)
чтобы сохранить 1 байт :)|
1. Это всегда равно 1. Когда вы берете сумму, у вас есть вектор, заполненныйTRUE
s, так что результат равен длине вектора. Если вектор пустой, вы не имеете ничего общего|
с выходным векторомlogical(0)
. Когда вы берете эту сумму, это 0Haskell , 39 байт
Попробуйте онлайн!
источник
Python 2 , 44 байта
Попробуйте онлайн!
источник
PowerShell ,
5948 байтовПопробуйте онлайн!
(Кажется долго ...)Принимает ввод
$a
и$b
создает диапазон0 .. ($b-$a)
, сохраняет его в$z
, а затем перебирает этот диапазон. Цикл этого диапазона просто используется как счетчик, чтобы гарантировать, что мы получим достаточно итераций. Каждую итерацию мы ставим$a
и$b
на конвейер с сложением / вычитанием. Это дает нам что-то вроде этого,1,5,2,4,3,3,4,2,5,1
поэтому нам нужно нарезать это от0
до$b-$a
(то есть, подсчет) исходного массива , так что мы только оставили с соответствующими элементами. Это осталось на конвейере и вывод неявный.-11 байт благодаря маззи.
источник
$b-$a
трюк - это умно!05AB1E , 6 байтов
Попробуйте онлайн!
объяснение
источник
.ι
;)Japt , 14 байт
Попробуйте онлайн!
источник
Stax , 7 байт
Запустите и отладьте его
источник
R , 51 байт
Попробуйте онлайн!
Объяснение: Для последовательности
x:y
длиныN
создайте матрицу два на N, состоящую из последовательности x: y в верхней строке и y: x в нижней строкеmatrix(c(z,rev(z)),2,,T)
. Если мы выберем первыеN
элементы матрицы[seq(z)]
, они будут выбраны по столбцам, что даст требуемый результат.Перегнан на DigEmAll
источник
cQuents , 19 байтов
Попробуйте онлайн!
Обратите внимание, что он не работает на TIO прямо сейчас, потому что интерпретатор TIO не обновлен.
объяснение
источник
Haskell, 39 байт
Попробуйте онлайн!
источник
C # (интерактивный компилятор Visual C #) , 46 байт
Сохранено 4 байта благодаря Дана!
Попробуйте онлайн!
C # (интерактивный компилятор Visual C #) , 65 байт
Попробуйте онлайн!
источник
Байт-код JVM (OpenJDK asmtools JASM), 449 байт
Неутолкнутый (и немного чище)
Автономная функция, должна вызываться из Java как
b.a(num1,num2)
.объяснение
Этот код использует параметры метода в качестве переменных, а также логическое значение в локальной # 3, решающее, какое число вывести. Каждая итерация цикла либо левая, либо правая выводится, и это число увеличивается слева или уменьшается справа. Цикл продолжается до тех пор, пока оба числа не будут равны, затем это число выводится.
... У меня есть отчетливое чувство, что я массово перебил на счет байтов
источник
Wolfram Language (Mathematica) ,
5654 байтаЭто мой первый раз в гольф!
Попробуйте онлайн!
Сохранено 2 байта с использованием инфиксной записи.
Объяснение:
В качестве альтернативы, мы могли бы использовать
Take[...,b-a+1]
для того же результата.тесты:
Ouput:
источник
APL (dzaima / APL) , 21 байт
Попробуйте онлайн!
источник
Japt, 7 байт
Принимает ввод в виде массива.
Попробуйте или запустите все тесты
источник
MATL , 8 байт
Попробуйте онлайн!
объяснение
источник
JavaScript, 40 байт
Попробуйте онлайн!
источник
Forth (gforth) , 52 байта
Попробуйте онлайн!
объяснение
Цикл от 0 до (Конец - Старт). Поместите Конец и Начните сверху стека.
Каждая итерация:
Код Объяснение
источник
Юлия 0,7 , 29 байт
Попробуйте онлайн!
источник
Haskell, 30 байт
Использование:
3%7
дает `[3,7,4,6,5]Для входов
l, h
функция вызывает рекурсивно с входамиl+1, h-1
и добавляетl,h
к началу. Вместо любого условия остановки код используетtake(h-l)
для сокращения последовательности до нужной длины (которая в противном случае была бы бесконечной последовательностью увеличивающихся и уменьшающихся чисел).источник
Брахилог , 15 байт
Вход представляет собой 2-элементный список [lo, hi]. Обратите внимание, что подчеркивание используется для отрицательных чисел. Попробуйте онлайн!
объяснение
источник
MathGolf , 6 байтов
Попробуйте онлайн!
Объяснение с
(1, 5)
Причина, по которой это работает, заключается в том, что все элементы в выходных данных должны быть уникальными, поэтому оператор уникальных элементов отфильтровывает вторую половину массива, создавая правильный вывод.
источник
Perl 5
-ln
, 37 байтПопробуйте онлайн!
источник
Java (JDK) , 52 байта
Попробуйте онлайн!
источник
Чисто , 48 байт
Попробуйте онлайн!
источник
Рубин ,
373633 байтаПопробуйте онлайн!
Рекурсивная версия с 3 байтами, сохраненная G B.
Рубин , 38 байт
Попробуйте онлайн!
Нерекурсивная версия.
источник
Cubix, 16 байтов
Попробуй здесь
Cubified
объяснение
По сути, это сдвигает две границы ближе друг к другу, пока они не встретятся. Каждый раз в цикле мы
s
обмениваем границы,O
выводим, принимаем разницу и увеличиваем)
или уменьшаем на(
основе знака.источник
Pyth,
108 байтПопробуй здесь
объяснение
источник