Вы должны создать полиглот, который выводит квадрат ввода на одном языке и квадратный корень ввода на другом. Самый короткий ответ в байтах побеждает!
Вы должны иметь точность не менее 3 десятичных знаков, и входные данные всегда будут положительными числами.
auto
означает «выделить в стеке». Ключевое слово довольно бесполезно, потому что это так или иначе по умолчанию, поэтому C ++ изменило его значение на другое. В C, однако, он не выражает никакого мнения о типеp
(это класс хранения, а не тип), поэтому он считаетсяint
по умолчанию (этоint
поведение по умолчанию не рекомендуется в настоящее время, и, вероятно, существует только потому, что некоторые из предшественников Си вообще не имели типов данных, но компиляторы все еще понимают это). И, конечно,(int)0.5
0.n^2
.Python 2 и Python 3,
2321 байтPython 2.x производит
n^2
, Python 3.x производитsqrt(n)
.2 байта сохранены благодаря @Dennis!
источник
or
?/
делает целочисленное деление (1/2==0
). В Py3, это делает деление с плавающей запятой (1/2==0.5)
.0
Это Фэлси.2 соболь / желе , 2 байта
2sable вычисляет квадрат. Попробуйте онлайн!
Желе вычисляет квадратный корень. Попробуйте онлайн!
Как это устроено
2sable
Желе
источник
C (лязг) и Python ,
1091076953 байтаC: Попробуйте онлайн!
Python: Попробуйте онлайн!
Работает с помощью комментариев к полиглоту. Остальное довольно объяснительно.
Впервые с помощью C!
источник
return 0;
с конца - C99 содержит неявный возврат 0main()
специально. Источникstdio.h
в этом случае?Ом и Желе , 3 байта
Выводит квадрат в Ом, квадратный корень в желе.
Ohm и Jelly используют разные однобайтовые кодовые страницы, поэтому программа будет выглядеть по-разному в каждой кодировке.
xxd hexdump программы:
Желе
Используя кодовую страницу желе, это выглядит так:
Jelly выбирает самую нижнюю строку своей основной ссылки и игнорирует другие ссылки, если не указано иное. Так что здесь он просто делает квадратный корень (
½
) и неявно выводит его.ом
Используя кодовую страницу Ома (CP437), это выглядит так:
²
является квадратом функция,⌂
и◙
оба не определены, поэтому программа просто квадраты неявно чтения входных и неявно выводит его.источник
½
байта, к чему относится²
карта? Это просто мусор, который все еще игнорируется? И наоборот для Ом? Тогда, казалось бы, 2 байта.²
в оме находится кодовая точка 5. Кодовая точка 5 в Jelly есть%
и ничего не делает, так что не имеет значения, что такое первая строка. Предположим, что½
в Jelly значение 27, а кодовая точка 27 в омеJ
ничего не делает, поэтому не имеет значения, что такое вторая строка. Таким образом, если у вас есть файл00000101<newline>00011011
, это 3 байта. Я думаю, единственная проблема в том, что новая строка находится в другом месте кодовых страниц.C89 и C99, 47 + 3 = 50 байтов
Требуется
-lm
флаг (+3)С89 производит
n^2
, С99 производитsqrt(n)
. Чтобы проверить в C89, попробуйте онлайн!Чтобы заставить C89 делать
sqrt
версию, нужно меньше кода, но она настаивает на неявном объявленииsqrt
функции сint
s, так что это лучшее, что я мог бы сделать.источник
Октава / MATLAB,
3129 байтЭто выводит квадрат в Octave и квадратный корень в MATLAB.
Объяснение:
Синтаксис, конечно, идентичен в MATLAB и Octave (по крайней мере, для этого небольшого фрагмента кода).
Это создает анонимную функцию:
источник
Basic / Delphi - 6 символов
Квадратный корень в Basic и квадратный в Delphi.
Вы можете использовать отладчик для проверки выражения, тем самым выполняя любые выходные требования!
источник
x
? Вы не можете предполагать, что это сохранено к значению. Но вы можете удалить(x)
и пометить ее как возвращающую функцию.05AB1E / Огненный шар , 3 байта
Следующие байты составляют программу:
05AB1E вычисляет квадратный корень, квадраты огненного шара.
Пояснение (05AB1E -
ý¹t
):Пояснение (Огненный шар -
²╣t
):Иногда помогает иметь неполный язык;)
источник
PHP7 + JavaScript,
626158 байтЭто было на самом деле сложнее, чем я ожидал! Я очень удивлен тем, как долго мой код.
Как это работает?
Это работает путем выбора кода для запуска из массива.
Обнаружение PHP и JavaScript производится с помощью
+![]
.В PHP
[]
(пустой массив) является ложным значением, в то время как в JavaScript это истинное значение (объекты (кромеnull
) всегда являются правдивыми, дажеnew Boolean(false)
правдивыми!).Но мне нужно получить его в числовое значение, поэтому я просто использую
not
(!
) и преобразую его в целое число (с помощью+
).Теперь, PHP дает значение
1
, в то время как дает JavaScript0
.Размещение кода внутри массива с такими индексами позволит нам выбрать правильный код для нужного языка.
Это можно использовать как
[JS,PHP][+![]]
для получения кода на нужном языке.В предыдущих полиглотах, которые я использовал
'\0'=="\0"
,true
в JavaScript (поскольку\0
он анализируется как NULL-байт) иfalse
в PHP ('\0'
он не будет анализироваться как NULL-байт, сравнивая буквенную строку\0
с NULL-байтом).Я счастлив, что мне удалось сократить этот чек до
+!'0'
.Я еще более доволен @rckd , который сократил его до текущей версии!
С этого
eval
момента , это просто необходимый код.PHP
PHP выполнится
echo$argv[1]**.5
(эквивалентноecho sqrt($argv[1]);
квадратному корню из числа), получит значение из второго аргумента и отобразит его в стандартном выводе.JavaScript
Выполняется JavaScript
alert((_=prompt())*_)
, который отображает квадратное число вalert
.Спасибо @rckd за сохранение 1 байта и @ user59178 за сохранение 3 байта!
источник
echo$argv[1]**.5
вместоecho sqrt($argv[1])
05AB1E и Jelly , 4 байта
(05AB1E) - (Желе)
Кто-то еще сделал хорошее замечание, я полагаю, поскольку символы UTF-8 не разделяют одну и ту же операцию на кодовых страницах, которые они технически кодируют по 2 байта каждая. Однако, если посмотреть на это с точки зрения шестнадцатеричного дампа:
В кодировке 05AB1E CP1252 это приводит к:
То есть он все равно выведет квадрат и выйдет, игнорируя остальные. Когда эти байты кодируются с использованием кодовой страницы Jelly:
Который является исходным предполагаемым кодом, когда он выполняется, приводит к желаемому результату ввода данных и получения sqrt.
источник
Ɠ
и½
требует два байта, подлежащего кодированию. Тем не менее, последовательность байтов6e 71 93 0a
(nqƓ½
для Jelly,nq“\n
для CP-1252) должна работать на обоих языках.½
находящийся на обеих кодовых страницах, не позволяет считать его одним, потому что это разные операции, я полагаю? Я все еще неясен в отношении всей кодовой страницы.6e 71 93 0a
поэтому «теоретически» нет необходимости требовать 4 байта. Просто запросите 4 байта. Так уж сложилось, что в стандартной кодировке 05AB1E он читает одну вещь, которая делает то, что вы хотите, в то время как в стандартной кодировке Jelly он читает другую, которая делает то, что вы хотите. Кроме того, только то, что 2 кодировки могут кодировать один и тот же символ, не означает, что этот символ будет одинаковым в обоих из них. Подумайте о кодировках, подобных числовому шифру с уже найденной таблицей поиска, и, надеюсь, это даст вам хорошую начальную ментальную модель.CJam / MATL , 8 байтов
Вычисляет квадрат в CJam ( попробуйте онлайн! ) И квадратный корень в MATL ( попробуйте онлайн! ).
Объяснение квадрата в CJam
Объяснение квадратного корня в MATL
источник
Python 2 и Forth,
4333 байтаПопробуйте онлайн: Python 2 (квадрат) | Forth (sqrt)
Это оценивает анонимную функцию в Python и встроенную функцию
fsqrt
в Forth. Python может иметь именованную функцию ещеf
на 2 байта, помещаяf=
перед лямбда- выражением .Программа Forth принимает литерал с плавающей запятой , который в Forth должен быть написан в научной нотации. Pi, усеченный до 3 десятичных знаков (
3.141
), будет записан так:источник
JavaScript (ES6) / JavaScript (ES7), 52 байта
Возвращает квадрат ввода в ES7 и квадратный корень в ES6. Довольно сложно протестировать, если у вас нет более старого браузера, который поддерживает ES6, но не ES7.
источник
PHP и CJam ,
302925 байтВычисляет квадрат в PHP и квадратный корень в CJam. Должен быть запущен с использованием
-r
в PHP.PHP
Возводит первый аргумент командной строки (
$argv[1]
) в степень 2 и выводит его. Здесь$argv[1]
фактически вставляется как строковая переменная в строке, которая приводится к числу перед выполнением возведения в степень. Это потому чтоv
не является допустимой инструкцией в CJam и приведет к ошибке при синтаксическом анализе, но размещение ее в строке не вызовет никаких проблем.#
начинает комментарий, поэтому все после игнорируется.Попробуйте онлайн!
CJam
Первая часть кода
ECHO"$argv[1]"**2;#
выдвигает кучу значений и выполняет кучу операций, которые совершенно бесполезны. Единственная важная вещь заключается в том, что они не вызывают никаких ошибок, потому что сразу после этого];
, который оборачивает весь стек в массив, а затем отбрасывает его.После этого он читает double из input (
rd
) и получает его квадратный корень (mq
) и неявно выводит его.Попробуйте онлайн!
источник
C, язык сценариев работы Flashpoint , 52 байта
В сценарии OFP точка с запятой в начале строки делает эту строку комментарием, тогда как C не заботится о дополнительной точке с запятой.
C:
Попробуйте онлайн!
Язык сценариев OFP:
Сохранить как
init.sqs
в папке миссии, а затем вызвать его с помощьюhint format["%1", 2 call F]
.Результат:
источник
Reticular / Befunge-98 , 15 байтов
2D языки!
Befunge-98
ретикулярный
источник
> <> / Jelly , 9 байт (7-байтовый код + 2 для флага '-v' в> <>)
Чувак, мне действительно весело со структурой ссылок Jelly.
Вычисляет квадрат в> <> и квадратный корень в желе .
источник
-v
, по моему мнению, согласуется с ответом [ top -oted [[ codegolf.meta.stackexchange.com/a/11431/44874 ]] для мета-запроса, обрабатывающего этот случай. Это><>
нужно переводчику,-v
и это для него самый простой вызов.Python 3 + JavaScript, 101 байт
Квадратный корень в JS, квадратный в Python.
Работает на Firefox (протестировано на FF 52) и требует
(function(x) x)(42) === 42
правильного синтаксиса. Также требует ES7 для**
оператора.источник
x=>x**y
вместо этого? Или Python захлебнется этим?function
это не ключевое слово, это действительный идентификатор. Поэтому я просто назначил ему функцию noop (внутриexec
оператора).Баш и Ш, 48 байт
Обновление: я должен признать поражение. Ответ bash / sh от Digital Trauma гораздо элегантнее, чем этот.
Баш производит
n^2
, ш производитsqrt(n)
.bc
нужно только так, чтобыsqrt
можно было рассчитать. Разница в поведении между bash и sh.Хорошо, технически "sh", который я использую, все еще bash, но bash в режиме "POSIX" (что происходит, если вы вызываете
/bin/sh
вместо/bin/bash
систем, где/bin/sh
псевдоним bash). Если это так в вашей системе, вы можете проверить с:Это основано на одном из различий, объясненных здесь: https://www.gnu.org/software/bash/manual/html_node/Bash-POSIX-Mode.html.
источник
kill -l
(перечисляет возможные сигналы; ничего не меняет) вbash
иsh
. Это одно из многих отличий, которые вы можете найти здесь: gnu.org/software/bash/manual/html_node/Bash-POSIX-Mode.htmlQBIC / QBasic,
2618 байтВ QBasic он принимает число и печатает это число в квадрате. Остальная часть кода игнорируется, потому что QBasic видит его как комментарий (
'
).QBIC использует тот же оператор ввода. Затем он напечатал то же число в квадрате, затем поднял до степени четверти, эффективно укореняя его дважды. Это потому, что
'
рассматривается как литерал кода: чистый код QBasic, который не анализируется QBIC.источник
Желе / Пип , 6 байт
РЕДАКТИРОВАТЬ: Это на байт короче, чтобы изменить операции.
Попробуйте желе онлайн!
Jelly начинает выполнение в нижней части кода (его «главная ссылка») и видит, нужно ли ему что-то более высокое: он видит команду на квадрат и неявно заботится о вводе и выводе.
Попробуйте Pip онлайн!
Pip выполняет верхнюю строку, возводя в квадрат (неявно считанные из строки cmd) переменную a a и неявно печатает ее. Нижняя строка игнорируется.
источник
PRTaVS
.Wolfram Language / PHP , 25 байт
Получить квадрат числа в Wolfram Language и получить квадратный корень в PHP;
Первая строка - Wolfram Language. Во-первых, вы должны изменить n на панели поиска в Wolfram Alpha, поэтому код также является вводом. Затем он будет генерировать ответ при нажатии Enter
Вторая строка PHP
источник
PHP 5.6 и PHP 7, 55 байт
PHP 5.6 производит
n^2
, PHP 7 производитsqrt(n)
.источник
macOS Bash и sh, 24 байта
На Mac,
sh
этоbash
работает в режиме Posix, и в этом случае , как в https://www.gnu.org/software/bash/manual/html_node/Bash-POSIX-Mode.html :Таким образом, для
sh
, переменнаяp
имеет значение^4
после:
запуска, но дляbash
, переменнаяp
имеет это значение только тогда, когда:
выполнения и после этого пуста.Будучи все еще действительно
bash
под прикрытием, некоторые bashisms, такие как<<<
herestrings, все еще работают и для случаев bash и sh.Bash and dash (и утилиты GNU), 27
В Ubuntu 16.01
sh
есть символическая ссылкаdash
, которая не работает со<<<
строками. Таким образом, у нас есть это вместо:Попробуйте онлайн .
источник
Октава / Кардинал , 28 байт
Эта программа возводит в квадрат значения в Cardinal и получает квадратный корень в Octave
Попробуйте онлайн! (Октава)
Попробуйте онлайн! (Кардинал)
Так что% это однострочный комментарий в октаве, поэтому он просто получает ввод и печатает квадратный корень
Так что программа Cardinal не сталкивается с ошибкой деления на 0 и умирает, программа
был сдвинут с пробелом, который игнорируется обеими программами
Пояснения к программе «Кардинал»:
Программа запускается с%.
Получает ввод и сохраняет значение как активное:
устанавливает неактивное значение равным активному =
умножает активное на неактивное t.
Наконец, выводится активное значение.
источник
PHP / JavaScript, 43 байта
Ввод идет как:
Вроде самоочевидно, но соответствует ли это правилам? Мой первый код гольф, хотя :-)
источник
alert(<?=$x*$x.')>'.sqrt($x)?
)CGL (CGL Golfing Language) / JS (ES6), 13 байтов (не конкурирует)
Не конкурирует, потому что:
CGL не является допустимым языком .Из-за+
иⓟ
, CGL технически является допустимым языком.Код:
JS:
Просто: функция анонимной стрелки, которая возвращает свой первый аргумент в квадрате. Неназванный код языка закомментирован.
ВКТ:
Неразрывные пространство перед первой строкой действует как комментарий. С
/
не опа.-
Во втором средстве линии для уменьшения текущего номера стека, который по умолчанию равно 0. То затем устанавливает его в -1, где вход хранится.₂
Заменяет первый элемент в текущем стеке с его квадратным корнем, который теперь , когда вход помещен. По умолчанию текущий стек выводится, выводя квадратный корень из ввода.источник