Skip to content

Instantly share code, notes, and snippets.

@cpressey
Last active August 29, 2015 14:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cpressey/21bedec462af64dbcda0 to your computer and use it in GitHub Desktop.
Save cpressey/21bedec462af64dbcda0 to your computer and use it in GitHub Desktop.
A Python quine written in haste while travelling on the London Underground (and susbequent devolution, which did not occur while on public transport)
# prelude
a = """# prelude"""
b = """# remainder
print a
print 'a = ""' + '"' + a + '""' + '"'
print 'b = ""' + '"' + b + '""' + '"'
print b
"""
# remainder
print a
print 'a = ""' + '"' + a + '""' + '"'
print 'b = ""' + '"' + b + '""' + '"'
print b
# prelude
import sys
w = sys.stdout.write
a = """# prelude
import sys
w = sys.stdout.write
"""
b = """# remainder
w(a)
w('a = ""' + '"' + a + '""' + '"' + chr(10))
w('b = ""' + '"' + b + '""' + '"' + chr(10))
w(b)
"""
# remainder
w(a)
w('a = ""' + '"' + a + '""' + '"' + chr(10))
w('b = ""' + '"' + b + '""' + '"' + chr(10))
w(b)
# prelude
import sys
w = sys.stdout.write
a = """# prelude
import sys
w = sys.stdout.write
"""
b = """# remainder
w(a)
w('a = ""')
w('"')
w(a)
w('""')
w('"')
w(chr(10))
w('b = ""')
w('"')
w(b)
w('""')
w('"')
w(chr(10))
w(b)
"""
# remainder
w(a)
w('a = ""')
w('"')
w(a)
w('""')
w('"')
w(chr(10))
w('b = ""')
w('"')
w(b)
w('""')
w('"')
w(chr(10))
w(b)
import sys
w = sys.stdout.write
a = """
import sys
w = sys.stdout.write
"""
b = """
w(a)
w('a = ""')
w('"')
w(a)
w('""')
w('"')
w(chr(10))
w('b = ""')
w('"')
w(b)
w('""')
w('"')
w(chr(10))
w(b)
"""
w(a)
w('a = ""')
w('"')
w(a)
w('""')
w('"')
w(chr(10))
w('b = ""')
w('"')
w(b)
w('""')
w('"')
w(chr(10))
w(b)
import sys
w = sys.stdout.write
a = []
a.append(chr(10))
a.append(chr(105))
a.append(chr(109))
a.append(chr(112))
a.append(chr(111))
a.append(chr(114))
a.append(chr(116))
a.append(chr(32))
a.append(chr(115))
a.append(chr(121))
a.append(chr(115))
a.append(chr(10))
a.append(chr(119))
a.append(chr(32))
a.append(chr(61))
a.append(chr(32))
a.append(chr(115))
a.append(chr(121))
a.append(chr(115))
a.append(chr(46))
a.append(chr(115))
a.append(chr(116))
a.append(chr(100))
a.append(chr(111))
a.append(chr(117))
a.append(chr(116))
a.append(chr(46))
a.append(chr(119))
a.append(chr(114))
a.append(chr(105))
a.append(chr(116))
a.append(chr(101))
a.append(chr(10))
b = """
w(''.join(a))
w('a = []')
w(chr(10))
for c in a:
w('a.append(chr(')
w(str(ord(c)))
w('))')
w(chr(10))
w('b = ""')
w('"')
w(b)
w('""')
w('"')
w(chr(10))
w(b)
"""
w(''.join(a))
w('a = []')
w(chr(10))
for c in a:
w('a.append(chr(')
w(str(ord(c)))
w('))')
w(chr(10))
w('b = ""')
w('"')
w(b)
w('""')
w('"')
w(chr(10))
w(b)
import sys
w = sys.stdout.write
a = []
a.append(chr(105))
a.append(chr(109))
a.append(chr(112))
a.append(chr(111))
a.append(chr(114))
a.append(chr(116))
a.append(chr(32))
a.append(chr(115))
a.append(chr(121))
a.append(chr(115))
a.append(chr(10))
a.append(chr(119))
a.append(chr(32))
a.append(chr(61))
a.append(chr(32))
a.append(chr(115))
a.append(chr(121))
a.append(chr(115))
a.append(chr(46))
a.append(chr(115))
a.append(chr(116))
a.append(chr(100))
a.append(chr(111))
a.append(chr(117))
a.append(chr(116))
a.append(chr(46))
a.append(chr(119))
a.append(chr(114))
a.append(chr(105))
a.append(chr(116))
a.append(chr(101))
a.append(chr(10))
b = []
b.append(chr(119))
b.append(chr(40))
b.append(chr(39))
b.append(chr(39))
b.append(chr(46))
b.append(chr(106))
b.append(chr(111))
b.append(chr(105))
b.append(chr(110))
b.append(chr(40))
b.append(chr(97))
b.append(chr(41))
b.append(chr(41))
b.append(chr(10))
b.append(chr(119))
b.append(chr(40))
b.append(chr(39))
b.append(chr(97))
b.append(chr(32))
b.append(chr(61))
b.append(chr(32))
b.append(chr(91))
b.append(chr(93))
b.append(chr(39))
b.append(chr(41))
b.append(chr(10))
b.append(chr(119))
b.append(chr(40))
b.append(chr(99))
b.append(chr(104))
b.append(chr(114))
b.append(chr(40))
b.append(chr(49))
b.append(chr(48))
b.append(chr(41))
b.append(chr(41))
b.append(chr(10))
b.append(chr(102))
b.append(chr(111))
b.append(chr(114))
b.append(chr(32))
b.append(chr(99))
b.append(chr(32))
b.append(chr(105))
b.append(chr(110))
b.append(chr(32))
b.append(chr(97))
b.append(chr(58))
b.append(chr(10))
b.append(chr(32))
b.append(chr(32))
b.append(chr(32))
b.append(chr(32))
b.append(chr(119))
b.append(chr(40))
b.append(chr(39))
b.append(chr(97))
b.append(chr(46))
b.append(chr(97))
b.append(chr(112))
b.append(chr(112))
b.append(chr(101))
b.append(chr(110))
b.append(chr(100))
b.append(chr(40))
b.append(chr(99))
b.append(chr(104))
b.append(chr(114))
b.append(chr(40))
b.append(chr(39))
b.append(chr(41))
b.append(chr(10))
b.append(chr(32))
b.append(chr(32))
b.append(chr(32))
b.append(chr(32))
b.append(chr(119))
b.append(chr(40))
b.append(chr(115))
b.append(chr(116))
b.append(chr(114))
b.append(chr(40))
b.append(chr(111))
b.append(chr(114))
b.append(chr(100))
b.append(chr(40))
b.append(chr(99))
b.append(chr(41))
b.append(chr(41))
b.append(chr(41))
b.append(chr(10))
b.append(chr(32))
b.append(chr(32))
b.append(chr(32))
b.append(chr(32))
b.append(chr(119))
b.append(chr(40))
b.append(chr(39))
b.append(chr(41))
b.append(chr(41))
b.append(chr(39))
b.append(chr(41))
b.append(chr(10))
b.append(chr(32))
b.append(chr(32))
b.append(chr(32))
b.append(chr(32))
b.append(chr(119))
b.append(chr(40))
b.append(chr(99))
b.append(chr(104))
b.append(chr(114))
b.append(chr(40))
b.append(chr(49))
b.append(chr(48))
b.append(chr(41))
b.append(chr(41))
b.append(chr(10))
b.append(chr(119))
b.append(chr(40))
b.append(chr(39))
b.append(chr(98))
b.append(chr(32))
b.append(chr(61))
b.append(chr(32))
b.append(chr(91))
b.append(chr(93))
b.append(chr(39))
b.append(chr(41))
b.append(chr(10))
b.append(chr(119))
b.append(chr(40))
b.append(chr(99))
b.append(chr(104))
b.append(chr(114))
b.append(chr(40))
b.append(chr(49))
b.append(chr(48))
b.append(chr(41))
b.append(chr(41))
b.append(chr(10))
b.append(chr(102))
b.append(chr(111))
b.append(chr(114))
b.append(chr(32))
b.append(chr(99))
b.append(chr(32))
b.append(chr(105))
b.append(chr(110))
b.append(chr(32))
b.append(chr(98))
b.append(chr(58))
b.append(chr(10))
b.append(chr(32))
b.append(chr(32))
b.append(chr(32))
b.append(chr(32))
b.append(chr(119))
b.append(chr(40))
b.append(chr(39))
b.append(chr(98))
b.append(chr(46))
b.append(chr(97))
b.append(chr(112))
b.append(chr(112))
b.append(chr(101))
b.append(chr(110))
b.append(chr(100))
b.append(chr(40))
b.append(chr(99))
b.append(chr(104))
b.append(chr(114))
b.append(chr(40))
b.append(chr(39))
b.append(chr(41))
b.append(chr(10))
b.append(chr(32))
b.append(chr(32))
b.append(chr(32))
b.append(chr(32))
b.append(chr(119))
b.append(chr(40))
b.append(chr(115))
b.append(chr(116))
b.append(chr(114))
b.append(chr(40))
b.append(chr(111))
b.append(chr(114))
b.append(chr(100))
b.append(chr(40))
b.append(chr(99))
b.append(chr(41))
b.append(chr(41))
b.append(chr(41))
b.append(chr(10))
b.append(chr(32))
b.append(chr(32))
b.append(chr(32))
b.append(chr(32))
b.append(chr(119))
b.append(chr(40))
b.append(chr(39))
b.append(chr(41))
b.append(chr(41))
b.append(chr(39))
b.append(chr(41))
b.append(chr(10))
b.append(chr(32))
b.append(chr(32))
b.append(chr(32))
b.append(chr(32))
b.append(chr(119))
b.append(chr(40))
b.append(chr(99))
b.append(chr(104))
b.append(chr(114))
b.append(chr(40))
b.append(chr(49))
b.append(chr(48))
b.append(chr(41))
b.append(chr(41))
b.append(chr(10))
b.append(chr(119))
b.append(chr(40))
b.append(chr(39))
b.append(chr(39))
b.append(chr(46))
b.append(chr(106))
b.append(chr(111))
b.append(chr(105))
b.append(chr(110))
b.append(chr(40))
b.append(chr(98))
b.append(chr(41))
b.append(chr(41))
b.append(chr(10))
w(''.join(a))
w('a = []')
w(chr(10))
for c in a:
w('a.append(chr(')
w(str(ord(c)))
w('))')
w(chr(10))
w('b = []')
w(chr(10))
for c in b:
w('b.append(chr(')
w(str(ord(c)))
w('))')
w(chr(10))
w(''.join(b))
# this is not a true quine (it does not output this comment), and is not
# stand-alone Python either -- it requires a prelude to be run before it is
# run, perhaps like so:
#
# python -c "import sys; a = []; execfile('quine7.py')"
#
# (A simpler language, like some esolang, might not require such initializaions)
a.append(102)
a.append(111)
a.append(114)
a.append(32)
a.append(99)
a.append(32)
a.append(105)
a.append(110)
a.append(32)
a.append(97)
a.append(58)
a.append(10)
a.append(32)
a.append(32)
a.append(32)
a.append(32)
a.append(115)
a.append(121)
a.append(115)
a.append(46)
a.append(115)
a.append(116)
a.append(100)
a.append(111)
a.append(117)
a.append(116)
a.append(46)
a.append(119)
a.append(114)
a.append(105)
a.append(116)
a.append(101)
a.append(40)
a.append(39)
a.append(97)
a.append(46)
a.append(97)
a.append(112)
a.append(112)
a.append(101)
a.append(110)
a.append(100)
a.append(40)
a.append(39)
a.append(41)
a.append(10)
a.append(32)
a.append(32)
a.append(32)
a.append(32)
a.append(115)
a.append(121)
a.append(115)
a.append(46)
a.append(115)
a.append(116)
a.append(100)
a.append(111)
a.append(117)
a.append(116)
a.append(46)
a.append(119)
a.append(114)
a.append(105)
a.append(116)
a.append(101)
a.append(40)
a.append(115)
a.append(116)
a.append(114)
a.append(40)
a.append(99)
a.append(41)
a.append(41)
a.append(10)
a.append(32)
a.append(32)
a.append(32)
a.append(32)
a.append(115)
a.append(121)
a.append(115)
a.append(46)
a.append(115)
a.append(116)
a.append(100)
a.append(111)
a.append(117)
a.append(116)
a.append(46)
a.append(119)
a.append(114)
a.append(105)
a.append(116)
a.append(101)
a.append(40)
a.append(39)
a.append(41)
a.append(39)
a.append(41)
a.append(10)
a.append(32)
a.append(32)
a.append(32)
a.append(32)
a.append(115)
a.append(121)
a.append(115)
a.append(46)
a.append(115)
a.append(116)
a.append(100)
a.append(111)
a.append(117)
a.append(116)
a.append(46)
a.append(119)
a.append(114)
a.append(105)
a.append(116)
a.append(101)
a.append(40)
a.append(99)
a.append(104)
a.append(114)
a.append(40)
a.append(49)
a.append(48)
a.append(41)
a.append(41)
a.append(10)
a.append(102)
a.append(111)
a.append(114)
a.append(32)
a.append(99)
a.append(32)
a.append(105)
a.append(110)
a.append(32)
a.append(97)
a.append(58)
a.append(10)
a.append(32)
a.append(32)
a.append(32)
a.append(32)
a.append(115)
a.append(121)
a.append(115)
a.append(46)
a.append(115)
a.append(116)
a.append(100)
a.append(111)
a.append(117)
a.append(116)
a.append(46)
a.append(119)
a.append(114)
a.append(105)
a.append(116)
a.append(101)
a.append(40)
a.append(99)
a.append(104)
a.append(114)
a.append(40)
a.append(99)
a.append(41)
a.append(41)
a.append(10)
for c in a:
sys.stdout.write('a.append(')
sys.stdout.write(str(c))
sys.stdout.write(')')
sys.stdout.write(chr(10))
for c in a:
sys.stdout.write(chr(c))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment