Skip to content

Instantly share code, notes, and snippets.

@radiosilence
Created May 23, 2012 02:54
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 radiosilence/2773003 to your computer and use it in GitHub Desktop.
Save radiosilence/2773003 to your computer and use it in GitHub Desktop.
Fun with recursive acronyms....See the output first as it's getting shown below for some reason.
""" Excuse the horrendous code """
COUNT = 90
WORDS = ['pug', 'user', 'group']
from collections import namedtuple
from copy import copy
g = []
Point = namedtuple('Point', 'x y c')
for x in range(5):
print ''
def get(count, start, rx, ry, *args):
f = {
'x': {
True: {
True: lambda a, b: a - b,
False: lambda a, b: a + b
},
False: {
True: lambda a, b: a - b,
False: lambda a, b: a + b,
}
},
'y': {
True: {
True: lambda a, b: a + b,
False: lambda a, b: a + b
},
False: {
True: lambda a, b: a - b,
False: lambda a, b: a - b,
}
}
}
x, y = start
points = []
for word in args:
for l in word:
points.append(Point(x, y, l))
y = f['y'][ry][rx](y, 1)
_, y = start
x = f['x'][ry][rx](x, 1)
x, y = start
new_x, new_y = f['x'][ry][rx](x, len(args[0]) - 1), f['y'][ry][rx](y, len(args[-1]) - 1)
count -= 1
if (count % 15) == 0:
rx = not rx
if (count % 17) == 0:
ry = not ry
if (count % 37) == 0:
ry = not ry
if (count % 17) == 0:
ry = not ry
if count > 0:
points.extend(get(count, (new_x, new_y), rx, ry, *args))
return points
def draw(points):
min_x = min([point.x for point in points])
max_x = max([point.x for point in points])
min_y = min([point.y for point in points])
max_y = max([point.y for point in points])
off_x = min_x * -1
off_y = min_y * -1
grid = []
l = []
for j in range(0, max_y + off_y + 1):
l.append(' ')
for i in range(0, max_x + off_x + 1):
grid.append(copy(l))
for p in points:
grid[p.x + off_x][p.y + off_y] = p.c
for row in grid:
print "".join(row)
p = get(COUNT, (0, 0), False, False, *WORDS)
p += get(COUNT, (0, 0), False, True, *WORDS)
p += get(COUNT, (0, 0), True, False, *WORDS)
p += get(COUNT, (0, 0), True, True, *WORDS)
draw(p)
The code is pretty horrible, but these are the sort of things it generates from the acronym "pug user group":
puorgroupug gupuorg gupuorg groupug groupug gupuorgroup
resuseruser resuresuresuresu useruseruseruser resuresuser
groupugrgrgupuorg gupuorg gupuorg groupug groupug groupugrgroupugrg
user resuresuser resuresu resu user useruser resuseruser resu
groupug gupugrgroupugrg gupuorg gupuorg groupug groupug grgupuorgroupug gupuorg
user useruresuser resu resu user user resuseruseru resu
groupug groupugrgroupug gupuorg gupuorg groupug groupug gupuorgroupugrg gupuorg
user resuseru user resu resu user user resu useruser resu
groupug gupuorgroupugrgrgup grgup gupuorg groupug pugrg pugrgroupugrgroupug gupuorg
user resu useruresu user resu user resu useruseru user resu
gupuorg groupug pugrg groupugrgroupug gupuorgroupug gupuorgroupugrg grgup gupuorg groupug
resuresu user user resuseruseruser resuresuseruser resuresuseruser resu resu useruser
pugrg gupuorgroupug grgup gupuorgroupugrgroupug pugrgrgupuorgrgup gupuorgroupugrgroupug pugrg gupuorgroupug grgup
user resuser resu resu useruseru user useruser resuresu resu useruresu user user resuser resu
groupug groupugrg gupuorg gupuorgroupugrgroupugrgroupug groupugrgrgupuorg gupuorgroupugrgrgupuorgroupug groupug grgupuorg gupuorg
useruser resu resu resu user resu useru useruseruseruseruresuresu useru user resu user user user resuresu
groupugrg gupuorg gupuorg gupuorgroupug gupuorgroupugrgrgupugrgroupugrgrgupugrgroupugrgroupug gupuorgroupug groupug groupug grgupuorg
uresu resu resu resu user resu useruresuresuseruseruseruseruseru user resu user user user useru
grgupuorg gupuorg gupuorg pugrgroupug gupuorgroupugrgrgupuorgroupugrgroupugrgroupug gupuorgrgup groupug groupug groupugrg
uresu resuresu useruser resuresuseruseruresuseruseruseruseruser resuresu useruser useru
grgup gupuorg groupug gupuorgroupugrg gupug groupugrgroupug gupuorg groupug pugrg
useru resuresu useruser resuresuseruseruresuseruseruseruseruser resuresu useruser uresu
groupugrg gupuorg gupuorg pugrgroupug gupuorgrgupuorgroupugrgroupugrgroupugrgroupug gupuorgrgup groupug groupug grgupuorg
useru resu resu resu user resu useruresuresuseruseruseruseruseru user resu user user user uresu
groupugrg gupuorg gupuorg gupuorgroupug gupuorgroupugrgrgupugrgroupugrgrgupugrgroupugrgroupug gupuorgroupug groupug groupug grgupuorg
useruser resu resu resu user resu useru useruseruseruseruresuresu useru user resu user user user resuresu
groupug grgupuorg gupuorg gupuorgroupugrgroupugrgroupug groupugrgrgupuorg gupuorgroupugrgrgupuorgroupug groupug groupugrg gupuorg
user resuser resu resu useruseru user useruser resuresu resu useruresu user user resuser resu
pugrg gupuorgroupug grgup gupuorgroupugrgroupug pugrgrgupuorgrgup gupuorgrgupuorgroupug pugrg gupuorgroupug grgup
resuresu user user resuseruseruser resuresuseruser resuresuseruser resu resu useruser
gupuorg groupug pugrg groupugrgroupug gupuorgroupug gupuorgroupugrg grgup gupuorg groupug
user resu useruresu user resu user resu useruseru user resu
groupug gupuorgroupugrgrgup grgup gupuorg groupug pugrg pugrgroupugrgroupug gupuorg
user resuseru user resu resu user user resu useruser resu
groupug groupugrgroupug gupuorg gupuorg groupug groupug gupuorgroupugrg gupuorg
user useruresuser resu resu user user resuseruseru resu
groupug gupugrgroupugrg gupuorg gupuorg groupug groupug grgupuorgroupug gupuorg
user resuresuser resuresu resu user useruser resuseruser resu
groupugrgrgupuorg gupuorg gupuorg groupug groupug groupugrgroupugrg
resuseruser resuresuresuresu useruseruseruser resuresuser
puorgroupug gupuorg gupuorg groupug groupug gupuorgroup
group
useru
groupugrg
useru
groupugrg
useru
groupugrg
useru
groupugrg
useru
groupugrg
useru
groupugrg
useru
pugrg grgup
resu uresu
gupuorg grgupuorg
resu uresu
gupuorg grgupuorg
resu uresu
gupuorg grgupuorg
resu uresu
gupuorgrgupuorg
resuresu
grgupuorg
uresuser
grgupuorgroupug
uresu user
groupuorg groupug
useru user
groupugrg groupug
useru user
groupugrg groupug
useru user
pugrg grgup
uresu
grgupuorg
uresu
grgupuorg
uresu
grgupuorg
uresu
grgupuorg
uresu
grgupuorg
uresu
grgupuorg
uresu
puorg
groupug puorg groupug
useruser resu useruser
groupug groupug gupuorg groupug groupug
user user resu user user
groupug groupug gupuorgroupug groupug
user user resuser user
pugrg groupug grgupuorg groupug
resu useruser resu user
gupuorg groupug gupuorg groupug
resu useruser resu user
gupuorg groupug groupug gupuorg groupug
resu user user resu user
gupuorg pugrg groupug gupuorg groupug
resu resu user resu user
gupuorg gupuorg groupug gupuorg groupug groupug
resu resu user resu useruser user
gupuorg gupuorg groupug gupuorgroupug grgup groupug
resu resu user resuser resu user
gupuorg gupuorg groupug groupugrg gupuorg groupug
resu resu useruser resuresu user
groupug puorg gupuorg gupuorgroupug groupug gupuorg groupug
useruser resu resu resuseruseruseruser resuresu user
groupug groupug gupuorg gupuorgrgupuorgroupug groupugrg gupuorg grgup
user user resu resuser resuseruser resuser resu resu
groupug groupug gupuorgrgupuorg gupug grgupuorgroupug gupuorg gupuorg
user user resuser resuresuser resuser user resu resu
pugrg groupug grgupuorg gupuorgrgupuorgroupug groupug gupuorg gupuorg
resu useruser resuresuresuresuser user user resuresu
gupuorg groupug gupuorg gupuorgroupug groupug group gupuorg
resu useruser resuresu user user
gupuorg groupug groupugrg gupuorg groupug groupug
resu user resuser resu user user
gupuorg pugrg gupuorgroupug gupuorg groupug groupug
resu resuresu user resu user user
gupuorg gupuorg groupug gupuorg groupug groupug
resu user resu user user
gupuorg groupug gupuorg grgup groupug
resu user resu resu user
gupuorg groupug gupuorg gupuorg groupug
resu user resuresu user
gupuorg groupug gupuorg groupug
resu user resuresu user
gupuorg groupugrg gupuorg grgup
resu resuser resu resu
gupuorg gupuorgroupug gupuorg gupuorg
resu resu user resu resu
gupuorg gupuorg groupug gupuorg gupuorg
resuresu user resuresu
gupuorg group gupuorg
groupug
useruser
groupug groupug
user user
groupug grgup
user resu
groupug gupuorg
user resu
groupug gupuorg
user resu
groupug gupuorg
user resu
groupug gupuorg
user resu
groupug gupuorg
user resu
groupug gupuorg
user resu
groupug gupuorg
user resu
groupug gupuorg
user resu
groupug gupuorg
user resu
groupug gupuorg groupug
user resu useruser
pugrg gupuorg groupug groupug
resu resu user user
gupuorg gupuorg groupug grgup
resuresu user resu
gupuorg groupug gupuorg
resuresu user resu
gupuorg gupuorg groupug gupuorg
resu resu user resu
puorg gupuorg groupug gupuorg groupug group
resu user resu useruser user
gupuorgroupug gupuorg groupug groupug groupug
resuser resu user useruser
grgupuorg gupuorg groupug groupug
user resu resu user useruser
groupug gupuorg gupuorg groupug groupug groupug
user resuresu user user user
groupug gupuorg groupug groupug grgup
user resuresu user user resu
groupug gupuorg gupuorgroupug groupug gupuorg
user resu resuser user resu
groupug gupuorg gupug groupug gupuorg
user resu resuser user resu
groupug gupuorg gupuorgroupug groupug gupuorg
user resu resu useruser resu
pugrg gupuorg gupuorg groupug gupuorg
resu resu resu useruser resu
gupuorg gupuorg gupuorg groupug groupug gupuorg
resuresu resu user user resu
gupuorg gupuorg groupug grgupuorg
resuresu resu user resuser
gupuorg gupuorg gupuorg groupug gupuorgroupug
resu resuresu user resu user
puorg gupuorg groupug gupuorg groupug group
user resu user user
groupug gupuorg groupug groupug
user resu useruser
groupug gupuorg groupug
user resu useruser
pugrg gupuorg groupug groupug
resu resu user user
gupuorg gupuorg groupug grgup
resuresu user resu
gupuorg groupug gupuorg
user resu
groupug gupuorg
user resu
groupug gupuorg
user resu
groupug gupuorg
user resu
groupug gupuorg
user resu
groupug gupuorg
user resu
groupug gupuorg
user resu
groupug gupuorg
user resu
groupug gupuorg
user resu
groupug gupuorg
user resu
pugrg gupuorg
resu resu
gupuorg gupuorg
resuresu
gupuorg
groupug groupug
useruser useruser
groupug groupug groupug groupug
user user user user
groupug groupug groupug groupug
user user user user
groupug groupug groupug groupug
user user user user
groupug groupug groupug groupug
user useruser user
groupug groupug groupug
user useruser user
groupug groupug groupug groupug
user user user user
groupug groupug groupug groupug
user user user user
groupug groupug groupug groupug groupug groupug
user useruseruser useruseruser user
pugrg groupug groupuorg groupug groupug grgup
resu user uresu uresu user resu
gupuorg groupug grgupuorg grgupuorg groupug gupuorg
resu user uresu uresu user resu
gupuorg groupug grgupuorg grgupuorg groupug gupuorg
resu user uresu uresu user resu
gupuorgroupug grgupuorgrgupuorg groupug gupuorg
resuser uresuresu user resu
grgupuorg grgupuorg grgupuorg
user resu uresuresu resuser
groupug gupuorg grgupuorgrgupuorg gupuorgroupug
user resu uresu uresu resu user
groupug gupuorg grgupuorg grgupuorg gupuorg groupug
user resu uresu uresu resu user
groupug gupuorg grgupuorg grgupuorg gupuorg groupug
user resu uresu uresu resu user
pugrg gupuorg gupuorg grgupuorg gupuorg grgup
resu resuresuresu resuresuresu resu
gupuorg gupuorg gupuorg gupuorg gupuorg gupuorg
resu resu resu resu
gupuorg gupuorg gupuorg gupuorg
resu resu resu resu
gupuorg gupuorg gupuorg gupuorg
resu resuresu resu
gupuorg gupuorg gupuorg
resu resuresu resu
gupuorg gupuorg gupuorg gupuorg
resu resu resu resu
gupuorg gupuorg gupuorg gupuorg
resu resu resu resu
gupuorg gupuorg gupuorg gupuorg
resu resu resu resu
gupuorg gupuorg gupuorg gupuorg
resuresu resuresu
gupuorg gupuorg
groupug
useruser
groupug groupug
user user
groupug groupug groupug
user useruser user
puorgroupug groupug grgup
resuser user resu
grgupuorg grgupuorg
user resu resuser
puorg gupuorg gupuorgrgup
resu resuresu resu
gupuorg gupuorgroupugrg
resu resuseruser
gupuorgroupugrgroupug
resuseruser user
groupugrgroupug groupug
user useruser user
pugrgroupug groupug group
resuser user resu
grgupuorg grgupuorg
user resu resuser
pugrg gupuorg gupuorgroup
resu resuresu resu
gupuorg gupuorg gupuorg
resu resu
gupuorg gupuorg
resuresu
gupuorg
puorg groupug
resu useruser
gupuorgroupug groupug
resuser user
grgupuorg grgup
user resu resu
groupug gupuorg gupuorg
user resuresu
pugrg grgupuorg
resu useruser
gupuorgroupug groupug
resuser user
grgupuorg grgup
user resu resu
groupug gupuorg gupuorg
user resuresu
pugrg grgupuorg
resu useruser
gupuorgroupug groupug
resuser user
grgupuorg grgup
user resu resu
groupug gupuorg gupuorg
user resuresu
pugrg groupugrg grgup
resu useruser uresu
gupuorgroupug groupug grgupuorg
resuser useruresu
grgupugrg groupugrg
user resu uresuser
groupug gupuorgrgupuorgroupug
user resuresu user
pugrg groupugrg grgup
resu useruser resu
gupuorgroupugrgroupug gupuorg
resuseru user resu
grgupugrg groupugrg
useruresu resuser
groupugrg gupuorg gupuorgroupug
useru resuresu user
pugrg groupugrg grgup
useruser resu
groupug groupug gupuorg
user user resu
pugrg groupugrg
resu resuser
gupuorg gupuorgroupug
resuresu user
grgupuorg group
useruser resu
groupug groupug gupuorg
user user resu
pugrg groupugrg
resu resuser
gupuorg gupuorgroupug
resuresu user
groupugrg grgup
useruser resu
groupug groupug gupuorg
user user resu
pugrg groupugrg
resu resuser
gupuorg gupuorgroupug
resuresu user
gupuorg group
gupuorg gupuorg
resuresu resuresu
pugrg gupuorg pugrg gupuorg
user resu user resu
groupug gupuorgroupug gupuorg
user resu user resu
groupug gupuorgroupug grgup
user resu useruser
groupug gupuorgroupug
user resuseruser
groupuorg gupug groupuorg
resuresuser resu
gupuorgroupug gupuorg
resuresu user resu
pugrg gupuorgroupug gupuorg
user resu user resu
groupug gupuorgroupug gupuorg
user resu user resu
groupug grgup groupug grgup
useruser useruser
groupug groupug
gupuorg groupug
resuresu useruser
gupuorg gupuorg groupug groupug
resu resu user user
gupuorg gupuorg groupug groupug
resu resu user user
gupuorg gupuorg groupug groupug
resu resu user user
gupuorg gupuorgroupug groupug
resu resuser user
puorg gupug group
resu resuser user
gupuorg gupuorgroupug groupug
resu resu user user
gupuorg gupuorg groupug groupug
resu resu user user
gupuorg gupuorg groupug groupug
resu resu user user
gupuorg gupuorg groupug groupug
resuresu useruser
gupuorg groupug
groupug gupuorg
useruser resuresu
groupug grgupuorg gupuorg
user resuser resu
pugrg gupuorgroupug grgup
resuresu useruser
gupuorg groupug
resuresu useruser
gupuorg gupuorgroupug groupug
resu resuser user
puorg gupug group
resu resuser user
gupuorg gupuorgroupug groupug
resuresu useruser
gupuorg groupug
resuresu useruser
pugrg gupuorgroupug grgup
user resuser resu
groupug grgupuorg gupuorg
useruser resuresu
groupug gupuorg
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment