Python 2.7 を使用しています。
(下部の何かを見落とした場合に備えて、上部を編集してください: exec() を使用してコードを実行しているため、ソースの一部になります。これの使用方法に関する詳細は、この投稿の下部にあります)
最近、クインに興味を持っています。これまでのところ、クワインに最も近い私の試みは次のとおりです。
_="print '_={0}'.format(_)"
残念ながら、それはこれを印刷します
_=print '_={0}'.format(_)
これの代わりに
_="print '_={0}'.format(_)"
これは大きな問題です
_=print '_={0}'.format(_)
エラーが発生し、元のソース コードと同じではありません。
私はそれらの引用符をそこに入れるのに苦労しています。私が試した1つの方法は、これを行うためにエスケープを使用することです:
_="print '_=\"{0}\"'.format(_)"
そしてそれはこれを印刷します:
_="print '_="{0}"'.format(_)"
そのコードはもう一度印刷されます
_=print '_={0}'.format(_)
それは同じではなく、エラーです。私が行うことができる変更について誰か考えがありますか?
そして、これを書いていて、もう一つ気づいたことがあります。私はずっと exec() を使ってコードを実行してきましたが、この quine は exec() でしか実行できないため、exec() がコードの一部になるため、これも追加する必要があります。したがって、exec() を追加した別の試みが追加されました。
_=print '_={0}'.format(_); exec(_)
しかし、それは恐ろしいループを作成し、まだ引用符がありません
>>>> _="print '_={0}'.format(_); exec(_)"; exec(_)
_=print '_={0}'.format(_); exec(_)
_=print '_={0}'.format(_); exec(_)
_=print '_={0}'.format(_); exec(_)
_=print '_={0}'.format(_); exec(_)
_=print '_={0}'.format(_); exec(_)
_=print '_={0}'.format(_); exec(_)
[etc]
だから今、私は醜いループなしでそこに exec() を取得し、適切な場所で引用符を取得する必要があります.
だから今、これは私自身をもう一度繰り返すことにつながります.誰か私が行うことができる変更について何かアイデアを持っていますか?