> 1
> Input
>> 1…2
>> L!
>> L+1
>> L∣2
>> L⋅R
>> 2%L
>> Each 4 3
>> Each 5 9
>> Each 6 10
>> Each 7 11 3
> {0}
>> 12∖13
>> Each 8 14
>> L≠1
>> Each 16 15
>> Each 7 17 15
>> 18∖13
>> [19]
>> 2’
>> 21⋅20
>> Output 22
在线尝试!
这将为非Pillai素数返回一个空列表,否则返回一个非空列表。
怎么运行的
Whispers专为处理实数/复数而设计,并添加了一些数组命令以方便测量,因此可以重复使用 Each
来遍历生成的列表。
耳语的背景:
耳语与大多数其他语言的执行路径略有不同。Whispers并非线性地遍历每一行,而仅在条件条件下进行分支,而是从文件的最后一行开始>
(从此处开始,规则稍微复杂一些,但这就是我们现在所需要的),以及数字的含义取决于行是否以>
或开头>>
。
如果该行以开头>
,例如> 1
或> Input
,则这是一条恒定线-每次都返回相同的值。在这里,数字代表其数字形式,因此第一行将始终返回1被调用时。
>>
但是,如果该行以开头,则将数字视为对其他行的引用,如果可以的话,它们类似于函数调用。例如,在该行中>> 1…2
,这不会…
对整数1和2执行命令,而是对从行1和2返回的值执行命令。在这种情况下,这些值是整数1以及我们作为输入传递的任何整数。
对于此示例,让我们考虑输入23。请记住,由于Whispers的预处理,第二行(> Input
)被转换为> 23
。
我们的第一个命令在第3行上>> 1…2
。…
是二进位范围,在这种情况下为1到23,得出{1,2,... 22,23}。接下来,我们跳到第9至12行:
>> Each 4 3
>> Each 5 9
>> Each 6 10
>> Each 7 11 3
在这里,我们有4个连续的Each
语句,每个语句都对先前的结果进行迭代,本质上将这4条命令映射到第3行的数组上:范围。前三个语句是简单的地图,用线4,5和6:
>> L!
>> L+1
>> L∣2
这三个命令在整数n上产生(n!+1)∣x,其中!表示阶乘,∣表示除数,x是输入。最后,第12行有一个二进位图结构。
甲二进地图结构获得三个整数:目标,左和右,每个索引到其它线路。在这里,我们左右滑动以生成对列表,然后通过dyadic命令(目标)减少每个对。此处,如果输入为23,则列表为{1、2,... 22、23}和{0、0,... 1、0},命令为
>> L⋅R
左边的参数乘以右边的参数。这将生成一个整数数组,其乘数不能被输入整除的整数的索引为0,而原始索引则为0。我们称这个数组一个。接下来,我们通过取{0}与A之间的集合差值来从A移除0:
> {0}
>> 12∖13
使用我们的示例输入,将产生集合{14,18,22}。接下来,我们将输入的余数除以集合中的每个值,然后检查该余数是否不等于1:
>> 2%L
>> Each 8 14
>> L≠1
>> Each 16 15
同样,我们有一个0或1 s 的列表,需要删除0 s并将1 s替换为原始值。在这里,我们重复上面看到的代码,但使用>> 18∖13
而不是12
。最后,我们将此结果集转换为列表以进行最终检查。不幸的是,我们的代码还必须拒绝满足所有这些条件的复合数字,例如437。因此,我们添加了最终检查,将最终列表乘以输入的素数。由于Python乘法在列表上的工作方式,0将其替换为空列表,而1则无效。因此,我们计算输入的素数,然后将其乘以 m将s作为输入并输出最终结果:
>> 2’
>> 21⋅20
>> Output 22