Ну, все любят полиглоты . Вам будет дано два целых числа в любой стандартной форме ввода (без жесткого кодирования). Ваша задача - написать полиглот, который находит минимальное значение на одном языке и максимальное значение между двумя числами на другом языке и выполняет следующие операции:
- Код, который находит максимальное значение, также должен вычислять их сумму.
- Программа, которая находит минимальное значение, должна также вычислить результат их вычитания (
max - min
) - Вот «сложная часть» : если два числа равны, обе программы не должны ничего выводить / возвращать (как для, так
STDOUT
и дляSTDERR
любого другогоreturn
метода) - См. Раздел « Спецификации вывода » для более подробной информации о форматировании.
вход
Как указано выше, два целых числа, взятые в качестве входных данных в любом стандартном методе , общие для обоих языков.
Выходные характеристики
- Для программы, которая находит
max
, формат должен быть:max_value, addition result
- Для программы, которая находит
min
, формат должен бытьmin_value, subtraction result (max - min)
- Результаты могут быть напечатаны, с каким - либо четким разделителем (
,
\n
,,
или то , что вы хотите), возвращаются из функции в виде строки , содержащая два ожидаемых значений с разделителем или в виде списка номеров (например:[max_value,sum]
)
Примеры:
Input || Max Language Output || Min Language Output
100, 40 || 100, 140 || 40, 60
63, 67 || 67, 130 || 63, 4
-45, -5 || -5, -50 || -45, 40
21, 21 || ||
-1, 1 || 1, 0 || -1, 2
Подсчет очков:
Это код-гольф , поэтому постарайтесь написать кратчайший код, чтобы получить желаемый результат, при этом отметив, что стандартные лазейки строго запрещены. Вы должны использовать два разных языка, а не другие версии одного и того же языка (например: Python 2
- Python 3
недопустимые пары)
code-golf
math
arithmetic
polyglot
Мистер Xcoder
источник
источник
Ответы:
05AB1E / Желе ,
2120 байт-1 байт после обращения за помощью - спасибо, Эминья! (
`
будетpush(uwrapped(pop()))
)Необработанные байты (дамп справа показывает, что показывает мой компьютер с Windows):
Оба принимают ввод из STDIN и выводят в STDOUT как представление списка
[x, y]
.Максимальный язык - 05AB1E:
Где
.
представляют непечатаемые байты в его кодовой странице ( cp1252 ), и, вероятно, здесь во всех, что вы используете (0x18 = CANи 0x04 = EOT).Попробуйте версию 05AB1E
Минимальный язык - желе:
Попробуйте версию желе .
Как?
05AB1E:
Желе:
источник
C и C ++ (gcc),
117107 байтов-10 байт благодаря @Steadybox!
Объяснение: В C
auto c=.5
объявляется целочисленная переменная с классом автоматического хранения (который используется по умолчанию), который затем инициализируется равным 0, тогда как в C ++ 11 он объявляет double, который инициализируется равным 0,5. Таким образом, значение переменной будет истинным в C ++ и ложным в C.C - max language: попробуйте онлайн!
C ++ - минимальный язык: попробуйте онлайн!
источник
auto c=.5
, а затем использоватьc
вместоsizeof'a'-1
. В Cauto c=.5
объявляется целочисленная переменная с классом автоматического хранения (который используется по умолчанию), который затем инициализируется равным 0, тогда как в C ++ 11 он объявляет double, который инициализируется равным 0,5. Таким образом, значение переменной будет истинным в C ++ и ложным в C.Питон 3 / Желе , 42 байта
Использование кодовой страницы Jelly для кодирования файла.
Необработанные байты:
Оба определяют безымянную двоичную функцию.
Python (максимальный язык) видит:
Тесты как Python .
Желе (минимальный язык) видит:
Тесты как желе .
Как?
Jelly интерпретирует 0x0a как
½
атом квадратного корня, а Python интерпретирует его как символ новой строки. В Jelly 0x7f интерпретируется как разделение между ссылками (функциями) и представляется либо новой строкой, либо символом в его кодовой странице. Для Jelly последняя ссылка является основной функцией - здесь она не вызывает ссылку выше (которую интерпретатору все равно нужно правильно анализировать). В Python 0x23 указывает,#
что все, что после него и до 0x0a, символа новой строки, является комментарием.Код Python, который выполняется:
Код Jelly, который выполняется:
источник
\x7f
и\x04
для непечатных в Python).Ruby / Python 3, 102 байта
Ruby возвращает max / сумму, Python возвращает min / разницу. Ввод - это объект массива, считанный из STDIN.
Попробуйте онлайн: Ruby
Попробуйте онлайн: Python
Основная изюминка, использованная здесь, - это использование правды
0
в Ruby, что ложно в Python. Еще одна вещь, о которой стоит упомянуть, это то, чтоsort
функция Python изменяет список на месте и возвращаетNone
, в то время как Ruby не возвращает и не возвращает отсортированный массив, поэтому необходимо использоватьb or a
для получения min / max.Python 3 необходим, потому что Python 2 жалуется, если вы пытаетесь вызвать
print
послеor
оператора в последней строке.источник
Java / AWK ,
219217212196 байтПопробуйте онлайн!
Java выводит максимум и сумму, AWK выводит минимум и разницу. Нет выхода для любого, если входы идентичны.
Это мой первый полиглот и первый TIO :)
источник
JavaScript (ES6) / QBasic,
172171 байтИсходя из этого моего решения похожий вопрос о полиглоте .
В этом решении также используется подход с комментариями!
JavaScript - это минимальный язык. Он принимает массив, содержащий числа в качестве входных данных. Вывод двух чисел, разделенных
,
(1-е число - наименьшее значение массива ввода, а 2-е число - разность наибольшего и наименьшего значений массива ввода) с помощьюalert()
ing.alert()
Ничего не делает, если числа равны. Вы можете вызвать функцию, какf([100,40])
.QBasic - это макс-язык. Неоднократно запрашивает ввод, дважды. Печатает наибольшее количество входных чисел, а также сумму самых больших и самых маленьких чисел ввода.
PRINT
Ничего не делает, если числа равны.Как это работает?
В QBasic (язык структурированного семейства BASIC; для него не требуются номера строк),
'
отмечается начало комментария, которое идет до конца строки. Принимая во внимание, что в JavaScript это отмечает начало строки. Итак, вся первая строка помечена как комментарий в QBasic, но в JavaScript строка выполняется (и эта строка содержит часть JavaScript, которая вычисляет наименьшее число и разность наибольшего и наименьшего чисел, а также/*
в конце который запускает комментарий, чтобы скрыть оставшуюся часть кода QBasic от интерпретатора JavaScript.)Код от второй строки до второй-последней строки содержит код QBasic для вычисления наибольшего числа и суммы наибольшего и наименьшего числа (код очень понятен).
Последняя строка содержит
'*/
.'
заставляет интерпретатор QBasic интерпретировать следующий код как комментарий, тогда как в JavaScript он не имеет никакого эффекта, так как является частью комментария (который был запущен в конце первой строки). Следующий код (*/
) заставляет JavaScript завершать комментарий, который был начат в первой строке, но он не выполняется в QBasic, потому что QBasic считает, что это часть комментария.Тестовые случаи
JavaScript (минимальный язык):
QBasic (макс. Язык):
Перейти на этот сайт . Скопируйте и вставьте следующий код в их текстовый редактор:
Причина, по которой требуются номера строк, заключается в том, что упомянутый мной веб-сайт поддерживает только неструктурированные языки BASIC. И этот сайт - единственный достойный переводчик бейсика онлайн, которого я смог найти. Тем не менее, выполнение кода, присутствующего в верхней части поста (код без номеров строк), должно нормально работать в любом хорошем интерпретаторе QBasic, который поддерживает структурированный BASIC, и
'
в качестве начального комментария (хотя некоторые этого не делают, большинство делают, хотя)источник