#!/usr/bin/env python3
import random

random.seed(15255)

def gen(n, m, c, corruption=0):
  grid =[]
  for i in range(n):
    grid += [''.join([(c if (corruption==0 or random.random()>corruption) else 'x') for j in range(m)])]
  return grid

def rotate(s, x):
  if x < 0: x = len(s) - ((len(s) - x) % len(s))
  x %= len(s)
  return s[x:] + s[:x]

def gen_aaa(c, a, b, n, m, corruption=0):
  grid = gen(a, b, c)
  field = gen(n, m, c, corruption)
  return (grid, field)

def write_case(name, grid1, grid2):
  print('writing case {}...'.format(name))
  with open('data/secret/{}.in'.format(name), 'w') as fin:
    for g in (grid1, grid2):
      print('{:d} {:d}'.format(len(g), len(g[0])), file=fin)
      for i in g:
        print(i, file=fin)

write_case('01-aaa-small', *gen_aaa(c='u', a=9, b=9, n=80, m=80))
write_case('02-aaa-mid', *gen_aaa(c='f', a=77, b=77, n=200, m=200))
write_case('03-aaa-max', *gen_aaa(c='z', a=500, b=500, n=2000, m=2000))
write_case('04-aaa-max-corrupt', *gen_aaa(c='c', a=500, b=500, n=2000, m=2000, corruption=0.00001))
