クワイン(Quine)とは、コンピュータプログラムの一種で、自身のソースコードと完全に同じ文字列を出力するプログラムを指します。 この名称は、自己参照に関する研究で知られる哲学者ウィラード・ヴァン・オーマン・クワインに由来しています。

クワインの特徴:

  • 自己複製: クワインは、実行時に自分自身のソースコードをそのまま出力します。
  • 入力不要: 外部からの入力やファイルの読み込みを行わず、プログラム内部のみで自己出力を実現します。
  • メタプログラミング: 自身のコードを出力する性質から、メタプログラミングの一種とされています。

クワインの例(Pythonの場合):

s = 's = {!r}\nprint(s.format(s))'
print(s.format(s))

このプログラムを実行すると、以下のように自身のソースコードを出力します。

s = 's = {!r}\nprint(s.format(s))'
print(s.format(s))

注意点:

  • チート的解法の除外: ソースコードを直接読み込んで出力する方法や、空のプログラムが何も出力しないことを利用する方法などは、クワインとは見なされません。