指定された数の素数性をテストし、出力をブール値(Trueは素数)として与えるプログラムを作成します。プライムテストは、番号1に対して有効である必要があります(必須ではありません)。
ここで問題になるのは、プログラム自体を合計して素数にする必要があることです。すべての文字(スペースを含む)をUnicode / ASCII値(表)に変換します。次に、これらの数値をすべて加算して、プログラムの合計を取得します。
たとえば、Python 3.3で書いたそれほど素晴らしいプログラムではありません。
q=None
y=int(input())
for x in range(2,int(y**0.5)+1):
if y%x==0:
q=False
if not q:
q=True
print(q)
すべての文字を対応するUnicode / ASCII値に変換すると、次のようになります。
113 61 78 111 110 101 10 121 61 105 110 116 40 105 110 112 117 116 40 41 41 10 102 111 114 32 120 32 105 110 32 114 97 110 103 101 40 50 44 105 110 116 40 121 42 42 48 46 53 41 43 49 41 58 10 32 32 32 32 105 102 32 121 37 120 61 61 48 58 10 32 32 32 32 32 32 32 32 113 61 70 97 108 115 101 10 105 102 32 110 111 116 32 113 58 10 32 32 32 32 113 61 84 114 117 101 10 112 114 105 110 116 40 113 41
その後、これらの数値の合計を手動で、または独自のプログラムで見つけることができます。この特定のプログラムの合計は8293で、これは素数です。
もちろん、これはCode Golfですので、プログラムを小さくすることができればよいほど良いです。他のユーザーが指摘したように、このプログラムはそれほどゴルフではありません。
いくつかのルール:
有効な入力には、STDINとプロンプトが含まれます(関数はありません。これは単なる無料の追加コードを追加する方法です)。スペースは許可されますが、プログラムの機能にとって重要な場合のみです。出力は、変数に格納されたり返されたりするだけでなく、出力でなければなりません(print、STDOUTなどを使用)
フラグを使用することができ、展開するのではなく、文字通りカウントする必要があります。コメントは許可されていません。非ASCII文字については、それぞれのエンコーディングの値に割り当てられる必要があります。
プログラムのサイズとプログラムの合計を必ずリストしてください。プログラムが有効であることを確認するためにテストします。
がんばろう!
プログラムの合計をカウントし、それが素数であるかどうかを確認するスニペットを次に示します。