Вызов:
Входные данные:
Два целочисленных параметра a
и b
(где a<b
и разница не менее 2)
Выход:
Выведите или верните этот текст, где a
и b
заполнены:
(a,b) = ]a,b[ = {a<x<b} = {a<x&&x<b} = a+1..b-1
[a,b) = [a,b[ = {a<=x<b} = {a<=x&&x<b} = a..b-1
(a,b] = ]a,b] = {a<x<=b} = {a<x&&x<=b} = a+1..b
[a,b] = [a,b] = {a<=x<=b} = {a<=x&&x<=b} = a..b
Правила соревнований:
- Ввод / вывод является гибким. Может быть напечатано в STDOUT, возвращено в виде строки / символьного массива и т. Д. Может быть введено как два целых числа, десятичные дроби, строки (не знаю почему, так как вам нужно вычислить
a+1
иb-1
, но будьте моим гостем ..) и т. Д. - Допускается любое количество начальных и / или конечных новых строк, и любое количество конечных и / или ведущих пробелов для каждой строки.
- Пробелы в знаках равенства (в том числе для выравнивания их в одном столбце) являются обязательными, пробелы между остальными символами не допускаются.
a+1
иb-1
заменяются правильными значениями после этих расчетов.- Вы не можете использовать
≤
вместо<=
. - Вы не можете использовать
&
вместо&&
. - Вам разрешено выводить числа с
.0
(до тех пор, пока оно соответствует, и не более одного десятичного нуля). - Вы можете предположить, что
a
это как минимум на 2 меньшеb
(для того,(a,b)
чтобы быть правильным). - Строки должны быть выведены в указанном порядке.
Пример:
Вход: a=-5, b=10
Выход:
(-5,10) = ]-5,10[ = {-5<x<10} = {-5<x&&x<10} = -4..9
[-5,10) = [-5,10[ = {-5<=x<10} = {-5<=x&&x<10} = -5..9
(-5,10] = ]-5,10] = {-5<x<=10} = {-5<x&&x<=10} = -4..10
[-5,10] = [-5,10] = {-5<=x<=10} = {-5<=x&&x<=10} = -5..10
Основные правила:
- Это код-гольф , поэтому выигрывает самый короткий ответ в байтах.
Не позволяйте языкам кода-гольфа отговаривать вас от публикации ответов на языках, не относящихся к кодексу. Попробуйте придумать как можно более короткий ответ для «любого» языка программирования. - К вашему ответу применяются стандартные правила , поэтому вы можете использовать STDIN / STDOUT, функции / метод с правильными параметрами и типом возврата, полные программы. Ваш звонок.
- По умолчанию лазейки запрещены.
- Если возможно, добавьте ссылку с тестом для вашего кода.
- Также, пожалуйста, добавьте объяснение, если это необходимо.
PS: Для тех, кто видел эту проблему в «Песочнице», когда она была сложной задачей с колмогоровским кодомa
и b
жестко запрограммирована, я изменил ее на проблему ввода, чтобы избежать скучных жестко закодированных и закодированных ответов, как мы обычно видим с КС бросает вызов.
a=5, b=6
еще выходной(5,6) = ... = 6...5
?a
иb
всегда будет как минимум 2 друг от друга. Я отредактирую вызов.Ответы:
Stax , 74 байта
Запустите и отладьте его
При этом используются строковые шаблоны stax. Распакованный, размазанный и прокомментированный, это выглядит так.
Запустите этот
источник
JavaScript (ES6),
184182181180 байтПринимает ввод в синтаксис карри
(a)(b)
. Возвращает массив из 4 строк.Попробуйте онлайн!
Как?
Для каждой строки k с 1 ≤ k ≤ 4 мы начинаем со следующего шаблона:
и заменить каждую десятичную цифру n в позиции i в соответствии со следующей таблицей:
источник
Python 2 ,
225203195 байтПопробуйте онлайн!
источник
Python 2 , 187 байт
Попробуйте онлайн!
источник
Java (JDK 10) , 251 байт
Попробуйте онлайн!
кредиты
источник
.replace
.Perl 5 , 181 байт
Я думал, что это сработало бы намного короче ...
Попробуйте онлайн!
объяснение
Первоначально для этого использовалась
printf
форматная строка, но она была простоs
иd
была короче в сочетании сs///
.Первая строка формата встроена в
$_
и quadruplicated, то всеs
s заменяются соответствующим кронштейн,<
,<=
или пространства, в зависимости от индекса замещения. Я надеялся сохранить еще несколько байтов с дублированием последних 5 символов каждого блока, но в итоге удалось сохранить только 2 байта. Результирующая строка разбивается на элементы пробелов<=
или отдельных символов.Наконец, все
d
s заменяются на желаемое число, которое корректируется на основе индекса текущей замены с помощью хеш-ключа.источник
JavaScript,
190189 байтПопробуйте онлайн
источник
м4 , 194
Похоже, работа для макропроцессора. Не уверен, что m4 соответствует нашим стандартам для языка программирования. У него есть циклическая способность и арифметическое вычисление, поэтому я предполагаю, что оно близко к отметке.
Это мой первый нетривиальный взгляд на m4, поэтому я подозреваю, что есть еще больше возможностей для игры в гольф, которые я упустил.
Входные данные передаются с использованием
-D
макроопределений в командной строке. Не уверен, что нужно что-то добавить к баллу для них, насколько я могу судить, это единственный способ осмысленно передать параметры:Попробуйте онлайн .
Спасибо @Dennis за быстрое добавление m4 в TIO !
источник
-D
аргументов, то это совершенно нормально. В своем описании вызова я заявил, что ввод / вывод является полностью гибким, поэтому независимо от того, принимаете ли вы ввод как STDIN, параметры функции, аргументы командной строки программы, флаги компилятора, чтение файла или любой другой метод ввода, который вы можете себе представить, полностью вам решать.Python 2 ,
277199193189 байтПопробуйте онлайн!
источник
2*('{%d<%s<%s%d} %s= '%(a,e*x+'%sx',e[y:],b,i/2*' '))%('','x&&')
->2*('{%d<%s%%sx<%s%d} %s= '%(a,e*x,e[y:],b,i/2*' '))%('','x&&')
Спасает два :)Excel, 399 байт
Ничего особенно интересного здесь.
источник
C (gcc) , 224
237байтПопробуйте онлайн!
Перемещение «<[=]» в строку формата позволило мне полностью удалить массив. Также переход
printf()
вfor
цикл спасает точку с запятой.Оригинальный ответ
Попробуйте онлайн!
Здесь нет ничего особенно примечательного: я использовал обычные приемы для уменьшения размера функции (поднятие
int
авто в заголовок функции, использование стиля K & R, индексация в строковые константы.) Сохранение {"<=", "<"} в массив оказался более эффективным по размеру, чем вставка спецификатора формата для этой задачи, так как он использовался более одного раза.источник
Javascript,
273258232 байтаСпасибо Кевину Круйссену за то, что он спас мне 15 байтов!
Попробуйте онлайн
Спасибо за то, что TFeld дал мне эту идею, сэкономив около 60 байт от моего первоначального ответа.
Ungolfed:
Javascript (оригинальный ответ), 340 байт
источник
{a<=x&&\nx<=b}
не должна быть там, а вам не хватает первой(a,b) =
. Что касается игры в гольф: вместо предупреждения вы можете просто вернуть результат.(m)=>
может бытьm=>
.(e,f)=>
может бытьe=>f=>
. И вы можете использоватьg
непосредственно вместо созданияlet g=
:m=>{return{a:e,b:f,c:e+1,d:f-1}[m]}
. Попробуйте онлайн 258 байт . И, возможно, больше можно сыграть в гольф, я не слишком опытен в JS ..(m)->
tom->
;(e,f)->
кe->f->
иvar g=new int[]{...}return g[m]
кreturn new int[]{...}[m]
. ;) Кроме того, я уже более двух лет активно работаю над этим SO, так что я видел, что ответы JS использовали подобные вещи и раньше.Сетчатка , 216 байт
Попробуйте онлайн! Объяснение:
Создайте основную массу результата.
Если переменная участвует в свободном неравенстве, то значение является включающим, поэтому мы можем удалить заполнитель.
Преобразуйте значение в одинарное и добавьте 2.
Удалите заполнитель для строгого нижнего неравенства или отрицательного строгого верхнего неравенства. Он все еще имеет 2 добавленных, но 1 будет вычтен позже, давая желаемый результат.
Вычтите 2 из других ненулевых строгих неравенств, восстановив исходное значение, из которого 1 будет вычтено позже.
Изменить строгое верхнее неравенство
0
на-1
.Вычтите 1 из оставшихся строгих неравенств и преобразуйте в десятичное число.
Исправьте другой крайний случай.
источник
Python 3, 180 байт:
объяснение
В основном строит f-строку, которая оценивается в понимании списка. Старый стиль
%
Интерполяция строк в используется для задержки вычисления выражений до тех пор, пока не будет вычислена f-строка.Первая часть строки, 'f' ', станет префиксом для f-строки.
Вторая часть строки создает строку формата для первых двух интервальных выражений.
%r
используется, чтобы избавить от необходимости помещать кавычки в формате, т. е."{%r[j]}"
такой же, как"{'%s'[j]}"
. Когда f-строка оценена, правильная скобка выбрана.Третья часть строки строит следующие два интервальных выражения.
Последняя часть форматирует часть "a..b" f-строки.
Собранная е-строка выглядит так:
f"{'(['[j]}{a},{b}{')]'[i]} = .... = {a+j}..{b-i}"
Когда f-строка вычисляется, все выражения в фигурных скобках
{}
заменяются их значениями. Таким образом,{a}
заменяется значениемa
и{'(['[j]}
заменяется на,(
если j равно 0 или[
если j равно 1.источник
SOGL V0.12 , 110 байт
Попробуй здесь!
источник
Python 3, 248 байт
Попробуйте онлайн!
источник