한 언어로 입력의 제곱을 출력하고 다른 언어로 입력의 제곱근을 출력 하는 폴리 글 로트 를 작성해야합니다 . 바이트 단위의 최단 답변이 승리합니다!
소수점 이하 3 자리 이상의 정밀도를 가져야하며 입력은 항상 양의 부동 소수점입니다.
한 언어로 입력의 제곱을 출력하고 다른 언어로 입력의 제곱근을 출력 하는 폴리 글 로트 를 작성해야합니다 . 바이트 단위의 최단 답변이 승리합니다!
소수점 이하 3 자리 이상의 정밀도를 가져야하며 입력은 항상 양의 부동 소수점입니다.
답변:
U
Jolf의 제곱근, MATL의 제곱
온라인으로 사용해보십시오! (MATL)
Jolf 코드를 사용해보십시오. Firefox에서만 작동합니다.
MATL 및 Jolf는 모두 ASCII / 확장 ASCII 코드 페이지를 사용하므로 모든 바이트는 1 바이트입니다.
#include<math.h>
float f(float n){auto p=.5;return pow(n,2-p*3);}
원래 답변 :
#include<math.h>
float f(float n){return pow(n,sizeof('-')-1?2:.5);}
두 버전 모두 C 생성 n^2
및 C ++ 생성 sqrt(n)
.
auto
"스택에 할당"을 의미합니다. 어쨌든 기본 키워드이기 때문에 키워드는 쓸모가 없으므로 C ++은 다른 의미로 사용했습니다. 그러나 C에서는 유형 p
(저장 유형이 아닌 유형) 에 대한 의견을 나타내지 않으므로 int
기본적으로 계산됩니다 (이 기본 int
동작은 현재 권장하지 않으며 현재로서는 존재하기 때문에 가능합니다) C의 이전 모델 중 일부는 데이터 유형이 없었지만 컴파일러는 여전히 데이터 유형을 이해합니다. 그리고 물론, (int)0.5
0입니다.
n^2
.
lambda n:n**(1/2or 2)
Python 2.x는 n^2
, Python 3.x는을 생성합니다 sqrt(n)
.
@Dennis 덕분에 2 바이트가 절약되었습니다!
or
?
/
정수 나누기 ( 1/2==0
)를 수행합니다. Py3, 그것은 (포인트 부문 부동 않는가 1/2==0.5)
. 0
falsey입니다.
*.
2sable은 제곱을 계산합니다. 온라인으로 사용해보십시오!
젤리는 제곱근을 계산합니다. 온라인으로 사용해보십시오!
* Read the input twice and compute the product of both copies.
This pushes the square of the input.
. Unrecognized token (ignored).
. Numeric literal; yield 0.5.
* Raise the input to the power 0.5.
This yields the square root.
#/*
lambda n:n**.5;'''*/
float a(i){return i*i;}//'''
C : 온라인으로 해보십시오!
Python : 온라인으로 사용해보십시오!
폴리 글롯에 주석을 사용하여 작동합니다. 나머지는 설명이 필요합니다.
C를 처음 사용!
stdio.h
합니까?
젤리의 제곱근 인 옴으로 제곱을 출력합니다.
Ohm과 Jelly는 다른 1 바이트 코드 페이지를 사용하므로 프로그램은 각 인코딩마다 다르게 나타납니다.
프로그램의 xxd hexdump :
00000000: fd7f 0a ...
Jelly의 코드 페이지를 사용하면 다음과 같이 나타납니다.
’
½
Jelly는 맨 아래 줄을 기본 링크로 사용하고 특별히 호출하지 않는 한 다른 링크는 무시합니다. 따라서 여기에서는 제곱근 ( ½
)을 수행하고 암시 적으로 출력합니다.
Ohm의 코드 페이지 (CP437)를 사용하면 다음과 같이 나타납니다.
²⌂◙
²
제곱 함수이고, ⌂
그리고 ◙
둘 미정이므로 프로그램은 단지 사각형 내재적 입력을 읽고 암시를 출력한다.
½
바이트 를 얻으면 ²
지도는 무엇입니까? 여전히 무시되는 것은 쓰레기입니까? 옴의 경우도 마찬가지입니까? 그런 다음 2 바이트 인 것 같습니다.
²
Ohm에서 코드 포인트 5에 있다고 가정합니다 . Jelly의 코드 포인트 5 %
는 아무것도하지 않으며 아무 것도하지 않으므로 첫 번째 줄이 무엇인지는 중요하지 않습니다. 한다고 가정 ½
젤리에 27이며, 옴의 코드 포인트 (27)는 J
아무것도하지 않는다, 그래서 두 번째 줄은 중요하지 않습니다. 따라서의 파일이 00000101<newline>00011011
있으면 3 바이트입니다. 줄 바꿈이 코드 페이지의 다른 위치에있는 경우 유일한 문제는 것 같아요.
@(x)x^(2-3*any(version>60)/2)
옥타브로 제곱을 출력하고 MATLAB으로 제곱근을 출력합니다.
설명:
구문은 MATLAB과 Octave에서 동일합니다 (적어도이 작은 코드의 경우).
이것은 익명 함수를 만듭니다.
@(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')
sqr(x)
Basic의 제곱근과 Delphi의 제곱근.
디버거를 사용하여 식을 검사하여 모든 출력 요구 사항을 충족시킬 수 있습니다!
x
입니까? 값으로 저장되었다고 가정 할 수 없습니다. 그러나 실제로를 제거하고 (x)
함수를 반환하는 것으로 레이블 을 지정할 수 있습니다.
다음 바이트가 프로그램을 구성합니다.
FD B9 74
05AB1E는 제곱근, 불 덩어리 제곱을 계산합니다.
설명 (05AB1E- ý¹t
) :
ý Pushes an empty string to the stack (not entirely sure why)
¹ Push first input
t Square root
설명 (Fireball- ²╣t
) :
² Square input
╣ Unassigned
t Unassigned
때로는 불완전한 언어를 갖는 데 도움이됩니다.)
이것은 실제로 예상보다 더 어려웠습니다! 내 코드의 길이가 놀랍습니다.
eval(['alert((_=prompt())*_)','echo$argv[1]**.5'][+![]]);
어떻게 작동합니까?
이것은 배열에서 실행할 코드를 선택하여 작동합니다.
으로 PHP 및 JavaScript를 감지 +![]
합니다.
PHP에서 []
자바 스크립트에이 truthy 값이있는 동안 (빈 배열)하는 falsy 값이 ((제외 객체 null
)도 항상 truthy 있습니다 new Boolean(false)
truthy입니다!).
그러나 숫자 값으로 가져와야하므로 not
( !
)를 사용하고 정수 ()로 변환하면됩니다 +
.
이제 PHP는 값을 1
, JavaScript는을 산출 0
합니다.
해당 인덱스에서 배열 안에 코드를 배치하면 원하는 언어에 맞는 코드를 선택할 수 있습니다.
이것은 [JS,PHP][+![]]
올바른 언어의 코드를 얻기 위해 로 사용될 수 있습니다 .
이전 polyglots에, 나는 사용한 적이 '\0'=="\0"
되는, true
(이후 자바 스크립트 \0
와 NULL 바이트로 구문 분석) false
((가) PHP에서 '\0'
리터럴 문자열 비교는 NULL 바이트로 구문 분석되지 않습니다 \0
널 바이트)를.
이 확인을 (으)로 줄인 것에 대해 기쁘게 생각합니다 +!'0'
. @rckd 에
대해 더 행복 합니다. 현재 버전으로 줄였습니다!
거기서부터는 단순히 eval
필요한 코드입니다.
PHP
PHP는 두 번째 인수에서 값을 받아 표준 출력에 표시하여 (제곱근 수 echo$argv[1]**.5
와 동일) 실행 echo sqrt($argv[1]);
합니다.
자바 스크립트
JavaScript는를 alert((_=prompt())*_)
제곱합니다 alert
.
당신이 주셔서 감사합니다 @rckd 1 바이트를 저장하기위한, 그리고 user59178 @ 3 바이트를 절약!
echo$argv[1]**.5
대신 다음 을 사용하여 3 바이트를 절약 할 수 있습니다.echo sqrt($argv[1])
nqƓ½
nq # Ignored by Jelly, push n**2 in 05AB1E then quit.
Ɠ½ # Ignored by 05AB1E due to quit, push sqroot of input in Jelly.
UTF-8 문자는 코드 페이지에서 기술적으로 인코딩 할 각각 2 바이트 인 동일한 작업을 공유하지 않기 때문에 다른 누군가가 좋은 지적을했습니다. 그러나 16 진 덤프 측면에서 이것을 볼 때 :
6e 71 93 0a
05AB1E의 CP1252 인코딩에서 결과는 다음과 같습니다.
nq“\n
그것은 여전히 사각형을 출력하고 나머지는 무시하고 종료한다는 것을 의미합니다. 이 바이트가 Jelly의 코드 페이지를 사용하여 인코딩 된 경우 :
nqƓ½
원래 의도 된 코드는 실행될 때 원하는 입력을 취하고 sqrt를 가져옵니다.
Ɠ
그리고 ½
부호화 두 바이트를 필요로한다. 그러나 바이트 시퀀스 6e 71 93 0a
( nqƓ½
Jelly의 nq“\n
경우 CP-1252의 경우)는 두 언어 모두에서 작동해야합니다.
½
는 두 코드 페이지 모두에 있다고 생각하지만 다른 작업이기 때문에 단일 코드로 계산할 수 없습니다. 나는 여전히 전체 코드 페이지에 대해 애매하다.
6e 71 93 0a
이므로 4 바이트 를 주장하는 것에 대한 "이론적으로"는 없습니다. 4 바이트 만 청구하십시오. 05AB1E의 표준 인코딩에서는 원하는 것을 수행하는 한 가지를 읽지 만 Jelly의 표준 인코딩에서는 원하는 것을 수행하는 다른 것을 읽습니다. 게다가, 2 개의 인코딩이 동일한 문자를 인코딩 할 수 있다고해서 문자가 두 문자에서 동일하다는 것을 의미하지는 않습니다. 룩업 테이블이 이미 공유 된 숫자 사이퍼와 같은 인코딩을 생각하면 좋은 시작 정신 모델을 얻을 수 있기를 바랍니다.
ld_*GX^!
CJam의 제곱 ( 온라인으로 시도! )과 MATL의 제곱근 ( 온라인으로 시도! )을 계산합니다.
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
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
( """ )
fsqrt
\ """);lambda n:n*n
온라인으로 사용해보십시오 : Python 2 (스퀘어) | 앞뒤 (sqrt)
이것은 파이썬의 익명 함수와 fsqrt
Forth 의 내장 함수로 평가됩니다 . 파이썬은 람다 앞에 f
두면 2 바이트 더 명명 된 함수 를 가질 수 있습니다 f=
.
Forth 프로그램은 부동 소수점 리터럴을 취하며 Forth에서는 과학적 표기법으로 작성해야합니다. 소수점 이하 세 자리 ( 3.141
)로 잘린 Pi 는 다음과 같이 작성됩니다.
3141e-3
f=a=>eval(`try{eval("a**2")}catch(e){Math.sqrt(a)}`)
ES7의 입력 제곱과 ES6의 제곱근을 반환합니다. ES6은 지원하지만 ES7은 지원하지 않는 구형 브라우저가 없으면 테스트하기가 매우 어렵습니다.
f=a=>eval(`try{eval("a**2")}catch(e){Math.sqrt(a)}`)
console.log(f(4));
ECHO"$argv[1]"**2;#];rdmq
PHP의 제곱과 CJam의 제곱근을 계산합니다. -r
PHP를 사용하여 실행해야합니다 .
첫 번째 명령 줄 인수 ( $argv[1]
)를 제곱수 2만큼 올린 후 출력합니다. 여기 $argv[1]
실제로는 문자열에 인라인 변수로 표시되며 지수를 수행하기 전에 숫자로 캐스트됩니다. v
CJam에서는 유효한 명령어 가 아니기 때문에 구문 분석 중에 오류가 발생하지만 문자열에 넣으면 아무런 문제가 없습니다.
#
주석을 시작하므로 이후의 모든 것이 무시됩니다.
코드의 첫 번째 부분은 ECHO"$argv[1]"**2;#
많은 값을 푸시하고 많은 작업을 수행하며 모두 쓸모가 없습니다. 유일하게 중요한 것은 오류가 발생하지 않는다는 것입니다. 왜냐하면 바로 뒤에 있기 때문에 ];
전체 스택을 배열로 감싸고 버립니다.
그런 다음 입력 ( rd
) 에서 double을 읽고 제곱근 ( mq
)을 가져 와서 암시 적으로 출력합니다.
;float f(float x){return sqrt(x);}char*
F="_this^2";
OFP 스크립트에서 줄 시작 부분의 세미콜론은 해당 줄을 주석으로 만드는 반면 C는 추가 세미콜론에 신경 쓰지 않습니다.
씨:
OFP 스크립팅 언어 :
init.sqs
미션 폴더에 다른 이름으로 저장 한 다음로 전화하십시오 hint format["%1", 2 call F]
.
2D 언어!
/&:*.@
>in:o#p;
/&:*.@
/ divide top two (no-op)
& read decimal input
: duplicate
* square
. output
@ terminate
/ mirror up, then right
>in:o#p;
i read line of input
n cast to number
:o# square root
p print
; terminate
-v
내 의견 으로 는, 이 경우를 처리하는 메타 질문에 대한 [최고 투표 답변 [( codegolf.meta.stackexchange.com/a/11431/44874 )과 일치합니다. ><>
통역은 필요 -v
하고 이것은 가장 간단한 호출 그에이다.
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)
JS의 제곱근, 파이썬의 제곱근.
Firefox (FF 52에서 테스트)에서 작동하며 (function(x) x)(42) === 42
유효한 구문이 필요 합니다. **
운영자를 위한 ES7도 필요합니다 .
x=>x**y
대신 사용할 수 있습니까? 아니면 파이썬이 그것을 질식시킬까요?
function
키워드 아니라, 유효한 식별자입니다. 그래서 방금 noop 함수를 할당했습니다 ( exec
구문 내부 ).
업데이트 : 나는 패배를 인정해야합니다. Digital Trauma 의 bash / sh 답변은 이것보다 훨씬 우아합니다.
bc -l<<<"sqrt($1^(($(kill -l|wc -l)*3-3)/7+1))"
bash는 n^2
sh를 생성합니다 sqrt(n)
.
bc
sqrt
계산할 수 있도록 필요합니다 . 동작의 차이는 bash와 sh 사이입니다.
좋아, 기술적으로 내가 사용하는 "sh"는 여전히 bash이지만 "POSIX"모드에서 bash는 ( bash의 별칭 인 시스템 /bin/sh
대신에 호출하는 경우 발생 함 ) 이것이 시스템의 경우 다음과 같이 테스트 할 수 있습니다./bin/bash
/bin/sh
/bin/bash prog.sh 4
/bin/sh prog.sh 4
이것은 여기에 설명 된 차이점 중 하나를 기반으로합니다 : 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.html
편집 : 작업을 반대로하면 바이트가 짧습니다.
RTa
²
젤리는 코드 하단에서 실행을 시작하고 ( '메인 링크') 더 높은 것이 필요한지 확인합니다. 명령을 제곱하고 암시 적으로 입력 및 출력을 처리합니다.
Pip은 최상위 행을 실행하고 (cmd 행에서 암시 적으로 읽은) var a를 제곱하여 암시 적으로 인쇄합니다. 결론은 무시됩니다.
PRTaVS
.
Wolfram Language에서 숫자의 제곱을 구하고 PHP에서 제곱근을 구하십시오.
n^2
echo sqrt(_GET["n"]);
첫 번째 줄은 Wolfram Language입니다. 먼저 Wolfram Alpha의 검색 창에서 n을 변경하여 코드도 입력해야합니다. 그런 다음 Enter 키를 누르면 답변이 생성됩니다.
n^2
두 번째 줄은 PHP입니다. 주소 표시 줄에 입력 될 n의 제곱근을 얻습니다 (예 : ppcg.php.net?n=213, 여기서 213은 n의 값입니다)
echo sqrt($_GET["n"]);
p=^4 :
bc<<<"sqrt($1)$p"
Mac 에서 Posix 모드 sh
로 bash
실행 중이며이 경우 https://www.gnu.org/software/bash/manual/html_node/Bash-POSIX-Mode.html에 따라 실행됩니다 .
POSIX 특수 내장 이전의 지정 문은 내장이 완료된 후에 쉘 환경에서 지속됩니다.
따라서의 sh
경우 변수 p
는의 실행 ^4
후 값 을 :
갖지만의 bash
경우 변수 는 실행 p
되는 동안이 값만 가지며 :
이후에는 비어 있습니다.
여전히 실제로 bash
커버 아래에 있기 때문에 <<<
herestrings 와 같은 일부 bashism은 여전히 bash 및 sh 사례 모두에서 작동합니다.
Ubuntu 16.01에서 herestrings를 수행하지 않는에 sh
대한 심볼릭 링크 입니다. 그래서 우리는 대신 이것을 가지고 있습니다 :dash
<<<
p=^4 :
echo "sqrt($1)$p"|bc
이 프로그램은 카디널의 입력을 제곱하고 옥타브의 제곱근을 얻습니다.
%:=t.
disp(sqrt(input("")))
따라서 %는 Octave의 한 줄 주석이므로 입력을 받고 제곱근을 인쇄합니다.
disp(sqrt(input("")))
카디널 프로그램에 0으로 나누기와 오류가 발생하지 않도록 프로그램
%:=t.
공백으로 이동했습니다. 두 프로그램 모두 무시됩니다.
프로그램은 %로 시작합니다.
입력을 받고 값을 활성으로 저장
합니다. 비활성을 활성과 동일하게 설정합니다. =
활성에 비활성을 곱합니다. t
마지막으로 활성 값을 출력합니다.
<body onload=alert(<?=$x*$x.')>'.sqrt($x)?>
입력은 다음과 같습니다.
<?php $x = 10; ?>
스스로 설명하지만 규칙에 맞습니까? 내 첫 번째 코드 골프 tho :-)
alert(<?=$x*$x.')>'.sqrt($x)?
)
경쟁하지 않는 이유 :
+
및로 인해 ⓟ
CGL은 기술적으로 유효한 언어입니다. x=>x**2
//-₂
단순 : 첫 번째 인수를 제곱 한 익명 화살표 함수. 명명되지 않은 언어 코드는 주석 처리됩니다.
첫 번째 줄 앞 의 비 공백 공간 은 주석처럼 작동합니다. /
들에는 작전 없습니다. -
번째 라인은 기본적으로 입력 한 후 저장 -1로 설정하는 것을 0 인 현재 스택 수를 감소하는 것을 의미한다. 는 ₂
입력이 배치되는 경우 지금의 제곱근과 현재 스택의 첫 번째 항목을 대체합니다. 기본적으로 현재 스택이 출력되고 입력의 제곱근이 출력됩니다.