回答:
U
Jolfの平方根、MATLの平方。
オンラインでお試しください!(MATL)
Jolfコードを試してください。Firefoxでのみ機能します。
MATLとJolfはどちらもASCII /拡張ASCIIコードページを使用するため、これらは両方とも1バイトであるため、すべてのコマンドは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は平方を計算します。オンラインでお試しください!
Jellyは平方根を計算します。オンラインでお試しください!
* 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;}//'''
Python:オンラインで試してみてください!
ポリグロットへのコメントを使用して機能します。残りはかなり説明的です。
初めてCを使用する!
stdio.h
その場合も含める必要がありますか?
オームの正方形、ゼリーの平方根を出力します。
OhmとJellyは異なるシングルバイトコードページを使用するため、プログラムはエンコードごとに異なって表示されます。
プログラムのxxd hexdump:
00000000: fd7f 0a ...
Jellyのコードページを使用すると、次のように表示されます。
’
½
Jellyは一番下の行をメインリンクとし、特に呼び出されない限り他のリンクを無視します。したがって、ここでは単に平方根(½
)を実行し、暗黙的に出力します。
オームのコードページ(CP437)を使用すると、次のように表示されます。
²⌂◙
²
は二乗関数であり、⌂
および◙
は両方とも未定義であるため、プログラムは暗黙的に読み取られた入力を単に二乗し、暗黙的に出力します。
½
して1バイトを取得する場合、²
マップは何に変換されますか?まだ無視されているのは単なるジャンクですか?そして、オームにとって逆ですか?次に、2バイトのように見えます。
²
オームのコードポイントでゼリー5.コードポイント5がされ%
、それは最初の行があるかは重要ではありませんので、何もしません。½
Jellyの27にあり、Ohmのコードポイント27 J
は何もしていないと仮定します。したがって、2行目が何であるかは関係ありません。したがって、のファイルがある場合は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は、平方根、Fireball平方を計算します。
説明(05AB1E- ý¹t
):
ý Pushes an empty string to the stack (not entirely sure why)
¹ Push first input
t Square root
説明(ファイアボール- ²╣t
):
² Square input
╣ Unassigned
t Unassigned
時々、それは不完全な言語を持つことを助けます;)
実際、これは予想以上にやりがいのあることでした!私は自分のコードがどれくらいの長さであるかに驚いています。
eval(['alert((_=prompt())*_)','echo$argv[1]**.5'][+![]]);
どのように機能しますか?
これは、実行するコードを配列から選択することで機能します。
PHPおよびJavaScriptの検出はで行われ+![]
ます。
PHPでは、[]
(空の配列)は偽の値であり、JavaScriptでは、それは真実の値です(オブジェクト(を除くnull
)は常に真実です、真実であってもnew Boolean(false)
!)。
しかし、数値を取得する必要があるため、not
(!
)を使用して整数に変換します(で+
)。
現在、PHPはvalueを生成しますが1
、JavaScriptはを生成し0
ます。
これらのインデックスで配列内にコードを配置すると、目的の言語に適したコードを選択できます。
これをとして使用して[JS,PHP][+![]]
、適切な言語のコードを取得できます。
以前のポリグロット'\0'=="\0"
ではtrue
、JavaScript(\0
NULLバイトとして解析されるため)およびfalse
PHP('\0'
リテラル文字列\0
をNULL バイトと比較してNULLバイトとして解析されないため)にあるを使用しました。
このチェックをに削減できたことを嬉しく思います+!'0'
。@rckdが
さらに嬉しくなり、現在のバージョンに還元されました!
それ以降は、単にeval
必要なコードです。
PHP
PHPは実行しecho$argv[1]**.5
(echo sqrt($argv[1]);
数値の平方根に相当)、2番目の引数から値を受け取り、標準出力に表示します。
JavaScript
JavaScriptが実行alert((_=prompt())*_)
され、alert
。
1バイトを保存してくれた@rckdと、3バイトを保存してくれた@ user59178に感謝します!
echo$argv[1]**.5
のではなく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を取得するという望ましい結果が得られます。
Ɠ
と½
符号化される2つのバイトを必要とします。ただし、バイトシーケンス6e 71 93 0a
(nqƓ½
Jelly、nq“\n
CP-1252)は両方の言語で機能するはずです。
½
が両方のコードページに存在する場合、それらが単一の操作としてカウントされることはできません。私はまだコードページ全体についてあいまいです。
6e 71 93 0a
ので、4バイトを要求することについて「理論的に」はありません。ちょうど4バイトを要求します。05AB1Eの標準エンコードでは、必要なことを行う1つのことを読み取りますが、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(正方形)| Forth(sqrt)
これは、Pythonでは匿名関数fsqrt
、Forth では組み込み関数に評価されます。Python は、ラムダの前にf
置くことf=
で、さらに2バイトの名前付き関数を持つことができます。
Forthプログラムは、浮動小数点リテラルを取ります。Forthでは、科学表記法で記述する必要があります。小数点以下3桁に切り捨てられたPi(3.141
)は、次のように記述されます。
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は追加のセミコロンを気にしません。
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
私の意見では、の使用は、このケースを処理するメタquerstion の[トップ投票の回答[(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の平方根、Pythonの平方。
Firefox(FF 52でテスト済み)で動作し、(function(x) x)(42) === 42
有効な構文である必要があります。**
オペレーターにはES7も必要です。
x=>x**y
代わりに使用することは可能ですか?それともPythonがそれを止めますか?
function
はキーワードではないため、有効な識別子です。そのため、(exec
ステートメント内で)noop関数を割り当てました。
更新:敗北を認めなければなりません。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
これは、ここで説明されている違いの1つに基づいています:https : //www.gnu.org/software/bash/manual/html_node/Bash-POSIX-Mode.html
kill -l
に、(何も変更しないリストの可能な信号)bash
とsh
。ここで見つけることができる多くの違いの1つです:gnu.org/software/bash/manual/html_node/Bash-POSIX-Mode.html-
編集:操作を逆にするよりも1バイト短くなります。
RTa
²
Jellyはコードの下部(「メインリンク」)で実行を開始し、さらに高いものが必要かどうかを確認します。コマンドが2乗するのを確認し、暗黙的に入出力を処理します。
Pipは一番上の行を実行し、(cmd行から暗黙的に読み取られた)var aを二乗し、それを暗黙的に出力します。一番下の行は無視されます。
PRTaVS
。
Wolfram言語で数値の平方を取得し、PHPで平方根を取得します。
n^2
echo sqrt(_GET["n"]);
最初の行はWolfram言語です。まず、Wolfram Alphaの検索バーでnを変更するのはあなたであるため、コードは入力でもあります。次に、Enterキーを押すと答えが生成されます
n^2
2行目はPHPで、アドレスバーに入力されるnの平方根を取得します(例:ppcg.php.net?n=213、213はnの値)
echo sqrt($_GET["n"]);
p=^4 :
bc<<<"sqrt($1)$p"
Macでは、sh
されるbash
POSIXモードで実行されている、とあたり、この場合https://www.gnu.org/software/bash/manual/html_node/Bash-POSIX-Mode.html:
POSIX特殊ビルトインに先行する割り当てステートメントは、ビルトインが完了した後もシェル環境に保持されます
したがって、のsh
場合、変数はの実行後p
に値を持ちますが、の場合、変数は実行中のみこの値を持ち、その後は空になります。^4
:
bash
p
:
まだ隠れているため、ヒアbash
ストリングなどの一部のバシズム<<<
は、バッシュとshの両方のケースで機能します。
Ubuntu 16.01ではsh
、へのシンボリックリンクでありdash
、<<<
ヒアストリングを行いません。代わりにこれがあります:
p=^4 :
echo "sqrt($1)$p"|bc
このプログラムは、Cardinalの入力を平方し、Octaveの平方根を取得します
%:=t.
disp(sqrt(input("")))
したがって、%はOctaveの単一行コメントなので、入力を取得して平方根を出力するだけです。
disp(sqrt(input("")))
Cardinalプログラムが0除算エラーに遭遇して死ぬことがないように、プログラムは
%:=t.
両方のプログラムで無視されるスペースでシフトされています
プログラムは%で開始し、
入力を受け取り、値をactiveとして保存します
。inactiveをactiveと等しくなるように設定します=
activeにinactive tを乗算し、
最後にactive値を出力します。
<body onload=alert(<?=$x*$x.')>'.sqrt($x)?>
入力は次のようになります。
<?php $x = 10; ?>
自明ですが、ルールに適合していますか?私の最初のコードゴルフカントー:-)
alert(<?=$x*$x.')>'.sqrt($x)?
)
競合しない理由:
+
およびのためⓟ
、CGLは技術的には有効な言語です。 x=>x**2
//-₂
シンプル:最初の引数の2乗を返す匿名矢印関数。名前のない言語コードはコメント化されています。
改行なしスペース最初の行の前には、コメントのように動作します。/
sが空命令ではありません。-
第二のライン手段には、デフォルトでは、入力が格納されている-1に設定すること0である現在のスタック数をデクリメントします。₂
入力が配置される今、その平方根、と現在のスタックの最初の項目を置き換えます。デフォルトでは、現在のスタックが出力され、入力の平方根が出力されます。