日曜日、コードゴルフのラウンドです!
チャレンジ
入力数値が「ハッピー素数」、「サッド素数」、「ハッピー非素数」、「サッド非素数」のいずれであるかを判断するために、文字数で最短のソース コードを記述します。
入力
入力は、コマンド ライン引数または stdin からの整数である必要があります。大きな数を扱うことを心配する必要はありませんが、できる/したい場合はそうしてください。入力値が 1 未満の場合の動作は未定義ですが、1 には明確な結果があります。
出力
出力は、数値のタイプを出力する必要があります: 「幸せな素数」、「悲しい素数」、「幸せな非素数」、または「悲しい非素数」。末尾の改行はオプションです。
例
$ happyprime 139
happy prime
$ happyprime 2
sad prime
$ happyprime 440
happy non-prime
$ happyprime 78
sad non-prime
定義
脳にリフレッシュが必要な場合に備えて。
ハッピーナンバー
ウィキペディアから、
ハッピーナンバーは以下のプロセスで定義されます。任意の正の整数から始めて、数値をその桁の 2 乗の合計で置き換え、数値が 1 になるまで (数値が留まるまで)、または 1 を含まないサイクルで無限にループするまでプロセスを繰り返します。このプロセスが 1 で終わるものはハッピー ナンバーであり、1 で終わらないものはアンハッピー ナンバー (またはサッド ナンバー) です。
例えば、
- 139
- 1^2 + 3^2 + 9^2 = 91
- 9^2 + 1^2 = 82
- 8^2 + 2^2 = 68
- 6^2 + 8^2 = 100
- 1^2 + 0^2 + 0^2 = 1
素数
素数は1より大きい整数で、正確に 2 つの約数 (1 とそれ自体) があります。
ハッピープライム
したがって、幸せな素数は、幸せで素数でもある数です。
回答の選択
明らかに、答えは、私がテストしたすべてのケースで指定された結果を出力する、文字数による最短のソース コードになります。次の (コミュニティが決定した) コード ゴルフ チャレンジが来たら、答えをマークします。:)
決断
さて、町に新しいコード ゴルフがあるようで、この質問が投稿されてから約 1 週間が経過したので、最短のソース コードを回答としてマークしました (gnibbler の 64 文字のGolfscriptソリューション)。そうは言っても、 belisarius による99 文字のMathematicaソリューションと Nabb による不可解な 107 文字のdcソリューションの両方を楽しみました。
他の皆さん、おつかれさまでした!私のコンピューターには、これほど多くのプログラミング言語環境がありませんでした。誰もがお気に入りの言語の新しい汚いトリックを学んでくれたことを願っています。
再利用
自動採点のリファレンス実装に対してさまざまなプログラムをテストするために書いたスクリプトの例として、このコンテストで作成されたコードの一部を再公開しました。そのディレクトリの README には、ソース コードの入手元が説明されており、すべてのコードが CC BY-SA 2.5 ライセンスの下で再利用されていることが記載されています (SO の法的なセクションに記載されているとおり)。各ディレクトリには、送信時の表示名が付けられます。
あなたのコードがこのように再利用されたり、帰属に問題がある場合は、お知らせください。エラーを修正します。