> 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
オンラインでお試しください!
これは、非ピライ素数の場合は空のリストを返し、そうでない場合は空でないリストを返します。
使い方
Whispersは実数/複素数の操作用に設計されており、適切な測定のために少しの配列コマンドが追加されていEach
ます。
Whispersの背景:
ささやきは、他のほとんどの言語への実行パスがわずかに異なります。各行を直線的に処理するのではなく、条件で分岐するだけで、Whispersはファイルの最後の行から始まります>
(ルールはそれよりもやや複雑ですが、今のところ知っておく必要があることはすべてです)、および数字の意味行が>
またはで始まるかどうかによって異なります>>
。
または>
などの行で始まる場合、これは定数行です。毎回同じ値を返します。ここで、数値は数値形式を表しているため、最初の行は呼び出されると常に1を返します。> 1
> Input
>>
ただし、行が始まる場合、数値は他の行への参照として扱われます。たとえば、行では>> 1…2
、これは…
整数1および2に対してコマンドを実行するのではなく、行1および2から返された値に対してコマンドを実行します。この場合、これらの値は整数1であり、入力として渡される整数です。
この例では、23の入力を考えてみましょう。Whispersの前処理により、2行目(> 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行の範囲にマッピングします。最初の3つのステートメントは線で、シンプルなマップである4、5と6:
>> L!
>> L+1
>> L∣2
これらの三つの整数を超えるコマンド、nは、利回り(nは!+1)|x、どこ!は階乗を表し、∣は除数を表し、xは入力です。最後に、12行目はダイアディックマップ構造です。
二項地図他のラインにターゲット、左右、各インデックス:構造は、次の3つの整数を取ります。ここでは、左と右を圧縮してペアのリストを作成し、dyadicコマンド(ターゲット)によって各ペアを減らします。ここで、入力が23の場合、リストは{1、2、... 22、23}および{0、0、... 1、0}であり、コマンドは
>> L⋅R
左の引数に右の引数を掛けます。これにより、整数の配列が生成されます。0が増加した階乗が入力で割り切れない整数のインデックスと、元のインデックスが存在するインデックスで0になります。この配列をAと呼びます。次に、{0}とAのセットの差を取ることにより、Aから0を削除します。
> {0}
>> 12∖13
入力例では、これにより集合{14、18、22}が生成されます。次に、セットの各値で除算される入力の残りを取得し、その残りが1に等しくないかどうかを確認します。
>> 2%L
>> Each 8 14
>> L≠1
>> Each 16 15
ここでも、我々は、いずれかのリスト持って0または1秒および除去する必要0秒と置き換える1元の値に秒。ここで、上で見たコードを繰り返しますが、>> 18∖13
ではなく12
。最後に、この結果セットを最終チェック用のリストにキャストします。残念ながら、コードは、これらのすべての基準(437など)を達成する合成数も拒否する必要があります。そこで、最終チェックを追加し、最終リストに入力の素数を掛けます。Python乗算がリストでどのように機能するかにより、0は空のリストに置き換えられ、1は効果がありません。したがって、入力の素数を計算し、それにmのリストを掛けますsを入力し、最終結果を出力します。
>> 2’
>> 21⋅20
>> Output 22