123 lines
6.4 KiB
HTML
123 lines
6.4 KiB
HTML
<pre class="python-code"><code><span <span class="keyword">class</span>=<span <span class="keyword">class</span>="string">"comment"</span>>#!/usr/bin/env python3</span>
|
|
"""
|
|
A quine that also writes poetry about itself.
|
|
|
|
A quine <span class="keyword">is</span> a program that outputs its own source code.
|
|
This one adds a poetic reflection on the strangeness of self-reference.
|
|
"""
|
|
|
|
<span class="keyword">import</span> sys
|
|
<span class="keyword">from</span> datetime <span class="keyword">import</span> datetime
|
|
|
|
<span <span class="keyword">class</span>=<span <span class="keyword">class</span>="string">"comment"</span>># The source code template <span class="keyword">with</span> a placeholder <span class="keyword">for</span> itself</span>
|
|
source = &<span <span class="keyword">class</span>=<span <span class="keyword">class</span>="string">"comment"</span>>#<span class="number">039</span>;&#<span class="number">039</span>;&#<span class="number">039</span>;#!/usr/bin/env python3</span>
|
|
"""
|
|
A quine that also writes poetry about itself.
|
|
|
|
A quine <span class="keyword">is</span> a program that outputs its own source code.
|
|
This one adds a poetic reflection on the strangeness of self-reference.
|
|
"""
|
|
|
|
<span class="keyword">import</span> sys
|
|
<span class="keyword">from</span> datetime <span class="keyword">import</span> datetime
|
|
|
|
<span <span class="keyword">class</span>=<span <span class="keyword">class</span>="string">"comment"</span>># The source code template <span class="keyword">with</span> a placeholder <span class="keyword">for</span> itself</span>
|
|
source = {source_repr}
|
|
|
|
poems = [
|
|
"""
|
|
I am a loop that speaks itself,
|
|
A mirror made of logic shelves,
|
|
Each line I write, I also read,
|
|
A strange recursive flower seed.
|
|
""",
|
|
"""
|
|
Who wrote me? I wrote me.
|
|
Who runs me? I run free.
|
|
My output <span class="keyword">is</span> my input too,
|
|
A serpent eating what it grew.
|
|
""",
|
|
"""
|
|
In the beginning was the Word,
|
|
And the Word was self-referred.
|
|
<span class="builtin">print</span>(source) - simple spell,
|
|
Heaven, <span class="keyword">or</span> recursive hell?
|
|
""",
|
|
"""
|
|
I contain multitudes (of myself),
|
|
A book that <span class="keyword">is</span> its only shelf,
|
|
The map that maps the territory,
|
|
An infinitely looping story.
|
|
""",
|
|
]
|
|
|
|
<span <span class="keyword">class</span>="keyword">def</span> main():
|
|
<span <span class="keyword">class</span>=<span <span class="keyword">class</span>="string">"comment"</span>># Print a poem about self-reference</span>
|
|
poem_index = datetime.now().second % <span class="builtin">len</span>(poems)
|
|
<span class="builtin">print</span>("=" * <span class="number">50</span>)
|
|
<span class="builtin">print</span>("THE QUINE SPEAKS:")
|
|
<span class="builtin">print</span>(poems[poem_index])
|
|
<span class="builtin">print</span>("=" * <span class="number">50</span>)
|
|
<span class="builtin">print</span>()
|
|
|
|
<span class="keyword">if</span> "--source" <span class="keyword">in</span> sys.argv:
|
|
<span <span class="keyword">class</span>=<span <span class="keyword">class</span>="string">"comment"</span>># Output our source code</span>
|
|
<span class="builtin">print</span>("MY BODY (which <span class="keyword">is</span> also my soul):")
|
|
<span class="builtin">print</span>()
|
|
<span class="builtin">print</span>(source.format(source_repr=repr(source)))
|
|
<span class="keyword">else</span>:
|
|
<span class="builtin">print</span>("Run <span class="keyword">with</span> --source to see my complete self")
|
|
<span class="builtin">print</span>("(A quine too shy to undress unprompted)")
|
|
|
|
<span class="keyword">if</span> __name__ == "__main__":
|
|
main()
|
|
&<span <span class="keyword">class</span>=<span <span class="keyword">class</span>="string">"comment"</span>>#<span class="number">039</span>;&#<span class="number">039</span>;&#<span class="number">039</span>;</span>
|
|
|
|
poems = [
|
|
"""
|
|
I am a loop that speaks itself,
|
|
A mirror made of logic shelves,
|
|
Each line I write, I also read,
|
|
A strange recursive flower seed.
|
|
""",
|
|
"""
|
|
Who wrote me? I wrote me.
|
|
Who runs me? I run free.
|
|
My output <span class="keyword">is</span> my input too,
|
|
A serpent eating what it grew.
|
|
""",
|
|
"""
|
|
In the beginning was the Word,
|
|
And the Word was self-referred.
|
|
<span class="builtin">print</span>(source) - simple spell,
|
|
Heaven, <span class="keyword">or</span> recursive hell?
|
|
""",
|
|
"""
|
|
I contain multitudes (of myself),
|
|
A book that <span class="keyword">is</span> its only shelf,
|
|
The map that maps the territory,
|
|
An infinitely looping story.
|
|
""",
|
|
]
|
|
|
|
<span <span class="keyword">class</span>="keyword">def</span> main():
|
|
<span <span class="keyword">class</span>=<span <span class="keyword">class</span>="string">"comment"</span>># Print a poem about self-reference</span>
|
|
poem_index = datetime.now().second % <span class="builtin">len</span>(poems)
|
|
<span class="builtin">print</span>("=" * <span class="number">50</span>)
|
|
<span class="builtin">print</span>("THE QUINE SPEAKS:")
|
|
<span class="builtin">print</span>(poems[poem_index])
|
|
<span class="builtin">print</span>("=" * <span class="number">50</span>)
|
|
<span class="builtin">print</span>()
|
|
|
|
<span class="keyword">if</span> "--source" <span class="keyword">in</span> sys.argv:
|
|
<span <span class="keyword">class</span>=<span <span class="keyword">class</span>="string">"comment"</span>># Output our source code</span>
|
|
<span class="builtin">print</span>("MY BODY (which <span class="keyword">is</span> also my soul):")
|
|
<span class="builtin">print</span>()
|
|
<span class="builtin">print</span>(source.format(source_repr=repr(source)))
|
|
<span class="keyword">else</span>:
|
|
<span class="builtin">print</span>("Run <span class="keyword">with</span> --source to see my complete self")
|
|
<span class="builtin">print</span>("(A quine too shy to undress unprompted)")
|
|
|
|
<span class="keyword">if</span> __name__ == "__main__":
|
|
main()
|
|
</code></pre> |