Учитывая два целых числа, выведите два целых числа, а затем диапазон между ними (исключая оба).
Порядок диапазона должен совпадать с вводом.
Примеры:
Input Output
0, 5 -> [0, 5, 1, 2, 3, 4]
-3, 8 -> [-3, 8, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7]
4, 4 -> [4, 4]
4, 5 -> [4, 5]
8, 2 -> [8, 2, 7, 6, 5, 4, 3]
-2, -7 -> [-2, -7, -3, -4, -5, -6]
Ответы:
R ,
393330 байтПопробуйте онлайн!
Спасибо за сохраненные байты пользователю 2390246 и J. Doe.
источник
:
оператор использует первый элемент обоих аргументов для 30 байтов05AB1E , 4 байта
Попробуйте онлайн!
объяснение
источник
Python 3 ,
5248474241 байтПопробуйте онлайн!
Комбинированные прежние реализации.
источник
or-1
чтобы сохранить байт.Python 2 (Cython) ,
3635 байтСпасибо @nwellnhof за удаление 1 байта!
Попробуйте онлайн!
Python 2 , 37 байт
Спасибо @JonasAusevicius за порт для CPython!
Попробуйте онлайн!
источник
lambda x:x+range(*x+[-cmp(*x)|1])[1:]
. Хорошее решениеPerl 6 ,
2622 байтаПопробуйте онлайн!
объяснение
источник
Python 2 , 40 байт
Попробуйте онлайн!
источник
-(y<x)|1
. очень круто, но я не могу понять, почему это работает! Есть ли шанс, что вы можете это объяснить?y<x
проверяет,y
строго ли меньшеx
, и возвращает,True
если это так, вFalse
противном случае. После этого-
к нему применяется унарный символ , который преобразуетсяTrue
в-1
иFalse
в0
. Последний шаг - побитовое ИЛИ это число с1
. Это, очевидно, оставляет1
(0b1
) незатронутым, а также оставляет-1
(-0b1
) незатронутым (бит знака-1
установлен, поэтому он сохраняется как таковой) Тем не менее, он конвертируется0
в1
, так чтоrange
не жаловаться на меня, используяstep
о0
.Python 3,
646251 байтlambda a,b:[a,b]+[*range(a+1,b)]+[*range(a-1,b,-1)]
Попробуйте онлайн!
Python 2,
5845 байтlambda a,b:[a,b]+range(a+1,b)+range(a-1,b,-1)
Попробуйте онлайн!
источник
a<=b and
оба ответа+
вместоor
lambda a,b:[a,b,*range(a+1,b),*range(a-1,b,-1)]
Japt, 8 байт
Попробуй здесь
источник
JavaScript (ES6), 51 байт
Принимает вход как
(a)(b)
.Попробуйте онлайн!
комментарии
источник
Python 2 ,
474140 байтПопробуйте онлайн!
Вот мой, теперь, когда было опубликовано много других ответов Python
-6 байт, благодаря ГБ
источник
a<b or-1
короче для параметра 3-го диапазона. Самый короткий, который я получил, былlambda x,y:[x,y]+range(x+(x<y or-1),y,x<y or-1)
Java 10,
1091081041029362 байтаИспользование строки, разделенной пробелом:
Попробуйте онлайн.
Используя список:
Попробуйте онлайн.
(
a<b?++a<b:--a>b
может быть++a<b||(a-=2)>b
для того же количества байтов: попробуйте онлайн для строки или попробуйте онлайн для списка .)Старый (
109108104102101 байт) ответ с использованием массива:-7 байт благодаря @nwellnhof .
Попробуйте онлайн.
Объяснение:
источник
a->b->{var L=java.util.stream.IntStream.range(a,b).boxed().collect(java.util.Collectors.toList());L.add(0,b);L.add(0,a);return L;}
(130 байтов)var
, поэтому я обычно ставлю 8, а те, которые используютvar
как 10 (а те, которые используютString.repeat
как 11). :) Забыл обновить его после добавления ответов List и String, теперь нужно исправить. Спасибо.APL (Dyalog Extended) , 5 байт
Анонимная инфиксная функция.
Попробуйте онлайн!
,
первый и последний (лит. объединение аргументов),
и (Лит. соединены с)…
диапазон~
без,
первый и последний (лит. объединение аргументов)источник
Haskell, 34 байта
Попробуйте онлайн!
источник
b-1
какb $ (-1)
. Используйтеb- 1
вместо этого.NegativeLiterals
на.Желе , 4 байта
Попробуйте онлайн!
Как это работает
источник
J , 26 байт
Попробуйте онлайн!
Объяснение:
Диадический глагол (принимает левый и правый аргумент)
источник
,,[:}.@}:<.+i.@-@(+*)@-
для 23 байтов и без специального регистра для относительного упорядочения аргументов (скорее: он скрыт внутри signum*
). Я чувствую, что это может быть меньше 20 лет, но я устал.Октава , 45 байт
Попробуйте онлайн!
источник
J , 13 байт
Попробуйте онлайн!
источник
i.
с отрицательным аргументом.Пакет, 107 байт
Принимает ввод в качестве аргументов командной строки. Объяснение:
Выведите два целых числа.
Попробуйте оба восходящих и нисходящих диапазонов.
Цикл по включенному диапазону.
Исключить два целых числа.
Выведите текущее значение.
источник
Pyth , 5 байт
Ввод представляет собой двухэлементный список
[input 1, input 2]
. Попробуйте онлайн здесь или проверьте все тестовые примеры сразу здесь .источник
F
вместо.*
двухэлементных списков - блестящий трюк, который я обязательно буду использовать с этого момента.Красный , 75 байт
Попробуйте онлайн!
источник
Чисто , 49 байт
Попробуйте онлайн!
источник
Рубин ,
3340 байтПопробуйте онлайн!
Временное исправление, пытаясь найти лучшую идею
источник
[4,4]
это дает только один[4]
Python 2 ,
524741 байтПопробуйте онлайн!
-5 благодаря @JoKing
-6 путем нарезания первого элемента из диапазона (идея украдена у @TFeld и с благодарностью)
Не лямбда-версия ...
Python 2 ,
514947 байтПопробуйте онлайн!
-2 благодаря @JoKing
источник
APL (Dyalog Classic) , 29 байт
Попробуйте онлайн!
Порт моего
J
решенияисточник
PHP (102 байта)
песочница
К сожалению (для гольфа) PHP имеет довольно подробные имена функций, которые вносят большой вклад в длину. Но основная идея состоит в том, чтобы создать диапазон, затем вытолкнуть последний элемент и вставить его обратно со смещением 1. Для
4,4
примера, который я должен был добавить,count($r=range($a,$b))>1?...:$r=[$a,$b];
добавляется немало, и, к сожалениюarray_splice()
, по ссылке, который ударил меня еще несколько байты ($r= and a ;
). Все из-за этого "крайнего случая", лол.Ну все равно наслаждайтесь!
источник
function t($a,$b){$o=array($a,$b);for($i=$a+1;$i<$b;$i++)$o[]=$i;print_r($o);}
function t($a,$b){echo $a.$b;for($i=$a+1;$i<$b;$i++)echo $i};
Clojure , 61 байт
Анонимная функция, которая принимает 2-вектор в качестве входных данных и возвращает список.
Попробуйте онлайн!
объяснение
источник
D 85 байт
Попробуйте онлайн!
Порт ответа C ++ @ HatsuPointerKun на D.
источник
TI-BASIC,
3534 байта-1 байт от Миши Лаврова
источник
1-2(A>B
наcos(π(A>B
.seq(
не будет работать для входов, гдеA
иB
то же самое, к сожалению :(seq(
, поэтому я больше не убежден, что он даже меньше. Тем не менее,cos(
хитрость должна помочь.Древесный уголь , 15 байт
Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
Напечатайте входные данные в отдельных строках.
Напечатайте возрастающий диапазон, если есть.
Выведите обратный восходящий обратный диапазон, если есть.
источник
Дротик ,
8584 байтаПопробуйте онлайн!
>=
к>
источник