クワインとは、ソースコードと同じ文字列を出力するプログラムのことです。
やりかたの一つとして、出力する文字列sにソースコードを書きます。
自分自身の部分は適当な文字(?とか)にしておいて、
出力するときに、
s.replace("?",s)
とすると、文字列sの中にs自身を埋め込む事ができます。
一番簡単なやり方ではないでしょうか。
Python
s='s=?;print s.replace(chr(63),chr(39)+s+chr(39))';print s.replace(chr(63),chr(39)+s+chr(39))
chr()はASCIIコードを返す関数で、chr(63)で'?'、chr(39)で"'"を返します。
Haskell
missingHをインストールしないとreplaceが使えないので、
プロンプトを「管理者として実行」で
chcp 65001 cabal install --global MissingH
とします。
import Data.String.Utils import Data.Char main = putStrLn $ replace [(chr 63)] ([(chr 34)]++s++[(chr 34)]) $ replace [(chr 64)] [(chr 10)] s where s = "import Data.String.Utils@import Data.Char@main = putStrLn $ replace [(chr 63)] ([(chr 34)]++s++[(chr 34)]) $ replace [(chr 64)] [(chr 10)] s@ where s=?"