Skip to content

tingstad/quine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Quine

A “quine” is a self-replicating program — its output is a copy of its own source code.

Here is an example I wrote in Python:

c = """
c = {1}{0}{1}
print(c.format(c, '"'*3))
"""
print(c.format(c, '"'*3))

Shell quine

Shell script quines without "%s"

This shell script prints an exact copy of itself. This means that cat quine.sh and ./quine.sh are equivalent:

quine/quine.sh

Lines 1 to 23 in f1a460d

#!/bin/sh
# https://github.com/tingstad/quine
b='\'
s=\'
top='#!/bin/sh
# https://github.com/tingstad/quine
'
src='
echo "$top
b=$s$b$s
s=$b$s
top=$s$top$s
src=$s$src$s
$src"
'
echo "$top
b=$s$b$s
s=$b$s
top=$s$top$s
src=$s$src$s
$src"

It's therefore also equivalent to running e.g. sh <(sh <(./quine.sh)).

I did not want to use printf %s for this quine. The trick was to get the quoting right on the "recursion line", #14 (which has to match #9), I found the solution here.

In quine2.sh I wanted to avoid variable assignments and minimize string interpretation (no % and $) and just use simple printf and zero-argument functions/procedures.

About

Self-replicating program

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages