Ваша заявка должна содержать список чисел (в любом формате списка, который поддерживает ваш язык, или с использованием нескольких параметров функции / командной строки) или строку чисел, разделенных любым символом, который не является 0123456789
. На одном языке он должен сложить их все и вывести сумму. На другом языке он должен выводить их вычитать друг от друга по порядку. Пример:
12
5
7
2
На одном языке он должен выводить 26
, а на другом - выводить -2
. Обратите внимание, что все введенные числа будут положительными целыми числами меньше, чем 100
. Никогда не будет предоставлено больше, чем 20
числа, поэтому вы никогда не будете выводить больше 2000
или меньше чем -1899
. Любые вопросы? Комментарий ниже!
[code-golf] -[polyglot]
?Ответы:
Желе / 05AB1E , 3 байта
Это hexdump (xxd) представленной программы.
Попробуйте онлайн!
Желе: сумма
Jelly использует кодовую страницу Jelly , поэтому видит следующие символы.
Попробуйте онлайн!
Как это устроено
05AB1E: разница
05AB1E использует Windows-1252 , поэтому видит следующие символы.
Попробуйте онлайн!
Как это устроено
источник
Python 2/3, 52 байта
int(1-(1/2)*4)
возвращается1
в Python 2, потому что1/2
сначала оценивает0
, а затем0 * 4 = 0
.int(1-(1/2)*4)
возвращается-1
в Python 3, потому что1/2
сначала оценивает0.5
, а затемint(0.5 * 4) = int(2.0) = 2
.источник
C и C ++ (оба из GCC),
817573 байтаПринимает указатель на массив и длину.
Объяснение: по- прежнему используется объяснение @Steadybox ': p В C
auto d=.5
объявляется целочисленная переменная с классом автоматического хранения (который является значением по умолчанию), который затем инициализируется равным 0, тогда как в C ++ 11 он объявляет double, который инициализируется до 0,5.C - плюс язык: попробуйте онлайн!
C ++ - минус язык: попробуйте онлайн!
источник
05AB1E / Желе , 5 байтов
Попробуйте онлайн! (05AB1E)
Попробуйте онлайн! (Желе)
05AB1E видит :
Объяснение:Желе видит :
Объяснение:источник
7f
.На самом деле / Желе , 4 байта
Это hexdump (xxd) представленной программы. Это не может быть проверено в сыром виде онлайн; TIO не поддерживает кодировку CP437.
На самом деле: сумма
На самом деле использует CP 437 , поэтому он видит следующие символы.
Попробуйте онлайн!
Как это устроено
Желе: разница
Jelly использует кодовую страницу Jelly , поэтому видит следующие символы.
Попробуйте онлайн!
Как это устроено
источник
actually, Jelly.
:)ṛ
:)ü
назначил идеальную функцию> _>jelly, actually
.Python 2 и 3,
4441 байтПринимает разделенные пробелом числа.
-3 байта благодаря @JonathanAllan
Попробуйте онлайн: Python 2 (минус) Python 3 (плюс)
источник
'-+'[1/2>0]
чтобы сохранить три байта.CJam / Jelly , 6 байтов
CJam
Попробуйте онлайн!
Желе
(используя UTF-8, а не кодовую страницу Jelly)
q~:-
является вспомогательной ссылкой. Поскольку он не вызывается, на самом деле не имеет значения, что он делает.S
вычисляет сумму массива.Попробуйте онлайн!
источник
q~:-½S
. К сожалению, исправление (q~:-e#\x7fS
) больше. Попробуйте онлайн! (CJam) и попробуйте онлайн! , каждый со своей кодировкой, чтобы проверить себя.JavaScript / Cubix, 36 байт
Попытайся!
Функция JavaScript может быть проверена с помощью фрагмента кода ниже, программа Cubix может быть проверена здесь .
Как это работает?
JavaScript
Первая строка представляет собой строковый комментарий к JavaScript, поскольку он начинается с двух косых черт, поэтому JavaScript видит только нижнюю строку (
a=>eval(a.join`-`)
), которая принимает массив в качестве входных данных, соединяет его со знаками минус между ними, а затем запускает его как код, что приводит к вычитание всех элементов в массиве.Cubix
Cubix видит следующий куб (обратите внимание, что Cubix игнорирует все пробелы):
Начало
IP начинается с третьей строки, указывая на восток. Он попадает в
'I'
команду, которая берет число из ввода и помещает его в стек. Затем он перенаправляется'^'
в цикл суммирования.Sum-петля
Я удалил все символы, не входящие в цикл суммирования, и заменил их на no-ops (
'.'
). IP изначально прибывает во вторую строку, указывая на восток.Сначала
'!'
команда проверяет верхний элемент. Если это так0
(т.е. мы достигли конца ввода), выполняется следующая инструкция ('v'
), отражающая IP вне цикла. Если мы еще не достигли конца ввода, мы добавляем два верхних элемента вместе ('+'
второй элемент - сумма до этой точки, верхний элемент - новый вход). Затем IP-адрес превращается в другую грань куба, в'u'
символ, который заставляет IP-адрес совершить разворот и выполнить'I'
команду (прочитать другое входное целое число), указывая на север. IP возвращается к верхней грани, пропускает ('$'
) инструкцию удаления (';'
) и делает еще один разворот, возвращаясь к точке, с которой мы начали.Конец
Если IP отображается вне цикла, выполняются следующие символы:
Эти инструкции удаляют верхний элемент (который равен нулю), а затем выводят верхний элемент (сумму) в виде целого числа. Затем
'@'
команда достигнута, поэтому программа заканчивается.источник
Python 2 и 3, 33 байта
Принимает ввод как отдельные параметры.
Python 2.
Python 3.
источник
lambda l,*r:l+sum(r)*(1/2-.5)*2
на 31 байт*(1/2*4-1)
это на байт меньше, чем у вас.JS (ES6), CGL (CGL Golfing Language) ,
3226 байтовJS делает вычитание, а CGL делает сложение.
JS:
Анонимная функция, которая вычитает каждый элемент массива, используя
Array#reduce
.Комментарий.
ВКТ
То, что выглядит как пробел в первой строке, на самом деле является неразрывным пробелом, комментарий в CGL. Первая строка игнорируется.
/
ничего не делают.-
Вычитает текущий указатель стека , так что указывает на вход.⨥
добавляет текущий стек (вход) вместе, помещает его в следующий стек и увеличивает текущий стек. Это неявно выводится.источник
x=>eval(x.join`-`)
, сохранив 5BJavaScript (ES6) / QBasic,
8483 байтаЕще одно решение с комментарием взломать!
JavaScript вычисляет сумму. Он принимает массив, содержащий числа в качестве входных данных. Выходы как функция
return
. Вы можете вызвать функцию, какalert(f([10,20,30]))
.QBasic вычисляет разницу. Неоднократно просит ввода. Как только вы вводите значение, он выводит разницу всех чисел, которые вы ввели, до момента нажатия Enterи снова запрашивает ввод. Продолжает делать то же самое до конца всего.
Как это работает?
В QBasic (язык структурированного семейства BASIC; для него не нужны номера строк),
'
отмечает начало комментария, который идет до конца строки. В то время как в JavaScript он отмечает начало строки. Итак, вся первая строка помечена как комментарий в QBasic, но в JavaScript строка выполняется (и эта строка содержит часть JavaScript, которая добавляет числа, а также/*
в конце, который начинает комментарий, чтобы скрыть остальные кода QBasic из интерпретатора JavaScript.)Код от второй строки до второй-последней строки содержит код QBasic для вычисления разности всех входных чисел (код очень понятен).
Последняя строка содержит
'*/
.'
заставляет интерпретатор QBasic интерпретировать следующий код как комментарий, тогда как в JavaScript он не оказывает никакого влияния, так как является частью комментария (который был запущен в конце первой строки). Следующий код (*/
) заставляет JavaScript завершать комментарий, который был начат в первой строке, но он не выполняется в QBasic, потому что QBasic считает, что это часть комментария.Тестовые случаи
JavaScript (добавляет):
QBasic (вычитает):
Перейти на этот сайт . Скопируйте и вставьте следующий код в их текстовый редактор:
Причина, по которой требуются номера строк, заключается в том, что упомянутый мной веб-сайт поддерживает только неструктурированные языки BASIC. И этот сайт - единственный приличный онлайн-переводчик бейсика, которого я смог найти. Тем не менее, выполнение кода, присутствующего в верхней части поста (код без номеров строк), должно нормально работать в любом хорошем интерпретаторе QBasic, который поддерживает структурированный BASIC, и
'
в качестве начального комментария (хотя немногие этого не делают, большинство делают, хотя).Примечания
END
потому что интерпретатор никогда не достигнет этого! (Он навсегда застрянет в бесконечном цикле; всегда требует большего ввода.)источник
Brain-Flak / Brain-Flueue , 20 байтов
Попробуйте онлайн! (Мозг-зенитчик) (плюс)
Попробуйте онлайн! (Brain-Flueue) (минус)
объяснение
Единственное различие между Brain-Flak и Brain-Flueue заключается в том, что Brain-Flueue заменяет два стека (последний пришел первым, кто вышел), используемых в Brain Flak, двумя очередями (первый пришел первым вышел). Естественно, эта программа использует эту разницу.
Аннотированный код
источник