"""
Generate some data for regression input.

This is the source of the data imported by roughtest/q.

The only tricky part here is that we generate column-wise so values
won't change as we add new columns (but they would if we were to
change the number of items).
"""

import itertools
import random
import sys

PROTOROWS = [None]*1000


def _fantasizeSpectral(rand):
	randint = int(rand*rand*1000)
	sp = ["WOBAFGKMRN"[randint%10]]
	randint /= 10
	sp.append(str(randint%10))
	randint /= 10
	while randint>0:
		sp.append(chr(ord('a')+randint%26))
		randint /=26
	return "".join(sp)


def _writeTable(columns):
	for row in itertools.izip(*columns):
		sys.stdout.write(" ".join(row)+'\n')


def makeColumn(colFunc):
	return [colFunc(random.random()) for i in PROTOROWS]


def main():
	random.seed("Testdata")
	columns = []
	columns.append(makeColumn(lambda r: str(r*360)))
	columns.append(makeColumn(lambda r: str(r*180-90)))
	columns.append(makeColumn(_fantasizeSpectral))
	_writeTable(columns)

if __name__=="__main__":
	main()
