Skip to content

Instantly share code, notes, and snippets.

@jf-parent
Created February 5, 2016 18:16
Show Gist options
  • Save jf-parent/cc048e7663f89fea922e to your computer and use it in GitHub Desktop.
Save jf-parent/cc048e7663f89fea922e to your computer and use it in GitHub Desktop.
Nonogram descriptor
#!/usr/bin/env python
class NonogramDescriptor(object):
def __init__(self, nonogram):
self.nonogram = nonogram
self.symbol = '*'
def describe(self):
column_length = len(self.nonogram[0])
line_length = len(self.nonogram)
descriptor = [[' ' for x in xrange((column_length * 2))] for x in xrange((line_length * 2))]
line_dict = {}
column_dict = {}
for (dict_, nonogram) in [(line_dict, self.nonogram), (column_dict, zip(*self.nonogram))]:
for i, line in enumerate(nonogram):
dict_[i] = []
count = 0
for char in line:
#print 'char', char
if char == self.symbol:
count += 1
else:
if count > 0:
dict_[i].append(count)
count = 0
if count > 0:
dict_[i].append(count)
count = 0
#print dict_
#print 'line_dict', line_dict.values()
#print 'column_dict', column_dict.values()
#Pretty print
column_number = column_length -1
for key, value in column_dict.iteritems():
column_number += 1
line_number = line_length -1
#print 'key', key, 'value', value
for i, v in enumerate(value):
#print 'v', v, 'column_number', column_number, 'line_number', line_number
descriptor[line_number][column_number] = "%s"%v
#print descriptor
line_number -= 1
line_number = line_length -1
for key, value in line_dict.iteritems():
line_number += 1
column_number = column_length -1
#print 'key', key, 'value', value
for i, v in enumerate(value):
#print 'v', v, 'column_number', column_number, 'line_number', line_number
descriptor[line_number][column_number] = "%2s"%v
#print descriptor
column_number -= 1
for d in descriptor:
print ''.join(d)
if __name__ == '__main__':
nonogram = [
" *",
" **",
" * *",
" * *",
"*****",
]
nonogram_descriptor = NonogramDescriptor(nonogram)
nonogram_descriptor.describe()
nonogram = [
" ** * ",
" ***** ",
" ****** ",
" ******** ",
"**********",
" * * ",
" * ** * * ",
" * ** * * ",
" * ** * ",
"******** "
]
nonogram_descriptor.nonogram = nonogram
nonogram_descriptor.describe()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment