Codegolf - Вычислите Квадрат И Извлеките Квадратный Корень!

  • Автор темы Dimsonb
  • Обновлено
  • 20, Oct 2024
  • #1

Вы должны создать команду, которая выводит квадрат ввода на одном языке и квадратный корень из ввода на другом. Побеждает самый короткий ответ в байтах!

Вы должны иметь точность не менее 3 знаков после запятой, а входные данные всегда будут положительным числом с плавающей запятой.

#полиглот #код-гольф #математика #полиглот

Dimsonb


Рег
05 Feb, 2014

Тем
77

Постов
198

Баллов
583
  • 26, Oct 2024
  • #2

C и C++, 68 65 байт Исходный ответ: Для обеих версий C выдает

 

Seth


Рег
30 Jul, 2020

Тем
80

Постов
204

Баллов
624
  • 26, Oct 2024
  • #3
Python 2 и Python 3, 23 21 байт Python 2.x выдаёт 2 байта, сэкономленные благодаря @Dennis!
 

Roseiz39284


Рег
03 Feb, 2012

Тем
68

Постов
190

Баллов
550
  • 26, Oct 2024
  • #4
Йольф и MATL, 1 байт Квадратный корень в Йольфе, квадрат в MATL. Попробуйте онлайн! (MATL) Попробуйте код Йольфа. Работает только в Firefox. Оба они имеют размер 1 байт, поскольку MATL и Jolf используют кодовые страницы ASCII/расширенный ASCII, поэтому все команды имеют размер 1 байт.
 

Azizjon


Рег
01 Apr, 2007

Тем
70

Постов
201

Баллов
561
  • 26, Oct 2024
  • #5
2sable Jelly, 2 байта 2sable вычисляет квадрат. Попробуйте онлайн! Jelly вычисляет квадратный корень. Попробуйте онлайн! Как это работает 2sable Jelly C (clang) и Python, 109 107 69 53 байта C: Попробуйте онлайн! Python: попробуйте онлайн! Работает с использованием комментариев к полиглоту. Остальное вполне объяснимо. Впервые использую C! Сэкономлено немало байт благодаря @Riker. Сэкономлено 2 байта за счет удаления ненужных пробелов. Сэкономлено очень много байтов за счет использования функции для C вместо STDIN/OUT. Сэкономлено 16 байт благодаря @Delioth за счет удаления оператора импорта вверху.
 

ALiexiciftito65


Рег
20 Apr, 2009

Тем
65

Постов
197

Баллов
542
  • 26, Oct 2024
  • #6
Ohm and Jelly , 3 байта Выводит квадрат в Оме, квадратный корень в Jelly. Ohm и Jelly используют разные однобайтовые кодовые страницы, поэтому программа будет выглядеть по-разному в каждой кодировке. xxd шестнадцатеричный дамп программы: Jelly Используя кодовую страницу Jelly, он выглядит следующим образом: Jelly принимает самую нижнюю строку в качестве основной ссылки и игнорирует другие ссылки, если они не вызываются специально. Итак, здесь он просто извлекает квадратный корень ( Ом. Используя кодовую страницу Ома (CP437), это выглядит так: и
 

Dundquogs57


Рег
25 Oct, 2024

Тем
56

Постов
183

Баллов
483
  • 26, Oct 2024
  • #7
C89 и C99, 47+3 = 50 байт. Требуется C89. Для тестирования в C89 попробуйте онлайн. ! Получение C89 для выполнения функции с помощью
 

AlexeyWolf


Рег
04 Oct, 2011

Тем
65

Постов
200

Баллов
545
  • 26, Oct 2024
  • #8
Octave / MATLAB, 31 29 байт. Это выводит квадрат в Octave и квадратный корень в MATLAB. Объяснение: Синтаксис, конечно, идентичен в MATLAB и Octave (для этого немного). хотя бы кусок кода). При этом создается анонимная функция: Basic/Delphi – 6 символов Квадратный корень в Basic и квадрат в Delphi. Вы можете использовать отладчик для проверки выражения, тем самым выполняя любые требования к выводу! Fireball , 3 байта Следующие байты составляют программу: 05AB1E вычисляет квадратный корень, квадраты Fireball Объяснение (05AB1E - Объяснение (Fireball - Иногда помогает неполный язык ;)
 

Abtop


Рег
06 Jan, 2011

Тем
70

Постов
180

Баллов
560
  • 26, Oct 2024
  • #9
PHP7 + JavaScript, 62 61. 58 байт. На самом деле это оказалось сложнее, чем я ожидал. Я очень удивлен тем, насколько длинным оказался мой код. Как это работает? Это работает путем выбора кода для запуска из массива. Обнаружение PHP и JavaScript выполняется с помощью PHP. ) всегда правдивы, даже Но мне нужно получить числовое значение, поэтому я просто использую ) и преобразую его в целое число (с помощью Now PHP возвращает значение. Размещение код внутри массива по этим индексам позволит нам выбрать правильный код для желаемого языка. Его можно использовать так же, как и в предыдущих полиглотах, которые я использовал в JavaScript (начиная с PHP (с нулевым байтом). Я рад, что мне удалось сократить эту проверку, и еще больше я доволен @rckd, который сократил ее до текущей версии! С этого момента он будет выполняться просто PHP PHP, извлекая квадратный корень из числа) , получает значение из второго аргумента и отображает его в стандартном выводе JavaScript. Выполняется JavaScript. Спасибо @rckd за сохранение 1 байта и @user59178 за сохранение 3 байтов!|ответ|| 05AB1E и Jelly , 4 байта (05AB1E). ) (Желли) Кто-то еще сделал хорошее замечание, я думаю, поскольку символы UTF-8 не используют одну и ту же операцию на всех кодовых страницах, каждая из которых технически занимает 2 байта для кодирования. Однако, если посмотреть на это с точки зрения шестнадцатеричного дампа: В кодировке CP1252 05AB1E это приводит к следующему: Это означает, что он все равно выведет квадрат и завершит работу, игнорируя остальное. Когда эти байты кодируются с использованием кодовой страницы Jelly: Это исходный предполагаемый код, при выполнении которого получается желаемый результат: получение входных данных и получение sqrt.
 

Ifail


Рег
06 Feb, 2012

Тем
82

Постов
210

Баллов
650
  • 26, Oct 2024
  • #10
Python 2 и Forth, 43 33 байта Попробуйте онлайн: Python 2 (квадрат) | Forth (sqrt) Это вычисляет анонимную функцию в Python и встроенную функцию на 2 байта больше, если поставить. Программа Forth принимает литерал с плавающей запятой, который в Forth должен быть записан в научной записи. Пи, усеченное до трех десятичных знаков ( JavaScript (ES6) / JavaScript (ES7), 52 байта. Возвращает квадрат входных данных в ES7 и квадратный корень в ES6. Довольно сложно протестировать, если только у вас нет более старого браузера, который поддерживает ES6, но не поддерживает ES7. CJam MATL, 8 байт Вычисляет квадрат в CJam (Попробуйте онлайн!) и квадратный корень в MATL (Попробуйте онлайн! Объяснение квадратного корня в CJam Объяснение квадратного корня в MATL C, язык сценариев Operation Flashpoint, 52 байта In скрипт OFP, точка с запятой в начале строки делает эту строку комментарием, тогда как C не заботится о дополнительной точке с запятой. C: Попробуйте онлайн! Язык сценариев OFP: Сохранить как результат:
 

Bahus7878


Рег
12 Nov, 2010

Тем
65

Постов
219

Баллов
544
  • 26, Oct 2024
  • #11
12 байт Редактировать: В моей первой версии я забыл, что приведение к Vyxal (Square
 
 
 
 
 
 
 
 
 
 
#>&:*.@ // is a comment
~2-1??
~       // evaluates the input string

2-1?   /* calculates 2^-1 = 1/2 (GolfScript does not support non-integers, but

due to a missed int cast in the interpreter, they can be generated with

the exponent function */

?  // calculates x^1/2 = sqrt(x)

// the stack is output implicitly

#>&:*.@
#>      // jumps over the arrow

&     // takes an integer as input

:*   // multiplies the top of the stack by itself

.  // outputs as integer

@ // halts
~2-1??  // is not executed

#>&:*.@
~2-1??
and C++ produces
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 RTa
²
 
.

0.5

0 , Python 3.x produces 1/2 .

double f(int a){return Math.pow(a, 1/2==0?2:0.5);}

/

2

1/2or 2

0 ||answer||

1/2

0.5

1/2or 2

0.5 ) and implicitly outputs it.

1/2

(1/2or 2).__rpow__ is the square function, and /bin/bash prog.sh 4 /bin/sh prog.sh 4 /bin/sh are both undefined, so the program just squares the implicitly read input and implicitly outputs it.

/bin/bash

/bin/sh flag (+3)

sqrt , C99 produces bc


sqrt(n) version ought to take less code, but it insists on implicitly declaring the n^2 bc -l<<<"sqrt($1^(($(kill -l|wc -l)*3-3)/7+1))" s, so this is the best I could manage.

p=^4 : echo "sqrt($1)$p"|bc

<<< ||answer||

dash

/

sh

<<< ):

bash

: ):

p

bash


: .

^4 (empty array) is a falsy value, while in JavaScript it is a truthy value (objects (except p sh is truthy!).
bash ( sh p=^4 : bc<<<"sqrt($1)$p" ).
** , while JavaScript yields (function(x) x)(42) === 42 .

0//1or exec("function=lambda a:(lambda b:a);x=0") y=2//2/2 f=(function(x)(x**y))//1 or(lambda x:x**y) , to get the code of the right language.

:*n; ½ , which is stdin #/* n=int(input());print(n**2);"""*/ print(sqrt(input))\\""" is parsed as the NULL-byte) and ' ' won't be parsed as the NULL-byte, comparing the literal string input a ?a^2'^.25
/ mirror up, then right >in:o#p; i read line of input n cast to number :o# square root p print ; terminate .

/&:*.@ / divide top two (no-op) & read decimal input : duplicate * square . output @ terminate s the code required.

/&:*.@ >in:o#p; (equivalent to y

y , which displays the squared number in an y .



1

-

(y)=y

f

y

Y

a

RTa in Forth. Python can have a named function x = f(y) y in front of the lambda.

y ) would be written like this:

f(y) ||answer||

YRTa f(y)=yy

mq ||answer||

/

rd

).

];

ECHO"$argv[1]"**2;# ||answer||

#

v in the mission folder, then call it with $argv[1] .

, 10

$argv[1] would remove precision in the Vyxal code. Added +2 bytes to fix it.

-r

ECHO"$argv[1]"**2;#];rdmq

Попробуйте онлайн в Vyxal!

Грок (Квадрат):

I√ # Push '√' to the register `# # Skip ‘#’ command : # Take input from STDIN Yp # Duplicate *z # Multiply and output as int q # Quit `_ # Never gets executed

Попробуйте онлайн в Гроке!

 

Neralyn


Рег
01 Nov, 2019

Тем
80

Постов
201

Баллов
641
  • 26, Oct 2024
  • #12

PHP и CJam, 30 29 25 байт

# Implicit input I # Cast to int √ # Square root `#:Yp*zq` # Push string _ # Delete string # Implicit output

Вычисляет квадрат в PHP и квадратный корень в CJam. Должен запускаться с использованием I√`#:Yp*zq`_ in PHP.

PHP

Вызывает первый аргумент командной строки ( int ) to the power 2 and outputs it. Here hint format["%1", 2 call F] фактически помещается как встроенная переменная в строку, которая преобразуется в число перед возведением в степень. Это потому, что init.sqs is not a valid instruction in CJam and will cause it to error out while parsing, but putting it in a string won't cause any problems.

;float f(float x){return sqrt(x);}char* F="_this^2"; starts a comment, so everything after is ignored.

Попробуйте онлайн!

CJam

Первая часть кода, l % Push 1. This is a number or equivalently a 1×1 array d % Consecutive differences. Pops 1, pushes [] (empty array) _ % Negate (element-wise). This leaves [] as is * % Implicitly input a number and push it. Multiply (element-wise): % pops [] and the input number, pushes [] G % Push input number again X^ % Square root. Pops number, pushes its square root ! % Transpose. For a number (1×1 array) this does nothing % Implicitly display. The stack contains [] and the result; but % [] is not displayed at all pushes a bunch of values and does a bunch of operations, all of which are thoroughly useless. The only important thing is that they doesn't cause any errors, because right afterwards is ld e# Read input line and interpret as a double _ e# Duplicate * e# Multiply. Pops the input number twice, pushes its square G e# Push 16 X e# Push 1 ^ e# Bitwise XOR. Pops 16 and 1, and pushes 17 ! e# Negate. Pops 17, pushes 0 e# Implicitly display. This prints the squared input with decimals, e# immediately followed by the 0 coming from the negate operation e# Even if the square of the input number is an integer, say 5, e# it is displayed as 5.0, so including an extra 0 always gives a e# correct result , который помещает весь стек в массив, а затем отбрасывает его.

После этого он считывает двойное значение из ввода ( ld_*GX^! ), and gets its square root ( f=a=>eval(`try{eval("a**2")}catch(e){Math.sqrt(a)}`) console.log(f(4)); ) и неявно выводит его.

Попробуйте онлайн!

 

Владимир Гильен


Рег
28 Oct, 2020

Тем
82

Постов
199

Баллов
639
  • 26, Oct 2024
  • #13

Десмос и Пип, 12 байт

f=a=>eval(`try{eval("a**2")}catch(e){Math.sqrt(a)}`)

Бегите в Десмос

Запустить в Пипе

Десмос

Первая строка — это четыре неопределённые переменные, умноженные вместе. Демос жалуется на это, но в конечном итоге это бесполезно.

Вторая строка определяет функцию 3141e-3 as 3.141 раз f= (with an implicit multiplication operator). This function can be used in other lines and will return the square of any argument number. As a bonus, we also get to see a graph of f .

Пип

fsqrt calculates the square root of the command-line argument ( """ ) fsqrt \ """);lambda n:n*n , и nqƓ½ stores the result in nq“\n . Вторая строка анализируется как три выражения:

  • 6e 71 93 0a (evaluates to the main function)
  • nq # Ignored by Jelly, push n**2 in 05AB1E then quit. Ɠ½ # Ignored by 05AB1E due to quit, push sqroot of input in Jelly. (evaluates to nqƓ½ потому что alert always equals itself)
  • alert((_=prompt())*_) (evaluates to the value stored in echo sqrt($argv[1]); ранее)

Последнее из этих выражений завершает программу и поэтому печатается автоматически.

 

Фывыфв


Рег
04 Apr, 2014

Тем
70

Постов
210

Баллов
570
  • 26, Oct 2024
  • #14

Ретикулярный / Бефунге-98, 15 байт

2D языки!

echo$argv[1]**.5

Бефунге-98

eval

Ретикулярный

+!'0' ||answer||

КБИК /QBasic, 26 18 байт

\0

В QBasic, он принимает число и печатает это число в квадрате. Остальная часть кода игнорируется, поскольку QBasic воспринимает ее как комментарий ( '\0' ).

КБИК использует тот же оператор ввода. Затем он выводит то же самое число в квадрате, а затем возводит его в четверть степени, фактически дважды извлекая корень. Это потому, что false is seen as a code literal: Pure QBasic code that is not parsed by QBIC.

 

Josarucobelo


Рег
21 Oct, 2020

Тем
88

Постов
212

Баллов
682
  • 26, Oct 2024
  • #15

GolfScript/Befunge, 15 байт

\0

Бефунге:

true

Гольфскрипт:

'\0'=="\0"

Это мой первый гольф, дайте мне знать, если я делаю что-то не так :)

  • Отредактировано, чтобы сделать его более портативным, благодаря Wzl.
 

Foteretetryt


Рег
20 Jul, 2014

Тем
60

Постов
195

Баллов
515
  • 26, Oct 2024
  • #17

><> / Желе, 9 байт (7 байт кода + 2 для флага '-v' в ><>)

Чувак, мне действительно нравится структура ссылок Jelly.

1

Вычисляет квадрат в ><> , и квадратный корень в Желе.

 

Дмитрий Панков


Рег
23 Oct, 2020

Тем
85

Постов
196

Баллов
621
  • 26, Oct 2024
  • #18

Python 3 + JavaScript, 101 байт

+

Квадратный корень в JS, квадрат в Python.

Работает в Firefox (проверено на FF 52) и требует ! being valid syntax. Also requires ES7 for the not оператор.

 

Himick


Рег
02 Mar, 2005

Тем
67

Постов
213

Баллов
568
  • 26, Oct 2024
  • #19

macOS Bash и sh, 24 байта

new Boolean(false)

На Маке, null is [] работает в режиме Posix, и в этом случае согласно https://www.gnu.org/software/bash/manual/html_node/Bash-POSIX-Mode.html:

Операторы присваивания, предшествующие специальным встроенным командам POSIX, сохраняются в среде оболочки после завершения встроенной функции.

Таким образом, для +![] , the variable eval(['alert((_=prompt())*_)','echo$argv[1]**.5'][+![]]); имеет значение ² Square input ╣ Unassigned t Unassigned after the ²╣t запускается, но для ý Pushes an empty string to the stack (not entirely sure why) ¹ Push first input t Square root , the variable ý¹t имеет это значение только тогда, когда FD B9 74 is run, and is empty afterwards.

Быть все еще действительно sqr(x) under the covers, some bashisms such as @(x) % Take x as input x^( ) % Raise x to the power of ... version % Returns the version number % 4.2.0 in Octave, % '9.2.0.538062 (R2017a)' in MATLAB version>60 % 'R' is larger than 60. All others are smaller 3*any(version>60)/2 % Checks if there is an 'R' and multiplies it by 1.5 if it is. 2-3*any(version>60) % 2-1.5*(is there an 'R') Herestrings по-прежнему работают как для случаев bash, так и для sh.


Bash и Dash (и утилиты GNU), 27

В Убунту 16.01 @(x)x^(2-3*any(version>60)/2) is a symlink to int , что не так sqrt herestrings. So we have this instead:

sqrt

Попробуйте онлайн.

 

Dpyata


Рег
17 May, 2008

Тем
89

Постов
207

Баллов
672
  • 26, Oct 2024
  • #20

bash и sh, 48 байт

Обновление: я должен признать поражение. Цифровая травмаОтвет bash/sh гораздо более элегантен, чем этот.


sqrt(n)

bash производит n^2 , sh produces -lm .


float f(float n){return n//* /sqrt(n)//*/1*n ;} is only needed so that можно рассчитать. Разница в поведении между bash и sh.

Хорошо, технически я использую "sh" по-прежнему bash, но bash в режиме "POSIX" (что происходит, если вы вызываете instead of ² в системах, где ²⌂◙ is an alias for bash). If this is the case on your system, you can test with:

½

Это основано на одном из различий, описанных здесь: https://www.gnu.org/software/bash/manual/html_node/Bash-POSIX-Mode.html

 

PrintingKing


Рег
03 Feb, 2007

Тем
71

Постов
171

Баллов
526
  • 26, Oct 2024
  • #21

Питон 3 и Питон 2, 18 байт

Я черпал вдохновение из этот ответ

’ ½

Питон 3: Попробуйте онлайн!

00000000: fd7f 0a ... is evaluated to #/* lambda n:n**.5;'''*/ float a(i){return i*i;}//''' так . Numeric literal; yield 0.5. * Raise the input to the power 0.5. This yields the square root. is equal to * Read the input twice and compute the product of both copies. This pushes the square of the input. . Unrecognized token (ignored). => кврт

Питон 2: Попробуйте онлайн!

*. is evaluated to U так sqrt(n) is equal to n^2 => ^2

 

Vect0r


Рег
22 Aug, 2011

Тем
74

Постов
208

Баллов
588
  • 26, Oct 2024
  • #22

Ява и классный, 50 байт

lambda n:n**(1/2or 2)

Попробуйте Java онлайн!

Попробуйте Groovy онлайн!

Java-квадраты, Groovy-корни. Вдохновение взято из этот ответ, хотя, к сожалению, в Java нет приведения типов, как в Python, и что в Groovy используются другие лямбда-выражения, чем в Java. Это работает, потому что в Java sqrt(n) is equal to n^2 , а в Groovy это #include<math.h> float f(float n){return pow(n,sizeof('-')-1?2:.5);} .

 

Darklord1219


Рег
14 Jan, 2021

Тем
63

Постов
221

Баллов
586
  • 26, Oct 2024
  • #23

Желе / Пип, 6 байт

РЕДАКТИРОВАТЬ: обратные операции короче на байт.

#include<math.h> float f(float n){auto p=.5;return pow(n,2-p*3);}

Попробуйте Jelly онлайн!

Jelly начинает выполнение в нижней части кода (его «основная ссылка») и проверяет, нужно ли ему что-то выше: он видит, что команда возведена в квадрат, и неявно заботится о вводе и выводе.

Попробуйте Пип онлайн!

Pip выполняет верхнюю строку, возводит в квадрат (неявно считанную из строки cmd) переменную a и неявно печатает ее. Суть игнорируется.

 

Svitanokok


Рег
15 Feb, 2011

Тем
84

Постов
212

Баллов
672
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно