Answers:
#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
是
n^2
。
*.
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!
return 0;
从末尾省略-C99 main()
专门将隐式返回0 。来源
stdio.h
在这种情况下,您甚至需要包括吗?
输出以欧姆为单位的平方,以果冻为单位输出平方根。
欧姆和果冻使用不同的单字节代码页,因此该程序在每种编码中的显示方式将有所不同。
程序的xxd hexdump:
00000000: fd7f 0a ...
使用Jelly的代码页,它看起来像这样:
’
½
果冻将最底端的一行作为其主要链接,除非特别调用,否则忽略其他链接。因此,这里只做平方根(½
)并隐式输出。
使用欧姆的代码页(CP437),看起来像这样:
²⌂◙
²
是平方函数,并且⌂
和◙
都未定义,所以程序只是正方形的隐式读取输入并隐式输出它。
½
字节,则²
映射到什么?只是垃圾仍然被忽略吗?反之亦然?那么它似乎是2个字节。
²
Ohm中的代码点5。Jelly中的代码点5是%
且不执行任何操作,因此第一行是什么都没有关系。假设½
Jelly中的值为27,而Ohm中的代码点27为J
且不执行任何操作,因此第二行是什么都无关紧要。因此,如果文件为,则为00000101<newline>00011011
3个字节。我猜唯一的问题是换行符是否在代码页中的其他位置。
@(x)x^(2-3*any(version>60)/2)
这将在Octave中输出平方,并在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')
以下字节组成程序:
FD B9 74
05AB1E计算平方根,火球平方。
说明(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产生值1
,而JavaScript产生0
。
将代码放在这些索引处的数组内将使我们能够为所需的语言选择正确的代码。
可以用作[JS,PHP][+![]]
,以获取正确语言的代码。
在以前的polyglots上,我使用'\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])
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字节编码。但是,从十六进制转储来看时:
6e 71 93 0a
在05AB1E的CP1252编码中,这导致:
nq“\n
意味着它将仍然输出平方并退出,而忽略其余部分。当使用Jelly的代码页对这些字节进行编码时:
nqƓ½
当执行时,原始的预期代码将导致获得输入和获得sqrt的预期结果。
Ɠ
和½
需要两个字节来编码。但是,字节序列6e 71 93 0a
(nqƓ½
对于Jelly,nq“\n
对于CP-1252)适用于两种语言。
½
两个代码页上的@Dennis 不允许将其视为一个,因为它们是我假设的不同操作?我仍然对整个代码页一无所知。
6e 71 93 0a
因此没有“理论上”关于声明4个字节的信息。只需声明4个字节即可。碰巧的是,在05AB1E的标准编码中,它读取执行所需内容的一件事,而在Jelly的标准编码中,它读取所需的内容。顺便说一句,仅仅因为两种编码可以编码相同的字符,并不意味着两个字符都相同。只需将编码想像成具有已共享的查找表的数字密码,并希望它将为您提供一个良好的入门心理模型。
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
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
是,在我看来,与[得票最多的答案[(行codegolf.meta.stackexchange.com/a/11431/44874的间querstion处理这种情况下)。该><>
解释需要一个-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
不是关键字,因此是有效的标识符。因此,我刚刚为其分配了一个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,但是bash处于“ POSIX”模式(如果您调用/bin/sh
而不是/bin/bash
在使用/bin/sh
bash别名的系统上调用,则会发生)。如果在您的系统上是这种情况,则可以使用以下方法进行测试:
/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
在Wolfram语言中获得数字的平方并在PHP中获得平方根;
n^2
echo sqrt(_GET["n"]);
第一行是Wolfram语言。首先,您是在Wolfram Alpha中的搜索栏中更改n的人,因此代码也是输入。然后按回车键会产生答案
n^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特殊内建之前的赋值语句会保留在Shell环境中
因此,对于sh
,变量p
^4
在:
运行后具有值,但是对于bash
,变量p
仅在:
运行时具有该值,之后为空。
仍然是真正bash
的秘密,一些bashisms(例如<<<
herestrings)仍然适用于bash和sh案件。
在Ubuntu 16.01上,sh
是的符号链接dash
,不会这样做<<<
herestrings。因此,我们改为:
p=^4 :
echo "sqrt($1)$p"|bc
在线尝试。
不竞争是因为:
+
和ⓟ
,CGL从技术上讲是一种有效的语言。 x=>x**2
//-₂
简单:返回第一个参数平方的匿名箭头函数。未命名的语言代码已被注释掉。
在非打破空间的第一行之前的行为像一个注释。在/
s为空操作。的-
第二行指减少当前栈号,默认情况下为0。然后将其设置为-1,其中输入被存储。在₂
与它的平方根,也就是现在其中输入被放置在当前堆栈替换的第一项。默认情况下,将输出当前堆栈,并输出输入的平方根。