コラッツ予想がとけたらいいな2

自分の考察を書いていきます。

Python、HaskellでQuine

クワインとは、ソースコードと同じ文字列を出力するプログラムのことです。
やりかたの一つとして、出力する文字列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=?"