reasoning-gym/reasoning_gym/arc/rearc_utils/generators.py
2025-02-08 11:42:40 +00:00

15016 lines
564 KiB
Python

import random
from dsl import *
from utils import *
def generate_dbc1a6ce(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
dim_bounds = (3, 30)
colopts = remove(8, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, dim_bounds)
w = unifint(rng, diff_lb, diff_ub, dim_bounds)
bgc = rng.choice(colopts)
c = canvas(bgc, (h, w))
inds = totuple(asindices(c))
card_bounds = (0, max(1, (h * w) // 4))
num = unifint(rng, diff_lb, diff_ub, card_bounds)
s = rng.sample(inds, num)
fgcol = rng.choice(remove(bgc, colopts))
gi = fill(c, fgcol, s)
resh = frozenset()
for x, r in enumerate(gi):
if r.count(fgcol) > 1:
resh = combine(resh, connect((x, r.index(fgcol)), (x, -1 + w - r[::-1].index(fgcol))))
go = fill(c, 8, resh)
resv = frozenset()
for x, r in enumerate(dmirror(gi)):
if r.count(fgcol) > 1:
resv = combine(resv, connect((x, r.index(fgcol)), (x, -1 + h - r[::-1].index(fgcol))))
go = dmirror(fill(dmirror(go), 8, resv))
go = fill(go, fgcol, s)
return {"input": gi, "output": go}
def generate_2281f1f4(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
dim_bounds = (3, 30)
colopts = remove(2, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, dim_bounds)
w = unifint(rng, diff_lb, diff_ub, dim_bounds)
card_h_bounds = (1, h // 2 + 1)
card_w_bounds = (1, w // 2 + 1)
numtop = unifint(rng, diff_lb, diff_ub, card_w_bounds)
numright = unifint(rng, diff_lb, diff_ub, card_h_bounds)
if numtop == numright == 1:
numtop, numright = rng.sample([1, 2], 2)
tp = rng.sample(interval(0, w - 1, 1), numtop)
rp = rng.sample(interval(1, h, 1), numright)
res = combine(apply(lbind(astuple, 0), tp), apply(rbind(astuple, w - 1), rp))
bgc = rng.choice(colopts)
dc = rng.choice(remove(bgc, colopts))
gi = fill(canvas(bgc, (h, w)), dc, res)
go = fill(gi, 2, product(rp, tp))
rotf = rng.choice((identity, rot90, rot180, rot270))
gi = rotf(gi)
go = rotf(go)
return {"input": gi, "output": go}
def generate_c1d99e64(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
dim_bounds = (4, 30)
colopts = remove(2, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, dim_bounds)
w = unifint(rng, diff_lb, diff_ub, dim_bounds)
nofrontcol = rng.choice(colopts)
noisefrontcol = rng.choice(remove(nofrontcol, colopts))
gi = canvas(nofrontcol, (h, w))
cands = totuple(asindices(gi))
horifront_bounds = (1, h // 4)
vertifront_bounds = (1, w // 4)
nhf = unifint(rng, diff_lb, diff_ub, horifront_bounds)
nvf = unifint(rng, diff_lb, diff_ub, vertifront_bounds)
vfs = mapply(compose(vfrontier, tojvec), rng.sample(interval(0, w, 1), nvf))
hfs = mapply(compose(hfrontier, toivec), rng.sample(interval(0, h, 1), nhf))
gi = fill(gi, noisefrontcol, combine(vfs, hfs))
cands = totuple(ofcolor(gi, nofrontcol))
kk = size(cands)
midp = (h * w) // 2
noise_bounds = (0, max(0, kk - midp - 1))
num_noise = unifint(rng, diff_lb, diff_ub, noise_bounds)
noise = rng.sample(cands, num_noise)
gi = fill(gi, noisefrontcol, noise)
go = fill(gi, 2, merge(colorfilter(frontiers(gi), noisefrontcol)))
return {"input": gi, "output": go}
def generate_623ea044(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
dim_bounds = (3, 30)
colopts = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, dim_bounds)
w = unifint(rng, diff_lb, diff_ub, dim_bounds)
bgc = rng.choice(colopts)
g = canvas(bgc, (h, w))
fullinds = asindices(g)
inds = totuple(asindices(g))
card_bounds = (0, max(int(h * w * 0.1), 1))
numdots = unifint(rng, diff_lb, diff_ub, card_bounds)
dots = rng.sample(inds, numdots)
gi = canvas(bgc, (h, w))
fgc = rng.choice(remove(bgc, colopts))
gi = fill(gi, fgc, dots)
go = fill(gi, fgc, mapply(rbind(shoot, UP_RIGHT), dots))
go = fill(go, fgc, mapply(rbind(shoot, DOWN_LEFT), dots))
go = fill(go, fgc, mapply(rbind(shoot, UNITY), dots))
go = fill(go, fgc, mapply(rbind(shoot, NEG_UNITY), dots))
return {"input": gi, "output": go}
def generate_1190e5a7(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
dim_bounds = (3, 30)
colopts = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, dim_bounds)
w = unifint(rng, diff_lb, diff_ub, dim_bounds)
bgc = rng.choice(colopts)
c = canvas(bgc, (h, w))
nhf_bounds = (1, h // 3)
nvf_bounds = (1, w // 3)
nhf = unifint(rng, diff_lb, diff_ub, nhf_bounds)
nvf = unifint(rng, diff_lb, diff_ub, nvf_bounds)
hf_options = interval(1, h - 1, 1)
vf_options = interval(1, w - 1, 1)
hf_selection = []
for k in range(nhf):
hf = rng.choice(hf_options)
hf_selection.append(hf)
hf_options = difference(hf_options, (hf - 1, hf, hf + 1))
vf_selection = []
for k in range(nvf):
vf = rng.choice(vf_options)
vf_selection.append(vf)
vf_options = difference(vf_options, (vf - 1, vf, vf + 1))
remcols = remove(bgc, colopts)
rcf = lambda x: recolor(rng.choice(remcols), x)
hfs = mapply(chain(rcf, hfrontier, toivec), tuple(hf_selection))
vfs = mapply(chain(rcf, vfrontier, tojvec), tuple(vf_selection))
gi = paint(c, combine(hfs, vfs))
go = canvas(bgc, (nhf + 1, nvf + 1))
return {"input": gi, "output": go}
def generate_5614dbcf(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
dim_bounds = (2, 10)
col_card_bounds = (1, 8)
noise_card_bounds = (0, 8)
colopts = remove(5, interval(1, 10, 1))
noisedindscands = totuple(asindices(canvas(0, (3, 3))))
d = unifint(rng, diff_lb, diff_ub, dim_bounds)
cells_card_bounds = (1, d * d)
go = canvas(0, (d, d))
inds = totuple(asindices(go))
numocc = unifint(rng, diff_lb, diff_ub, cells_card_bounds)
numcol = unifint(rng, diff_lb, diff_ub, col_card_bounds)
occs = rng.sample(inds, numocc)
colset = rng.sample(colopts, numcol)
gi = upscale(go, THREE)
for occ in inds:
offset = multiply(3, occ)
numnoise = unifint(rng, diff_lb, diff_ub, noise_card_bounds)
noise = rng.sample(noisedindscands, numnoise)
if occ in occs:
col = rng.choice(colset)
go = fill(go, col, initset(occ))
gi = fill(gi, col, shift(noisedindscands, offset))
gi = fill(gi, 5, shift(noise, offset))
return {"input": gi, "output": go}
def generate_05269061(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
dim_bounds = (2, 30)
colopts = interval(1, 10, 1)
d = unifint(rng, diff_lb, diff_ub, dim_bounds)
go = canvas(0, (d, d))
gi = canvas(0, (d, d))
if rng.choice((True, False)):
period_bounds = (2, min(2 * d - 2, 9))
num = unifint(rng, diff_lb, diff_ub, period_bounds)
cols = tuple(rng.choice(colopts) for k in range(num))
keeps = [rng.choice(interval(j, 2 * d - 1, num)) for j in range(num)]
for k, col in enumerate((cols * 30)[: 2 * d - 1]):
lin = shoot(toivec(k), UP_RIGHT)
go = fill(go, col, lin)
if keeps[k % num] == k:
gi = fill(gi, col, lin)
else:
period_bounds = (2, min(d, 9))
num = unifint(rng, diff_lb, diff_ub, period_bounds)
cols = tuple(rng.choice(colopts) for k in range(num))
keeps = [rng.choice(interval(j, d, num)) for j in range(num)]
for k, col in enumerate((cols * 30)[:d]):
lin = hfrontier(toivec(k))
go = fill(go, col, lin)
if keeps[k % num] == k:
gi = fill(gi, col, lin)
if rng.choice((True, False)):
gi = vmirror(gi)
go = vmirror(go)
return {"input": gi, "output": go}
def generate_1c786137(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
dim_bounds = (3, 30)
num_cols_card_bounds = (1, 8)
colopts = interval(1, 10, 1)
h = unifint(rng, diff_lb, diff_ub, dim_bounds)
w = unifint(rng, diff_lb, diff_ub, dim_bounds)
noise_card_bounds = (0, h * w)
c = canvas(0, (h, w))
inds = totuple(asindices(c))
num_noise = unifint(rng, diff_lb, diff_ub, noise_card_bounds)
num_cols = unifint(rng, diff_lb, diff_ub, num_cols_card_bounds)
noiseinds = rng.sample(inds, num_noise)
colset = rng.sample(colopts, num_cols)
trgcol = rng.choice(difference(colopts, colset))
noise = frozenset((rng.choice(colset), ij) for ij in noiseinds)
gi = paint(c, noise)
boxhrng = (3, max(3, h // 2))
boxwrng = (3, max(3, w // 2))
boxh = unifint(rng, diff_lb, diff_ub, boxhrng)
boxw = unifint(rng, diff_lb, diff_ub, boxwrng)
boxi = rng.choice(interval(0, h - boxh + 1, 1))
boxj = rng.choice(interval(0, w - boxw + 1, 1))
loc = (boxi, boxj)
llc = add(loc, toivec(boxh - 1))
urc = add(loc, tojvec(boxw - 1))
lrc = add(loc, (boxh - 1, boxw - 1))
l1 = connect(loc, llc)
l2 = connect(loc, urc)
l3 = connect(urc, lrc)
l4 = connect(llc, lrc)
l = l1 | l2 | l3 | l4
gi = fill(gi, trgcol, l)
go = crop(gi, increment(loc), (boxh - 2, boxw - 2))
return {"input": gi, "output": go}
def generate_2204b7a8(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
dim_bounds = (4, 30)
colopts = interval(0, 10, 1)
while True:
h = unifint(rng, diff_lb, diff_ub, dim_bounds)
w = unifint(rng, diff_lb, diff_ub, dim_bounds)
bgc = rng.choice(colopts)
remcols = remove(bgc, colopts)
c = canvas(bgc, (h, w))
inds = totuple(shift(asindices(canvas(0, (h, w - 2))), RIGHT))
ccol = rng.choice(remcols)
remcols2 = remove(ccol, remcols)
c1 = rng.choice(remcols2)
c2 = rng.choice(remove(c1, remcols2))
nc_bounds = (1, (h * (w - 2)) // 2 - 1)
nc = unifint(rng, diff_lb, diff_ub, nc_bounds)
locs = rng.sample(inds, nc)
if w % 2 == 1:
locs = difference(locs, vfrontier(tojvec(w // 2)))
gi = fill(c, c1, vfrontier(ORIGIN))
gi = fill(gi, c2, vfrontier(tojvec(w - 1)))
gi = fill(gi, ccol, locs)
a = sfilter(locs, lambda ij: last(ij) < w // 2)
b = difference(locs, a)
go = fill(gi, c1, a)
go = fill(go, c2, b)
if len(palette(gi)) == 4:
break
if rng.choice((True, False)):
gi = dmirror(gi)
go = dmirror(go)
return {"input": gi, "output": go}
def generate_23581191(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
dim_bounds = (3, 30)
colopts = remove(2, interval(0, 10, 1))
f = fork(combine, hfrontier, vfrontier)
h = unifint(rng, diff_lb, diff_ub, dim_bounds)
w = unifint(rng, diff_lb, diff_ub, dim_bounds)
bgcol = rng.choice(colopts)
remcols = remove(bgcol, colopts)
c = canvas(bgcol, (h, w))
inds = totuple(asindices(c))
acol = rng.choice(remcols)
bcol = rng.choice(remove(acol, remcols))
card_bounds = (1, (h * w) // 4)
na = unifint(rng, diff_lb, diff_ub, card_bounds)
nb = unifint(rng, diff_lb, diff_ub, card_bounds)
a = rng.sample(inds, na)
b = rng.sample(difference(inds, a), nb)
gi = fill(c, acol, a)
gi = fill(gi, bcol, b)
fa = apply(first, a)
la = apply(last, a)
fb = apply(first, b)
lb = apply(last, b)
alins = sfilter(inds, lambda ij: first(ij) in fa or last(ij) in la)
blins = sfilter(inds, lambda ij: first(ij) in fb or last(ij) in lb)
go = fill(c, acol, alins)
go = fill(go, bcol, blins)
go = fill(go, 2, intersection(set(alins), set(blins)))
go = fill(go, acol, a)
go = fill(go, bcol, b)
return {"input": gi, "output": go}
def generate_8be77c9e(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (1, 15))
w = unifint(rng, diff_lb, diff_ub, (1, 30))
bgc = rng.choice(cols)
gi = canvas(bgc, (h, w))
remcols = remove(bgc, cols)
numc = unifint(rng, diff_lb, diff_ub, (0, min(9, h * w)))
colsch = rng.sample(cols, numc)
inds = totuple(asindices(gi))
for col in colsch:
num = unifint(rng, diff_lb, diff_ub, (1, max(1, len(inds) // numc)))
chos = rng.sample(inds, num)
gi = fill(gi, col, chos)
inds = difference(inds, chos)
go = vconcat(gi, hmirror(gi))
return {"input": gi, "output": go}
def generate_6d0aefbc(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
dim_bounds = (1, 30)
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (1, 30))
w = unifint(rng, diff_lb, diff_ub, (1, 15))
bgc = rng.choice(cols)
gi = canvas(bgc, (h, w))
remcols = remove(bgc, cols)
numc = unifint(rng, diff_lb, diff_ub, (0, min(9, h * w)))
colsch = rng.sample(remcols, numc)
inds = totuple(asindices(gi))
for col in colsch:
num = unifint(rng, diff_lb, diff_ub, (1, max(1, len(inds) // numc)))
chos = rng.sample(inds, num)
gi = fill(gi, col, chos)
inds = difference(inds, chos)
go = hconcat(gi, vmirror(gi))
return {"input": gi, "output": go}
def generate_74dd1130(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (1, 30))
w = unifint(rng, diff_lb, diff_ub, (1, 30))
bgc = rng.choice(cols)
gi = canvas(bgc, (h, w))
remcols = remove(bgc, cols)
numc = unifint(rng, diff_lb, diff_ub, (0, min(9, h * w)))
colsch = rng.sample(remcols, numc)
inds = totuple(asindices(gi))
for col in colsch:
num = unifint(rng, diff_lb, diff_ub, (1, max(1, len(inds) // numc)))
chos = rng.sample(inds, num)
gi = fill(gi, col, chos)
inds = difference(inds, chos)
go = dmirror(gi)
return {"input": gi, "output": go}
def generate_62c24649(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (1, 15))
w = unifint(rng, diff_lb, diff_ub, (1, 15))
bgc = rng.choice(cols)
gi = canvas(bgc, (h, w))
remcols = remove(bgc, cols)
numc = unifint(rng, diff_lb, diff_ub, (0, min(9, h * w)))
colsch = rng.sample(remcols, numc)
inds = totuple(asindices(gi))
for col in colsch:
num = unifint(rng, diff_lb, diff_ub, (1, max(1, len(inds) // numc)))
chos = rng.sample(inds, num)
gi = fill(gi, col, chos)
inds = difference(inds, chos)
go = vconcat(hconcat(gi, vmirror(gi)), hconcat(hmirror(gi), hmirror(vmirror(gi))))
return {"input": gi, "output": go}
def generate_6150a2bd(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (1, 30))
w = unifint(rng, diff_lb, diff_ub, (1, 30))
bgc = rng.choice(cols)
gi = canvas(bgc, (h, w))
remcols = remove(bgc, cols)
numc = unifint(rng, diff_lb, diff_ub, (0, min(9, h * w)))
colsch = rng.sample(remcols, numc)
inds = totuple(asindices(gi))
for col in colsch:
num = unifint(rng, diff_lb, diff_ub, (1, max(1, len(inds) // numc)))
chos = rng.sample(inds, num)
gi = fill(gi, col, chos)
inds = difference(inds, chos)
go = rot180(gi)
return {"input": gi, "output": go}
def generate_6fa7a44f(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (1, 15))
w = unifint(rng, diff_lb, diff_ub, (1, 30))
bgc = rng.choice(cols)
gi = canvas(bgc, (h, w))
remcols = remove(bgc, cols)
numc = unifint(rng, diff_lb, diff_ub, (0, min(9, h * w)))
colsch = rng.sample(remcols, numc)
inds = totuple(asindices(gi))
for col in colsch:
num = unifint(rng, diff_lb, diff_ub, (1, max(1, len(inds) // numc)))
chos = rng.sample(inds, num)
gi = fill(gi, col, chos)
inds = difference(inds, chos)
go = vconcat(gi, hmirror(gi))
return {"input": gi, "output": go}
def generate_8d5021e8(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (1, 10))
w = unifint(rng, diff_lb, diff_ub, (1, 15))
bgc = rng.choice(cols)
gi = canvas(bgc, (h, w))
remcols = remove(bgc, cols)
numc = unifint(rng, diff_lb, diff_ub, (0, min(9, h * w)))
colsch = rng.sample(remcols, numc)
inds = totuple(asindices(gi))
for col in colsch:
num = unifint(rng, diff_lb, diff_ub, (1, max(1, len(inds) // numc)))
chos = rng.sample(inds, num)
gi = fill(gi, col, chos)
inds = difference(inds, chos)
go1 = hconcat(vmirror(gi), gi)
go2 = vconcat(go1, hmirror(go1))
go = vconcat(hmirror(go1), go2)
return {"input": gi, "output": go}
def generate_0520fde7(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(2, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (2, 30))
w = unifint(rng, diff_lb, diff_ub, (2, 14))
bgc = 0
remcols = remove(bgc, cols)
barcol = rng.choice(remcols)
remcols = remove(barcol, remcols)
cola = rng.choice(remcols)
colb = rng.choice(remcols)
canv = canvas(bgc, (h, w))
inds = totuple(asindices(canv))
gbar = canvas(barcol, (h, 1))
mp = (h * w) // 2
devrng = (0, mp)
deva = unifint(rng, diff_lb, diff_ub, devrng)
devb = unifint(rng, diff_lb, diff_ub, devrng)
sgna = rng.choice((+1, -1))
sgnb = rng.choice((+1, -1))
deva = sgna * deva
devb = sgnb * devb
numa = mp + deva
numb = mp + devb
numa = max(min(h * w - 1, numa), 1)
numb = max(min(h * w - 1, numb), 1)
a = rng.sample(inds, numa)
b = rng.sample(inds, numb)
gia = fill(canv, cola, a)
gib = fill(canv, colb, b)
gi = hconcat(hconcat(gia, gbar), gib)
go = fill(canv, 2, set(a) & set(b))
if rng.choice((True, False)):
gi = dmirror(gi)
go = dmirror(go)
return {"input": gi, "output": go}
def generate_46442a0e(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (1, 15))
w = h
bgc = rng.choice(cols)
gi = canvas(bgc, (h, w))
remcols = remove(bgc, cols)
numc = unifint(rng, diff_lb, diff_ub, (0, min(9, h * w)))
colsch = rng.sample(remcols, numc)
inds = totuple(asindices(gi))
for col in colsch:
num = unifint(rng, diff_lb, diff_ub, (1, max(1, len(inds) // numc)))
chos = rng.sample(inds, num)
gi = fill(gi, col, chos)
inds = difference(inds, chos)
go1 = hconcat(gi, rot90(gi))
go2 = hconcat(rot270(gi), rot180(gi))
go = vconcat(go1, go2)
return {"input": gi, "output": go}
def generate_1b2d62fb(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(8, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (2, 30))
w = unifint(rng, diff_lb, diff_ub, (2, 14))
bgc = 0
remcols = remove(bgc, cols)
barcol = rng.choice(remcols)
remcols = remove(barcol, remcols)
cola = rng.choice(remcols)
colb = rng.choice(remcols)
canv = canvas(0, (h, w))
inds = totuple(asindices(canv))
gbar = canvas(barcol, (h, 1))
mp = (h * w) // 2
devrng = (0, mp)
deva = unifint(rng, diff_lb, diff_ub, devrng)
devb = unifint(rng, diff_lb, diff_ub, devrng)
sgna = rng.choice((+1, -1))
sgnb = rng.choice((+1, -1))
deva = sgna * deva
devb = sgnb * devb
numa = mp + deva
numb = mp + devb
numa = max(min(h * w - 1, numa), 1)
numb = max(min(h * w - 1, numb), 1)
a = rng.sample(inds, numa)
b = rng.sample(inds, numb)
gia = fill(canv, cola, a)
gib = fill(canv, colb, b)
gi = hconcat(hconcat(gia, gbar), gib)
go = fill(canv, 8, ofcolor(gia, 0) & ofcolor(gib, 0))
if rng.choice((True, False)):
gi = dmirror(gi)
go = dmirror(go)
return {"input": gi, "output": go}
def generate_3428a4f5(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(3, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (1, 30))
w = unifint(rng, diff_lb, diff_ub, (1, 14))
bgc = 0
remcols = remove(bgc, cols)
barcol = rng.choice(remcols)
remcols = remove(barcol, remcols)
cola = rng.choice(remcols)
colb = rng.choice(remcols)
canv = canvas(bgc, (h, w))
inds = totuple(asindices(canv))
gbar = canvas(barcol, (h, 1))
mp = (h * w) // 2
devrng = (0, mp)
deva = unifint(rng, diff_lb, diff_ub, devrng)
devb = unifint(rng, diff_lb, diff_ub, devrng)
sgna = rng.choice((+1, -1))
sgnb = rng.choice((+1, -1))
deva = sgna * deva
devb = sgnb * devb
numa = mp + deva
numb = mp + devb
numa = max(min(h * w - 1, numa), 1)
numb = max(min(h * w - 1, numb), 1)
a = rng.sample(inds, numa)
b = rng.sample(inds, numb)
gia = fill(canv, cola, a)
gib = fill(canv, colb, b)
gi = hconcat(hconcat(gia, gbar), gib)
go = fill(canv, 3, (set(a) | set(b)) - (set(a) & set(b)))
if rng.choice((True, False)):
gi = dmirror(gi)
go = dmirror(go)
return {"input": gi, "output": go}
def generate_42a50994(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
colopts = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (1, 30))
w = unifint(rng, diff_lb, diff_ub, (1, 30))
bgc = rng.choice(colopts)
remcols = remove(bgc, colopts)
c = canvas(bgc, (h, w))
card_bounds = (0, max(0, (h * w) // 2 - 1))
num = unifint(rng, diff_lb, diff_ub, card_bounds)
numcols = unifint(rng, diff_lb, diff_ub, (0, min(9, num)))
inds = totuple(asindices(c))
chosinds = rng.sample(inds, num)
choscols = rng.sample(remcols, numcols)
locs = interval(0, len(chosinds), 1)
choslocs = rng.sample(locs, numcols)
gi = canvas(bgc, (h, w))
for col, endidx in zip(choscols, sorted(choslocs)[::-1]):
gi = fill(gi, col, chosinds[:endidx])
objs = objects(gi, F, T, T)
res = merge(sizefilter(objs, 1))
go = fill(gi, bgc, res)
return {"input": gi, "output": go}
def generate_08ed6ac7(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
colopts = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (4, 30))
w = unifint(rng, diff_lb, diff_ub, (4, 30))
bgc = rng.choice(difference(colopts, (1, 2, 3, 4)))
remcols = remove(bgc, colopts)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
barrange = (4, w)
locopts = interval(0, w, 1)
nbars = unifint(rng, diff_lb, diff_ub, barrange)
barlocs = rng.sample(locopts, nbars)
barhopts = interval(0, h, 1)
barhs = rng.sample(barhopts, 4)
barcols = [rng.choice(remcols) for j in range(nbars)]
barhsfx = [rng.choice(barhs) for j in range(nbars - 4)] + list(barhs)
rng.shuffle(barhsfx)
ordered = sorted(barhs)
colord = interval(1, 5, 1)
for col, (loci, locj) in zip(barcols, list(zip(barhsfx, barlocs))):
bar = connect((loci, locj), (h - 1, locj))
gi = fill(gi, col, bar)
go = fill(go, colord[ordered.index(loci)], bar)
return {"input": gi, "output": go}
def generate_8f2ea7aa(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
colopts = interval(0, 10, 1)
d = unifint(rng, diff_lb, diff_ub, (2, 5))
bgc = rng.choice(colopts)
remcols = remove(bgc, colopts)
d2 = d**2
gi = canvas(bgc, (d2, d2))
go = canvas(bgc, (d2, d2))
minig = canvas(bgc, (d, d))
inds = totuple(asindices(minig))
mp = d2 // 2
devrng = (0, mp)
dev = unifint(rng, diff_lb, diff_ub, devrng)
devs = rng.choice((+1, -1))
num = mp + devs * dev
num = max(min(num, d2), 0)
locs = set(rng.sample(inds, num))
while shape(locs) != (d, d):
locs.add(rng.choice(totuple(set(inds) - locs)))
ncols = unifint(rng, diff_lb, diff_ub, (1, 9))
cols = rng.sample(remcols, ncols)
for ij in locs:
minig = fill(minig, rng.choice(cols), {ij})
itv = interval(0, d2, d)
plcopts = totuple(product(itv, itv))
plc = rng.choice(plcopts)
minigo = asobject(minig)
gi = paint(gi, shift(minigo, plc))
for ij in locs:
go = paint(go, shift(minigo, multiply(ij, d)))
return {"input": gi, "output": go}
def generate_7fe24cdd(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (1, 15))
w = h
bgc = rng.choice(cols)
gi = canvas(bgc, (h, w))
remcols = remove(bgc, cols)
numc = unifint(rng, diff_lb, diff_ub, (0, min(9, h * w)))
colsch = rng.sample(remcols, numc)
inds = totuple(asindices(gi))
for col in colsch:
num = unifint(rng, diff_lb, diff_ub, (1, max(1, len(inds) // numc)))
chos = rng.sample(inds, num)
gi = fill(gi, col, chos)
inds = difference(inds, chos)
go1 = hconcat(gi, rot90(gi))
go2 = hconcat(rot270(gi), rot180(gi))
go = vconcat(go1, go2)
return {"input": gi, "output": go}
def generate_85c4e7cd(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
colopts = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (1, 15))
w = unifint(rng, diff_lb, diff_ub, (1, 15))
ncols = unifint(rng, diff_lb, diff_ub, (1, 10))
cols = rng.sample(colopts, ncols)
colord = [rng.choice(cols) for j in range(min(h, w))]
shp = (h * 2, w * 2)
gi = canvas(0, shp)
go = canvas(0, shp)
for idx, (ci, co) in enumerate(zip(colord, colord[::-1])):
ulc = (idx, idx)
lrc = (h * 2 - 1 - idx, w * 2 - 1 - idx)
bx = box(frozenset({ulc, lrc}))
gi = fill(gi, ci, bx)
go = fill(go, co, bx)
return {"input": gi, "output": go}
def generate_8e5a5113(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
colopts = interval(0, 10, 1)
d = unifint(rng, diff_lb, diff_ub, (2, 9))
bgc = rng.choice(colopts)
remcols = remove(bgc, colopts)
k = 4 if d < 7 else 3
nbound = (2, k)
num = unifint(rng, diff_lb, diff_ub, nbound)
rotfs = (identity, rot90, rot180, rot270)
barc = rng.choice(remcols)
remcols = remove(barc, remcols)
colbnds = (1, 8)
ncols = unifint(rng, diff_lb, diff_ub, colbnds)
patcols = rng.sample(remcols, ncols)
bgcanv = canvas(bgc, (d, d))
c = canvas(bgc, (d, d))
inds = totuple(asindices(c))
ncolbnds = (1, d**2 - 1)
ncells = unifint(rng, diff_lb, diff_ub, ncolbnds)
indsss = rng.sample(inds, ncells)
for ij in indsss:
c = fill(c, rng.choice(patcols), {ij})
barr = canvas(barc, (d, 1))
fillinidx = rng.choice(interval(0, num, 1))
gi = rot90(rot270(c if fillinidx == 0 else bgcanv))
go = rot90(rot270(c))
for j in range(num - 1):
c = rot90(c)
gi = hconcat(hconcat(gi, barr), c if j + 1 == fillinidx else bgcanv)
go = hconcat(hconcat(go, barr), c)
if rng.choice((True, False)):
gi = rot90(gi)
go = rot90(go)
return {"input": gi, "output": go}
def generate_4c4377d9(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (1, 15))
w = unifint(rng, diff_lb, diff_ub, (1, 30))
bgc = rng.choice(cols)
gi = canvas(bgc, (h, w))
remcols = remove(bgc, cols)
numc = unifint(rng, diff_lb, diff_ub, (0, min(9, h * w)))
colsch = rng.sample(cols, numc)
inds = totuple(asindices(gi))
for col in colsch:
num = unifint(rng, diff_lb, diff_ub, (1, max(1, len(inds) // numc)))
chos = rng.sample(inds, num)
gi = fill(gi, col, chos)
inds = difference(inds, chos)
go = vconcat(hmirror(gi), gi)
return {"input": gi, "output": go}
def generate_a65b410d(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
colopts = difference(interval(0, 10, 1), (1, 3))
h = unifint(rng, diff_lb, diff_ub, (3, 30))
w = unifint(rng, diff_lb, diff_ub, (3, 30))
mpi = h // 2
mpj = w // 2
devi = unifint(rng, diff_lb, diff_ub, (0, mpi))
devj = unifint(rng, diff_lb, diff_ub, (0, mpj))
if rng.choice((True, False)):
locj = devj
loci = devi
else:
loci = h - devi
locj = w - devj
loci = max(min(h - 2, loci), 1)
locj = max(min(w - 2, locj), 1)
loc = (loci, locj)
bgc = rng.choice(colopts)
linc = rng.choice(remove(bgc, colopts))
gi = canvas(bgc, (h, w))
gi = fill(gi, linc, connect((loci, 0), (loci, locj)))
blues = shoot((loci + 1, locj - 1), (1, -1))
f = lambda ij: connect(ij, (ij[0], 0)) if ij[1] >= 0 else frozenset({})
blues = mapply(f, blues)
greens = shoot((loci - 1, locj + 1), (-1, 1))
greens = mapply(f, greens)
go = fill(gi, 1, blues)
go = fill(go, 3, greens)
rotf = rng.choice((identity, rot90, rot180, rot270))
gi = rotf(gi)
go = rotf(go)
return {"input": gi, "output": go}
def generate_5168d44c(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (7, 30))
w = unifint(rng, diff_lb, diff_ub, (7, 30))
doth = unifint(rng, diff_lb, diff_ub, (1, h // 3))
dotw = unifint(rng, diff_lb, diff_ub, (1, w // 3))
borderh = unifint(rng, diff_lb, diff_ub, (1, h // 4))
borderw = unifint(rng, diff_lb, diff_ub, (1, w // 4))
direc = rng.choice((DOWN, RIGHT, UNITY))
dotloci = rng.randint(0, h - doth - 1 if direc == RIGHT else h - doth - borderh - 1)
dotlocj = rng.randint(0, w - dotw - 1 if direc == DOWN else w - dotw - borderw - 1)
dotloc = (dotloci, dotlocj)
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
dotcol = rng.choice(remcols)
remcols = remove(dotcol, remcols)
boxcol = rng.choice(remcols)
gi = canvas(bgc, (h, w))
dotshap = (doth, dotw)
starterdot = backdrop(frozenset({dotloc, add(dotloc, decrement(dotshap))}))
bordershap = (borderh, borderw)
offset = add(multiply(direc, dotshap), multiply(direc, bordershap))
itv = interval(-15, 16, 1)
itv = apply(lbind(multiply, offset), itv)
dots = mapply(lbind(shift, starterdot), itv)
gi = fill(gi, dotcol, dots)
protobx = backdrop(
frozenset(
{
(dotloci - borderh, dotlocj - borderw),
(dotloci + doth + borderh - 1, dotlocj + dotw + borderw - 1),
}
)
)
bx = protobx - starterdot
bxshifted = shift(bx, offset)
go = fill(gi, boxcol, bxshifted)
gi = fill(gi, boxcol, bx)
return {"input": gi, "output": go}
def generate_a9f96cdd(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = difference(interval(0, 10, 1), (3, 6, 7, 8))
h = unifint(rng, diff_lb, diff_ub, (3, 30))
w = unifint(rng, diff_lb, diff_ub, (3, 30))
bgc = rng.choice(cols)
fgc = rng.choice(remove(bgc, cols))
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
locs = asindices(gi)
noccs = unifint(rng, diff_lb, diff_ub, (1, max(1, (h * w) // 10)))
for k in range(noccs):
if len(locs) == 0:
break
loc = rng.choice(totuple(locs))
locs = locs - mapply(neighbors, neighbors(loc))
plcd = {loc}
gi = fill(gi, fgc, plcd)
go = fill(go, 3, shift(plcd, (-1, -1)))
go = fill(go, 7, shift(plcd, (1, 1)))
go = fill(go, 8, shift(plcd, (1, -1)))
go = fill(go, 6, shift(plcd, (-1, 1)))
return {"input": gi, "output": go}
def generate_9172f3a0(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (1, 10))
w = unifint(rng, diff_lb, diff_ub, (1, 10))
bgc = rng.choice(cols)
gi = canvas(bgc, (h, w))
remcols = remove(bgc, cols)
numc = unifint(rng, diff_lb, diff_ub, (0, min(9, h * w)))
colsch = rng.sample(remcols, numc)
inds = totuple(asindices(gi))
for col in colsch:
num = unifint(rng, diff_lb, diff_ub, (1, max(1, len(inds) // numc)))
chos = rng.sample(inds, num)
gi = fill(gi, col, chos)
inds = difference(inds, chos)
go = upscale(gi, 3)
return {"input": gi, "output": go}
def generate_67a423a3(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(4, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (3, 30))
w = unifint(rng, diff_lb, diff_ub, (3, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
gi = canvas(bgc, (h, w))
lineh = unifint(rng, diff_lb, diff_ub, (1, h // 3))
linew = unifint(rng, diff_lb, diff_ub, (1, w // 3))
loci = rng.randint(1, h - lineh - 1)
locj = rng.randint(1, w - linew - 1)
acol = rng.choice(remcols)
bcol = rng.choice(remove(acol, remcols))
for a in range(lineh):
gi = fill(gi, acol, connect((loci + a, 0), (loci + a, w - 1)))
for b in range(linew):
gi = fill(gi, bcol, connect((0, locj + b), (h - 1, locj + b)))
bx = outbox(frozenset({(loci, locj), (loci + lineh - 1, locj + linew - 1)}))
go = fill(gi, 4, bx)
if rng.choice((True, False)):
gi = dmirror(gi)
go = dmirror(go)
return {"input": gi, "output": go}
def generate_db3e9e38(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(8, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (3, 30))
w = unifint(rng, diff_lb, diff_ub, (3, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
fgc = rng.choice(remcols)
barth = unifint(rng, diff_lb, diff_ub, (1, max(1, w // 5)))
loci = unifint(rng, diff_lb, diff_ub, (1, h - 2))
locj = rng.randint(1, w - barth - 1)
bar = backdrop(frozenset({(loci, locj), (0, locj + barth - 1)}))
gi = canvas(bgc, (h, w))
gi = fill(gi, fgc, bar)
go = canvas(bgc, (h, w))
for k in range(16):
rsh = multiply(2 * k, (-1, barth))
go = fill(go, fgc, shift(bar, rsh))
lsh = multiply(2 * k, (-1, -barth))
go = fill(go, fgc, shift(bar, lsh))
rsh = multiply(2 * k + 1, (-1, barth))
go = fill(go, 8, shift(bar, rsh))
lsh = multiply(2 * k + 1, (-1, -barth))
go = fill(go, 8, shift(bar, lsh))
rotf = rng.choice((identity, rot90, rot180, rot270))
gi = rotf(gi)
go = rotf(go)
return {"input": gi, "output": go}
def generate_9dfd6313(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
dh = unifint(rng, diff_lb, diff_ub, (1, 14))
d = 2 * dh + 1
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
linc = rng.choice(remcols)
remcols = remove(linc, remcols)
gi = canvas(bgc, (d, d))
inds = asindices(gi)
lni = rng.randint(1, 4)
if lni == 1:
ln = connect((dh, 0), (dh, d - 1))
mirrf = hmirror
cands = sfilter(inds, lambda ij: ij[0] > dh)
elif lni == 2:
ln = connect((0, dh), (d - 1, dh))
mirrf = vmirror
cands = sfilter(inds, lambda ij: ij[1] > dh)
elif lni == 3:
ln = connect((0, 0), (d - 1, d - 1))
mirrf = dmirror
cands = sfilter(inds, lambda ij: ij[0] > ij[1])
elif lni == 4:
ln = connect((d - 1, 0), (0, d - 1))
mirrf = cmirror
cands = sfilter(inds, lambda ij: (ij[0] + ij[1]) > d)
gi = fill(gi, linc, ln)
mp = (d * (d - 1)) // 2
numcols = unifint(rng, diff_lb, diff_ub, (1, min(7, mp)))
colsch = rng.sample(remcols, numcols)
numpix = unifint(rng, diff_lb, diff_ub, (1, len(cands)))
pixs = rng.sample(totuple(cands), numpix)
for pix in pixs:
gi = fill(gi, rng.choice(colsch), {pix})
go = mirrf(gi)
if rng.choice((True, False)):
gi, go = go, gi
return {"input": gi, "output": go}
def generate_746b3537(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
fullcols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (2, 15))
w = unifint(rng, diff_lb, diff_ub, (1, 30))
cols = []
lastc = -1
for k in range(h):
c = rng.choice(remove(lastc, fullcols))
cols.append(c)
lastc = c
go = tuple((c,) for c in cols)
gi = tuple(repeat(c, w) for c in cols)
numinserts = unifint(rng, diff_lb, diff_ub, (1, 30 - h))
for k in range(numinserts):
loc = rng.randint(0, len(gi) - 1)
gi = gi[: loc + 1] + gi[loc:]
if rng.choice((True, False)):
gi = dmirror(gi)
go = dmirror(go)
return {"input": gi, "output": go}
def generate_75b8110e(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (2, 15))
w = unifint(rng, diff_lb, diff_ub, (2, 15))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
c1, c2, c3, c4 = rng.sample(remcols, 4)
canv = canvas(bgc, (h, w))
cels = totuple(asindices(canv))
mp = (h * w) // 2
nums = []
for k in range(4):
dev = unifint(rng, diff_lb, diff_ub, (0, mp))
if rng.choice((True, False)):
num = h * w - dev
else:
num = dev
num = min(max(0, num), h * w - 1)
nums.append(num)
s1, s2, s3, s4 = [rng.sample(cels, num) for num in nums]
gi1 = fill(canv, c1, s1)
gi2 = fill(canv, c2, s2)
gi3 = fill(canv, c3, s3)
gi4 = fill(canv, c4, s4)
gi = vconcat(hconcat(gi1, gi2), hconcat(gi3, gi4))
go = fill(gi1, c4, s4)
go = fill(go, c3, s3)
go = fill(go, c2, s2)
return {"input": gi, "output": go}
def generate_1cf80156(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
colopts = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (3, 30))
w = unifint(rng, diff_lb, diff_ub, (3, 30))
bgc = rng.choice(colopts)
fgc = rng.choice(remove(bgc, colopts))
gi = canvas(bgc, (h, w))
hb = unifint(rng, diff_lb, diff_ub, (1, min(15, h - 1)))
wb = unifint(rng, diff_lb, diff_ub, (1, min(15, w - 1)))
bounds = asindices(canvas(0, (hb, wb)))
shp = {rng.choice(totuple(corners(bounds)))}
mp = (hb * wb) // 2
dev = unifint(rng, diff_lb, diff_ub, (0, mp))
nc = rng.choice((dev, hb * wb - dev))
nc = max(0, min(hb * wb - 1, nc))
for j in range(nc):
shp.add(rng.choice(totuple((bounds - shp) & mapply(neighbors, shp))))
shp = normalize(shp)
di = rng.randint(0, h - height(shp))
dj = rng.randint(0, w - width(shp))
shpp = shift(shp, (di, dj))
gi = fill(gi, fgc, shpp)
go = fill(canvas(bgc, shape(shp)), fgc, shp)
return {"input": gi, "output": go}
def generate_28bf18c6(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
colopts = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (3, 30))
w = unifint(rng, diff_lb, diff_ub, (3, 30))
bgc = rng.choice(colopts)
fgc = rng.choice(remove(bgc, colopts))
gi = canvas(bgc, (h, w))
hb = unifint(rng, diff_lb, diff_ub, (1, min(14, h - 1)))
wb = unifint(rng, diff_lb, diff_ub, (1, min(14, w - 1)))
bounds = asindices(canvas(0, (hb, wb)))
shp = {rng.choice(totuple(corners(bounds)))}
mp = (hb * wb) // 2
dev = unifint(rng, diff_lb, diff_ub, (0, mp))
nc = rng.choice((dev, hb * wb - dev))
nc = max(0, min(hb * wb - 1, nc))
for j in range(nc):
shp.add(rng.choice(totuple((bounds - shp) & mapply(neighbors, shp))))
shp = normalize(shp)
di = rng.randint(0, h - height(shp))
dj = rng.randint(0, w - width(shp))
shpp = shift(shp, (di, dj))
gi = fill(gi, fgc, shpp)
go = fill(canvas(bgc, shape(shp)), fgc, shp)
go = hconcat(go, go)
return {"input": gi, "output": go}
def generate_22eb0ac0(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
colopts = interval(0, 10, 1)
gi = canvas(0, (1, 1))
h = unifint(rng, diff_lb, diff_ub, (4, 30))
w = unifint(rng, diff_lb, diff_ub, (4, 30))
bgc = rng.choice(colopts)
remcols = remove(bgc, colopts)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
nlocs = unifint(rng, diff_lb, diff_ub, (1, h))
locs = rng.sample(interval(0, h, 1), nlocs)
while set(locs).issubset({0, h - 1}):
locs = rng.sample(interval(0, h, 1), nlocs)
mp = nlocs // 2
nbarsdev = unifint(rng, diff_lb, diff_ub, (0, mp))
nbars = rng.choice((nbarsdev, h - nbarsdev))
nbars = max(0, min(nbars, nlocs))
barlocs = rng.sample(locs, nbars)
nonbarlocs = difference(locs, barlocs)
barcols = [rng.choice(remcols) for j in range(nbars)]
acols = [rng.choice(remcols) for j in range(len(nonbarlocs))]
bcols = [rng.choice(remove(acols[j], remcols)) for j in range(len(nonbarlocs))]
for bc, bl in zip(barcols, barlocs):
gi = fill(gi, bc, ((bl, 0), (bl, w - 1)))
go = fill(go, bc, connect((bl, 0), (bl, w - 1)))
for (a, b), loc in zip(zip(acols, bcols), nonbarlocs):
gi = fill(gi, a, {(loc, 0)})
go = fill(go, a, {(loc, 0)})
gi = fill(gi, b, {(loc, w - 1)})
go = fill(go, b, {(loc, w - 1)})
if rng.choice((True, False)):
gi = dmirror(gi)
go = dmirror(go)
return {"input": gi, "output": go}
def generate_4258a5f9(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
colopts = remove(1, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (2, 30))
w = unifint(rng, diff_lb, diff_ub, (2, 30))
bgc = rng.choice(colopts)
remcols = remove(bgc, colopts)
fgc = rng.choice(remcols)
gi = canvas(bgc, (h, w))
mp = ((h * w) // 2) if (h * w) % 2 == 1 else ((h * w) // 2 - 1)
ndots = unifint(rng, diff_lb, diff_ub, (1, mp))
inds = totuple(asindices(gi))
dots = rng.sample(inds, ndots)
go = fill(gi, 1, mapply(neighbors, frozenset(dots)))
go = fill(go, fgc, dots)
gi = fill(gi, fgc, dots)
return {"input": gi, "output": go}
def generate_1e0a9b12(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
ff = chain(dmirror, lbind(apply, rbind(order, identity)), dmirror)
while True:
h = unifint(rng, diff_lb, diff_ub, (3, 30))
w = unifint(rng, diff_lb, diff_ub, (3, 30))
nc = unifint(rng, diff_lb, diff_ub, (1, w))
bgc = rng.choice(cols)
gi = canvas(bgc, (h, w))
remcols = remove(bgc, cols)
scols = [rng.choice(remcols) for j in range(nc)]
slocs = rng.sample(interval(0, w, 1), nc)
inds = totuple(connect(ORIGIN, (h - 1, 0)))
for c, l in zip(scols, slocs):
nc2 = rng.randint(1, h - 1)
sel = rng.sample(inds, nc2)
gi = fill(gi, c, shift(sel, tojvec(l)))
go = replace(ff(replace(gi, bgc, -1)), -1, bgc)
if colorcount(gi, bgc) > argmax(remove(bgc, palette(gi)), lbind(colorcount, gi)):
break
return {"input": gi, "output": go}
def generate_9565186b(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(5, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (2, 30))
w = unifint(rng, diff_lb, diff_ub, (2, 30))
wg = canvas(5, (h, w))
numcols = unifint(rng, diff_lb, diff_ub, (2, min(h * w - 1, 8)))
mostcol = rng.choice(cols)
nummostcol_lb = (h * w) // numcols + 1
nummostcol_ub = h * w - numcols + 1
ubmlb = nummostcol_ub - nummostcol_lb
nmcdev = unifint(rng, diff_lb, diff_ub, (0, ubmlb))
nummostcol = nummostcol_ub - nmcdev
nummostcol = min(max(nummostcol, nummostcol_lb), nummostcol_ub)
inds = totuple(asindices(wg))
mostcollocs = rng.sample(inds, nummostcol)
gi = fill(wg, mostcol, mostcollocs)
go = fill(wg, mostcol, mostcollocs)
remcols = remove(mostcol, cols)
othcols = rng.sample(remcols, numcols - 1)
reminds = difference(inds, mostcollocs)
bufferlocs = rng.sample(reminds, numcols - 1)
for c, l in zip(othcols, bufferlocs):
gi = fill(gi, c, {l})
reminds = difference(reminds, bufferlocs)
colcounts = {c: 1 for c in othcols}
for ij in reminds:
if len(othcols) == 0:
gi = fill(gi, mostcol, {ij})
go = fill(go, mostcol, {ij})
else:
chc = rng.choice(othcols)
gi = fill(gi, chc, {ij})
colcounts[chc] += 1
if colcounts[chc] == nummostcol - 1:
othcols = remove(chc, othcols)
return {"input": gi, "output": go}
def generate_6e02f1e3(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
d = unifint(rng, diff_lb, diff_ub, (3, 30))
c = canvas(0, (d, d))
inds = list(asindices(c))
rng.shuffle(inds)
num = d**2
numcols = rng.choice((1, 2, 3))
chcols = rng.sample(cols, numcols)
if len(chcols) == 1:
gi = canvas(chcols[0], (d, d))
go = canvas(0, (d, d))
go = fill(go, 5, connect((0, 0), (0, d - 1)))
elif len(chcols) == 2:
c1, c2 = chcols
mp = (d**2) // 2
nc1 = unifint(rng, diff_lb, diff_ub, (1, mp))
a = inds[:nc1]
b = inds[nc1:]
gi = fill(c, c1, a)
gi = fill(gi, c2, b)
go = fill(canvas(0, (d, d)), 5, connect((0, 0), (d - 1, d - 1)))
elif len(chcols) == 3:
c1, c2, c3 = chcols
kk = d**2
a = int(1 / 3 * kk)
b = int(2 / 3 * kk)
adev = unifint(rng, diff_lb, diff_ub, (0, a - 1))
bdev = unifint(rng, diff_lb, diff_ub, (0, kk - b - 1))
a -= adev
b -= bdev
x1, x2, x3 = inds[:a], inds[a:b], inds[b:]
gi = fill(c, c1, x1)
gi = fill(gi, c2, x2)
gi = fill(gi, c3, x3)
go = fill(canvas(0, (d, d)), 5, connect((d - 1, 0), (0, d - 1)))
return {"input": gi, "output": go}
def generate_2dc579da(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (3, 30))
w = unifint(rng, diff_lb, diff_ub, (3, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
linc = rng.choice(remcols)
remcols = remove(linc, remcols)
dotc = rng.choice(remcols)
hdev = unifint(rng, diff_lb, diff_ub, (0, (h - 2) // 2))
lineh = rng.choice((hdev, h - 2 - hdev))
lineh = max(min(h - 2, lineh), 1)
wdev = unifint(rng, diff_lb, diff_ub, (0, (w - 2) // 2))
linew = rng.choice((wdev, w - 2 - wdev))
linew = max(min(w - 2, linew), 1)
locidev = unifint(rng, diff_lb, diff_ub, (1, h // 2))
loci = rng.choice((h // 2 - locidev, h // 2 + locidev))
loci = min(max(1, loci), h - lineh - 1)
locjdev = unifint(rng, diff_lb, diff_ub, (1, w // 2))
locj = rng.choice((w // 2 - locjdev, w // 2 + locjdev))
locj = min(max(1, locj), w - linew - 1)
gi = canvas(bgc, (h, w))
for a in range(loci, loci + lineh):
gi = fill(gi, linc, connect((a, 0), (a, w - 1)))
for b in range(locj, locj + linew):
gi = fill(gi, linc, connect((0, b), (h - 1, b)))
doth = rng.randint(1, loci)
dotw = rng.randint(1, locj)
dotloci = rng.randint(0, loci - doth)
dotlocj = rng.randint(0, locj - dotw)
dot = backdrop(frozenset({(dotloci, dotlocj), (dotloci + doth - 1, dotlocj + dotw - 1)}))
gi = fill(gi, dotc, dot)
go = crop(gi, (0, 0), (loci, locj))
rotf = rng.choice((identity, rot90, rot180, rot270))
gi = rotf(gi)
go = rotf(go)
return {"input": gi, "output": go}
def generate_2dee498d(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
dim_bounds = (1, 30)
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (1, 30))
w = unifint(rng, diff_lb, diff_ub, (1, 10))
bgc = rng.choice(cols)
go = canvas(bgc, (h, w))
remcols = remove(bgc, cols)
numc = unifint(rng, diff_lb, diff_ub, (1, min(9, h * w)))
colsch = rng.sample(remcols, numc)
inds = totuple(asindices(go))
for col in colsch:
num = unifint(rng, diff_lb, diff_ub, (1, max(1, len(inds) // numc)))
chos = rng.sample(inds, num)
go = fill(go, col, chos)
inds = difference(inds, chos)
gi = hconcat(go, hconcat(go, go))
return {"input": gi, "output": go}
def generate_508bd3b6(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(3, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (5, 30))
w = unifint(rng, diff_lb, diff_ub, (h, 30))
barh = unifint(rng, diff_lb, diff_ub, (1, h // 2))
barloci = unifint(rng, diff_lb, diff_ub, (2, h - barh))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
barc = rng.choice(remcols)
remcols = remove(barc, remcols)
linc = rng.choice(remcols)
gi = canvas(bgc, (h, w))
for j in range(barloci, barloci + barh):
gi = fill(gi, barc, connect((j, 0), (j, w - 1)))
dotlociinv = unifint(rng, diff_lb, diff_ub, (0, barloci - 1))
dotloci = min(max(0, barloci - 2 - dotlociinv), barloci - 1)
ln1 = shoot((dotloci, 0), (1, 1))
ofbgc = ofcolor(gi, bgc)
ln1 = sfilter(ln1 & ofbgc, lambda ij: ij[0] < barloci)
ln1 = order(ln1, first)
ln2 = shoot(ln1[-1], (-1, 1))
ln2 = sfilter(ln2 & ofbgc, lambda ij: ij[0] < barloci)
ln2 = order(ln2, last)[1:]
ln = ln1 + ln2
k = len(ln1)
lineleninv = unifint(rng, diff_lb, diff_ub, (0, k - 2))
linelen = k - lineleninv
givenl = ln[:linelen]
reml = ln[linelen:]
gi = fill(gi, linc, givenl)
go = fill(gi, 3, reml)
mfs = (identity, dmirror, cmirror, vmirror, hmirror, rot90, rot180, rot270)
nmfs = rng.choice((1, 2))
for fn in rng.sample(mfs, nmfs):
gi = fn(gi)
go = fn(go)
return {"input": gi, "output": go}
def generate_88a62173(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
dim_bounds = (1, 30)
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (1, 14))
w = unifint(rng, diff_lb, diff_ub, (1, 14))
bgc = rng.choice(cols)
gib = canvas(bgc, (h, w))
remcols = remove(bgc, cols)
numc = unifint(rng, diff_lb, diff_ub, (1, min(9, h * w)))
colsch = rng.sample(remcols, numc)
inds = totuple(asindices(gib))
for col in colsch:
num = unifint(rng, diff_lb, diff_ub, (1, max(1, len(inds) // numc)))
chos = rng.sample(inds, num)
gib = fill(gib, col, chos)
inds = difference(inds, chos)
numchinv = unifint(rng, diff_lb, diff_ub, (0, h * w - 1))
numch = h * w - numchinv
inds2 = totuple(asindices(gib))
subs = rng.sample(inds2, numch)
go = hmirror(hmirror(gib))
for x, y in subs:
go = fill(go, rng.choice(remove(go[x][y], colsch + [bgc])), {(x, y)})
gi = canvas(bgc, (h * 2 + 1, w * 2 + 1))
idxes = ((0, 0), (h + 1, w + 1), (h + 1, 0), (0, w + 1))
trgloc = rng.choice(idxes)
remidxes = remove(trgloc, idxes)
trgobj = asobject(go)
otherobj = asobject(gib)
gi = paint(gi, shift(trgobj, trgloc))
for ij in remidxes:
gi = paint(gi, shift(otherobj, ij))
return {"input": gi, "output": go}
def generate_3aa6fb7a(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
base = (ORIGIN, RIGHT, DOWN, UNITY)
cols = remove(1, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (3, 30))
w = unifint(rng, diff_lb, diff_ub, (3, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
fgc = rng.choice(remcols)
gi = canvas(bgc, (h, w))
inds = totuple(asindices(gi))
maxnum = ((h * w) // 2) // 3
num = unifint(rng, diff_lb, diff_ub, (1, maxnum))
kk, tr = 0, 0
maxtrials = num * 2
binds = set()
while kk < num and tr < maxtrials:
loc = rng.choice(inds)
ooo = rng.choice(base)
oo = remove(ooo, base)
oop = shift(oo, loc)
if set(oop).issubset(inds):
inds = difference(inds, totuple(combine(oop, totuple(mapply(dneighbors, oop)))))
gi = fill(gi, fgc, oop)
binds.add(add(ooo, loc))
kk += 1
tr += 1
go = fill(gi, 1, binds)
return {"input": gi, "output": go}
def generate_3ac3eb23(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (3, 30))
w = unifint(rng, diff_lb, diff_ub, (3, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
nlocs = unifint(rng, diff_lb, diff_ub, (1, max(1, (w - 2) // 3)))
locopts = interval(1, w - 1, 1)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
for k in range(nlocs):
if len(locopts) == 0:
break
locj = rng.choice(locopts)
locopts = difference(locopts, interval(locj - 2, locj + 3, 1))
col = rng.choice(remcols)
gi = fill(gi, col, {(0, locj)})
go = fill(go, col, {(p, locj) for p in interval(0, h, 2)})
go = fill(go, col, {(p, locj - 1) for p in interval(1, h, 2)})
go = fill(go, col, {(p, locj + 1) for p in interval(1, h, 2)})
mf = rng.choice((identity, rot90, rot180, rot270))
gi = mf(gi)
go = mf(go)
return {"input": gi, "output": go}
def generate_c3e719e8(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(0, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (2, 5))
w = unifint(rng, diff_lb, diff_ub, (2, 5))
gob = canvas(-1, (h**2, w**2))
wg = canvas(-1, (h, w))
ncols = unifint(rng, diff_lb, diff_ub, (1, min(h * w - 1, 8)))
nmc = rng.randint(max(1, (h * w) // (ncols + 1) + 1), h * w)
inds = totuple(asindices(wg))
mc = rng.choice(cols)
remcols = remove(mc, cols)
mcc = rng.sample(inds, nmc)
inds = difference(inds, mcc)
gi = fill(wg, mc, mcc)
ocols = rng.sample(remcols, ncols)
k = len(inds) // ncols + 1
for ocol in ocols:
if len(inds) == 0:
break
ub = min(nmc - 1, len(inds))
ub = min(ub, k)
ub = max(ub, 1)
locs = rng.sample(inds, unifint(rng, diff_lb, diff_ub, (1, ub)))
inds = difference(inds, locs)
gi = fill(gi, ocol, locs)
gi = replace(gi, -1, mc)
o = asobject(gi)
gob = replace(gob, -1, 0)
go = paint(gob, mapply(lbind(shift, o), apply(rbind(multiply, (h, w)), ofcolor(gi, mc))))
return {"input": gi, "output": go}
def generate_29c11459(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
colopts = remove(5, interval(0, 10, 1))
gi = canvas(0, (1, 1))
h = unifint(rng, diff_lb, diff_ub, (5, 30))
w = unifint(rng, diff_lb, diff_ub, (5, 29))
if w % 2 == 0:
w = rng.choice((max(5, w - 1), min(29, w + 1)))
bgc = rng.choice(colopts)
remcols = remove(bgc, colopts)
ncols = unifint(rng, diff_lb, diff_ub, (2, len(remcols)))
ccols = rng.sample(remcols, ncols)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
nlocs = unifint(rng, diff_lb, diff_ub, (1, h))
locs = rng.sample(interval(0, h, 1), nlocs)
while set(locs).issubset({0, h - 1}):
locs = rng.sample(interval(0, h, 1), nlocs)
acols = []
bcols = []
aforb = -1
bforb = -1
for k in range(nlocs):
ac = rng.choice(remove(aforb, ccols))
acols.append(ac)
aforb = ac
bc = rng.choice(remove(bforb, ccols))
bcols.append(bc)
bforb = bc
for (a, b), loc in zip(zip(acols, bcols), sorted(locs)):
gi = fill(gi, a, {(loc, 0)})
gi = fill(gi, b, {(loc, w - 1)})
go = fill(go, a, connect((loc, 0), (loc, w // 2 - 1)))
go = fill(go, b, connect((loc, w // 2 + 1), (loc, w - 1)))
go = fill(go, 5, {(loc, w // 2)})
if rng.choice((True, False)):
gi = dmirror(gi)
go = dmirror(go)
return {"input": gi, "output": go}
def generate_23b5c85d(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (5, 30))
w = unifint(rng, diff_lb, diff_ub, (5, 30))
bgc = rng.choice(cols)
colopts = remove(bgc, cols)
gi = canvas(bgc, (h, w))
oh = unifint(rng, diff_lb, diff_ub, (2, h - 1))
ow = unifint(rng, diff_lb, diff_ub, (2, w - 1))
num = unifint(rng, diff_lb, diff_ub, (1, 8))
cnt = 0
while cnt < num:
loci = rng.randint(0, h - oh)
locj = rng.randint(0, w - ow)
col = rng.choice(colopts)
colopts = remove(col, colopts)
obj = backdrop(frozenset({(loci, locj), (loci + oh - 1, locj + ow - 1)}))
gi2 = fill(gi, col, obj)
if (
color(
argmin(
sfilter(partition(gi2), fork(equality, size, fork(multiply, height, width))),
fork(multiply, height, width),
)
)
!= col
):
break
else:
gi = gi2
go = canvas(col, shape(obj))
oh = unifint(rng, diff_lb, diff_ub, (max(0, oh - 4), oh - 1))
ow = unifint(rng, diff_lb, diff_ub, (max(0, ow - 4), ow - 1))
if oh < 1 or ow < 1:
break
cnt += 1
return {"input": gi, "output": go}
def generate_1bfc4729(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (4, 30))
w = unifint(rng, diff_lb, diff_ub, (4, 30))
if h % 2 == 1:
h = rng.choice((max(4, h - 1), min(30, h + 1)))
alocj = unifint(rng, diff_lb, diff_ub, (w // 2, w - 1))
if rng.choice((True, False)):
alocj = max(min(w // 2, alocj - w // 2), 1)
aloci = rng.randint(1, h // 2 - 1)
blocj = unifint(rng, diff_lb, diff_ub, (w // 2, w - 1))
if rng.choice((True, False)):
blocj = max(min(w // 2, blocj - w // 2), 1)
bloci = rng.randint(h // 2, h - 2)
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
acol = rng.choice(remcols)
remcols = remove(acol, remcols)
bcol = rng.choice(remcols)
gi = canvas(bgc, (h, w))
aloc = (aloci, alocj)
bloc = (bloci, blocj)
gi = fill(gi, acol, {aloc})
gi = fill(gi, bcol, {bloc})
go = fill(gi, acol, hfrontier(aloc))
go = fill(go, bcol, hfrontier(bloc))
go = fill(go, acol, connect((0, 0), (0, w - 1)))
go = fill(go, bcol, connect((h - 1, 0), (h - 1, w - 1)))
go = fill(go, acol, connect((0, 0), (h // 2 - 1, 0)))
go = fill(go, acol, connect((0, w - 1), (h // 2 - 1, w - 1)))
go = fill(go, bcol, connect((h // 2, 0), (h - 1, 0)))
go = fill(go, bcol, connect((h // 2, w - 1), (h - 1, w - 1)))
return {"input": gi, "output": go}
def generate_47c1f68c(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(1, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (2, 14))
w = unifint(rng, diff_lb, diff_ub, (2, 14))
bgc, linc = rng.sample(cols, 2)
remcols = difference(cols, (bgc, linc))
objc = rng.choice(remcols)
canv = canvas(bgc, (h, w))
nc = unifint(rng, diff_lb, diff_ub, (1, h * w - 1))
bx = asindices(canv)
obj = {rng.choice(totuple(bx))}
for kk in range(nc - 1):
dns = mapply(neighbors, obj)
ch = rng.choice(totuple(bx & dns))
obj.add(ch)
bx = bx - {ch}
obj = recolor(objc, obj)
gi = paint(canv, obj)
gi1 = hconcat(hconcat(gi, canvas(linc, (h, 1))), canv)
gi2 = hconcat(hconcat(canv, canvas(linc, (h, 1))), canv)
gi = vconcat(vconcat(gi1, canvas(linc, (1, 2 * w + 1))), gi2)
go = paint(canv, obj)
go = hconcat(go, vmirror(go))
go = vconcat(go, hmirror(go))
go = replace(go, objc, linc)
scf = rng.choice((identity, hmirror, vmirror, compose(hmirror, vmirror)))
gi = scf(gi)
go = scf(go)
return {"input": gi, "output": go}
def generate_178fcbfb(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = difference(interval(0, 10, 1), (1, 2, 3))
h = unifint(rng, diff_lb, diff_ub, (3, 30))
w = unifint(rng, diff_lb, diff_ub, (3, 30))
bgc = rng.choice(cols)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
inds = totuple(asindices(gi))
iforb = set()
jforb = set()
mp = (h * w) // 3
for col in (2, 1, 3):
bnd = unifint(rng, diff_lb, diff_ub, (1, w if col == 2 else h // 2))
for ndots in range(bnd):
if col == 2:
ij = rng.choice(sfilter(inds, lambda ij: last(ij) not in jforb))
jforb.add(last(ij))
if col == 1 or col == 3:
ij = rng.choice(sfilter(inds, lambda ij: first(ij) not in iforb))
iforb.add(first(ij))
gi = fill(gi, col, initset(ij))
go = fill(go, col, (vfrontier if col == 2 else hfrontier)(ij))
inds = remove(ij, inds)
return {"input": gi, "output": go}
def generate_ae4f1146(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(1, interval(0, 10, 1))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
fgc = rng.choice(remcols)
h = unifint(rng, diff_lb, diff_ub, (6, 30))
w = unifint(rng, diff_lb, diff_ub, (6, 30))
dh = unifint(rng, diff_lb, diff_ub, (2, h // 3))
dw = unifint(rng, diff_lb, diff_ub, (2, w // 3))
num = unifint(rng, diff_lb, diff_ub, (1, (h * w) // (2 * dh * dw)))
cards = interval(0, dh * dw, 1)
ccards = sorted(rng.sample(cards, min(num, len(cards))))
sgs = []
c1 = canvas(fgc, (dh, dw))
inds = totuple(asindices(c1))
for card in ccards:
x = rng.sample(inds, card)
x1 = fill(c1, 1, x)
sgs.append(asobject(x1))
go = paint(c1, sgs[-1])
gi = canvas(bgc, (h, w))
inds2 = asindices(canvas(bgc, (h - dh, w - dw)))
maxtr = 10
for sg in sgs[::-1]:
if len(inds2) == 0:
break
loc = rng.choice(totuple(inds2))
plcd = shift(sg, loc)
tr = 0
while (not toindices(plcd).issubset(inds2)) and tr < maxtr:
loc = rng.choice(totuple(inds2))
plcd = shift(sg, loc)
tr += 1
if tr < maxtr:
inds2 = difference(inds2, toindices(plcd) | outbox(plcd))
gi = paint(gi, plcd)
return {"input": gi, "output": go}
def generate_3de23699(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (5, 30))
w = unifint(rng, diff_lb, diff_ub, (5, 30))
bgc = rng.choice(cols)
c = canvas(bgc, (h, w))
hi = unifint(rng, diff_lb, diff_ub, (4, h))
wi = unifint(rng, diff_lb, diff_ub, (4, w))
loci = rng.randint(0, h - hi)
locj = rng.randint(0, w - wi)
remcols = remove(bgc, cols)
ccol = rng.choice(remcols)
remcols = remove(ccol, remcols)
ncol = rng.choice(remcols)
tmpo = frozenset({(loci, locj), (loci + hi - 1, locj + wi - 1)})
cnds = totuple(backdrop(inbox(tmpo)))
mp = len(cnds) // 2
dev = unifint(rng, diff_lb, diff_ub, (0, mp))
ncnds = rng.choice((dev, len(cnds) - dev))
ncnds = min(max(0, ncnds), len(cnds))
ss = rng.sample(cnds, ncnds)
gi = fill(c, ccol, corners(tmpo))
gi = fill(gi, ncol, ss)
go = trim(crop(switch(gi, ccol, ncol), (loci, locj), (hi, wi)))
return {"input": gi, "output": go}
def generate_7ddcd7ec(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
crns = (((0, 0), (-1, -1)), ((0, 1), (-1, 1)), ((1, 0), (1, -1)), ((1, 1), (1, 1)))
h = unifint(rng, diff_lb, diff_ub, (5, 30))
w = unifint(rng, diff_lb, diff_ub, (5, 30))
bgc = rng.choice(cols)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
num = unifint(rng, diff_lb, diff_ub, (0, 4))
chos = rng.sample(crns, num)
loci = rng.randint(0, h - 2)
locj = rng.randint(0, w - 2)
loc = (loci, locj)
remcols = remove(bgc, cols)
for sp, dr in crns:
sp2 = add(loc, sp)
col = rng.choice(remcols)
gi = fill(gi, col, {sp2})
go = fill(go, col, {sp2})
if (sp, dr) in chos:
gi = fill(gi, col, {add(sp2, dr)})
go = fill(go, col, shoot(sp2, dr))
return {"input": gi, "output": go}
def generate_5c2c9af4(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (5, 30))
w = unifint(rng, diff_lb, diff_ub, (5, 30))
boxhd = unifint(rng, diff_lb, diff_ub, (0, h // 2))
boxwd = unifint(rng, diff_lb, diff_ub, (0, w // 2))
boxh = rng.choice((boxhd, h - boxhd))
boxw = rng.choice((boxwd, w - boxwd))
if boxh % 2 == 0:
boxh = rng.choice((boxh - 1, boxh + 1))
if boxw % 2 == 0:
boxw = rng.choice((boxw - 1, boxw + 1))
boxh = min(max(1, boxh), h if h % 2 == 1 else h - 1)
boxw = min(max(1, boxw), w if w % 2 == 1 else w - 1)
boxshap = (boxh, boxw)
loci = rng.randint(0, h - boxh)
locj = rng.randint(0, w - boxw)
loc = (loci, locj)
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
fgc = rng.choice(remcols)
c = canvas(bgc, (h, w))
cpi = loci + boxh // 2
cpj = locj + boxw // 2
cp = (cpi, cpj)
A = (loci, locj)
B = (loci + boxh - 1, locj + boxw - 1)
gi = fill(c, fgc, {A, B, cp})
go = fill(c, fgc, {A, B, cp})
cond = True
ooo = {A, B, cp}
if hline(ooo) and len(ooo) == 3:
go = fill(go, fgc, hfrontier(cp))
cond = False
if vline(ooo) and len(ooo) == 3:
go = fill(go, fgc, vfrontier(cp))
cond = False
k = 1
while cond:
f1 = k * (boxh // 2)
f2 = k * (boxw // 2)
ulci = cpi - f1
ulcj = cpj - f2
lrci = cpi + f1
lrcj = cpj + f2
ulc = (ulci, ulcj)
lrc = (lrci, lrcj)
bx = box(frozenset({ulc, lrc}))
go2 = fill(go, fgc, bx)
cond = go != go2
go = go2
k += 1
if rng.choice((True, False)):
gi = dmirror(gi)
go = dmirror(go)
return {"input": gi, "output": go}
def generate_0b148d64(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
itv = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (7, 30))
w = unifint(rng, diff_lb, diff_ub, (7, 30))
bgc = rng.choice(itv)
remitv = remove(bgc, itv)
g = canvas(bgc, (h, w))
x = rng.randint(3, h - 3)
y = rng.randint(3, w - 3)
di = rng.randint(2, h - x - 1)
dj = rng.randint(2, w - y - 1)
A = backdrop(frozenset({(0, 0), (x, y)}))
B = backdrop(frozenset({(x + di, 0), (h - 1, y)}))
C = backdrop(frozenset({(0, y + dj), (x, w - 1)}))
D = backdrop(frozenset({(x + di, y + dj), (h - 1, w - 1)}))
cola = rng.choice(remitv)
colb = rng.choice(remove(cola, remitv))
trg = rng.choice((A, B, C, D))
rem = remove(trg, (A, B, C, D))
subf = lambda bx: {
rng.choice(totuple(connect(ulcorner(bx), urcorner(bx)))),
rng.choice(totuple(connect(ulcorner(bx), llcorner(bx)))),
rng.choice(totuple(connect(urcorner(bx), lrcorner(bx)))),
rng.choice(totuple(connect(llcorner(bx), lrcorner(bx)))),
}
sampler = lambda bx: set(rng.sample(totuple(bx), len(bx) - unifint(rng, diff_lb, diff_ub, (0, len(bx) - 1))))
gi = fill(g, cola, sampler(trg) | subf(trg))
for r in rem:
gi = fill(gi, colb, sampler(r) | subf(r))
go = subgrid(frozenset(trg), gi)
return {"input": gi, "output": go}
def generate_beb8660c(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(8, interval(0, 10, 1))
w = unifint(rng, diff_lb, diff_ub, (3, 30))
h = unifint(rng, diff_lb, diff_ub, (w, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
gi = canvas(bgc, (h, w))
k = min(8, w - 1)
k = unifint(rng, diff_lb, diff_ub, (1, k))
co = rng.sample(remcols, k)
wds = sorted(rng.sample(interval(1, w, 1), k))
for j, (c, l) in enumerate(zip(co, wds)):
j = h - k - 1 + j
gi = fill(gi, c, connect((j, 0), (j, l - 1)))
gi = fill(gi, 8, connect((h - 1, 0), (h - 1, w - 1)))
go = vmirror(gi)
gi = list(list(r) for r in gi[:-1])
rng.shuffle(gi)
gi = tuple(tuple(r) for r in gi)
gi = gi + go[-1:]
gif = tuple()
for r in gi:
nbc = r.count(bgc)
ofs = rng.randint(0, nbc)
gif = gif + (r[-ofs:] + r[:-ofs],)
gi = vmirror(gif)
rotf = rng.choice((identity, rot90, rot180, rot270))
gi = rotf(gi)
go = rotf(go)
return {"input": gi, "output": go}
def generate_8d510a79(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = difference(interval(0, 10, 1), (1, 2))
h = unifint(rng, diff_lb, diff_ub, (5, 30))
w = unifint(rng, diff_lb, diff_ub, (3, 30))
barloci = rng.randint(2, h - 3)
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
barcol = rng.choice(remcols)
gi = canvas(bgc, (h, w))
bar = connect((barloci, 0), (barloci, w - 1))
gi = fill(gi, barcol, bar)
go = tuple(e for e in gi)
jinds = interval(0, w, 1)
numtop = unifint(rng, diff_lb, diff_ub, (1, w - 1))
numbot = unifint(rng, diff_lb, diff_ub, (1, w - 1))
tops = rng.sample(jinds, numtop)
bots = rng.sample(jinds, numbot)
for t in tops:
loci = rng.randint(0, barloci - 2)
col = rng.choice((1, 2))
loc = (loci, t)
gi = fill(gi, col, {loc})
if col == 1:
go = fill(go, col, connect(loc, (0, t)))
else:
go = fill(go, col, connect(loc, (barloci - 1, t)))
for t in bots:
loci = rng.randint(barloci + 2, h - 1)
col = rng.choice((1, 2))
loc = (loci, t)
gi = fill(gi, col, {loc})
if col == 1:
go = fill(go, col, connect(loc, (h - 1, t)))
else:
go = fill(go, col, connect(loc, (barloci + 1, t)))
if rng.choice((True, False)):
gi = dmirror(gi)
go = dmirror(go)
return {"input": gi, "output": go}
def generate_7468f01a(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (3, 30))
w = unifint(rng, diff_lb, diff_ub, (3, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
sgc, fgc = rng.sample(remcols, 2)
oh = unifint(rng, diff_lb, diff_ub, (2, max(2, int(h * (2 / 3)))))
ow = unifint(rng, diff_lb, diff_ub, (2, max(2, int(w * (2 / 3)))))
gi = canvas(bgc, (h, w))
go = canvas(sgc, (oh, ow))
bounds = asindices(go)
shp = {ORIGIN}
nc = unifint(rng, diff_lb, diff_ub, (0, max(1, (oh * ow) // 2)))
for j in range(nc):
shp.add(rng.choice(totuple((bounds - shp) & mapply(dneighbors, shp))))
go = fill(go, fgc, shp)
objx = asobject(vmirror(go))
loci = rng.randint(0, h - oh)
locj = rng.randint(0, w - ow)
gi = paint(gi, shift(objx, (loci, locj)))
return {"input": gi, "output": go}
def generate_09629e4f(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (2, 5))
w = unifint(rng, diff_lb, diff_ub, (2, 5))
nrows, ncolumns = h, w
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
barcol = rng.choice(remcols)
remcols = remove(barcol, remcols)
ncols = unifint(rng, diff_lb, diff_ub, (2, min(7, (h * w) - 2)))
c = canvas(bgc, (h, w))
inds = totuple(asindices(c))
fullh, fullw = h * nrows + nrows - 1, w * ncolumns + ncolumns - 1
gi = canvas(barcol, (fullh, fullw))
locs = totuple(product(interval(0, fullh, h + 1), interval(0, fullw, w + 1)))
trgloc = rng.choice(locs)
remlocs = remove(trgloc, locs)
colssf = rng.sample(remcols, ncols)
colsss = remove(rng.choice(colssf), colssf)
trgssf = rng.sample(inds, ncols - 1)
gi = fill(gi, bgc, shift(inds, trgloc))
for ij, cl in zip(trgssf, colsss):
gi = fill(gi, cl, {add(trgloc, ij)})
for rl in remlocs:
trgss = rng.sample(inds, ncols)
tmpg = tuple(e for e in c)
for ij, cl in zip(trgss, colssf):
tmpg = fill(tmpg, cl, {ij})
gi = paint(gi, shift(asobject(tmpg), rl))
go = canvas(bgc, (fullh, fullw))
go = fill(go, barcol, ofcolor(gi, barcol))
for ij, cl in zip(trgssf, colsss):
go = fill(go, cl, shift(inds, multiply(ij, (h + 1, w + 1))))
return {"input": gi, "output": go}
def generate_4347f46a(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
num = unifint(rng, diff_lb, diff_ub, (1, 9))
indss = asindices(gi)
maxtrials = 4 * num
tr = 0
succ = 0
while succ < num and tr <= maxtrials:
if len(remcols) == 0 or len(indss) == 0:
break
oh = rng.randint(3, 7)
ow = rng.randint(3, 7)
subs = totuple(sfilter(indss, lambda ij: ij[0] < h - oh and ij[1] < w - ow))
if len(subs) == 0:
tr += 1
continue
loci, locj = rng.choice(subs)
obj = frozenset({(loci, locj), (loci + oh - 1, locj + ow - 1)})
bd = backdrop(obj)
col = rng.choice(remcols)
if bd.issubset(indss):
remcols = remove(col, remcols)
gi = fill(gi, col, bd)
go = fill(go, col, box(obj))
succ += 1
indss = indss - bd
tr += 1
return {"input": gi, "output": go}
def generate_6d58a25d(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
shp = normalize(frozenset({(0, 0), (1, 0), (1, 1), (1, -1), (2, -1), (2, -2), (2, 1), (2, 2), (3, 3), (3, -3)}))
h = unifint(rng, diff_lb, diff_ub, (5, 30))
w = unifint(rng, diff_lb, diff_ub, (8, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
c = canvas(bgc, (h, w))
inds = totuple(asindices(c))
c1 = rng.choice(remcols)
c2 = rng.choice(remove(c1, remcols))
loci = rng.randint(0, h - 4)
locj = rng.randint(0, w - 7)
plcd = shift(shp, (loci, locj))
rem = difference(inds, plcd)
nnoise = unifint(rng, diff_lb, diff_ub, (1, max(1, len(rem) // 2 - 1)))
nois = rng.sample(rem, nnoise)
gi = fill(c, c2, nois)
gi = fill(gi, c1, plcd)
ff = lambda ij: len(intersection(shoot(ij, (-1, 0)), plcd)) > 0
trg = sfilter(nois, ff)
gg = lambda ij: valmax(sfilter(plcd, lambda kl: kl[1] == ij[1]), first) + 1
kk = lambda ij: connect((gg(ij), ij[1]), (h - 1, ij[1]))
fullres = mapply(kk, trg)
go = fill(gi, c2, fullres)
rotf = rng.choice((identity, rot90, rot180, rot270))
gi = rotf(gi)
go = rotf(go)
return {"input": gi, "output": go}
def generate_363442ee(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (1, 3))
w = unifint(rng, diff_lb, diff_ub, (1, 3))
h = h * 2 + 1
w = w * 2 + 1
nremh = unifint(rng, diff_lb, diff_ub, (2, 30 // h))
nremw = unifint(rng, diff_lb, diff_ub, (2, (30 - w - 1) // w))
rsh = nremh * h
rsw = nremw * w
rss = (rsh, rsw)
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
barcol = rng.choice(remcols)
remcols = remove(barcol, remcols)
rsi = canvas(bgc, rss)
rso = canvas(bgc, rss)
ls = canvas(bgc, ((nremh - 1) * h, w))
ulc = canvas(bgc, (h, w))
bar = canvas(barcol, (nremh * h, 1))
dotcands = totuple(product(interval(0, rsh, h), interval(0, rsw, w)))
dotcol = rng.choice(remcols)
dev = unifint(rng, diff_lb, diff_ub, (1, len(dotcands) // 2))
ndots = rng.choice((dev, len(dotcands) - dev))
ndots = min(max(1, ndots), len(dotcands))
dots = rng.sample(dotcands, ndots)
nfullremcols = unifint(rng, diff_lb, diff_ub, (1, 8))
fullremcols = rng.sample(remcols, nfullremcols)
for ij in asindices(ulc):
ulc = fill(ulc, rng.choice(fullremcols), {ij})
ulco = asobject(ulc)
osf = (h // 2, w // 2)
for d in dots:
rsi = fill(rsi, dotcol, {add(osf, d)})
rso = paint(rso, shift(ulco, d))
gi = hconcat(hconcat(vconcat(ulc, ls), bar), rsi)
go = hconcat(hconcat(vconcat(ulc, ls), bar), rso)
mfs = (identity, dmirror, cmirror, vmirror, hmirror, rot90, rot180, rot270)
nmfs = rng.choice((1, 2))
for fn in rng.sample(mfs, nmfs):
gi = fn(gi)
go = fn(go)
return {"input": gi, "output": go}
def generate_855e0971(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
nbarsd = unifint(rng, diff_lb, diff_ub, (1, 4))
nbars = rng.choice((nbarsd, 11 - nbarsd))
nbars = max(3, nbars)
h = unifint(rng, diff_lb, diff_ub, (nbars, 30))
w = unifint(rng, diff_lb, diff_ub, (3, 30))
barsizes = [2] * nbars
while sum(barsizes) < h:
j = rng.randint(0, nbars - 1)
barsizes[j] += 1
gi = tuple()
go = tuple()
locs = interval(0, w, 1)
dotc = rng.choice(cols)
remcols = remove(dotc, cols)
lastcol = -1
nloclbs = [rng.choice((0, 1)) for k in range(len(barsizes))]
if sum(nloclbs) < 2:
loc1, loc2 = rng.sample(interval(0, len(nloclbs), 1), 2)
nloclbs[loc1] = 1
nloclbs[loc2] = 1
for bs, nloclb in zip(barsizes, nloclbs):
col = rng.choice(remove(lastcol, remcols))
gim = canvas(col, (bs, w))
gom = canvas(col, (bs, w))
nl = unifint(rng, diff_lb, diff_ub, (nloclb, w // 2))
chlocs = rng.sample(locs, nl)
for jj in chlocs:
idx = (rng.randint(0, bs - 1), jj)
gim = fill(gim, dotc, {idx})
gom = fill(gom, dotc, vfrontier(idx))
lastcol = col
gi = gi + gim
go = go + gom
if rng.choice((True, False)):
gi = dmirror(gi)
go = dmirror(go)
return {"input": gi, "output": go}
def generate_137eaa0f(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (2, 4))
w = unifint(rng, diff_lb, diff_ub, (2, 4))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
dotc = rng.choice(remcols)
remcols = remove(dotc, remcols)
go = canvas(dotc, (h, w))
inds = totuple(asindices(go))
loc = rng.choice(inds)
reminds = remove(loc, inds)
nc = unifint(rng, diff_lb, diff_ub, (1, min(h * w - 1, 8)))
choscols = rng.sample(remcols, nc)
cd = {c: set() for c in choscols}
for c in choscols:
ij = rng.choice(reminds)
cd[c].add(ij)
reminds = remove(ij, reminds)
for ri in reminds:
cd[rng.choice(choscols)].add(ri)
for c, idxes in cd.items():
go = fill(go, c, idxes)
gih = unifint(rng, diff_lb, diff_ub, (min(h, w) * 2, 30))
giw = unifint(rng, diff_lb, diff_ub, (min(h, w) * 2, 30))
objs = tuple(normalize(insert((dotc, loc), frozenset({(c, ij) for ij in cd[c]}))) for c in choscols)
maxtr = min(h, w) * 2
maxtrtot = 1000
while True:
succ = True
gi = canvas(bgc, (gih, giw))
inds = asindices(gi)
for obj in objs:
oh, ow = shape(obj)
succ2 = False
tr = 0
while tr < maxtr and not succ2:
loci = rng.randint(0, gih - oh)
locj = rng.randint(0, giw - ow)
plcd = shift(obj, (loci, locj))
tr += 1
if toindices(plcd).issubset(inds):
succ2 = True
if succ2:
gi = paint(gi, plcd)
inds = difference(inds, toindices(plcd))
inds = difference(inds, mapply(neighbors, toindices(plcd)))
else:
succ = False
break
if succ:
break
maxtrtot += 1
if maxtrtot < 1000:
break
maxtr = int(maxtr * 1.5)
gih = rng.randint(gih, 30)
giw = rng.randint(giw, 30)
return {"input": gi, "output": go}
def generate_31aa019c(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
while True:
h = unifint(rng, diff_lb, diff_ub, (5, 30))
w = unifint(rng, diff_lb, diff_ub, (5, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
canv = canvas(bgc, (h, w))
inds = totuple(asindices(canv))
mp = (h * w) // 2 - 1
ncols = unifint(rng, diff_lb, diff_ub, (2, min(9, mp // 2 - 1)))
chcols = rng.sample(cols, ncols)
trgcol = chcols[0]
chcols = chcols[1:]
dic = {c: set() for c in chcols}
nnoise = unifint(rng, diff_lb, diff_ub, (2 * (ncols - 1), mp))
locc = rng.choice(inds)
inds = remove(locc, inds)
noise = rng.sample(inds, nnoise)
for c in chcols:
ij = rng.choice(inds)
dic[c].add(ij)
inds = remove(ij, inds)
for c in chcols:
ij = rng.choice(inds)
dic[c].add(ij)
inds = remove(ij, inds)
for ij in noise:
c = rng.choice(chcols)
dic[c].add(ij)
inds = remove(ij, inds)
gi = fill(canv, trgcol, {locc})
for c, ss in dic.items():
gi = fill(gi, c, ss)
gi = fill(gi, trgcol, {locc})
if len(sfilter(palette(gi), lambda c: colorcount(gi, c) == 1)) == 1:
break
lc = leastcolor(gi)
locc = ofcolor(gi, lc)
go = fill(canv, lc, locc)
go = fill(go, 2, neighbors(first(locc)))
return {"input": gi, "output": go}
def generate_2bee17df(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(3, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (7, 30))
w = unifint(rng, diff_lb, diff_ub, (7, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
c = canvas(bgc, (h, w))
indord1 = apply(tojvec, interval(0, w, 1))
indord2 = apply(rbind(astuple, w - 1), interval(1, h - 1, 1))
indord3 = apply(lbind(astuple, h - 1), interval(w - 1, 0, -1))
indord4 = apply(toivec, interval(h - 1, 0, -1))
indord = indord1 + indord2 + indord3 + indord4
k = len(indord)
sp = rng.randint(0, k)
arr = indord[sp:] + indord[:sp]
ep = rng.randint(k // 2 - 3, k // 2 + 1)
a = arr[:ep]
b = arr[ep:]
cola = rng.choice(remcols)
remcols = remove(cola, remcols)
colb = rng.choice(remcols)
gi = fill(c, cola, a)
gi = fill(gi, colb, b)
nr = unifint(rng, diff_lb, diff_ub, (1, min(4, min(h, w) // 2)))
for kk in range(nr):
ring = box(frozenset({(1 + kk, 1 + kk), (h - 1 - kk, w - 1 - kk)}))
for br in (cola, colb):
blacks = ofcolor(gi, br)
bcands = totuple(ring & ofcolor(gi, bgc) & mapply(dneighbors, ofcolor(gi, br)))
jj = len(bcands)
jj2 = rng.randint(max(0, jj // 2 - 2), min(jj, jj // 2 + 1))
ss = rng.sample(bcands, jj2)
gi = fill(gi, br, ss)
res = shift(merge(frontiers(trim(gi))), (1, 1))
go = fill(gi, 3, res)
return {"input": gi, "output": go}
def generate_50cb2852(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(8, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
num = unifint(rng, diff_lb, diff_ub, (1, 8))
indss = asindices(gi)
maxtrials = 4 * num
tr = 0
succ = 0
while succ < num and tr <= maxtrials:
if len(remcols) == 0 or len(indss) == 0:
break
oh = rng.randint(3, 7)
ow = rng.randint(3, 7)
subs = totuple(sfilter(indss, lambda ij: ij[0] < h - oh and ij[1] < w - ow))
if len(subs) == 0:
tr += 1
continue
loci, locj = rng.choice(subs)
obj = frozenset({(loci, locj), (loci + oh - 1, locj + ow - 1)})
bd = backdrop(obj)
col = rng.choice(remcols)
if bd.issubset(indss):
remcols = remove(col, remcols)
gi = fill(gi, col, bd)
go = fill(go, 8, bd)
go = fill(go, col, box(obj))
box(obj)
succ += 1
indss = indss - bd
tr += 1
return {"input": gi, "output": go}
def generate_662c240a(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
d = unifint(rng, diff_lb, diff_ub, (2, 7))
ng = unifint(rng, diff_lb, diff_ub, (2, 30 // d))
nc = unifint(rng, diff_lb, diff_ub, (2, min(9, d**2)))
c = canvas(-1, (d, d))
inds = totuple(asindices(c))
tria = sfilter(inds, lambda ij: ij[1] >= ij[0])
tcolset = rng.sample(cols, nc)
triaf = frozenset((rng.choice(tcolset), ij) for ij in tria)
triaf = triaf | dmirror(triaf)
gik = paint(c, triaf)
ndistinv = unifint(rng, diff_lb, diff_ub, (0, (d * (d - 1) // 2 - 1)))
ndist = d * (d - 1) // 2 - ndistinv
distinds = rng.sample(difference(inds, sfilter(inds, lambda ij: ij[0] == ij[1])), ndist)
for ij in distinds:
if gik[ij[0]][ij[1]] == gik[ij[1]][ij[0]]:
gik = fill(gik, rng.choice(remove(gik[ij[0]][ij[1]], tcolset)), {ij})
else:
gik = fill(gik, gik[ij[1]][ij[0]], {ij})
gi = gik
go = tuple(e for e in gik)
concatf = rng.choice((hconcat, vconcat))
for k in range(ng - 1):
tria = sfilter(inds, lambda ij: ij[1] >= ij[0])
tcolset = rng.sample(cols, nc)
triaf = frozenset((rng.choice(tcolset), ij) for ij in tria)
triaf = triaf | dmirror(triaf)
gik = paint(c, triaf)
if rng.choice((True, False)):
gi = concatf(gi, gik)
else:
gi = concatf(gik, gi)
return {"input": gi, "output": go}
def generate_e8593010(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
a = frozenset({frozenset({ORIGIN})})
b = frozenset({frozenset({ORIGIN, RIGHT}), frozenset({ORIGIN, DOWN})})
c = frozenset(
{
frozenset({ORIGIN, DOWN, UNITY}),
frozenset({ORIGIN, DOWN, RIGHT}),
frozenset({UNITY, DOWN, RIGHT}),
frozenset({UNITY, ORIGIN, RIGHT}),
shift(frozenset({ORIGIN, UP, DOWN}), DOWN),
shift(frozenset({ORIGIN, LEFT, RIGHT}), RIGHT),
}
)
a, b, c = totuple(a), totuple(b), totuple(c)
prs = [(a, 3), (b, 2), (c, 1)]
cols = difference(interval(0, 10, 1), (1, 2, 3))
h = unifint(rng, diff_lb, diff_ub, (5, 30))
w = unifint(rng, diff_lb, diff_ub, (5, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
fgc = rng.choice(remcols)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
reminds = asindices(gi)
nobjs = unifint(rng, diff_lb, diff_ub, (1, ((h * w) // 2) // 2))
maxtr = 10
for k in range(nobjs):
ntr = 0
objs, col = rng.choice(prs)
obj = rng.choice(objs)
while ntr < maxtr:
if len(reminds) == 0:
break
loc = rng.choice(totuple(reminds))
olcd = shift(obj, loc)
if olcd.issubset(reminds):
gi = fill(gi, fgc, olcd)
go = fill(go, col, olcd)
reminds = (reminds - olcd) - mapply(dneighbors, olcd)
break
ntr += 1
return {"input": gi, "output": go}
def generate_d9f24cd1(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (5, 30))
w = unifint(rng, diff_lb, diff_ub, (5, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
linc = rng.choice(remcols)
remcols = remove(linc, remcols)
dotc = rng.choice(remcols)
locopts = interval(1, w - 1, 1)
maxnloc = (w - 2) // 2
nlins = unifint(rng, diff_lb, diff_ub, (1, maxnloc))
locs = []
for k in range(nlins):
if len(locopts) == 0:
break
loc = rng.choice(locopts)
locopts = remove(loc, locopts)
locopts = remove(loc - 1, locopts)
locopts = remove(loc + 1, locopts)
locs.append(loc)
ndots = unifint(rng, diff_lb, diff_ub, (1, maxnloc))
locopts = interval(1, w - 1, 1)
dotlocs = []
for k in range(ndots):
if len(locopts) == 0:
break
loc = rng.choice(locopts)
locopts = remove(loc, locopts)
locopts = remove(loc - 1, locopts)
locopts = remove(loc + 1, locopts)
dotlocs.append(loc)
gi = canvas(bgc, (h, w))
for l in locs:
gi = fill(gi, linc, {(h - 1, l)})
dotlocs2 = []
for l in dotlocs:
jj = rng.randint(1, h - 2)
gi = fill(gi, dotc, {(jj, l)})
dotlocs2.append(jj)
go = tuple(e for e in gi)
for linloc in locs:
if linloc in dotlocs:
jj = dotlocs2[dotlocs.index(linloc)]
go = fill(go, linc, connect((h - 1, linloc), (jj + 1, linloc)))
go = fill(go, linc, connect((jj + 1, linloc + 1), (0, linloc + 1)))
else:
go = fill(go, linc, connect((h - 1, linloc), (0, linloc)))
rotf = rng.choice((identity, rot90, rot180, rot270))
gi = rotf(gi)
go = rotf(go)
return {"input": gi, "output": go}
def generate_90c28cc7(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(1, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (2, 10))
w = unifint(rng, diff_lb, diff_ub, (2, 10))
nc = unifint(rng, diff_lb, diff_ub, (2, 9))
gi = canvas(-1, (h, w))
inds = totuple(asindices(gi))
colss = rng.sample(cols, nc)
for ij in inds:
gi = fill(gi, rng.choice(colss), {ij})
gi = dmirror(dedupe(dmirror(dedupe(gi))))
go = tuple(e for e in gi)
h, w = shape(gi)
fullh = unifint(rng, diff_lb, diff_ub, (h, 30))
fullw = unifint(rng, diff_lb, diff_ub, (w, 30))
inh = unifint(rng, diff_lb, diff_ub, (h, fullh))
inw = unifint(rng, diff_lb, diff_ub, (w, fullw))
while h < inh or w < inw:
opts = []
if h < inh:
opts.append((h, identity))
elif w < inw:
opts.append((w, dmirror))
dim, mirrf = rng.choice(opts)
idx = rng.randint(0, dim - 1)
gi = mirrf(gi)
gi = gi[: idx + 1] + gi[idx:]
gi = mirrf(gi)
h, w = shape(gi)
while h < fullh or w < fullw:
opts = []
if h < fullh:
opts.append(identity)
elif w < fullw:
opts.append(dmirror)
mirrf = rng.choice(opts)
gi = mirrf(gi)
gi = merge(tuple(rng.sample((((0,) * width(gi),), gi), 2)))
gi = mirrf(gi)
h, w = shape(gi)
return {"input": gi, "output": go}
def generate_321b1fc6(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (8, 30))
w = unifint(rng, diff_lb, diff_ub, (8, 30))
objh = unifint(rng, diff_lb, diff_ub, (2, 5))
objw = unifint(rng, diff_lb, diff_ub, (2, 5))
bounds = asindices(canvas(0, (objh, objw)))
shp = {rng.choice(totuple(bounds))}
nc = unifint(rng, diff_lb, diff_ub, (2, len(bounds) - 2))
for j in range(nc):
ij = rng.choice(totuple((bounds - shp) & mapply(dneighbors, shp)))
shp.add(ij)
shp = normalize(shp)
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
dmyc = rng.choice(remcols)
remcols = remove(dmyc, remcols)
oh, ow = shape(shp)
loci = rng.randint(0, h - oh)
locj = rng.randint(0, w - ow)
shpp = shift(shp, (loci, locj))
numco = unifint(rng, diff_lb, diff_ub, (2, 8))
colll = rng.sample(remcols, numco)
shppc = frozenset({(rng.choice(colll), ij) for ij in shpp})
while numcolors(shppc) == 1:
shppc = frozenset({(rng.choice(colll), ij) for ij in shpp})
shppcn = normalize(shppc)
gi = canvas(bgc, (h, w))
gi = paint(gi, shppc)
go = tuple(e for e in gi)
ub = ((h * w) / (oh * ow)) // 2
ub = max(1, ub)
numlocs = unifint(rng, diff_lb, diff_ub, (1, ub))
cnt = 0
fails = 0
maxfails = 5 * numlocs
idns = (asindices(gi) - shpp) - mapply(dneighbors, shpp)
idns = sfilter(idns, lambda ij: ij[0] <= h - oh and ij[1] <= w - ow)
while cnt < numlocs and fails < maxfails:
if len(idns) == 0:
break
loc = rng.choice(totuple(idns))
plcd = shift(shppcn, loc)
plcdi = toindices(plcd)
if plcdi.issubset(idns):
go = paint(go, plcd)
gi = fill(gi, dmyc, plcdi)
cnt += 1
idns = (idns - plcdi) - mapply(dneighbors, plcdi)
else:
fails += 1
go = fill(go, bgc, shpp)
return {"input": gi, "output": go}
def generate_6455b5f5(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = difference(interval(0, 10, 1), (1, 8))
while True:
h = unifint(rng, diff_lb, diff_ub, (6, 30))
w = unifint(rng, diff_lb, diff_ub, (6, 30))
bgc = rng.choice(cols)
fgc = rng.choice(remove(bgc, cols))
gi = canvas(bgc, (h, w))
ub = int((h * w) ** 0.5 * 1.5)
num = unifint(rng, diff_lb, diff_ub, (1, ub))
for k in range(num):
objs = colorfilter(objects(gi, T, T, F), bgc)
eligobjs = sfilter(objs, lambda o: height(o) > 2 or width(o) > 2)
if len(eligobjs) == 0:
break
if rng.choice((True, False)):
ro = argmax(eligobjs, size)
else:
ro = rng.choice(totuple(eligobjs))
if rng.choice((True, False)):
vfr = height(ro) < width(ro)
else:
vfr = rng.choice((True, False))
if vfr and width(ro) < 3:
vfr = False
if (not vfr) and height(ro) < 3:
vfr = True
if vfr:
j = rng.randint(leftmost(ro) + 1, rightmost(ro) - 1)
ln = connect((uppermost(ro), j), (lowermost(ro), j))
else:
j = rng.randint(uppermost(ro) + 1, lowermost(ro) - 1)
ln = connect((j, leftmost(ro)), (j, rightmost(ro)))
gi = fill(gi, fgc, ln)
objs = colorfilter(objects(gi, T, T, F), bgc)
if valmin(objs, size) != valmax(objs, size):
break
lblues = mfilter(objs, matcher(size, valmin(objs, size)))
dblues = mfilter(objs, matcher(size, valmax(objs, size)))
go = fill(gi, 8, lblues)
go = fill(go, 1, dblues)
return {"input": gi, "output": go}
def generate_4c5c2cf0(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
oh = unifint(rng, diff_lb, diff_ub, (2, (h - 3) // 2))
ow = unifint(rng, diff_lb, diff_ub, (2, (w - 3) // 2))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
cc = rng.choice(remcols)
remcols = remove(cc, remcols)
objc = rng.choice(remcols)
sg = canvas(bgc, (oh, ow))
locc = (oh - 1, ow - 1)
sg = fill(sg, cc, {locc})
reminds = totuple(remove(locc, asindices(sg)))
ncells = unifint(rng, diff_lb, diff_ub, (1, max(1, int((2 / 3) * oh * ow))))
cells = rng.sample(reminds, ncells)
while ncells == 5 and shape(cells) == (3, 3):
ncells = unifint(rng, diff_lb, diff_ub, (1, max(1, int((2 / 3) * oh * ow))))
cells = rng.sample(reminds, ncells)
sg = fill(sg, objc, cells)
G1 = sg
G2 = vmirror(sg)
G3 = hmirror(sg)
G4 = vmirror(hmirror(sg))
vbar = canvas(bgc, (oh, 1))
hbar = canvas(bgc, (1, ow))
cp = canvas(cc, (1, 1))
topg = hconcat(hconcat(G1, vbar), G2)
botg = hconcat(hconcat(G3, vbar), G4)
ggm = hconcat(hconcat(hbar, cp), hbar)
GG = vconcat(vconcat(topg, ggm), botg)
gg = asobject(GG)
canv = canvas(bgc, (h, w))
loci = rng.randint(0, h - 2 * oh - 1)
locj = rng.randint(0, w - 2 * ow - 1)
loc = (loci, locj)
go = paint(canv, shift(gg, loc))
gi = paint(canv, shift(asobject(sg), loc))
gi = fill(gi, cc, ofcolor(go, cc))
rotf = rng.choice((identity, rot90, rot180, rot270))
gi = rotf(gi)
go = rotf(go)
return {"input": gi, "output": go}
def generate_56ff96f3(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
num = unifint(rng, diff_lb, diff_ub, (1, 9))
indss = asindices(gi)
maxtrials = 4 * num
tr = 0
succ = 0
while succ < num and tr <= maxtrials:
if len(remcols) == 0 or len(indss) == 0:
break
oh = rng.randint(2, 7)
ow = rng.randint(2, 7)
subs = totuple(sfilter(indss, lambda ij: ij[0] < h - oh and ij[1] < w - ow))
if len(subs) == 0:
tr += 1
continue
loci, locj = rng.choice(subs)
obj = frozenset({(loci, locj), (loci + oh - 1, locj + ow - 1)})
bd = backdrop(obj)
col = rng.choice(remcols)
if bd.issubset(indss):
remcols = remove(col, remcols)
if rng.choice((True, False)):
cnrs = ((loci, locj), (loci + oh - 1, locj + ow - 1))
else:
cnrs = ((loci + oh - 1, locj), (loci, locj + ow - 1))
gi = fill(gi, col, cnrs)
go = fill(go, col, bd)
succ += 1
indss = indss - bd
tr += 1
return {"input": gi, "output": go}
def generate_2c608aff(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
boxh = unifint(rng, diff_lb, diff_ub, (2, h // 2))
boxw = unifint(rng, diff_lb, diff_ub, (2, w // 2))
loci = rng.randint(0, h - boxh)
locj = rng.randint(0, w - boxw)
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
ccol = rng.choice(remcols)
remcols = remove(ccol, remcols)
dcol = rng.choice(remcols)
bd = backdrop(frozenset({(loci, locj), (loci + boxh - 1, locj + boxw - 1)}))
gi = canvas(bgc, (h, w))
gi = fill(gi, ccol, bd)
reminds = totuple(asindices(gi) - backdrop(outbox(bd)))
noiseb = max(1, len(reminds) // 4)
nnoise = unifint(rng, diff_lb, diff_ub, (0, noiseb))
noise = rng.sample(reminds, nnoise)
gi = fill(gi, dcol, noise)
go = tuple(e for e in gi)
hs = interval(loci, loci + boxh, 1)
ws = interval(locj, locj + boxw, 1)
for ij in noise:
a, b = ij
if a in hs:
go = fill(go, dcol, connect(ij, (a, locj)))
elif b in ws:
go = fill(go, dcol, connect(ij, (loci, b)))
go = fill(go, ccol, bd)
return {"input": gi, "output": go}
def generate_e98196ab(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (3, 14))
w = unifint(rng, diff_lb, diff_ub, (3, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
linc = rng.choice(remcols)
remcols = remove(linc, remcols)
topc = rng.choice(remcols)
remcols = remove(topc, remcols)
botc = rng.choice(remcols)
c = canvas(bgc, (h, w))
inds = totuple(asindices(c))
nocc = unifint(rng, diff_lb, diff_ub, (2, (h * w) // 2))
subs = rng.sample(inds, nocc)
numa = rng.randint(1, nocc - 1)
A = rng.sample(subs, numa)
B = difference(subs, A)
topg = fill(c, topc, A)
botg = fill(c, botc, B)
go = fill(topg, botc, B)
br = canvas(linc, (1, w))
gi = vconcat(vconcat(topg, br), botg)
if rng.choice((True, False)):
gi = dmirror(gi)
go = dmirror(go)
return {"input": gi, "output": go}
def generate_c9f8e694(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(1, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (5, 30))
w = unifint(rng, diff_lb, diff_ub, (5, 30))
bgc = 0
remcols = remove(bgc, cols)
sqc = rng.choice(remcols)
remcols = remove(sqc, remcols)
ncols = unifint(rng, diff_lb, diff_ub, (1, min(h, 8)))
nsq = unifint(rng, diff_lb, diff_ub, (1, 8))
gir = canvas(bgc, (h, w - 1))
gil = tuple((rng.choice(remcols),) for j in range(h))
inds = asindices(gir)
succ = 0
fails = 0
maxfails = nsq * 5
while succ < nsq and fails < maxfails:
loci = rng.randint(0, h - 3)
locj = rng.randint(0, w - 3)
lock = rng.randint(loci + 1, min(loci + max(1, 2 * h // 3), h - 1))
locl = rng.randint(locj + 1, min(locj + max(1, 2 * w // 3), w - 1))
bd = backdrop(frozenset({(loci, locj), (lock, locl)}))
if bd.issubset(inds):
gir = fill(gir, sqc, bd)
succ += 1
indss = inds - bd
else:
fails += 1
locs = ofcolor(gir, sqc)
gil = tuple(e if idx in apply(first, locs) else (bgc,) for idx, e in enumerate(gil))
fullobj = toobject(locs, hupscale(gil, w))
gi = hconcat(gil, gir)
giro = paint(gir, fullobj)
go = hconcat(gil, giro)
rotf = rng.choice((identity, rot90, rot180, rot270))
gi = rotf(gi)
go = rotf(go)
return {"input": gi, "output": go}
def generate_eb5a1d5d(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
d = unifint(rng, diff_lb, diff_ub, (2, 10))
go = canvas(-1, (d * 2 - 1, d * 2 - 1))
colss = rng.sample(cols, d)
for j, cc in enumerate(colss):
go = fill(go, cc, box(frozenset({(j, j), (2 * d - 2 - j, 2 * d - 2 - j)})))
nvenl = unifint(rng, diff_lb, diff_ub, (0, 30 - d))
nhenl = unifint(rng, diff_lb, diff_ub, (0, 30 - d))
enl = [nvenl, nhenl]
gi = tuple(e for e in go)
while (enl[0] > 0 or enl[1] > 0) and max(shape(gi)) < 30:
opts = []
if enl[0] > 0:
opts.append((identity, 0))
if enl[1] > 0:
opts.append((dmirror, 1))
mirrf, ch = rng.choice(opts)
gi = mirrf(gi)
idx = rng.randint(0, len(gi) - 1)
gi = gi[: idx + 1] + gi[idx:]
gi = mirrf(gi)
enl[ch] -= 1
return {"input": gi, "output": go}
def generate_82819916(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (5, 30))
w = unifint(rng, diff_lb, diff_ub, (5, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
ass, bss = rng.sample(remcols, 2)
itv = interval(0, w, 1)
na = rng.randint(2, w - 2)
alocs = rng.sample(itv, na)
blocs = difference(itv, alocs)
if min(alocs) > min(blocs):
alocs, blocs = blocs, alocs
llocs = rng.randint(0, h - 1)
gi = canvas(bgc, (h, w))
gi = fill(gi, ass, {(llocs, j) for j in alocs})
gi = fill(gi, bss, {(llocs, j) for j in blocs})
numl = unifint(rng, diff_lb, diff_ub, (1, max(1, (h - 1) // 2)))
remlocs = remove(llocs, interval(0, h, 1))
for k in range(numl):
lloc = rng.choice(remlocs)
remlocs = remove(lloc, remlocs)
a, b = rng.sample(remcols, 2)
gi = fill(gi, a, {(lloc, j) for j in alocs})
gi = fill(gi, b, {(lloc, j) for j in blocs})
cutoff = min(blocs) + 1
go = tuple(e for e in gi)
gi = fill(gi, bgc, backdrop(frozenset({(0, cutoff), (h - 1, w - 1)})))
gi = fill(gi, ass, {(llocs, j) for j in alocs})
gi = fill(gi, bss, {(llocs, j) for j in blocs})
rotf = rng.choice((identity, rot90, rot180, rot270))
gi = rotf(gi)
go = rotf(go)
return {"input": gi, "output": go}
def generate_5daaa586(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (7, 30))
w = unifint(rng, diff_lb, diff_ub, (7, 30))
loci1 = rng.randint(1, h - 4)
locj1 = rng.randint(1, w - 4)
loci1dev = unifint(rng, diff_lb, diff_ub, (0, loci1 - 1))
locj1dev = unifint(rng, diff_lb, diff_ub, (0, locj1 - 1))
loci1 -= loci1dev
locj1 -= locj1dev
loci2 = unifint(rng, diff_lb, diff_ub, (loci1 + 2, h - 2))
locj2 = unifint(rng, diff_lb, diff_ub, (locj1 + 2, w - 2))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
c1, c2, c3, c4 = rng.sample(remcols, 4)
f1 = recolor(c1, hfrontier(toivec(loci1)))
f2 = recolor(c2, hfrontier(toivec(loci2)))
f3 = recolor(c3, vfrontier(tojvec(locj1)))
f4 = recolor(c4, vfrontier(tojvec(locj2)))
gi = canvas(bgc, (h, w))
fronts = [f1, f2, f3, f4]
rng.shuffle(fronts)
for fr in fronts:
gi = paint(gi, fr)
cands = totuple(ofcolor(gi, bgc))
nn = len(cands)
nnoise = unifint(rng, diff_lb, diff_ub, (1, max(1, nn // 3)))
noise = rng.sample(cands, nnoise)
gi = fill(gi, c1, noise)
while len(frontiers(gi)) > 4:
gi = fill(gi, bgc, noise)
nnoise = unifint(rng, diff_lb, diff_ub, (1, max(1, nn // 3)))
noise = rng.sample(cands, nnoise)
if len(set(noise) & ofcolor(gi, c1)) >= len(ofcolor(gi, bgc)):
break
gi = fill(gi, c1, noise)
go = crop(gi, (loci1, locj1), (loci2 - loci1 + 1, locj2 - locj1 + 1))
ns = ofcolor(go, c1)
go = fill(go, c1, mapply(rbind(shoot, (-1, 0)), ns))
rotf = rng.choice((identity, rot90, rot180, rot270))
gi = rotf(gi)
go = rotf(go)
return {"input": gi, "output": go}
def generate_68b16354(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (1, 30))
w = unifint(rng, diff_lb, diff_ub, (1, 30))
bgc = rng.choice(cols)
gi = canvas(bgc, (h, w))
remcols = remove(bgc, cols)
numc = unifint(rng, diff_lb, diff_ub, (0, min(9, h * w)))
colsch = rng.sample(remcols, numc)
inds = totuple(asindices(gi))
for col in colsch:
num = unifint(rng, diff_lb, diff_ub, (1, max(1, len(inds) // numc)))
chos = rng.sample(inds, num)
gi = fill(gi, col, chos)
inds = difference(inds, chos)
go = hmirror(gi)
return {"input": gi, "output": go}
def generate_bb43febb(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(2, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
num = unifint(rng, diff_lb, diff_ub, (1, 8))
indss = asindices(gi)
maxtrials = 4 * num
tr = 0
succ = 0
while succ < num and tr <= maxtrials:
if len(remcols) == 0 or len(indss) == 0:
break
oh = rng.randint(3, 7)
ow = rng.randint(3, 7)
subs = totuple(sfilter(indss, lambda ij: ij[0] < h - oh and ij[1] < w - ow))
if len(subs) == 0:
tr += 1
continue
loci, locj = rng.choice(subs)
obj = frozenset({(loci, locj), (loci + oh - 1, locj + ow - 1)})
bd = backdrop(obj)
col = rng.choice(remcols)
if bd.issubset(indss):
remcols = remove(col, remcols)
gi = fill(gi, col, bd)
go = fill(go, 2, bd)
go = fill(go, col, box(obj))
succ += 1
indss = indss - bd
tr += 1
return {"input": gi, "output": go}
def generate_9ecd008a(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(1, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (3, 15))
w = h
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
numcols = unifint(rng, diff_lb, diff_ub, (1, 8))
remcols = rng.sample(remcols, numcols)
canv = canvas(bgc, (h, w))
nc = unifint(rng, diff_lb, diff_ub, (1, h * w))
bx = asindices(canv)
obj = {(rng.choice(remcols), rng.choice(totuple(bx)))}
for kk in range(nc - 1):
dns = mapply(neighbors, toindices(obj))
ch = rng.choice(totuple(bx & dns))
obj.add((rng.choice(remcols), ch))
bx = bx - {ch}
gi = paint(canv, obj)
tr = sfilter(asobject(dmirror(gi)), lambda cij: cij[1][1] >= cij[1][0])
gi = paint(gi, tr)
gi = hconcat(gi, vmirror(gi))
gi = vconcat(gi, hmirror(gi))
locidev = unifint(rng, diff_lb, diff_ub, (1, 2 * h))
locjdev = unifint(rng, diff_lb, diff_ub, (1, w))
loci = 2 * h - locidev
locj = w - locjdev
loci2 = unifint(rng, diff_lb, diff_ub, (loci, 2 * h - 1))
locj2 = unifint(rng, diff_lb, diff_ub, (locj, w - 1))
bd = backdrop(frozenset({(loci, locj), (loci2, locj2)}))
go = subgrid(bd, gi)
gi = fill(gi, 0, bd)
rotf = rng.choice((identity, rot90, rot180, rot270))
gi = rotf(gi)
go = rotf(go)
return {"input": gi, "output": go}
def generate_f25ffba3(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(1, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (1, 14))
h = h * 2 + 1
w = unifint(rng, diff_lb, diff_ub, (3, 15))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
numcols = unifint(rng, diff_lb, diff_ub, (1, 8))
remcols = rng.sample(remcols, numcols)
canv = canvas(bgc, (h, w))
nc = unifint(rng, diff_lb, diff_ub, (2, h * w - 2))
bx = asindices(canv)
obj = {(rng.choice(remcols), rng.choice(totuple(bx)))}
for kk in range(nc - 1):
dns = mapply(neighbors, toindices(obj))
ch = rng.choice(totuple(bx & dns))
obj.add((rng.choice(remcols), ch))
bx = bx - {ch}
while uppermost(obj) > h // 2 - 1 or lowermost(obj) < h // 2 + 1:
dns = mapply(neighbors, toindices(obj))
ch = rng.choice(totuple(bx & dns))
obj.add((rng.choice(remcols), ch))
bx = bx - {ch}
gix = paint(canv, obj)
gix = apply(rbind(order, matcher(identity, bgc)), gix)
gi = hconcat(gix, canv)
go = hconcat(gix, vmirror(gix))
if rng.choice((True, False)):
gi = vmirror(gi)
go = vmirror(go)
if rng.choice((True, False)):
gi = hmirror(gi)
go = hmirror(go)
return {"input": gi, "output": go}
def generate_3bdb4ada(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
num = unifint(rng, diff_lb, diff_ub, (1, 8))
indss = asindices(gi)
maxtrials = 4 * num
tr = 0
succ = 0
while succ < num and tr <= maxtrials:
if len(remcols) == 0 or len(indss) == 0:
break
if rng.choice((True, False)):
oh = 3
ow = unifint(rng, diff_lb, diff_ub, (1, max(1, w // 2 - 1))) * 2 + 1
else:
ow = 3
oh = unifint(rng, diff_lb, diff_ub, (1, max(1, h // 2 - 1))) * 2 + 1
subs = totuple(sfilter(indss, lambda ij: ij[0] < h - oh and ij[1] < w - ow))
if len(subs) == 0:
tr += 1
continue
loci, locj = rng.choice(subs)
obj = frozenset({(loci, locj), (loci + oh - 1, locj + ow - 1)})
bd = backdrop(obj)
col = rng.choice(remcols)
if bd.issubset(indss):
remcols = remove(col, remcols)
gi = fill(gi, col, bd)
go = fill(go, col, bd)
if oh == 3:
ln = {(loci + 1, j) for j in range(locj + 1, locj + ow, 2)}
else:
ln = {(j, locj + 1) for j in range(loci + 1, loci + oh, 2)}
go = fill(go, bgc, ln)
succ += 1
indss = indss - bd
tr += 1
return {"input": gi, "output": go}
def generate_2013d3e2(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(1, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (3, 10))
w = h
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
numcols = unifint(rng, diff_lb, diff_ub, (1, 8))
remcols = rng.sample(remcols, numcols)
canv = canvas(bgc, (h, w))
nc = unifint(rng, diff_lb, diff_ub, (2, h * w - 1))
bx = asindices(canv)
obj = {(rng.choice(remcols), rng.choice(totuple(bx)))}
for kk in range(nc - 1):
dns = mapply(neighbors, toindices(obj))
ch = rng.choice(totuple(bx & dns))
obj.add((rng.choice(remcols), ch))
bx = bx - {ch}
gi = paint(canv, obj)
gi1 = hconcat(gi, rot90(gi))
gi2 = hconcat(rot270(gi), rot180(gi))
gi = vconcat(gi1, gi2)
fullh = unifint(rng, diff_lb, diff_ub, (2 * h, 30))
fullw = unifint(rng, diff_lb, diff_ub, (2 * w, 30))
gio = asobject(gi)
gic = canvas(bgc, (fullh, fullw))
loci = rng.randint(0, fullh - 2 * h)
locj = rng.randint(0, fullw - 2 * w)
gi = paint(gic, shift(gio, (loci, locj)))
reminds = difference(asindices(gi), ofcolor(gi, bgc))
go = lefthalf(tophalf(subgrid(reminds, gi)))
return {"input": gi, "output": go}
def generate_aabf363d(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (3, 28))
w = unifint(rng, diff_lb, diff_ub, (3, 28))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
cola = rng.choice(remcols)
remcols = remove(cola, remcols)
colb = rng.choice(remcols)
c = canvas(bgc, (h, w))
bounds = asindices(c)
sp = rng.choice(totuple(bounds))
ub = min(h * w - 1, max(1, (2 / 3) * h * w))
ncells = unifint(rng, diff_lb, diff_ub, (1, ub))
shp = {sp}
for k in range(ncells):
ij = rng.choice(totuple((bounds - shp) & mapply(neighbors, shp)))
shp.add(ij)
shp = shift(shp, (1, 1))
c2 = canvas(bgc, (h + 2, w + 2))
gi = fill(c2, cola, shp)
go = fill(c2, colb, shp)
gi = fill(gi, colb, {rng.choice(totuple(ofcolor(gi, bgc)))})
return {"input": gi, "output": go}
def generate_d037b0a7(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (3, 30))
w = unifint(rng, diff_lb, diff_ub, (3, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
nlocs = unifint(rng, diff_lb, diff_ub, (1, w))
locs = rng.sample(interval(0, w, 1), nlocs)
for j in locs:
col = rng.choice(remcols)
loci = rng.randint(0, h - 1)
loc = (loci, j)
gi = fill(gi, col, {loc})
go = fill(go, col, connect(loc, (h - 1, j)))
return {"input": gi, "output": go}
def generate_e26a3af2(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
nr = unifint(rng, diff_lb, diff_ub, (1, 10))
w = unifint(rng, diff_lb, diff_ub, (4, 30))
scols = rng.sample(cols, nr)
sgs = [canvas(col, (2, w)) for col in scols]
numexp = unifint(rng, diff_lb, diff_ub, (0, 30 - nr))
for k in range(numexp):
idx = rng.randint(0, nr - 1)
sgs[idx] = sgs[idx] + sgs[idx][-1:]
sgs2 = []
for idx, col in enumerate(scols):
sg = sgs[idx]
a, b = shape(sg)
ub = (a * b) // 2 - 1
nnoise = unifint(rng, diff_lb, diff_ub, (0, ub))
inds = totuple(asindices(sg))
noise = rng.sample(inds, nnoise)
oc = remove(col, cols)
noise = frozenset({(rng.choice(oc), ij) for ij in noise})
sg2 = paint(sg, noise)
for idxx in [0, -1]:
while sum([e == col for e in sg2[idxx]]) < w // 2:
locs = [j for j, e in enumerate(sg2[idxx]) if e != col]
ch = rng.choice(locs)
if idxx == 0:
sg2 = (sg2[0][:ch] + (col,) + sg2[0][ch + 1 :],) + sg2[1:]
else:
sg2 = sg2[:-1] + (sg2[-1][:ch] + (col,) + sg2[-1][ch + 1 :],)
sgs2.append(sg2)
gi = tuple(row for sg in sgs2 for row in sg)
go = tuple(row for sg in sgs for row in sg)
if rng.choice((True, False)):
gi = dmirror(gi)
go = dmirror(go)
return {"input": gi, "output": go}
def generate_b8825c91(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(4, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (3, 15))
w = h
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
numcols = unifint(rng, diff_lb, diff_ub, (1, 8))
remcols = rng.sample(remcols, numcols)
canv = canvas(bgc, (h, w))
nc = unifint(rng, diff_lb, diff_ub, (1, h * w))
bx = asindices(canv)
obj = {(rng.choice(remcols), rng.choice(totuple(bx)))}
for kk in range(nc - 1):
dns = mapply(neighbors, toindices(obj))
ch = rng.choice(totuple(bx & dns))
obj.add((rng.choice(remcols), ch))
bx = bx - {ch}
gi = paint(canv, obj)
tr = sfilter(asobject(dmirror(gi)), lambda cij: cij[1][1] >= cij[1][0])
gi = paint(gi, tr)
gi = hconcat(gi, vmirror(gi))
gi = vconcat(gi, hmirror(gi))
go = tuple(e for e in gi)
for alph in (2, 1):
locidev = unifint(rng, diff_lb, diff_ub, (1, alph * h))
locjdev = unifint(rng, diff_lb, diff_ub, (1, w))
loci = alph * h - locidev
locj = w - locjdev
loci2 = unifint(rng, diff_lb, diff_ub, (loci, alph * h - 1))
locj2 = unifint(rng, diff_lb, diff_ub, (locj, w - 1))
bd = backdrop(frozenset({(loci, locj), (loci2, locj2)}))
gi = fill(gi, 4, bd)
gi, go = rot180(gi), rot180(go)
mfs = (identity, dmirror, cmirror, vmirror, hmirror, rot90, rot180, rot270)
nmfs = rng.choice((1, 2))
for fn in rng.sample(mfs, nmfs):
gi = fn(gi)
go = fn(go)
return {"input": gi, "output": go}
def generate_ba97ae07(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (3, 30))
w = unifint(rng, diff_lb, diff_ub, (3, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
lineh = unifint(rng, diff_lb, diff_ub, (1, h // 3))
linew = unifint(rng, diff_lb, diff_ub, (1, w // 3))
loci = rng.randint(1, h - lineh - 1)
locj = rng.randint(1, w - linew - 1)
acol = rng.choice(remcols)
bcol = rng.choice(remove(acol, remcols))
for a in range(lineh):
gi = fill(gi, acol, connect((loci + a, 0), (loci + a, w - 1)))
for b in range(linew):
gi = fill(gi, bcol, connect((0, locj + b), (h - 1, locj + b)))
for b in range(linew):
go = fill(go, bcol, connect((0, locj + b), (h - 1, locj + b)))
for a in range(lineh):
go = fill(go, acol, connect((loci + a, 0), (loci + a, w - 1)))
if rng.choice((True, False)):
gi = dmirror(gi)
go = dmirror(go)
return {"input": gi, "output": go}
def generate_c909285e(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (5, 30))
w = unifint(rng, diff_lb, diff_ub, (5, 30))
nfronts = unifint(rng, diff_lb, diff_ub, (1, (h + w) // 2))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
boxcol = rng.choice(remcols)
remcols = remove(boxcol, remcols)
gi = canvas(bgc, (h, w))
inds = totuple(asindices(gi))
for k in range(nfronts):
ff = rng.choice((hfrontier, vfrontier))
loc = rng.choice(inds)
inds = remove(loc, inds)
col = rng.choice(remcols)
gi = fill(gi, col, ff(loc))
oh = unifint(rng, diff_lb, diff_ub, (3, max(3, (h - 2) // 2)))
ow = unifint(rng, diff_lb, diff_ub, (3, max(3, (w - 2) // 2)))
loci = rng.randint(1, h - oh - 1)
locj = rng.randint(1, w - ow - 1)
bx = box(frozenset({(loci, locj), (loci + oh - 1, locj + ow - 1)}))
gi = fill(gi, boxcol, bx)
go = subgrid(bx, gi)
return {"input": gi, "output": go}
def generate_d511f180(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = difference(interval(0, 10, 1), (5, 8))
h = unifint(rng, diff_lb, diff_ub, (2, 30))
w = unifint(rng, diff_lb, diff_ub, (2, 30))
numc = unifint(rng, diff_lb, diff_ub, (1, 8))
ccols = rng.sample(cols, numc)
c = canvas(-1, (h, w))
inds = totuple(asindices(c))
numbg = unifint(rng, diff_lb, diff_ub, (0, (h * w) // 2))
bginds = rng.sample(inds, numbg)
idx = rng.randint(0, numbg)
blues = bginds[:idx]
greys = bginds[idx:]
rem = difference(inds, bginds)
gi = fill(c, 8, blues)
gi = fill(gi, 5, greys)
go = fill(c, 5, blues)
go = fill(go, 8, greys)
for ij in rem:
col = rng.choice(ccols)
gi = fill(gi, col, {ij})
go = fill(go, col, {ij})
return {"input": gi, "output": go}
def generate_d0f5fe59(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
nobjs = unifint(rng, diff_lb, diff_ub, (1, min(30, (h * w) // 9)))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
fgc = rng.choice(remcols)
nfound = 0
trials = 0
maxtrials = nobjs * 5
gi = canvas(bgc, (h, w))
inds = asindices(gi)
while trials < maxtrials and nfound < nobjs:
oh = unifint(rng, diff_lb, diff_ub, (1, 5))
ow = unifint(rng, diff_lb, diff_ub, (1, 5))
bx = asindices(canvas(-1, (oh, ow)))
sp = rng.choice(totuple(bx))
shp = {sp}
dev = unifint(rng, diff_lb, diff_ub, (0, (oh * ow) // 2))
ncells = rng.choice((dev, oh * ow - dev))
ncells = min(max(1, ncells), oh * ow - 1)
for k in range(ncells):
ij = rng.choice(totuple((bx - shp) & mapply(dneighbors, shp)))
shp.add(ij)
shp = normalize(shp)
if len(inds) == 0:
break
loc = rng.choice(totuple(inds))
plcd = shift(shp, loc)
if plcd.issubset(inds):
gi = fill(gi, fgc, plcd)
inds = (inds - plcd) - mapply(neighbors, plcd)
nfound += 1
trials += 1
go = canvas(bgc, (nfound, nfound))
go = fill(go, fgc, connect((0, 0), (nfound - 1, nfound - 1)))
return {"input": gi, "output": go}
def generate_6e82a1ae(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
b = frozenset({frozenset({ORIGIN, RIGHT}), frozenset({ORIGIN, DOWN})})
c = frozenset(
{
frozenset({ORIGIN, DOWN, UNITY}),
frozenset({ORIGIN, DOWN, RIGHT}),
frozenset({UNITY, DOWN, RIGHT}),
frozenset({UNITY, ORIGIN, RIGHT}),
shift(frozenset({ORIGIN, UP, DOWN}), DOWN),
shift(frozenset({ORIGIN, LEFT, RIGHT}), RIGHT),
}
)
d = set()
for k in range(100):
shp = {(0, 0)}
for jj in range(3):
shp.add(rng.choice(totuple(mapply(dneighbors, shp) - shp)))
shp = frozenset(normalize(shp))
d.add(shp)
d = frozenset(d)
d, b, c = totuple(d), totuple(b), totuple(c)
prs = [(b, 3), (c, 2), (d, 1)]
cols = difference(interval(0, 10, 1), (1, 2, 3))
h = unifint(rng, diff_lb, diff_ub, (5, 30))
w = unifint(rng, diff_lb, diff_ub, (5, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
fgc = rng.choice(remcols)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
reminds = asindices(gi)
nobjs = unifint(rng, diff_lb, diff_ub, (1, ((h * w) // 2) // 3))
maxtr = 10
for k in range(nobjs):
ntr = 0
objs, col = rng.choice(prs)
obj = rng.choice(objs)
while ntr < maxtr:
loc = rng.choice(totuple(reminds))
olcd = shift(obj, loc)
if olcd.issubset(reminds):
gi = fill(gi, fgc, olcd)
go = fill(go, col, olcd)
reminds = (reminds - olcd) - mapply(dneighbors, olcd)
break
ntr += 1
return {"input": gi, "output": go}
def generate_f2829549(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(3, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (2, 30))
w = unifint(rng, diff_lb, diff_ub, (2, 14))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
linc = rng.choice(remcols)
remcols = remove(linc, remcols)
acol = rng.choice(remcols)
remcols = remove(acol, remcols)
bcol = rng.choice(remcols)
c = canvas(bgc, (h, w))
inds = totuple(asindices(c))
bar = canvas(linc, (h, 1))
numadev = unifint(rng, diff_lb, diff_ub, (0, (h * w) // 2))
numbdev = unifint(rng, diff_lb, diff_ub, (0, (h * w) // 2))
numa = rng.choice((numadev, h * w - numadev))
numb = rng.choice((numadev, h * w - numbdev))
numa = min(max(1, numa), h * w - 1)
numb = min(max(1, numb), h * w - 1)
aset = rng.sample(inds, numa)
bset = rng.sample(inds, numb)
A = fill(c, acol, aset)
B = fill(c, bcol, bset)
gi = hconcat(hconcat(A, bar), B)
res = (set(inds) - set(aset)) & (set(inds) - set(bset))
go = fill(c, 3, res)
if rng.choice((True, False)):
gi = dmirror(gi)
go = dmirror(go)
return {"input": gi, "output": go}
def generate_ce22a75a(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(1, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (3, 30))
w = unifint(rng, diff_lb, diff_ub, (3, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
fgc = rng.choice(remcols)
c = canvas(bgc, (h, w))
ndots = unifint(rng, diff_lb, diff_ub, (1, (h * w) // 3))
dots = rng.sample(totuple(asindices(c)), ndots)
gi = fill(c, fgc, dots)
go = fill(c, 1, mapply(neighbors, dots))
go = fill(go, 1, dots)
return {"input": gi, "output": go}
def generate_3c9b0459(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
dim_bounds = (1, 30)
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (1, 30))
w = unifint(rng, diff_lb, diff_ub, (1, 30))
bgc = rng.choice(cols)
gi = canvas(bgc, (h, w))
remcols = remove(bgc, cols)
numc = unifint(rng, diff_lb, diff_ub, (0, min(9, h * w)))
colsch = rng.sample(remcols, numc)
inds = totuple(asindices(gi))
for col in colsch:
num = unifint(rng, diff_lb, diff_ub, (1, max(1, len(inds) // numc)))
chos = rng.sample(inds, num)
gi = fill(gi, col, chos)
inds = difference(inds, chos)
go = rot180(gi)
return {"input": gi, "output": go}
def generate_99b1bc43(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(3, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (2, 30))
w = unifint(rng, diff_lb, diff_ub, (2, 14))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
linc = rng.choice(remcols)
remcols = remove(linc, remcols)
acol = rng.choice(remcols)
remcols = remove(acol, remcols)
bcol = rng.choice(remcols)
c = canvas(bgc, (h, w))
inds = totuple(asindices(c))
bar = canvas(linc, (h, 1))
numadev = unifint(rng, diff_lb, diff_ub, (0, (h * w) // 2))
numbdev = unifint(rng, diff_lb, diff_ub, (0, (h * w) // 2))
numa = rng.choice((numadev, h * w - numadev))
numb = rng.choice((numadev, h * w - numbdev))
numa = min(max(1, numa), h * w - 1)
numb = min(max(1, numb), h * w - 1)
aset = rng.sample(inds, numa)
bset = rng.sample(inds, numb)
A = fill(c, acol, aset)
B = fill(c, bcol, bset)
gi = hconcat(hconcat(A, bar), B)
res = (set(bset) - set(aset)) | (set(aset) - set(bset))
go = fill(c, 3, res)
if rng.choice((True, False)):
gi = dmirror(gi)
go = dmirror(go)
return {"input": gi, "output": go}
def generate_b6afb2da(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = difference(interval(0, 10, 1), (1, 2, 4))
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
num = unifint(rng, diff_lb, diff_ub, (1, 9))
indss = asindices(gi)
maxtrials = 4 * num
tr = 0
succ = 0
while succ < num and tr <= maxtrials:
if len(remcols) == 0 or len(indss) == 0:
break
oh = rng.randint(3, 7)
ow = rng.randint(3, 7)
subs = totuple(sfilter(indss, lambda ij: ij[0] < h - oh and ij[1] < w - ow))
if len(subs) == 0:
tr += 1
continue
loci, locj = rng.choice(subs)
obj = frozenset({(loci, locj), (loci + oh - 1, locj + ow - 1)})
bd = backdrop(obj)
col = rng.choice(remcols)
if bd.issubset(indss):
remcols = remove(col, remcols)
gi = fill(gi, col, bd)
go = fill(go, 2, bd)
go = fill(go, 4, box(bd))
go = fill(go, 1, corners(bd))
succ += 1
indss = indss - bd
tr += 1
return {"input": gi, "output": go}
def generate_c8f0f002(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(7, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (2, 30))
w = unifint(rng, diff_lb, diff_ub, (2, 30))
numc = unifint(rng, diff_lb, diff_ub, (1, 9))
ccols = rng.sample(cols, numc)
c = canvas(-1, (h, w))
inds = totuple(asindices(c))
numo = unifint(rng, diff_lb, diff_ub, (0, (h * w) // 2))
orng = rng.sample(inds, numo)
rem = difference(inds, orng)
gi = fill(c, 7, orng)
go = fill(c, 5, orng)
for ij in rem:
col = rng.choice(ccols)
gi = fill(gi, col, {ij})
go = fill(go, col, {ij})
return {"input": gi, "output": go}
def generate_54d82841(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(4, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (5, 30))
w = unifint(rng, diff_lb, diff_ub, (5, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
nshps = unifint(rng, diff_lb, diff_ub, (1, w // 3))
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
locs = interval(1, w - 1, 1)
for k in range(nshps):
if len(locs) == 0:
break
loc = rng.choice(locs)
locs = remove(loc, locs)
locs = remove(loc + 1, locs)
locs = remove(loc - 1, locs)
locs = remove(loc + 2, locs)
locs = remove(loc - 2, locs)
loci = rng.randint(1, h - 1)
col = rng.choice(remcols)
ij = (loci, loc)
shp = neighbors(ij) - connect((loci + 1, loc - 1), (loci + 1, loc + 1))
gi = fill(gi, col, shp)
go = fill(go, col, shp)
go = fill(go, 4, {(h - 1, loc)})
rotf = rng.choice((identity, rot90, rot180, rot270))
gi = rotf(gi)
go = rotf(go)
return {"input": gi, "output": go}
def generate_d631b094(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (2, 30))
w = unifint(rng, diff_lb, diff_ub, (2, 30))
bgc = 0
remcols = remove(bgc, cols)
fgc = rng.choice(remcols)
nc = unifint(rng, diff_lb, diff_ub, (1, min(30, (h * w) // 2 - 1)))
c = canvas(bgc, (h, w))
cands = totuple(asindices(c))
cels = rng.sample(cands, nc)
gi = fill(c, fgc, cels)
go = canvas(fgc, (1, nc))
return {"input": gi, "output": go}
def generate_7c008303(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (2, 13))
w = unifint(rng, diff_lb, diff_ub, (2, 13))
h = h * 2
w = w * 2
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
linc = rng.choice(remcols)
remcols = remove(linc, remcols)
fgc = rng.choice(remcols)
remcols = remove(fgc, remcols)
fremcols = rng.sample(remcols, unifint(rng, diff_lb, diff_ub, (1, 4)))
qc = [rng.choice(fremcols) for j in range(4)]
c = canvas(bgc, (h, w))
inds = totuple(asindices(c))
ncd = unifint(rng, diff_lb, diff_ub, (0, (h * w) // 2))
nc = rng.choice((ncd, h * w - ncd))
nc = min(max(0, nc), h * w)
cels = rng.sample(inds, nc)
go = fill(c, fgc, cels)
gi = canvas(bgc, (h + 3, w + 3))
gi = paint(gi, shift(asobject(go), (3, 3)))
gi = fill(gi, linc, connect((2, 0), (2, w + 2)))
gi = fill(gi, linc, connect((0, 2), (h + 2, 2)))
gi = fill(gi, qc[0], {(0, 0)})
gi = fill(gi, qc[1], {(0, 1)})
gi = fill(gi, qc[2], {(1, 0)})
gi = fill(gi, qc[3], {(1, 1)})
A = lefthalf(tophalf(go))
B = righthalf(tophalf(go))
C = lefthalf(bottomhalf(go))
D = righthalf(bottomhalf(go))
A2 = replace(A, fgc, qc[0])
B2 = replace(B, fgc, qc[1])
C2 = replace(C, fgc, qc[2])
D2 = replace(D, fgc, qc[3])
go = vconcat(hconcat(A2, B2), hconcat(C2, D2))
rotf = rng.choice((identity, rot90, rot180, rot270))
gi = rotf(gi)
go = rotf(go)
return {"input": gi, "output": go}
def generate_dae9d2b5(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(6, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (2, 30))
w = unifint(rng, diff_lb, diff_ub, (2, 14))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
acol = rng.choice(remcols)
remcols = remove(acol, remcols)
bcol = rng.choice(remcols)
c = canvas(bgc, (h, w))
inds = totuple(asindices(c))
numadev = unifint(rng, diff_lb, diff_ub, (0, (h * w) // 2))
numbdev = unifint(rng, diff_lb, diff_ub, (0, (h * w) // 2))
numa = rng.choice((numadev, h * w - numadev))
numb = rng.choice((numadev, h * w - numbdev))
numa = min(max(1, numa), h * w - 1)
numb = min(max(1, numb), h * w - 1)
aset = rng.sample(inds, numa)
bset = rng.sample(inds, numb)
if len(set(aset) & set(bset)) == 0:
bset = bset[:-1] + [rng.choice(aset)]
A = fill(c, acol, aset)
B = fill(c, bcol, bset)
gi = hconcat(A, B)
res = set(aset) | set(bset)
go = fill(c, 6, res)
if rng.choice((True, False)):
gi = dmirror(gi)
go = dmirror(go)
return {"input": gi, "output": go}
def generate_aedd82e4(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
colopts = remove(1, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (1, 30))
w = unifint(rng, diff_lb, diff_ub, (1, 30))
bgc = 0
remcols = remove(bgc, colopts)
c = canvas(bgc, (h, w))
card_bounds = (0, max(0, (h * w) // 2 - 1))
num = unifint(rng, diff_lb, diff_ub, card_bounds)
numcols = unifint(rng, diff_lb, diff_ub, (0, min(8, num)))
inds = totuple(asindices(c))
chosinds = rng.sample(inds, num)
choscols = rng.sample(remcols, numcols)
locs = interval(0, len(chosinds), 1)
choslocs = rng.sample(locs, numcols)
gi = canvas(bgc, (h, w))
for col, endidx in zip(choscols, sorted(choslocs)[::-1]):
gi = fill(gi, col, chosinds[:endidx])
objs = objects(gi, F, F, T)
res = merge(sizefilter(objs, 1))
go = fill(gi, 1, res)
return {"input": gi, "output": go}
def generate_c9e6f938(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
dim_bounds = (1, 30)
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (1, 30))
w = unifint(rng, diff_lb, diff_ub, (1, 15))
bgc = rng.choice(cols)
gi = canvas(bgc, (h, w))
remcols = remove(bgc, cols)
numc = unifint(rng, diff_lb, diff_ub, (0, min(9, h * w)))
colsch = rng.sample(remcols, numc)
inds = totuple(asindices(gi))
for col in colsch:
num = unifint(rng, diff_lb, diff_ub, (1, max(1, len(inds) // numc)))
chos = rng.sample(inds, num)
gi = fill(gi, col, chos)
inds = difference(inds, chos)
go = hconcat(gi, vmirror(gi))
return {"input": gi, "output": go}
def generate_913fb3ed(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
dim_bounds = (1, 30)
cols = difference(interval(0, 10, 1), (1, 2, 3, 4, 6, 8))
sr = (2, 3, 8)
tr = (1, 6, 4)
prs = list(zip(sr, tr))
h = unifint(rng, diff_lb, diff_ub, (1, 30))
w = unifint(rng, diff_lb, diff_ub, (1, 30))
bgc = rng.choice(cols)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
numc = unifint(rng, diff_lb, diff_ub, (1, max(1, (h * w) // 10)))
inds = asindices(gi)
for k in range(numc):
if len(inds) == 0:
break
loc = rng.choice(totuple(inds))
a, b = rng.choice(prs)
inds = (inds - neighbors(loc)) - outbox(neighbors(loc))
inds = remove(loc, inds)
gi = fill(gi, a, {loc})
go = fill(go, a, {loc})
go = fill(go, b, neighbors(loc))
return {"input": gi, "output": go}
def generate_6430c8c4(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(3, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (2, 30))
w = unifint(rng, diff_lb, diff_ub, (2, 14))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
linc = rng.choice(remcols)
remcols = remove(linc, remcols)
acol = rng.choice(remcols)
remcols = remove(acol, remcols)
bcol = rng.choice(remcols)
c = canvas(bgc, (h, w))
inds = totuple(asindices(c))
bar = canvas(linc, (h, 1))
numadev = unifint(rng, diff_lb, diff_ub, (0, (h * w) // 2))
numbdev = unifint(rng, diff_lb, diff_ub, (0, (h * w) // 2))
numa = rng.choice((numadev, h * w - numadev))
numb = rng.choice((numadev, h * w - numbdev))
numa = min(max(1, numa), h * w - 1)
numb = min(max(1, numb), h * w - 1)
aset = rng.sample(inds, numa)
bset = rng.sample(inds, numb)
A = fill(c, acol, aset)
B = fill(c, bcol, bset)
gi = hconcat(hconcat(A, bar), B)
res = (set(inds) - set(aset)) - set(bset)
go = fill(c, 3, res)
if rng.choice((True, False)):
gi = dmirror(gi)
go = dmirror(go)
return {"input": gi, "output": go}
def generate_c0f76784(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = difference(interval(0, 10, 1), (6, 7, 8))
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
numcols = unifint(rng, diff_lb, diff_ub, (1, len(remcols)))
ccols = rng.sample(remcols, numcols)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
num = unifint(rng, diff_lb, diff_ub, (1, (h * w) // 20))
indss = asindices(gi)
maxtrials = 4 * num
tr = 0
succ = 0
while succ < num and tr <= maxtrials:
if len(indss) == 0:
break
oh = rng.choice((3, 4, 5))
ow = oh
subs = totuple(sfilter(indss, lambda ij: ij[0] < h - oh and ij[1] < w - ow))
if len(subs) == 0:
tr += 1
continue
loci, locj = rng.choice(subs)
obj = frozenset({(loci, locj), (loci + oh - 1, locj + ow - 1)})
bd = backdrop(obj)
col = rng.choice(ccols)
if bd.issubset(indss):
gi = fill(gi, col, bd)
go = fill(go, col, bd)
ccc = oh + 3
bdx = backdrop(inbox(obj))
gi = fill(gi, bgc, bdx)
go = fill(go, ccc, bdx)
succ += 1
indss = (indss - bd) - outbox(bd)
tr += 1
return {"input": gi, "output": go}
def generate_3af2c5a8(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
dim_bounds = (1, 30)
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (1, 15))
w = unifint(rng, diff_lb, diff_ub, (1, 15))
bgc = rng.choice(cols)
gi = canvas(bgc, (h, w))
remcols = remove(bgc, cols)
numc = unifint(rng, diff_lb, diff_ub, (0, min(9, h * w)))
colsch = rng.sample(remcols, numc)
inds = totuple(asindices(gi))
for col in colsch:
num = unifint(rng, diff_lb, diff_ub, (1, max(1, len(inds) // numc)))
chos = rng.sample(inds, num)
gi = fill(gi, col, chos)
inds = difference(inds, chos)
go = hconcat(gi, vmirror(gi))
go = vconcat(go, hmirror(go))
return {"input": gi, "output": go}
def generate_496994bd(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(1, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (3, 30))
w = unifint(rng, diff_lb, diff_ub, (3, 14))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
numcols = unifint(rng, diff_lb, diff_ub, (1, 8))
remcols = rng.sample(remcols, numcols)
canv = canvas(bgc, (h, w))
nc = unifint(rng, diff_lb, diff_ub, (2, h * w - 1))
bx = asindices(canv)
obj = {
(rng.choice(remcols), rng.choice(totuple(sfilter(bx, lambda ij: ij[0] < h // 2)))),
(rng.choice(remcols), rng.choice(totuple(sfilter(bx, lambda ij: ij[0] > h // 2)))),
}
for kk in range(nc - 2):
dns = mapply(neighbors, toindices(obj))
ch = rng.choice(totuple(bx & dns))
obj.add((rng.choice(remcols), ch))
bx = bx - {ch}
gix = paint(canv, obj)
gix = apply(rbind(order, matcher(identity, bgc)), gix)
flag = rng.choice((True, False))
gi = hconcat(gix, canv if flag else hconcat(canvas(bgc, (h, 1)), canv))
go = hconcat(gix, vmirror(gix) if flag else hconcat(canvas(bgc, (h, 1)), vmirror(gix)))
if rng.choice((True, False)):
gi = vmirror(gi)
go = vmirror(go)
if rng.choice((True, False)):
gi = hmirror(gi)
go = hmirror(go)
return {"input": gi, "output": go}
def generate_bd4472b8(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(1, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (1, 28))
w = unifint(rng, diff_lb, diff_ub, (2, 8))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
linc = rng.choice(remcols)
ccols = rng.sample(remcols, w)
cc = (tuple(ccols),)
br = canvas(linc, (1, w))
lp = canvas(bgc, (h, w))
gi = vconcat(vconcat(cc, br), lp)
go = vconcat(vconcat(cc, br), lp)
pt = hupscale(dmirror(cc), w)
pto = asobject(pt)
idx = 2
while idx < h + 3:
go = paint(go, shift(pto, (idx, 0)))
idx += w
rotf = rng.choice((identity, rot90, rot180, rot270))
gi = rotf(gi)
go = rotf(go)
return {"input": gi, "output": go}
def generate_fafffa47(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(2, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (2, 30))
w = unifint(rng, diff_lb, diff_ub, (2, 14))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
acol = rng.choice(remcols)
remcols = remove(acol, remcols)
bcol = rng.choice(remcols)
c = canvas(bgc, (h, w))
inds = totuple(asindices(c))
numadev = unifint(rng, diff_lb, diff_ub, (0, (h * w) // 2))
numbdev = unifint(rng, diff_lb, diff_ub, (0, (h * w) // 2))
numa = rng.choice((numadev, h * w - numadev))
numb = rng.choice((numadev, h * w - numbdev))
numa = min(max(1, numa), h * w - 1)
numb = min(max(1, numb), h * w - 1)
aset = rng.sample(inds, numa)
bset = rng.sample(inds, numb)
A = fill(c, acol, aset)
B = fill(c, bcol, bset)
gi = hconcat(A, B)
res = set(inds) - (set(aset) | set(bset))
go = fill(c, 2, res)
if rng.choice((True, False)):
gi = dmirror(gi)
go = dmirror(go)
return {"input": gi, "output": go}
def generate_67e8384a(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (1, 14))
w = unifint(rng, diff_lb, diff_ub, (1, 14))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
numcols = unifint(rng, diff_lb, diff_ub, (1, 9))
remcols = rng.sample(remcols, numcols)
canv = canvas(bgc, (h, w))
nc = unifint(rng, diff_lb, diff_ub, (1, h * w))
bx = asindices(canv)
obj = {(rng.choice(remcols), rng.choice(totuple(bx)))}
for kk in range(nc - 1):
dns = mapply(neighbors, toindices(obj))
ch = rng.choice(totuple(bx & dns))
obj.add((rng.choice(remcols), ch))
bx = bx - {ch}
gi = paint(canv, obj)
go = paint(canv, obj)
go = hconcat(go, vmirror(go))
go = vconcat(go, hmirror(go))
return {"input": gi, "output": go}
def generate_ed36ccf7(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (1, 30))
w = unifint(rng, diff_lb, diff_ub, (1, 30))
bgc = rng.choice(cols)
gi = canvas(bgc, (h, w))
remcols = remove(bgc, cols)
numc = unifint(rng, diff_lb, diff_ub, (0, min(9, h * w)))
colsch = rng.sample(remcols, numc)
inds = totuple(asindices(gi))
for col in colsch:
num = unifint(rng, diff_lb, diff_ub, (1, max(1, len(inds) // numc)))
chos = rng.sample(inds, num)
gi = fill(gi, col, chos)
inds = difference(inds, chos)
go = rot270(gi)
return {"input": gi, "output": go}
def generate_67a3c6ac(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (1, 30))
w = unifint(rng, diff_lb, diff_ub, (1, 30))
bgc = rng.choice(cols)
gi = canvas(bgc, (h, w))
remcols = remove(bgc, cols)
numc = unifint(rng, diff_lb, diff_ub, (0, min(9, h * w)))
colsch = rng.sample(remcols, numc)
inds = totuple(asindices(gi))
for col in colsch:
num = unifint(rng, diff_lb, diff_ub, (1, max(1, len(inds) // numc)))
chos = rng.sample(inds, num)
gi = fill(gi, col, chos)
inds = difference(inds, chos)
go = vmirror(gi)
return {"input": gi, "output": go}
def generate_a416b8f3(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (1, 30))
w = unifint(rng, diff_lb, diff_ub, (1, 15))
bgc = rng.choice(cols)
gi = canvas(bgc, (h, w))
remcols = remove(bgc, cols)
numc = unifint(rng, diff_lb, diff_ub, (0, min(9, h * w)))
colsch = rng.sample(remcols, numc)
inds = totuple(asindices(gi))
for col in colsch:
num = unifint(rng, diff_lb, diff_ub, (1, max(1, len(inds) // numc)))
chos = rng.sample(inds, num)
gi = fill(gi, col, chos)
inds = difference(inds, chos)
go = hconcat(gi, gi)
return {"input": gi, "output": go}
def generate_d10ecb37(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (2, 30))
w = unifint(rng, diff_lb, diff_ub, (2, 30))
bgc = rng.choice(cols)
gi = canvas(bgc, (h, w))
remcols = remove(bgc, cols)
numc = unifint(rng, diff_lb, diff_ub, (0, min(9, h * w)))
colsch = rng.sample(remcols, numc)
inds = totuple(asindices(gi))
for col in colsch:
num = unifint(rng, diff_lb, diff_ub, (1, max(1, len(inds) // numc)))
chos = rng.sample(inds, num)
gi = fill(gi, col, chos)
inds = difference(inds, chos)
go = crop(gi, (0, 0), (2, 2))
return {"input": gi, "output": go}
def generate_5bd6f4ac(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (4, 30))
w = unifint(rng, diff_lb, diff_ub, (4, 30))
bgc = rng.choice(cols)
gi = canvas(bgc, (h, w))
remcols = remove(bgc, cols)
numc = unifint(rng, diff_lb, diff_ub, (0, min(9, h * w)))
colsch = rng.sample(remcols, numc)
inds = totuple(asindices(gi))
for col in colsch:
num = unifint(rng, diff_lb, diff_ub, (1, max(1, len(inds) // numc)))
chos = rng.sample(inds, num)
gi = fill(gi, col, chos)
inds = difference(inds, chos)
go = rot90(crop(rot270(gi), (0, 0), (3, 3)))
return {"input": gi, "output": go}
def generate_7b7f7511(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (2, 30))
w = unifint(rng, diff_lb, diff_ub, (2, 15))
bgc = rng.choice(cols)
go = canvas(bgc, (h, w))
remcols = remove(bgc, cols)
numc = unifint(rng, diff_lb, diff_ub, (1, min(9, h * w - 1)))
colsch = rng.sample(remcols, numc)
inds = totuple(asindices(go))
for col in colsch:
num = unifint(rng, diff_lb, diff_ub, (1, max(1, len(inds) // numc)))
chos = rng.sample(inds, num)
go = fill(go, col, chos)
inds = difference(inds, chos)
if rng.choice((True, False)):
go = dmirror(go)
gi = vconcat(go, go)
else:
gi = hconcat(go, go)
return {"input": gi, "output": go}
def generate_c59eb873(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (1, 15))
w = unifint(rng, diff_lb, diff_ub, (1, 15))
bgc = rng.choice(cols)
gi = canvas(bgc, (h, w))
remcols = remove(bgc, cols)
numc = unifint(rng, diff_lb, diff_ub, (0, min(9, h * w)))
colsch = rng.sample(remcols, numc)
inds = totuple(asindices(gi))
for col in colsch:
num = unifint(rng, diff_lb, diff_ub, (1, max(1, len(inds) // numc)))
chos = rng.sample(inds, num)
gi = fill(gi, col, chos)
inds = difference(inds, chos)
go = upscale(gi, 2)
return {"input": gi, "output": go}
def generate_b1948b0a(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(6, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (2, 30))
w = unifint(rng, diff_lb, diff_ub, (2, 30))
npd = unifint(rng, diff_lb, diff_ub, (0, (h * w) // 2))
np = rng.choice((npd, h * w - npd))
np = min(max(0, npd), h * w)
gi = canvas(6, (h, w))
inds = totuple(asindices(gi))
pp = rng.sample(inds, np)
npp = difference(inds, pp)
for ij in npp:
gi = fill(gi, rng.choice(cols), {ij})
go = fill(gi, 2, pp)
return {"input": gi, "output": go}
def generate_25ff71a9(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (2, 30))
w = unifint(rng, diff_lb, diff_ub, (2, 30))
nc = unifint(rng, diff_lb, diff_ub, (1, (h * w) // 2 - 1))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
fgc = rng.choice(remcols)
c = canvas(bgc, (h, w))
bounds = asindices(c)
ch = rng.choice(totuple(bounds))
shp = {ch}
bounds = remove(ch, bounds)
for j in range(nc - 1):
shp.add(rng.choice(totuple((bounds - shp) & mapply(neighbors, shp))))
shp = normalize(shp)
oh, ow = shape(shp)
loci = rng.randint(0, h - oh)
locj = rng.randint(0, w - ow)
loc = (loci, locj)
plcd = shift(shp, loc)
gi = fill(c, fgc, plcd)
go = fill(c, fgc, shift(plcd, (1, 0)))
return {"input": gi, "output": go}
def generate_f25fbde4(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (2, 30))
w = unifint(rng, diff_lb, diff_ub, (2, 30))
ncd = unifint(rng, diff_lb, diff_ub, (1, max(1, (min(15, h - 1) * min(15, w - 1)) // 2)))
nc = rng.choice((ncd, (h - 1) * (w - 1) - ncd))
nc = min(max(1, ncd), (h - 1) * (w - 1) - 1)
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
fgc = rng.choice(remcols)
c = canvas(bgc, (h, w))
bounds = asindices(canvas(-1, (min(15, h - 1), min(15, w - 1))))
ch = rng.choice(totuple(bounds))
shp = {ch}
bounds = remove(ch, bounds)
for j in range(nc):
shp.add(rng.choice(totuple((bounds - shp) & mapply(neighbors, shp))))
shp = normalize(shp)
oh, ow = shape(shp)
loci = rng.randint(0, h - oh)
locj = rng.randint(0, w - ow)
loc = (loci, locj)
plcd = shift(shp, loc)
gi = fill(c, fgc, plcd)
go = compress(gi)
go = upscale(go, 2)
return {"input": gi, "output": go}
def generate_a740d043(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(0, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (2, 30))
w = unifint(rng, diff_lb, diff_ub, (2, 30))
ncd = unifint(rng, diff_lb, diff_ub, (1, max(1, ((h - 1) * (w - 1)) // 2)))
nc = rng.choice((ncd, (h - 1) * (w - 1) - ncd))
nc = min(max(1, ncd), (h - 1) * (w - 1) - 1)
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
numc = unifint(rng, diff_lb, diff_ub, (1, len(remcols)))
remcols = rng.sample(remcols, numc)
c = canvas(bgc, (h, w))
bounds = asindices(canvas(-1, (h - 1, w - 1)))
ch = rng.choice(totuple(bounds))
shp = {ch}
bounds = remove(ch, bounds)
for j in range(nc):
shp.add(rng.choice(totuple((bounds - shp) & mapply(neighbors, shp))))
shp = normalize(shp)
oh, ow = shape(shp)
loci = rng.randint(0, h - oh)
locj = rng.randint(0, w - ow)
loc = (loci, locj)
plcd = shift(shp, loc)
obj = {(rng.choice(remcols), ij) for ij in plcd}
gi = paint(c, obj)
go = compress(gi)
go = replace(go, bgc, 0)
return {"input": gi, "output": go}
def generate_be94b721(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (6, 30))
w = unifint(rng, diff_lb, diff_ub, (6, 30))
no = unifint(rng, diff_lb, diff_ub, (3, max(3, (h * w) // 16)))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
c = canvas(bgc, (h, w))
nc = unifint(rng, diff_lb, diff_ub, (no + 1, max(no + 1, 2 * no)))
inds = asindices(c)
ch = rng.choice(totuple(inds))
shp = {ch}
inds = remove(ch, inds)
for k in range(nc - 1):
shp.add(rng.choice(totuple((inds - shp) & mapply(dneighbors, shp))))
inds = (inds - shp) - mapply(neighbors, shp)
trgc = rng.choice(remcols)
gi = fill(c, trgc, shp)
go = fill(canvas(bgc, shape(shp)), trgc, normalize(shp))
for k in range(no):
if len(inds) == 0:
break
ch = rng.choice(totuple(inds))
shp = {ch}
nc2 = unifint(rng, diff_lb, diff_ub, (1, nc - 1))
for k in range(nc2 - 1):
cands = totuple((inds - shp) & mapply(dneighbors, shp))
if len(cands) == 0:
break
shp.add(rng.choice(cands))
col = rng.choice(remcols)
gi = fill(gi, col, shp)
inds = (inds - shp) - mapply(neighbors, shp)
return {"input": gi, "output": go}
def generate_44d8ac46(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(2, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
num = unifint(rng, diff_lb, diff_ub, (1, 10))
indss = asindices(gi)
maxtrials = 4 * num
tr = 0
succ = 0
while succ < num and tr <= maxtrials:
tr += 1
if len(remcols) == 0 or len(indss) == 0:
break
oh = rng.randint(5, 7)
ow = rng.randint(5, 7)
subs = totuple(sfilter(indss, lambda ij: ij[0] < h - oh and ij[1] < w - ow))
if len(subs) == 0:
continue
loci, locj = rng.choice(subs)
obj = frozenset({(loci, locj), (loci + oh - 1, locj + ow - 1)})
bd = backdrop(obj)
col = rng.choice(remcols)
if bd.issubset(indss):
ensuresq = rng.choice((True, False))
if ensuresq:
dim = rng.randint(1, min(oh, ow) - 2)
iloci = rng.randint(1, oh - dim - 1)
ilocj = rng.randint(1, ow - dim - 1)
inpart = backdrop({(loci + iloci, locj + ilocj), (loci + iloci + dim - 1, locj + ilocj + dim - 1)})
else:
cnds = backdrop(inbox(bd))
ch = rng.choice(totuple(cnds))
inpart = {ch}
kk = unifint(rng, diff_lb, diff_ub, (1, len(cnds)))
for k in range(kk - 1):
inpart.add(rng.choice(totuple((cnds - inpart) & mapply(dneighbors, inpart))))
inpart = frozenset(inpart)
hi, wi = shape(inpart)
if hi == wi and len(inpart) == hi * wi:
incol = 2
else:
incol = bgc
gi = fill(gi, col, bd)
go = fill(go, col, bd)
gi = fill(gi, bgc, inpart)
go = fill(go, incol, inpart)
succ += 1
indss = (indss - bd) - outbox(bd)
return {"input": gi, "output": go}
def generate_3618c87e(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (4, 30))
w = unifint(rng, diff_lb, diff_ub, (4, 30))
bgc, linc, dotc = rng.sample(cols, 3)
c = canvas(bgc, (h, w))
ln = connect((0, 0), (0, w - 1))
nlocs = unifint(rng, diff_lb, diff_ub, (1, w // 2))
locs = []
opts = interval(0, w, 1)
for k in range(nlocs):
if len(opts) == 0:
break
ch = rng.choice(opts)
locs.append(ch)
opts = remove(ch, opts)
opts = remove(ch - 1, opts)
opts = remove(ch + 1, opts)
nlocs = len(opts)
gi = fill(c, linc, ln)
go = fill(c, linc, ln)
for j in locs:
hh = rng.randint(1, h - 3)
lnx = connect((0, j), (hh, j))
gi = fill(gi, linc, lnx)
go = fill(go, linc, lnx)
gi = fill(gi, dotc, {(hh + 1, j)})
go = fill(go, dotc, {(0, j)})
rotf = rng.choice((identity, rot90, rot180, rot270))
gi = rotf(gi)
go = rotf(go)
return {"input": gi, "output": go}
def generate_b27ca6d3(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(3, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (4, 30))
w = unifint(rng, diff_lb, diff_ub, (4, 30))
bgc, dotc = rng.sample(cols, 2)
c = canvas(bgc, (h, w))
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
ndots = unifint(rng, diff_lb, diff_ub, (0, (h * w) // 5))
nbars = unifint(rng, diff_lb, diff_ub, (0, (h * w) // 12))
dot = frozenset({(dotc, (1, 1))}) | recolor(bgc, dneighbors((1, 1)))
bar1 = fill(canvas(bgc, (4, 3)), dotc, {(1, 1), (2, 1)})
bar2 = dmirror(bar1)
bar1 = asobject(bar1)
bar2 = asobject(bar2)
opts = [dot] * ndots + [rng.choice((bar1, bar2)) for k in range(nbars)]
rng.shuffle(opts)
inds = shift(asindices(canvas(-1, (h + 2, w + 2))), (-1, -1))
for elem in opts:
loc = (-1, -1)
tr = 0
while not toindices(shift(elem, loc)).issubset(inds) and tr < 5:
loc = rng.choice(totuple(inds))
tr += 1
xx = shift(elem, loc)
if toindices(xx).issubset(inds):
gi = paint(gi, xx)
if len(elem) == 12:
go = paint(go, {cel if cel[0] != bgc else (3, cel[1]) for cel in xx})
else:
go = paint(go, xx)
inds = inds - toindices(xx)
return {"input": gi, "output": go}
def generate_46f33fce(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (2, 7))
w = unifint(rng, diff_lb, diff_ub, (2, 7))
nc = unifint(rng, diff_lb, diff_ub, (0, (h * w) // 2 - 1))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
go = canvas(bgc, (h, w))
gi = canvas(bgc, (h * 2, w * 2))
inds = totuple(asindices(go))
locs = rng.sample(inds, nc)
objo = frozenset({(rng.choice(remcols), ij) for ij in locs})
f = lambda cij: (cij[0], double(cij[1]))
obji = shift(apply(f, objo), (1, 1))
gi = paint(gi, obji)
go = paint(go, objo)
go = upscale(go, 4)
return {"input": gi, "output": go}
def generate_a79310a0(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(2, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (2, 30))
w = unifint(rng, diff_lb, diff_ub, (2, 30))
nc = unifint(rng, diff_lb, diff_ub, (1, (h * w) // 2 - 1))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
fgc = rng.choice(remcols)
c = canvas(bgc, (h, w))
bounds = asindices(c)
ch = rng.choice(totuple(bounds))
shp = {ch}
bounds = remove(ch, bounds)
for j in range(nc - 1):
shp.add(rng.choice(totuple((bounds - shp) & mapply(neighbors, shp))))
shp = normalize(shp)
oh, ow = shape(shp)
loci = rng.randint(0, h - oh)
locj = rng.randint(0, w - ow)
loc = (loci, locj)
plcd = shift(shp, loc)
gi = fill(c, fgc, plcd)
go = fill(c, 2, shift(plcd, (1, 0)))
return {"input": gi, "output": go}
def generate_dc1df850(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = difference(interval(0, 10, 1), (1, 2))
h = unifint(rng, diff_lb, diff_ub, (4, 30))
w = unifint(rng, diff_lb, diff_ub, (4, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
c = canvas(bgc, (h, w))
nc = unifint(rng, diff_lb, diff_ub, (0, (h * w) // 2 - 1))
nreddev = unifint(rng, diff_lb, diff_ub, (0, nc // 2))
nred = rng.choice((nreddev, nc - nreddev))
nred = min(max(0, nred), nc)
inds = totuple(asindices(c))
occ = rng.sample(inds, nc)
reds = rng.sample(occ, nred)
others = difference(occ, reds)
c = fill(c, 2, reds)
obj = frozenset({(rng.choice(remcols), ij) for ij in others})
c = paint(c, obj)
gi = tuple(r for r in c)
go = underfill(c, 1, mapply(neighbors, frozenset(reds)))
return {"input": gi, "output": go}
def generate_f76d97a5(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(0, remove(5, interval(0, 10, 1)))
h = unifint(rng, diff_lb, diff_ub, (4, 30))
w = unifint(rng, diff_lb, diff_ub, (4, 30))
col = rng.choice(cols)
gi = canvas(5, (h, w))
go = canvas(col, (h, w))
numdev = unifint(rng, diff_lb, diff_ub, (0, (h * w) // 2))
num = rng.choice((numdev, h * w - numdev))
num = min(max(1, num), h * w)
inds = totuple(asindices(gi))
locs = rng.sample(inds, num)
gi = fill(gi, col, locs)
go = fill(go, 0, locs)
return {"input": gi, "output": go}
def generate_0d3d703e(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
incols = (1, 2, 3, 4, 5, 6, 8, 9)
outcols = (5, 6, 4, 3, 1, 2, 9, 8)
k = len(incols)
h = unifint(rng, diff_lb, diff_ub, (4, 30))
w = unifint(rng, diff_lb, diff_ub, (4, 30))
gi = canvas(-1, (h, w))
go = canvas(-1, (h, w))
inds = asindices(gi)
numc = unifint(rng, diff_lb, diff_ub, (1, k))
idxes = rng.sample(interval(0, k, 1), numc)
for ij in inds:
idx = rng.choice(idxes)
gi = fill(gi, incols[idx], {ij})
go = fill(go, outcols[idx], {ij})
return {"input": gi, "output": go}
def generate_445eab21(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
gi = canvas(bgc, (h, w))
num = unifint(rng, diff_lb, diff_ub, (1, 9))
indss = asindices(gi)
maxtrials = 4 * num
succ = 0
tr = 0
bigcol, area = 0, 0
while succ < num and tr <= maxtrials:
if len(remcols) == 0 or len(indss) == 0:
break
oh = rng.randint(3, 7)
ow = rng.randint(3, 7)
if oh * ow == area:
continue
subs = totuple(sfilter(indss, lambda ij: ij[0] < h - oh and ij[1] < w - ow))
if len(subs) == 0:
tr += 1
continue
loci, locj = rng.choice(subs)
obj = frozenset({(loci, locj), (loci + oh - 1, locj + ow - 1)})
bd = backdrop(obj)
col = rng.choice(remcols)
if bd.issubset(indss):
remcols = remove(col, remcols)
gi = fill(gi, col, box(bd))
succ += 1
indss = indss - bd
if oh * ow > area:
bigcol, area = col, oh * ow
tr += 1
go = canvas(bigcol, (2, 2))
return {"input": gi, "output": go}
def generate_b94a9452(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (4, 30))
w = unifint(rng, diff_lb, diff_ub, (4, 30))
bgc, outer, inner = rng.sample(cols, 3)
c = canvas(bgc, (h, w))
oh = unifint(rng, diff_lb, diff_ub, (3, h - 1))
ow = unifint(rng, diff_lb, diff_ub, (3, w - 1))
loci = rng.randint(0, h - oh)
locj = rng.randint(0, w - ow)
oh2d = unifint(rng, diff_lb, diff_ub, (0, oh // 2))
ow2d = unifint(rng, diff_lb, diff_ub, (0, ow // 2))
oh2 = rng.choice((oh2d, oh - oh2d))
oh2 = min(max(1, oh2), oh - 2)
ow2 = rng.choice((ow2d, ow - ow2d))
ow2 = min(max(1, ow2), ow - 2)
loci2 = rng.randint(loci + 1, loci + oh - oh2 - 1)
locj2 = rng.randint(locj + 1, locj + ow - ow2 - 1)
obj1 = backdrop(frozenset({(loci, locj), (loci + oh - 1, locj + ow - 1)}))
obj2 = backdrop(frozenset({(loci2, locj2), (loci2 + oh2 - 1, locj2 + ow2 - 1)}))
gi = fill(c, outer, obj1)
gi = fill(gi, inner, obj2)
go = compress(gi)
go = switch(go, outer, inner)
return {"input": gi, "output": go}
def generate_e9afcf9a(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (2, 30))
w = unifint(rng, diff_lb, diff_ub, (4, 30))
numc = unifint(rng, diff_lb, diff_ub, (1, min(10, h)))
colss = rng.sample(cols, numc)
rr = tuple(rng.choice(colss) for k in range(h))
rr2 = rr[::-1]
gi = []
go = []
for k in range(w):
gi.append(rr)
if k % 2 == 0:
go.append(rr)
else:
go.append(rr2)
gi = dmirror(tuple(gi))
go = dmirror(tuple(go))
return {"input": gi, "output": go}
def generate_e9614598(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(3, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (5, 30))
w = unifint(rng, diff_lb, diff_ub, (5, 30))
r = rng.randint(0, h - 1)
sizh = unifint(rng, diff_lb, diff_ub, (2, w // 2))
siz = 2 * sizh + 1
siz = min(max(5, siz), w)
locj = rng.randint(0, w - siz)
bgc, dotc = rng.sample(cols, 2)
c = canvas(bgc, (h, w))
A = (r, locj)
B = (r, locj + siz - 1)
gi = fill(c, dotc, {A, B})
locc = (r, locj + siz // 2)
go = fill(gi, 3, {locc})
go = fill(go, 3, dneighbors(locc))
if rng.choice((True, False)):
gi = dmirror(gi)
go = dmirror(go)
return {"input": gi, "output": go}
def generate_d23f8c26(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (2, 30))
wh = unifint(rng, diff_lb, diff_ub, (1, 14))
w = 2 * wh + 1
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
numn = unifint(rng, diff_lb, diff_ub, (1, (h * w) // 2 - 1))
numcols = unifint(rng, diff_lb, diff_ub, (1, 9))
remcols = rng.sample(remcols, numcols)
inds = totuple(asindices(gi))
locs = rng.sample(inds, numn)
for ij in locs:
col = rng.choice(remcols)
gi = fill(gi, col, {ij})
a, b = ij
if b == w // 2:
go = fill(go, col, {ij})
return {"input": gi, "output": go}
def generate_ce9e57f2(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(8, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (6, 30))
w = unifint(rng, diff_lb, diff_ub, (6, 30))
nbars = unifint(rng, diff_lb, diff_ub, (2, (w - 2) // 2))
locopts = interval(1, w - 1, 1)
barlocs = []
for k in range(nbars):
if len(locopts) == 0:
break
loc = rng.choice(locopts)
barlocs.append(loc)
locopts = remove(loc, locopts)
locopts = remove(loc + 1, locopts)
locopts = remove(loc - 1, locopts)
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
numc = unifint(rng, diff_lb, diff_ub, (1, 8))
colss = rng.sample(remcols, numc)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
for j in barlocs:
barloci = unifint(rng, diff_lb, diff_ub, (1, h - 2))
fullbar = connect((0, j), (barloci, j))
halfbar = connect((0, j), (barloci // 2 if barloci % 2 == 1 else (barloci - 1) // 2, j))
barcol = rng.choice(colss)
gi = fill(gi, barcol, fullbar)
go = fill(go, barcol, fullbar)
go = fill(go, 8, halfbar)
rotf = rng.choice((identity, rot90, rot180, rot270))
gi = rotf(gi)
go = rotf(go)
return {"input": gi, "output": go}
def generate_b9b7f026(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
gi = canvas(bgc, (h, w))
num = unifint(rng, diff_lb, diff_ub, (1, 9))
indss = asindices(gi)
maxtrials = 4 * num
succ = 0
tr = 0
outcol = None
while succ < num and tr <= maxtrials:
if len(remcols) == 0 or len(indss) == 0:
break
oh = rng.randint(3, 7)
ow = rng.randint(3, 7)
subs = totuple(sfilter(indss, lambda ij: ij[0] < h - oh and ij[1] < w - ow))
if len(subs) == 0:
tr += 1
continue
loci, locj = rng.choice(subs)
obj = frozenset({(loci, locj), (loci + oh - 1, locj + ow - 1)})
bd = backdrop(obj)
col = rng.choice(remcols)
if bd.issubset(indss):
remcols = remove(col, remcols)
gi = fill(gi, col, bd)
succ += 1
indss = indss - bd
if outcol is None:
outcol = col
cands = totuple(backdrop(inbox(bd)))
bd2 = backdrop(frozenset(rng.sample(cands, 2)) if len(cands) > 2 else frozenset(cands))
gi = fill(gi, bgc, bd2)
tr += 1
go = canvas(outcol, (1, 1))
return {"input": gi, "output": go}
def generate_6d75e8bb(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(2, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (2, 30))
w = unifint(rng, diff_lb, diff_ub, (2, 30))
nc = unifint(rng, diff_lb, diff_ub, (1, (h * w) // 2 - 1))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
fgc = rng.choice(remcols)
c = canvas(bgc, (h, w))
bounds = asindices(c)
ch = rng.choice(totuple(bounds))
shp = {ch}
bounds = remove(ch, bounds)
for j in range(nc - 1):
shp.add(rng.choice(totuple((bounds - shp) & mapply(neighbors, shp))))
shp = normalize(shp)
oh, ow = shape(shp)
loci = rng.randint(0, h - oh)
locj = rng.randint(0, w - ow)
loc = (loci, locj)
plcd = shift(shp, loc)
gi = fill(c, fgc, plcd)
go = fill(c, 2, backdrop(plcd))
go = fill(go, fgc, plcd)
return {"input": gi, "output": go}
def generate_3f7978a0(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (5, 30))
w = unifint(rng, diff_lb, diff_ub, (5, 30))
bgc, noisec, linec = rng.sample(cols, 3)
c = canvas(bgc, (h, w))
oh = unifint(rng, diff_lb, diff_ub, (4, max(4, int((2 / 3) * h))))
oh = min(oh, h)
ow = unifint(rng, diff_lb, diff_ub, (4, max(4, int((2 / 3) * w))))
ow = min(ow, w)
loci = rng.randint(0, h - oh)
locj = rng.randint(0, w - ow)
nnoise = unifint(rng, diff_lb, diff_ub, (0, (h * w) // 4))
inds = totuple(asindices(c))
noise = rng.sample(inds, nnoise)
gi = fill(c, noisec, noise)
ulc = (loci, locj)
lrc = (loci + oh - 1, locj + ow - 1)
llc = (loci + oh - 1, locj)
urc = (loci, locj + ow - 1)
gi = fill(gi, linec, connect(ulc, llc))
gi = fill(gi, linec, connect(urc, lrc))
crns = {ulc, lrc, llc, urc}
gi = fill(gi, noisec, crns)
go = subgrid(crns, gi)
if rng.choice((True, False)):
gi = dmirror(gi)
go = dmirror(go)
return {"input": gi, "output": go}
def generate_e76a88a6(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (8, 30))
w = unifint(rng, diff_lb, diff_ub, (8, 30))
objh = unifint(rng, diff_lb, diff_ub, (2, 5))
objw = unifint(rng, diff_lb, diff_ub, (2, 5))
bounds = asindices(canvas(0, (objh, objw)))
shp = {rng.choice(totuple(bounds))}
nc = unifint(rng, diff_lb, diff_ub, (2, len(bounds) - 2))
for j in range(nc):
ij = rng.choice(totuple((bounds - shp) & mapply(dneighbors, shp)))
shp.add(ij)
shp = normalize(shp)
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
dmyc = rng.choice(remcols)
remcols = remove(dmyc, remcols)
oh, ow = shape(shp)
loci = rng.randint(0, h - oh)
locj = rng.randint(0, w - ow)
shpp = shift(shp, (loci, locj))
numco = unifint(rng, diff_lb, diff_ub, (2, 8))
colll = rng.sample(remcols, numco)
shppc = frozenset({(rng.choice(colll), ij) for ij in shpp})
while numcolors(shppc) == 1:
shppc = frozenset({(rng.choice(colll), ij) for ij in shpp})
shppcn = normalize(shppc)
gi = canvas(bgc, (h, w))
gi = paint(gi, shppc)
go = tuple(e for e in gi)
ub = ((h * w) / (oh * ow)) // 2
ub = max(1, ub)
numlocs = unifint(rng, diff_lb, diff_ub, (1, ub))
cnt = 0
fails = 0
maxfails = 5 * numlocs
idns = (asindices(gi) - shpp) - mapply(dneighbors, shpp)
idns = sfilter(idns, lambda ij: ij[0] <= h - oh and ij[1] <= w - ow)
while cnt < numlocs and fails < maxfails:
if len(idns) == 0:
break
loc = rng.choice(totuple(idns))
plcd = shift(shppcn, loc)
plcdi = toindices(plcd)
if plcdi.issubset(idns):
go = paint(go, plcd)
gi = fill(gi, dmyc, plcdi)
cnt += 1
idns = (idns - plcdi) - mapply(dneighbors, plcdi)
else:
fails += 1
return {"input": gi, "output": go}
def generate_a61f2674(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(2, remove(1, interval(0, 10, 1)))
w = unifint(rng, diff_lb, diff_ub, (5, 28))
h = unifint(rng, diff_lb, diff_ub, (w // 2 + 1, 30))
bgc, fgc = rng.sample(cols, 2)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
nbars = unifint(rng, diff_lb, diff_ub, (2, w // 2))
barlocs = []
options = interval(0, w, 1)
while len(options) > 0 and len(barlocs) < nbars:
loc = rng.choice(options)
barlocs.append(loc)
options = remove(loc, options)
options = remove(loc + 1, options)
options = remove(loc - 1, options)
barheights = rng.sample(interval(0, h, 1), nbars)
for j, bh in zip(barlocs, barheights):
gi = fill(gi, fgc, connect((0, j), (bh, j)))
if bh == max(barheights):
go = fill(go, 1, connect((0, j), (bh, j)))
if bh == min(barheights):
go = fill(go, 2, connect((0, j), (bh, j)))
rotf = rng.choice((identity, rot90, rot180, rot270))
gi = rotf(gi)
go = rotf(go)
return {"input": gi, "output": go}
def generate_ce4f8723(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(3, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (2, 30))
w = unifint(rng, diff_lb, diff_ub, (2, 14))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
barcol = rng.choice(remcols)
remcols = remove(barcol, remcols)
cola = rng.choice(remcols)
colb = rng.choice(remove(cola, remcols))
canv = canvas(bgc, (h, w))
inds = totuple(asindices(canv))
gbar = canvas(barcol, (h, 1))
mp = (h * w) // 2
devrng = (0, mp)
deva = unifint(rng, diff_lb, diff_ub, devrng)
devb = unifint(rng, diff_lb, diff_ub, devrng)
sgna = rng.choice((+1, -1))
sgnb = rng.choice((+1, -1))
deva = sgna * deva
devb = sgnb * devb
numa = mp + deva
numb = mp + devb
numa = max(min(h * w - 1, numa), 1)
numb = max(min(h * w - 1, numb), 1)
a = rng.sample(inds, numa)
b = rng.sample(inds, numb)
gia = fill(canv, cola, a)
gib = fill(canv, colb, b)
gi = hconcat(hconcat(gia, gbar), gib)
go = fill(canv, 3, set(a) | set(b))
if rng.choice((True, False)):
gi = dmirror(gi)
go = dmirror(go)
return {"input": gi, "output": go}
def generate_caa06a1f(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
vp = unifint(rng, diff_lb, diff_ub, (2, h // 2 - 1))
hp = unifint(rng, diff_lb, diff_ub, (2, w // 2 - 1))
bgc = rng.choice(cols)
numc = unifint(rng, diff_lb, diff_ub, (2, min(8, max(2, hp * vp))))
remcols = remove(bgc, cols)
ccols = rng.sample(remcols, numc)
remcols = difference(remcols, ccols)
tric = rng.choice(remcols)
obj = {(rng.choice(ccols), ij) for ij in asindices(canvas(-1, (vp, hp)))}
go = canvas(bgc, (h, w))
gi = canvas(bgc, (h, w))
for a in range(-vp, h + 1, vp):
for b in range(-hp, w + 1, hp):
go = paint(go, shift(obj, (a, b + 1)))
for a in range(-vp, h + 1, vp):
for b in range(-hp, w + 1, hp):
gi = paint(gi, shift(obj, (a, b)))
ioffs = unifint(rng, diff_lb, diff_ub, (1, h - 2 * vp))
joffs = unifint(rng, diff_lb, diff_ub, (1, w - 2 * hp))
for a in range(ioffs):
gi = fill(gi, tric, connect((a, 0), (a, w - 1)))
for b in range(joffs):
gi = fill(gi, tric, connect((0, b), (h - 1, b)))
rotf = rng.choice((identity, rot90, rot180, rot270))
gi = rotf(gi)
go = rotf(go)
return {"input": gi, "output": go}
def generate_94f9d214(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(2, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (2, 30))
w = unifint(rng, diff_lb, diff_ub, (2, 14))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
acol = rng.choice(remcols)
remcols = remove(acol, remcols)
bcol = rng.choice(remcols)
c = canvas(bgc, (h, w))
inds = totuple(asindices(c))
numadev = unifint(rng, diff_lb, diff_ub, (0, (h * w) // 2))
numbdev = unifint(rng, diff_lb, diff_ub, (0, (h * w) // 2))
numa = rng.choice((numadev, h * w - numadev))
numb = rng.choice((numadev, h * w - numbdev))
numa = min(max(1, numa), h * w - 1)
numb = min(max(1, numb), h * w - 1)
aset = rng.sample(inds, numa)
bset = rng.sample(inds, numb)
A = fill(c, acol, aset)
B = fill(c, bcol, bset)
gi = hconcat(A, B)
res = (set(inds) - set(aset)) & (set(inds) - set(bset))
go = fill(c, 2, res)
if rng.choice((True, False)):
gi = dmirror(gi)
go = dmirror(go)
return {"input": gi, "output": go}
def generate_feca6190(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
w = unifint(rng, diff_lb, diff_ub, (2, 6))
bgc = 0
remcols = remove(bgc, cols)
ncols = unifint(rng, diff_lb, diff_ub, (1, min(w, 5)))
ccols = rng.sample(remcols, ncols)
cands = interval(0, w, 1)
locs = rng.sample(cands, ncols)
gi = canvas(bgc, (1, w))
go = canvas(bgc, (w * ncols, w * ncols))
for col, j in zip(ccols, locs):
gi = fill(gi, col, {(0, j)})
go = fill(go, col, shoot((w * ncols - 1, j), UP_RIGHT))
return {"input": gi, "output": go}
def generate_d5d6de2d(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(3, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
num = unifint(rng, diff_lb, diff_ub, (1, 16))
indss = asindices(gi)
maxtrials = 4 * num
tr = 0
succ = 0
while succ < num and tr <= maxtrials:
if len(remcols) == 0 or len(indss) == 0:
break
oh = rng.randint(1, 7)
ow = rng.randint(1, 7)
subs = totuple(sfilter(indss, lambda ij: ij[0] < h - oh and ij[1] < w - ow))
if len(subs) == 0:
tr += 1
continue
loci, locj = rng.choice(subs)
obj = frozenset({(loci, locj), (loci + oh - 1, locj + ow - 1)})
bd = backdrop(obj)
col = rng.choice(remcols)
if bd.issubset(indss):
gi = fill(gi, col, box(bd))
if oh > 2 and ow > 2:
go = fill(go, 3, backdrop(inbox(bd)))
succ += 1
indss = (indss - bd) - outbox(bd)
tr += 1
return {"input": gi, "output": go}
def generate_4612dd53(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(2, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (8, 30))
w = unifint(rng, diff_lb, diff_ub, (8, 30))
ih = unifint(rng, diff_lb, diff_ub, (5, h - 1))
iw = unifint(rng, diff_lb, diff_ub, (5, w - 1))
bgc, col = rng.sample(cols, 2)
loci = rng.randint(0, h - ih)
locj = rng.randint(0, w - iw)
bx = box(frozenset({(loci, locj), (loci + ih - 1, locj + iw - 1)}))
if rng.choice((True, False)):
locc = rng.randint(loci + 2, loci + ih - 3)
br = connect((locc, locj + 1), (locc, locj + iw - 2))
else:
locc = rng.randint(locj + 2, locj + iw - 3)
br = connect((loci + 1, locc), (loci + ih - 2, locc))
c = canvas(bgc, (h, w))
crns = rng.sample(totuple(corners(bx)), 3)
onbx = totuple(crns)
rembx = difference(bx, crns)
onbr = rng.sample(totuple(br), 2)
rembr = difference(br, onbr)
noccbx = unifint(rng, diff_lb, diff_ub, (0, len(rembx)))
noccbr = unifint(rng, diff_lb, diff_ub, (0, len(rembr)))
occbx = rng.sample(totuple(rembx), noccbx)
occbr = rng.sample(totuple(rembr), noccbr)
c = fill(c, col, bx)
c = fill(c, col, br)
gi = fill(c, bgc, occbx)
gi = fill(gi, bgc, occbr)
go = fill(c, 2, occbx)
go = fill(go, 2, occbr)
if rng.choice((True, False)):
gi = fill(gi, bgc, br)
go = fill(go, bgc, br)
return {"input": gi, "output": go}
def generate_1f642eb9(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (6, 30))
w = unifint(rng, diff_lb, diff_ub, (6, 30))
ih = unifint(rng, diff_lb, diff_ub, (2, min(h - 4, 2 * (h // 3))))
iw = unifint(rng, diff_lb, diff_ub, (2, min(w - 4, 2 * (w // 3))))
loci = rng.randint(2, h - ih - 2)
locj = rng.randint(2, w - iw - 2)
bgc, sqc = rng.sample(cols, 2)
remcols = difference(cols, (bgc, sqc))
numcells = unifint(rng, diff_lb, diff_ub, (1, 2 * ih + 2 * iw - 4))
outs = []
ins = []
c1 = rng.choice((True, False))
c2 = rng.choice((True, False))
c3 = rng.choice((True, False))
c4 = rng.choice((True, False))
for a in range(loci + (not c1), loci + ih - (not c2)):
outs.append((a, 0))
ins.append((a, locj))
for a in range(loci + (not c3), loci + ih - (not c4)):
outs.append((a, w - 1))
ins.append((a, locj + iw - 1))
for b in range(locj + c1, locj + iw - (c3)):
outs.append((0, b))
ins.append((loci, b))
for b in range(locj + (c2), locj + iw - (c4)):
outs.append((h - 1, b))
ins.append((loci + ih - 1, b))
inds = interval(0, 2 * ih + 2 * iw - 4, 1)
locs = rng.sample(inds, numcells)
numc = unifint(rng, diff_lb, diff_ub, (1, 8))
ccols = rng.sample(remcols, numc)
outs = [e for j, e in enumerate(outs) if j in locs]
ins = [e for j, e in enumerate(ins) if j in locs]
c = canvas(bgc, (h, w))
bd = backdrop(frozenset({(loci, locj), (loci + ih - 1, locj + iw - 1)}))
gi = fill(c, sqc, bd)
seq = [rng.choice(ccols) for k in range(numcells)]
for c, loc in zip(seq, outs):
gi = fill(gi, c, {loc})
go = tuple(e for e in gi)
for c, loc in zip(seq, ins):
go = fill(go, c, {loc})
return {"input": gi, "output": go}
def generate_681b3aeb(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
fullsuc = False
while not fullsuc:
hi = unifint(rng, diff_lb, diff_ub, (2, 8))
wi = unifint(rng, diff_lb, diff_ub, (2, 8))
h = unifint(rng, diff_lb, diff_ub, ((3 * hi, 30)))
w = unifint(rng, diff_lb, diff_ub, ((3 * wi, 30)))
c = canvas(-1, (hi, hi))
bgc, ca, cb = rng.sample(cols, 3)
gi = canvas(bgc, (h, w))
conda, condb = True, True
while conda and condb:
inds = totuple(asindices(c))
pa = rng.choice(inds)
reminds = remove(pa, inds)
pb = rng.choice(reminds)
reminds = remove(pb, reminds)
A = {pa}
B = {pb}
for k in range(len(reminds)):
acands = set(reminds) & mapply(dneighbors, A)
bcands = set(reminds) & mapply(dneighbors, B)
opts = []
if len(acands) > 0:
opts.append(0)
if len(bcands) > 0:
opts.append(1)
idx = rng.choice(opts)
if idx == 0:
loc = rng.choice(totuple(acands))
A.add(loc)
else:
loc = rng.choice(totuple(bcands))
B.add(loc)
reminds = remove(loc, reminds)
conda = len(A) == height(A) * width(A)
condb = len(B) == height(B) * width(B)
go = fill(c, ca, A)
go = fill(go, cb, B)
fullocs = totuple(asindices(gi))
A = normalize(A)
B = normalize(B)
ha, wa = shape(A)
hb, wb = shape(B)
minisuc = False
if not (ha > h or wa > w):
for kkk in range(10):
locai = rng.randint(0, h - ha)
locaj = rng.randint(0, w - wa)
plcda = shift(A, (locaj, locaj))
remlocs = difference(fullocs, plcda)
remlocs2 = sfilter(remlocs, lambda ij: ij[0] <= h - hb and ij[1] <= w - wb)
if len(remlocs2) == 0:
continue
ch = rng.choice(remlocs2)
plcdb = shift(B, (ch))
if set(plcdb).issubset(set(remlocs2)):
minisuc = True
break
if minisuc:
fullsuc = True
gi = fill(gi, ca, plcda)
gi = fill(gi, cb, plcdb)
return {"input": gi, "output": go}
def generate_d364b489(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = difference(interval(0, 10, 1), (2, 6, 7, 8))
h = unifint(rng, diff_lb, diff_ub, (4, 30))
w = unifint(rng, diff_lb, diff_ub, (4, 30))
bgc, fgc = rng.sample(cols, 2)
gi = canvas(bgc, (h, w))
inds = totuple(asindices(gi))
num = unifint(rng, diff_lb, diff_ub, (1, (h * w) // 5))
res = set()
for j in range(num):
if len(inds) == 0:
break
r = rng.choice(inds)
inds = remove(r, inds)
inds = difference(inds, neighbors(r))
inds = difference(inds, totuple(shift(apply(rbind(multiply, TWO), dneighbors(ORIGIN)), r)))
res.add(r)
gi = fill(gi, fgc, res)
go = fill(gi, 7, shift(res, LEFT))
go = fill(go, 6, shift(res, RIGHT))
go = fill(go, 8, shift(res, DOWN))
go = fill(go, 2, shift(res, UP))
return {"input": gi, "output": go}
def generate_25d8a9c8(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (2, 30))
w = unifint(rng, diff_lb, diff_ub, (2, 30))
gi = []
go = []
ncols = unifint(rng, diff_lb, diff_ub, (2, 10))
ccols = rng.sample(cols, ncols)
for k in range(h):
singlecol = rng.choice((True, False))
col = rng.choice(ccols)
row = repeat(col, w)
if singlecol:
gi.append(row)
go.append(repeat(5, w))
else:
remcols = remove(col, ccols)
nothercinv = unifint(rng, diff_lb, diff_ub, (1, w - 1))
notherc = w - 1 - nothercinv
notherc = min(max(1, notherc), w - 1)
row = list(row)
indss = interval(0, w, 1)
for j in rng.sample(indss, notherc):
row[j] = rng.choice(remcols)
gi.append(tuple(row))
go.append(repeat(0, w))
gi = tuple(gi)
go = tuple(go)
return {"input": gi, "output": go}
def generate_bda2d7a6(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
colopts = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (2, 14))
w = unifint(rng, diff_lb, diff_ub, (2, 14))
ncols = unifint(rng, diff_lb, diff_ub, (2, 10))
cols = rng.sample(colopts, ncols)
colord = [rng.choice(cols) for j in range(min(h, w))]
shp = (h * 2, w * 2)
gi = canvas(0, shp)
for idx, (ci, co) in enumerate(zip(colord, colord[-1:] + colord[:-1])):
ulc = (idx, idx)
lrc = (h * 2 - 1 - idx, w * 2 - 1 - idx)
bx = box(frozenset({ulc, lrc}))
gi = fill(gi, ci, bx)
I = gi
objso = order(objects(I, T, F, F), compose(maximum, shape))
if color(objso[0]) == color(objso[-1]):
objso = (combine(objso[0], objso[-1]),) + objso[1:-1]
res = mpapply(recolor, apply(color, objso), (objso[-1],) + objso[:-1])
go = paint(gi, res)
return {"input": gi, "output": go}
def generate_a5f85a15(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
colopts = remove(4, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (3, 30))
w = unifint(rng, diff_lb, diff_ub, (3, 30))
startlocs = apply(toivec, interval(h - 1, 0, -1)) + apply(tojvec, interval(0, w, 1))
cands = interval(0, h + w - 1, 1)
num = unifint(rng, diff_lb, diff_ub, (1, (h + w - 1) // 3))
locs = []
for k in range(num):
if len(cands) == 0:
break
loc = rng.choice(cands)
locs.append(loc)
cands = remove(loc, cands)
cands = remove(loc - 1, cands)
cands = remove(loc + 1, cands)
locs = set([startlocs[loc] for loc in locs])
bgc, fgc = rng.sample(colopts, 2)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
for loc in locs:
ln = order(shoot(loc, (1, 1)), first)
gi = fill(gi, fgc, ln)
go = fill(go, fgc, ln)
go = fill(go, 4, ln[1::2])
return {"input": gi, "output": go}
def generate_32597951(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(3, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
ih = unifint(rng, diff_lb, diff_ub, (2, h // 2))
iw = unifint(rng, diff_lb, diff_ub, (2, w // 2))
bgc, noisec, fgc = rng.sample(cols, 3)
c = canvas(bgc, (h, w))
inds = totuple(asindices(c))
ndev = unifint(rng, diff_lb, diff_ub, (1, (h * w) // 2))
num = rng.choice((ndev, h * w - ndev))
num = min(max(num, 0), h * w)
ofc = rng.sample(inds, num)
c = fill(c, noisec, ofc)
loci = rng.randint(0, h - ih)
locj = rng.randint(0, w - iw)
bd = backdrop(frozenset({(loci, locj), (loci + ih - 1, locj + iw - 1)}))
tofillfc = bd & ofcolor(c, bgc)
gi = fill(c, fgc, tofillfc)
if len(tofillfc) > 0:
go = fill(gi, 3, backdrop(tofillfc) & ofcolor(gi, noisec))
else:
go = gi
return {"input": gi, "output": go}
def generate_cf98881b(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (2, 30))
w = unifint(rng, diff_lb, diff_ub, (2, 9))
bgc, barcol, cola, colb, colc = rng.sample(cols, 5)
canv = canvas(bgc, (h, w))
inds = totuple(asindices(canv))
gbar = canvas(barcol, (h, 1))
mp = (h * w) // 2
devrng = (0, mp)
deva = unifint(rng, diff_lb, diff_ub, devrng)
devb = unifint(rng, diff_lb, diff_ub, devrng)
devc = unifint(rng, diff_lb, diff_ub, devrng)
sgna = rng.choice((+1, -1))
sgnb = rng.choice((+1, -1))
sgnc = rng.choice((+1, -1))
deva = sgna * deva
devb = sgnb * devb
devc = sgnc * devc
numa = mp + deva
numb = mp + devb
numc = mp + devc
numa = max(min(h * w - 1, numa), 1)
numb = max(min(h * w - 1, numb), 1)
numc = max(min(h * w - 1, numc), 1)
a = rng.sample(inds, numa)
b = rng.sample(inds, numb)
c = rng.sample(inds, numc)
gia = fill(canv, cola, a)
gib = fill(canv, colb, b)
gic = fill(canv, colc, c)
gi = hconcat(hconcat(hconcat(gia, gbar), hconcat(gib, gbar)), gic)
go = fill(gic, colb, b)
go = fill(go, cola, a)
return {"input": gi, "output": go}
def generate_41e4d17e(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(6, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (6, 30))
w = unifint(rng, diff_lb, diff_ub, (6, 30))
num = unifint(rng, diff_lb, diff_ub, (1, (h * w) // 16))
bgc, fgc = rng.sample(cols, 2)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
inds = asindices(gi)
bx = box(frozenset({(0, 0), (4, 4)}))
bd = backdrop(bx)
maxtrials = 4 * num
succ = 0
tr = 0
while succ < num and tr < maxtrials:
loc = rng.choice(totuple(inds))
bxs = shift(bx, loc)
if bxs.issubset(set(inds)):
gi = fill(gi, fgc, bxs)
go = fill(go, fgc, bxs)
cen = center(bxs)
frns = hfrontier(cen) | vfrontier(cen)
kep = frns & ofcolor(go, bgc)
go = fill(go, 6, kep)
inds = difference(inds, shift(bd, loc))
succ += 1
tr += 1
return {"input": gi, "output": go}
def generate_91714a58(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (6, 30))
w = unifint(rng, diff_lb, diff_ub, (6, 30))
bgc, targc = rng.sample(cols, 2)
remcols = remove(bgc, cols)
nnoise = unifint(rng, diff_lb, diff_ub, (1, (h * w) // 2))
gi = canvas(bgc, (h, w))
inds = totuple(asindices(gi))
noise = rng.sample(inds, nnoise)
ih = rng.randint(2, h // 2)
iw = rng.randint(2, w // 2)
loci = rng.randint(0, h - ih)
locj = rng.randint(0, w - iw)
loc = (loci, locj)
bd = backdrop(frozenset({(loci, locj), (loci + ih - 1, locj + iw - 1)}))
go = fill(gi, targc, bd)
for ij in noise:
col = rng.choice(remcols)
gi = fill(gi, col, {ij})
gi = fill(gi, targc, bd)
return {"input": gi, "output": go}
def generate_b60334d2(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(1, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (6, 30))
w = unifint(rng, diff_lb, diff_ub, (6, 30))
num = unifint(rng, diff_lb, diff_ub, (1, (h * w) // 9))
bgc, fgc = rng.sample(cols, 2)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
inds = asindices(gi)
bx = box(frozenset({(0, 0), (2, 2)}))
bd = backdrop(bx)
maxtrials = 4 * num
succ = 0
tr = 0
while succ < num and tr < maxtrials:
loc = rng.choice(totuple(inds))
bxs = shift(bx, loc)
if bxs.issubset(set(inds)):
cen = center(bxs)
gi = fill(gi, fgc, {cen})
go = fill(go, fgc, ineighbors(cen))
go = fill(go, 1, dneighbors(cen))
inds = difference(inds, shift(bd, loc))
succ += 1
tr += 1
return {"input": gi, "output": go}
def generate_952a094c(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (6, 30))
w = unifint(rng, diff_lb, diff_ub, (6, 30))
ih = unifint(rng, diff_lb, diff_ub, (4, h - 2))
iw = unifint(rng, diff_lb, diff_ub, (4, w - 2))
loci = rng.randint(1, h - ih - 1)
locj = rng.randint(1, w - iw - 1)
sp = (loci, locj)
ep = (loci + ih - 1, locj + iw - 1)
bx = box(frozenset({sp, ep}))
bgc, fgc, a, b, c, d = rng.sample(cols, 6)
canv = canvas(bgc, (h, w))
canvv = fill(canv, fgc, bx)
gi = tuple(e for e in canvv)
go = tuple(e for e in canvv)
gi = fill(gi, a, {(loci + 1, locj + 1)})
go = fill(go, a, {(loci + ih, locj + iw)})
gi = fill(gi, b, {(loci + 1, locj + iw - 2)})
go = fill(go, b, {(loci + ih, locj - 1)})
gi = fill(gi, c, {(loci + ih - 2, locj + 1)})
go = fill(go, c, {(loci - 1, locj + iw)})
gi = fill(gi, d, {(loci + ih - 2, locj + iw - 2)})
go = fill(go, d, {(loci - 1, locj - 1)})
return {"input": gi, "output": go}
def generate_b8cdaf2b(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (3, 30))
w = unifint(rng, diff_lb, diff_ub, (3, 30))
bgc, linc, dotc = rng.sample(cols, 3)
lin = connect((0, 0), (0, w - 1))
winv = unifint(rng, diff_lb, diff_ub, (2, w - 1))
w2 = w - winv
w2 = min(max(w2, 1), w - 2)
locj = rng.randint(1, w - w2 - 1)
bar2 = connect((0, locj), (0, locj + w2 - 1))
c = canvas(bgc, (h, w))
gi = fill(c, linc, lin)
gi = fill(gi, dotc, bar2)
gi = fill(gi, linc, shift(bar2, (1, 0)))
go = fill(gi, dotc, shoot((2, locj - 1), (1, -1)))
go = fill(go, dotc, shoot((2, locj + w2), (1, 1)))
rotf = rng.choice((identity, rot90, rot180, rot270))
gi = rotf(gi)
go = rotf(go)
return {"input": gi, "output": go}
def generate_b548a754(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (5, 30))
w = unifint(rng, diff_lb, diff_ub, (4, 30))
hi = unifint(rng, diff_lb, diff_ub, (4, h - 1))
wi = unifint(rng, diff_lb, diff_ub, (3, w - 1))
loci = rng.randint(0, h - hi)
locj = rng.randint(0, w - wi)
bx = box(frozenset({(loci, locj), (loci + hi - 1, locj + wi - 1)}))
ins = backdrop(inbox(bx))
bgc, boxc, inc, dotc = rng.sample(cols, 4)
c = canvas(bgc, (h, w))
go = fill(c, boxc, bx)
go = fill(go, inc, ins)
cutoff = rng.randint(loci + 2, loci + hi - 2)
bx2 = box(frozenset({(loci, locj), (cutoff, locj + wi - 1)}))
ins2 = backdrop(inbox(bx2))
gi = fill(c, boxc, bx2)
gi = fill(gi, inc, ins2)
locc = rng.choice(totuple(connect((loci + hi - 1, locj), (loci + hi - 1, locj + wi - 1))))
gi = fill(gi, dotc, {locc})
rotf = rng.choice((identity, rot90, rot180, rot270))
gi = rotf(gi)
go = rotf(go)
return {"input": gi, "output": go}
def generate_95990924(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = difference(interval(0, 10, 1), (1, 2, 3, 4))
h = unifint(rng, diff_lb, diff_ub, (6, 30))
w = unifint(rng, diff_lb, diff_ub, (6, 30))
num = unifint(rng, diff_lb, diff_ub, (1, (h * w) // 16))
bgc, fgc = rng.sample(cols, 2)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
inds = asindices(gi)
bx = box(frozenset({(0, 0), (3, 3)}))
bd = backdrop(bx)
maxtrials = 4 * num
succ = 0
tr = 0
while succ < num and tr < maxtrials:
loc = rng.choice(totuple(inds))
bxs = shift(bx, loc)
if bxs.issubset(set(inds)):
gi = fill(gi, fgc, inbox(bxs))
go = fill(go, fgc, inbox(bxs))
go = fill(go, 1, {loc})
go = fill(go, 2, {add(loc, (0, 3))})
go = fill(go, 3, {add(loc, (3, 0))})
go = fill(go, 4, {add(loc, (3, 3))})
inds = difference(inds, shift(bd, loc))
succ += 1
tr += 1
return {"input": gi, "output": go}
def generate_f1cefba8(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (7, 30))
w = unifint(rng, diff_lb, diff_ub, (7, 30))
ih = unifint(rng, diff_lb, diff_ub, (6, h - 1))
iw = unifint(rng, diff_lb, diff_ub, (6, w - 1))
loci = rng.randint(0, h - ih)
locj = rng.randint(0, w - iw)
bgc, ringc, inc = rng.sample(cols, 3)
obj = frozenset({(loci, locj), (loci + ih - 1, locj + iw - 1)})
ring1 = box(obj)
ring2 = inbox(obj)
bd = backdrop(obj)
c = canvas(bgc, (h, w))
c = fill(c, inc, bd)
c = fill(c, ringc, ring1 | ring2)
cands = totuple(ring2 - corners(ring2))
numc = unifint(rng, diff_lb, diff_ub, (1, len(cands) // 2))
locs = rng.sample(cands, numc)
gi = fill(c, inc, locs)
lm = lowermost(ring2)
hori = sfilter(locs, lambda ij: ij[0] > loci + 1 and ij[0] < lm)
verti = difference(locs, hori)
hlines = mapply(hfrontier, hori)
vlines = mapply(vfrontier, verti)
fulllocs = set(hlines) | set(vlines)
topaintinc = fulllocs & ofcolor(c, bgc)
topaintringc = fulllocs & ofcolor(c, inc)
go = fill(c, inc, topaintinc)
go = fill(go, ringc, topaintringc)
return {"input": gi, "output": go}
def generate_c444b776(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (2, 9))
w = unifint(rng, diff_lb, diff_ub, (2, 9))
nh = unifint(rng, diff_lb, diff_ub, (1, 3))
nw = unifint(rng, diff_lb, diff_ub, (1 if nh > 1 else 2, 3))
bgclinc = rng.sample(cols, 2)
bgc, linc = bgclinc
remcols = difference(cols, bgclinc)
fullh = h * nh + (nh - 1)
fullw = w * nw + (nw - 1)
c = canvas(linc, (fullh, fullw))
smallc = canvas(bgc, (h, w))
inds = totuple(asindices(smallc))
numcol = unifint(rng, diff_lb, diff_ub, (1, 8))
ccols = rng.sample(remcols, numcol)
numcels = unifint(rng, diff_lb, diff_ub, (1, (h * w) // 2))
cels = rng.sample(inds, numcels)
obj = {(rng.choice(ccols), ij) for ij in cels}
smallcpainted = paint(smallc, obj)
llocs = set()
for a in range(0, fullh, h + 1):
for b in range(0, fullw, w + 1):
llocs.add((a, b))
llocs = tuple(llocs)
srcloc = rng.choice(llocs)
obj = asobject(smallcpainted)
gi = paint(c, shift(obj, srcloc))
remlocs = remove(srcloc, llocs)
bobj = asobject(smallc)
for rl in remlocs:
gi = paint(gi, shift(bobj, rl))
go = tuple(e for e in gi)
for rl in remlocs:
go = paint(go, shift(obj, rl))
return {"input": gi, "output": go}
def generate_97999447(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(5, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (3, 30))
w = unifint(rng, diff_lb, diff_ub, (3, 30))
opts = interval(0, h, 1)
num = unifint(rng, diff_lb, diff_ub, (1, h))
locs = rng.sample(opts, num)
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
numc = unifint(rng, diff_lb, diff_ub, (1, 8))
ccols = rng.sample(remcols, numc)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
for idx in locs:
col = rng.choice(ccols)
j = rng.randint(0, w - 1)
dot = (idx, j)
gi = fill(gi, col, {dot})
go = fill(go, col, {(idx, x) for x in range(j, w, 2)})
go = fill(go, 5, {(idx, x) for x in range(j + 1, w, 2)})
return {"input": gi, "output": go}
def generate_d89b689b(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(5, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (4, 30))
w = unifint(rng, diff_lb, diff_ub, (4, 30))
bgc, sqc, a, b, c, d = rng.sample(cols, 6)
loci = rng.randint(1, h - 3)
locj = rng.randint(1, w - 3)
canv = canvas(bgc, (h, w))
go = fill(canv, a, {(loci, locj)})
go = fill(go, b, {(loci, locj + 1)})
go = fill(go, c, {(loci + 1, locj)})
go = fill(go, d, {(loci + 1, locj + 1)})
inds = totuple(asindices(canv))
aopts = sfilter(inds, lambda ij: ij[0] < loci and ij[1] < locj)
bopts = sfilter(inds, lambda ij: ij[0] < loci and ij[1] > locj + 1)
copts = sfilter(inds, lambda ij: ij[0] > loci + 1 and ij[1] < locj)
dopts = sfilter(inds, lambda ij: ij[0] > loci + 1 and ij[1] > locj + 1)
aopts = order(aopts, lambda ij: manhattan({ij}, {(loci, locj)}))
bopts = order(bopts, lambda ij: manhattan({ij}, {(loci, locj + 1)}))
copts = order(copts, lambda ij: manhattan({ij}, {(loci + 1, locj)}))
dopts = order(dopts, lambda ij: manhattan({ij}, {(loci + 1, locj + 1)}))
aidx = unifint(rng, diff_lb, diff_ub, (0, len(aopts) - 1))
bidx = unifint(rng, diff_lb, diff_ub, (0, len(bopts) - 1))
cidx = unifint(rng, diff_lb, diff_ub, (0, len(copts) - 1))
didx = unifint(rng, diff_lb, diff_ub, (0, len(dopts) - 1))
loca = aopts[aidx]
locb = bopts[bidx]
locc = copts[cidx]
locd = dopts[didx]
gi = fill(canv, sqc, backdrop({(loci, locj), (loci + 1, locj + 1)}))
gi = fill(gi, a, {loca})
gi = fill(gi, b, {locb})
gi = fill(gi, c, {locc})
gi = fill(gi, d, {locd})
return {"input": gi, "output": go}
def generate_543a7ed5(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = difference(interval(0, 10, 1), (3, 4))
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
numc = unifint(rng, diff_lb, diff_ub, (1, 7))
ccols = rng.sample(remcols, numc)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
num = unifint(rng, diff_lb, diff_ub, (1, (h * w) // 25))
indss = asindices(gi)
maxtrials = 4 * num
tr = 0
succ = 0
while succ < num and tr <= maxtrials:
if len(indss) == 0:
break
oh = rng.randint(4, 8)
ow = rng.randint(4, 8)
subs = totuple(sfilter(indss, lambda ij: ij[0] < h - oh and ij[1] < w - ow))
if len(subs) == 0:
tr += 1
continue
loci, locj = rng.choice(subs)
obj = frozenset({(loci, locj), (loci + oh - 1, locj + ow - 1)})
bd = backdrop(obj)
col = rng.choice(ccols)
if bd.issubset(indss):
bdibd = backdrop(frozenset({(loci + 1, locj + 1), (loci + oh - 2, locj + ow - 2)}))
go = fill(go, col, bdibd)
go = fill(go, 3, box(bd))
gi = fill(gi, col, bdibd)
if oh > 5 and ow > 5 and rng.randint(1, 10) != 1:
ulci, ulcj = ulcorner(bdibd)
lrci, lrcj = lrcorner(bdibd)
aa = rng.randint(ulci + 1, lrci - 1)
aa = rng.randint(ulci + 1, aa)
bb = rng.randint(ulcj + 1, lrcj - 1)
bb = rng.randint(ulcj + 1, bb)
cc = rng.randint(aa, lrci - 1)
dd = rng.randint(bb, lrcj - 1)
cc = rng.randint(cc, lrci - 1)
dd = rng.randint(dd, lrcj - 1)
ins = backdrop({(aa, bb), (cc, dd)})
go = fill(go, 4, ins)
gi = fill(gi, bgc, ins)
succ += 1
indss = indss - bd
tr += 1
return {"input": gi, "output": go}
def generate_a2fd1cf0(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = difference(interval(0, 10, 1), (2, 3, 8))
h = unifint(rng, diff_lb, diff_ub, (4, 30))
w = unifint(rng, diff_lb, diff_ub, (4, 30))
gloci = unifint(rng, diff_lb, diff_ub, (1, h - 1))
glocj = unifint(rng, diff_lb, diff_ub, (1, w - 1))
gloc = (gloci, glocj)
bgc = rng.choice(cols)
g = canvas(bgc, (h, w))
g = fill(g, 3, {gloc})
g = rot180(g)
glocinv = center(ofcolor(g, 3))
glocinvi, glocinvj = glocinv
rloci = unifint(rng, diff_lb, diff_ub, (glocinvi + 1, h - 1))
rlocj = unifint(rng, diff_lb, diff_ub, (glocinvj + 1, w - 1))
rlocinv = (rloci, rlocj)
g = fill(g, 2, {rlocinv})
rotf = rng.choice((identity, rot90, rot180, rot270))
gi = rotf(g)
a, b = center(ofcolor(gi, 2))
c, d = center(ofcolor(gi, 3))
go = fill(gi, 8, connect((a, b), (a, d)))
go = fill(go, 8, connect((a, d), (c, d)))
go = fill(go, 2, {(a, b)})
go = fill(go, 3, {(c, d)})
return {"input": gi, "output": go}
def generate_cdecee7f(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (3, 30))
w = unifint(rng, diff_lb, diff_ub, (3, 30))
numc = unifint(rng, diff_lb, diff_ub, (1, min(9, w)))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
numcols = unifint(rng, diff_lb, diff_ub, (1, 9))
ccols = rng.sample(remcols, numcols)
inds = interval(0, w, 1)
locs = rng.sample(inds, numc)
locs = order(locs, identity)
gi = canvas(bgc, (h, w))
go = []
for j in locs:
iloc = rng.randint(0, h - 1)
col = rng.choice(ccols)
gi = fill(gi, col, {(iloc, j)})
go.append(col)
go = go + [bgc] * (9 - len(go))
go = tuple(go)
go = tuple([go[:3], go[3:6][::-1], go[6:]])
return {"input": gi, "output": go}
def generate_0962bcdd(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = difference(interval(0, 10, 1), (3, 4))
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
numc = unifint(rng, diff_lb, diff_ub, (2, 7))
ccols = rng.sample(remcols, numc)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
num = unifint(rng, diff_lb, diff_ub, (1, (h * w) // 25))
indss = asindices(gi)
maxtrials = 4 * num
tr = 0
succ = 0
oh, ow = 5, 5
subs = totuple(sfilter(indss, lambda ij: ij[0] < h - oh and ij[1] < w - ow))
while succ < num and tr <= maxtrials:
if len(indss) == 0:
break
if len(subs) == 0:
tr += 1
continue
loci, locj = rng.choice(subs)
obj = frozenset({(loci, locj), (loci + 4, locj + 4)})
bd = backdrop(obj)
col = rng.choice(ccols)
if bd.issubset(indss):
ca, cb = rng.sample(ccols, 2)
cp = (loci + 2, locj + 2)
lins1 = connect((loci, locj), (loci + 4, locj + 4))
lins2 = connect((loci + 4, locj), (loci, locj + 4))
lins12 = lins1 | lins2
lins3 = connect((loci + 2, locj), (loci + 2, locj + 4))
lins4 = connect((loci, locj + 2), (loci + 4, locj + 2))
lins34 = lins3 | lins4
go = fill(go, cb, lins34)
go = fill(go, ca, lins12)
gi = fill(gi, ca, {cp})
gi = fill(gi, cb, dneighbors(cp))
succ += 1
indss = indss - bd
tr += 1
return {"input": gi, "output": go}
def generate_dc0a314f(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(3, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (3, 15))
w = h
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
numcols = unifint(rng, diff_lb, diff_ub, (1, 8))
remcols = rng.sample(remcols, numcols)
canv = canvas(bgc, (h, w))
nc = unifint(rng, diff_lb, diff_ub, (1, h * w))
bx = asindices(canv)
obj = {(rng.choice(remcols), rng.choice(totuple(bx)))}
for kk in range(nc - 1):
dns = mapply(neighbors, toindices(obj))
ch = rng.choice(totuple(bx & dns))
obj.add((rng.choice(remcols), ch))
bx = bx - {ch}
gi = paint(canv, obj)
tr = sfilter(asobject(dmirror(gi)), lambda cij: cij[1][1] >= cij[1][0])
gi = paint(gi, tr)
gi = hconcat(gi, vmirror(gi))
gi = vconcat(gi, hmirror(gi))
locidev = unifint(rng, diff_lb, diff_ub, (1, 2 * h))
locjdev = unifint(rng, diff_lb, diff_ub, (1, w))
loci = 2 * h - locidev
locj = w - locjdev
loci2 = unifint(rng, diff_lb, diff_ub, (loci, 2 * h - 1))
locj2 = unifint(rng, diff_lb, diff_ub, (locj, w - 1))
bd = backdrop(frozenset({(loci, locj), (loci2, locj2)}))
go = subgrid(bd, gi)
gi = fill(gi, 3, bd)
rotf = rng.choice((identity, rot90, rot180, rot270))
gi = rotf(gi)
go = rotf(go)
return {"input": gi, "output": go}
def generate_29623171(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (2, 6))
w = unifint(rng, diff_lb, diff_ub, (2, 6))
nh = unifint(rng, diff_lb, diff_ub, (2, 4))
nw = unifint(rng, diff_lb, diff_ub, (2, 4))
bgc, linc, fgc = rng.sample(cols, 3)
fullh = h * nh + (nh - 1)
fullw = w * nw + (nw - 1)
c = canvas(linc, (fullh, fullw))
smallc = canvas(bgc, (h, w))
inds = totuple(asindices(smallc))
llocs = set()
for a in range(0, fullh, h + 1):
for b in range(0, fullw, w + 1):
llocs.add((a, b))
llocs = tuple(llocs)
srcloc = rng.choice(llocs)
nmostc = unifint(rng, diff_lb, diff_ub, (1, (h * w) // 2 - 1))
mostc = rng.sample(inds, nmostc)
srcg = fill(smallc, fgc, mostc)
obj = asobject(srcg)
shftd = shift(obj, srcloc)
gi = paint(c, shftd)
go = fill(c, fgc, shftd)
remlocs = remove(srcloc, llocs)
gg = asobject(fill(smallc, bgc, inds))
for rl in remlocs:
noth = unifint(rng, diff_lb, diff_ub, (0, nmostc))
otherg = fill(smallc, fgc, rng.sample(inds, noth))
gi = paint(gi, shift(asobject(otherg), rl))
if noth == nmostc:
go = fill(go, fgc, shift(obj, rl))
else:
go = paint(go, shift(gg, rl))
return {"input": gi, "output": go}
def generate_d4a91cb9(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = difference(interval(0, 10, 1), (2, 4, 8))
h = unifint(rng, diff_lb, diff_ub, (4, 30))
w = unifint(rng, diff_lb, diff_ub, (4, 30))
gloci = unifint(rng, diff_lb, diff_ub, (1, h - 1))
glocj = unifint(rng, diff_lb, diff_ub, (1, w - 1))
gloc = (gloci, glocj)
bgc = rng.choice(cols)
g = canvas(bgc, (h, w))
g = fill(g, 8, {gloc})
g = rot180(g)
glocinv = center(ofcolor(g, 8))
glocinvi, glocinvj = glocinv
rloci = unifint(rng, diff_lb, diff_ub, (glocinvi + 1, h - 1))
rlocj = unifint(rng, diff_lb, diff_ub, (glocinvj + 1, w - 1))
rlocinv = (rloci, rlocj)
g = fill(g, 2, {rlocinv})
rotf = rng.choice((identity, rot90, rot180, rot270))
gi = rotf(g)
a, b = center(ofcolor(gi, 2))
c, d = center(ofcolor(gi, 8))
go = fill(gi, 4, connect((a, b), (a, d)))
go = fill(go, 4, connect((a, d), (c, d)))
go = fill(go, 2, {(a, b)})
go = fill(go, 8, {(c, d)})
return {"input": gi, "output": go}
def generate_60b61512(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(7, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
numcols = unifint(rng, diff_lb, diff_ub, (1, 8))
ccols = rng.sample(remcols, numcols)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
num = unifint(rng, diff_lb, diff_ub, (1, (h * w) // 20))
indss = asindices(gi)
maxtrials = 4 * num
tr = 0
succ = 0
while succ < num and tr <= maxtrials:
if len(indss) == 0:
break
oh = rng.randint(2, 7)
ow = rng.randint(2, 7)
subs = totuple(sfilter(indss, lambda ij: ij[0] < h - oh and ij[1] < w - ow))
if len(subs) == 0:
tr += 1
continue
loci, locj = rng.choice(subs)
indsss = asindices(canvas(-1, (oh, ow)))
chch = rng.choice(totuple(indsss))
obj = {chch}
indsss = remove(chch, indsss)
numcd = unifint(rng, diff_lb, diff_ub, (0, (oh * ow) // 2))
numc = rng.choice((numcd, oh * ow - numcd))
numc = min(max(2, numc), oh * ow - 1)
for k in range(numc):
obj.add(rng.choice(totuple(indsss & mapply(neighbors, obj))))
indsss = indsss - obj
oh, ow = shape(obj)
obj = shift(obj, (loci, locj))
bd = backdrop(obj)
col = rng.choice(ccols)
if bd.issubset(indss):
gi = fill(gi, col, obj)
go = fill(go, 7, bd)
go = fill(go, col, obj)
succ += 1
indss = (indss - bd) - outbox(bd)
tr += 1
return {"input": gi, "output": go}
def generate_4938f0c2(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (10, 31))
w = unifint(rng, diff_lb, diff_ub, (10, 31))
oh = unifint(rng, diff_lb, diff_ub, (2, (h - 3) // 2))
ow = unifint(rng, diff_lb, diff_ub, (2, (w - 3) // 2))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
cc = rng.choice(remcols)
remcols = remove(cc, remcols)
objc = rng.choice(remcols)
sg = canvas(bgc, (oh, ow))
locc = (oh - 1, ow - 1)
sg = fill(sg, cc, {locc})
reminds = totuple(remove(locc, asindices(sg)))
ncells = unifint(rng, diff_lb, diff_ub, (1, max(1, int((2 / 3) * oh * ow))))
cells = rng.sample(reminds, ncells)
while ncells == 4 and shape(cells) == (2, 2):
ncells = unifint(rng, diff_lb, diff_ub, (1, max(1, int((2 / 3) * oh * ow))))
cells = rng.sample(reminds, ncells)
sg = fill(sg, objc, cells)
G1 = sg
G2 = vmirror(sg)
G3 = hmirror(sg)
G4 = vmirror(hmirror(sg))
vbar = canvas(bgc, (oh, 1))
hbar = canvas(bgc, (1, ow))
cp = canvas(cc, (1, 1))
topg = hconcat(hconcat(G1, vbar), G2)
botg = hconcat(hconcat(G3, vbar), G4)
ggm = hconcat(hconcat(hbar, cp), hbar)
GG = vconcat(vconcat(topg, ggm), botg)
gg = asobject(GG)
canv = canvas(bgc, (h, w))
loci = rng.randint(0, h - 2 * oh - 1)
locj = rng.randint(0, w - 2 * ow - 1)
loc = (loci, locj)
go = paint(canv, shift(gg, loc))
gi = paint(canv, shift(asobject(sg), loc))
gi = fill(gi, cc, ofcolor(go, cc))
rotf = rng.choice((identity, rot90, rot180, rot270))
gi = rotf(gi)
go = rotf(go)
ccpi, ccpj = center(ofcolor(gi, cc))
gi = gi[:ccpi] + gi[ccpi + 1 :]
gi = tuple(r[:ccpj] + r[ccpj + 1 :] for r in gi)
go = go[:ccpi] + go[ccpi + 1 :]
go = tuple(r[:ccpj] + r[ccpj + 1 :] for r in go)
return {"input": gi, "output": go}
def generate_a8d7556c(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = difference(interval(0, 10, 1), (0, 2))
h = unifint(rng, diff_lb, diff_ub, (6, 30))
w = unifint(rng, diff_lb, diff_ub, (6, 30))
fgc = rng.choice(cols)
c = canvas(fgc, (h, w))
numblacks = unifint(rng, diff_lb, diff_ub, (1, (h * w) // 3 * 2))
inds = totuple(asindices(c))
blacks = rng.sample(inds, numblacks)
gi = fill(c, 0, blacks)
numsq = unifint(rng, diff_lb, diff_ub, (1, (h * w) // 10))
sqlocs = rng.sample(inds, numsq)
gi = fill(gi, 0, shift(sqlocs, (0, 0)))
gi = fill(gi, 0, shift(sqlocs, (0, 1)))
gi = fill(gi, 0, shift(sqlocs, (1, 0)))
gi = fill(gi, 0, shift(sqlocs, (1, 1)))
go = tuple(e for e in gi)
for a in range(h - 1):
for b in range(w - 1):
if gi[a][b] == 0 and gi[a + 1][b] == 0 and gi[a][b + 1] == 0 and gi[a + 1][b + 1] == 0:
go = fill(go, 2, {(a, b), (a + 1, b), (a, b + 1), (a + 1, b + 1)})
return {"input": gi, "output": go}
def generate_007bbfb7(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(1, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (2, 5))
w = unifint(rng, diff_lb, diff_ub, (2, 5))
c = canvas(0, (h, w))
numcd = unifint(rng, diff_lb, diff_ub, (0, (h * w) // 2))
numc = rng.choice((numcd, h * w - numcd))
numc = min(max(1, numc), h * w - 1)
inds = totuple(asindices(c))
locs = rng.sample(inds, numc)
fgc = rng.choice(cols)
gi = fill(c, fgc, locs)
go = canvas(0, (h**2, w**2))
for loc in locs:
go = fill(go, fgc, shift(locs, multiply(loc, (h, w))))
return {"input": gi, "output": go}
def generate_b190f7f5(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
fullcols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (2, 5))
w = unifint(rng, diff_lb, diff_ub, (2, 5))
bgc = rng.choice(fullcols)
cols = remove(bgc, fullcols)
c = canvas(bgc, (h, w))
numcd = unifint(rng, diff_lb, diff_ub, (0, (h * w) // 2))
numc = rng.choice((numcd, h * w - numcd))
numc = min(max(1, numc), h * w - 1)
numcd2 = unifint(rng, diff_lb, diff_ub, (0, (h * w) // 2))
numc2 = rng.choice((numcd2, h * w - numcd2))
numc2 = min(max(2, numc2), h * w - 1)
inds = totuple(asindices(c))
srclocs = rng.sample(inds, numc)
srccol = rng.choice(cols)
remcols = remove(srccol, cols)
numcols = unifint(rng, diff_lb, diff_ub, (2, 8))
trglocs = rng.sample(inds, numc2)
ccols = rng.sample(remcols, numcols)
fixc1 = rng.choice(ccols)
trgobj = [(fixc1, trglocs[0]), (rng.choice(remove(fixc1, ccols)), trglocs[1])] + [
(rng.choice(ccols), ij) for ij in trglocs[2:]
]
trgobj = frozenset(trgobj)
gisrc = fill(c, srccol, srclocs)
gitrg = paint(c, trgobj)
catf = rng.choice((hconcat, vconcat))
ordd = rng.choice(([gisrc, gitrg], [gitrg, gisrc]))
gi = catf(*ordd)
go = canvas(bgc, (h**2, w**2))
for loc in trglocs:
a, b = loc
go = fill(go, gitrg[a][b], shift(srclocs, multiply(loc, (h, w))))
return {"input": gi, "output": go}
def generate_2bcee788(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(3, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (2, 20))
w = unifint(rng, diff_lb, diff_ub, (2, 10))
bgc, sepc, objc = rng.sample(cols, 3)
c = canvas(bgc, (h, w))
inds = totuple(asindices(c))
spi = rng.randint(0, h - 1)
sp = (spi, w - 1)
shp = {sp}
numcellsd = unifint(rng, diff_lb, diff_ub, (0, (h * w) // 2))
numc = rng.choice((numcellsd, h * w - numcellsd))
numc = min(max(2, numc), h * w - 1)
reminds = set(remove(sp, inds))
for k in range(numc):
shp.add(rng.choice(totuple((reminds - shp) & mapply(neighbors, shp))))
while width(shp) == 1:
shp.add(rng.choice(totuple((reminds - shp) & mapply(neighbors, shp))))
c2 = fill(c, objc, shp)
borderinds = sfilter(shp, lambda ij: ij[1] == w - 1)
c3 = fill(c, sepc, borderinds)
gimini = asobject(hconcat(c2, vmirror(c3)))
gomini = asobject(hconcat(c2, vmirror(c2)))
fullh = unifint(rng, diff_lb, diff_ub, (h + 1, 30))
fullw = unifint(rng, diff_lb, diff_ub, (2 * w + 1, 30))
fullg = canvas(bgc, (fullh, fullw))
loci = rng.randint(0, fullh - h)
locj = rng.randint(0, fullw - 2 * w)
loc = (loci, locj)
gi = paint(fullg, gimini)
go = paint(fullg, gomini)
mfs = (identity, dmirror, cmirror, vmirror, hmirror, rot90, rot180, rot270)
nmfs = rng.choice((1, 2))
for fn in rng.sample(mfs, nmfs):
gi = fn(gi)
go = fn(go)
go = replace(go, bgc, 3)
return {"input": gi, "output": go}
def generate_a3df8b1e(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
w = unifint(rng, diff_lb, diff_ub, (2, 10))
h = unifint(rng, diff_lb, diff_ub, (w + 1, 30))
bgc, linc = rng.sample(cols, 2)
c = canvas(bgc, (h, w))
sp = (h - 1, 0)
gi = fill(c, linc, {sp})
go = tuple(e for e in gi)
changing = True
direc = 1
while True:
sp = add(sp, (-1, direc))
if sp[1] == w - 1 or sp[1] == 0:
direc *= -1
go2 = fill(go, linc, {sp})
if go2 == go:
break
go = go2
mfs = (identity, dmirror, cmirror, vmirror, hmirror, rot90, rot180, rot270)
nmfs = rng.choice((1, 2))
for fn in rng.sample(mfs, nmfs):
gi = fn(gi)
go = fn(go)
gix = tuple(e for e in gi)
gox = tuple(e for e in go)
numlins = unifint(rng, diff_lb, diff_ub, (1, 4))
if numlins > 1:
gi = fill(gi, linc, ofcolor(hmirror(gix), linc))
go = fill(go, linc, ofcolor(hmirror(gox), linc))
if numlins > 2:
gi = fill(gi, linc, ofcolor(vmirror(gix), linc))
go = fill(go, linc, ofcolor(vmirror(gox), linc))
if numlins > 3:
gi = fill(gi, linc, ofcolor(hmirror(vmirror(gix)), linc))
go = fill(go, linc, ofcolor(hmirror(vmirror(gox)), linc))
return {"input": gi, "output": go}
def generate_80af3007(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
fullcols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (2, 5))
w = unifint(rng, diff_lb, diff_ub, (2, 5))
bgc = rng.choice(fullcols)
cols = remove(bgc, fullcols)
c = canvas(bgc, (h, w))
numcd = unifint(rng, diff_lb, diff_ub, (0, (h * w) // 2))
numc = rng.choice((numcd, h * w - numcd))
numc = min(max(0, numc), h * w)
inds = totuple(asindices(c))
locs = tuple(set(rng.sample(inds, numc)) | set(rng.sample(totuple(corners(inds)), 3)))
fgc = rng.choice(cols)
gi = fill(c, fgc, locs)
go = canvas(bgc, (h**2, w**2))
for loc in locs:
go = fill(go, fgc, shift(locs, multiply(loc, (h, w))))
fullh = unifint(rng, diff_lb, diff_ub, (h**2 + 2, 30))
fullw = unifint(rng, diff_lb, diff_ub, (w**2 + 2, 30))
fullg = canvas(bgc, (fullh, fullw))
loci = rng.randint(1, fullh - h**2 - 1)
locj = rng.randint(1, fullw - w**2 - 1)
loc = (loci, locj)
giups = hupscale(vupscale(gi, h), w)
gi = paint(fullg, shift(asobject(giups), loc))
return {"input": gi, "output": go}
def generate_e50d258f(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(2, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
padcol = rng.choice(remcols)
remcols = remove(padcol, remcols)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
num = unifint(rng, diff_lb, diff_ub, (1, 10))
indss = asindices(gi)
maxtrials = 4 * num
tr = 0
succ = 0
bound = None
go = None
while succ < num and tr <= maxtrials:
if len(remcols) == 0 or len(indss) == 0:
break
oh = rng.randint(3, 8)
ow = rng.randint(3, 8)
subs = totuple(sfilter(indss, lambda ij: ij[0] < h - oh and ij[1] < w - ow))
if len(subs) == 0:
tr += 1
continue
loci, locj = rng.choice(subs)
obj = frozenset({(loci, locj), (loci + oh - 1, locj + ow - 1)})
bd = backdrop(obj)
if bd.issubset(indss):
numcc = unifint(rng, diff_lb, diff_ub, (1, 7))
ccols = rng.sample(remcols, numcc)
if succ == 0:
numred = unifint(rng, diff_lb, diff_ub, (1, oh * ow))
bound = numred
else:
numred = unifint(rng, diff_lb, diff_ub, (0, min(oh * ow, bound - 1)))
cc = canvas(rng.choice(ccols), (oh, ow))
cci = asindices(cc)
subs = rng.sample(totuple(cci), numred)
obj1 = {(rng.choice(ccols), ij) for ij in cci - set(subs)}
obj2 = {(2, ij) for ij in subs}
obj = obj1 | obj2
gi = paint(gi, shift(obj, (loci, locj)))
if go is None:
go = paint(cc, obj)
succ += 1
indss = (indss - bd) - outbox(bd)
tr += 1
return {"input": gi, "output": go}
def generate_0e206a2e(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
bgc, acol, bcol, ccol, Dcol = rng.sample(cols, 5)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
inds = asindices(gi)
nsrcs = unifint(rng, diff_lb, diff_ub, (1, min(h, w) // 5))
srcs = []
abclist = []
maxtrforsrc = 5 * nsrcs
trforsrc = 0
srcsucc = 0
while trforsrc < maxtrforsrc and srcsucc < nsrcs:
trforsrc += 1
objsize = unifint(rng, diff_lb, diff_ub, (5, 20))
bb = asindices(canvas(-1, (7, 7)))
sp = rng.choice(totuple(bb))
bb = remove(sp, bb)
shp = {sp}
for k in range(objsize - 1):
shp.add(rng.choice(totuple((bb - shp) & mapply(dneighbors, shp))))
while 1 in shape(shp):
shp.add(rng.choice(totuple((bb - shp) & mapply(dneighbors, shp))))
while len(set([x - y for x, y in shp])) == 1 or len(set([x + y for x, y in shp])) == 1:
shp.add(rng.choice(totuple((bb - shp) & mapply(dneighbors, shp))))
shp = normalize(shp)
shp = list(shp)
rng.shuffle(shp)
a, b, c = shp[:3]
while 1 in shape({a, b, c}) or (
len(set([x - y for x, y in {a, b, c}])) == 1 or len(set([x + y for x, y in {a, b, c}])) == 1
):
rng.shuffle(shp)
a, b, c = shp[:3]
if sorted(shape({a, b, c})) in abclist:
continue
D = shp[3:]
markers = {(acol, a), (bcol, b), (ccol, c)}
obj = markers | {(Dcol, ij) for ij in D}
obj = frozenset(obj)
oh, ow = shape(obj)
opts = sfilter(inds, lambda ij: shift(set(shp), ij).issubset(inds))
if len(opts) == 0:
continue
loc = rng.choice(totuple(opts))
srcsucc += 1
gi = paint(gi, shift(obj, loc))
shpplcd = shift(set(shp), loc)
go = fill(go, -1, shpplcd)
inds = (inds - shpplcd) - mapply(neighbors, shpplcd)
srcs.append((obj, markers))
abclist.append(sorted(shape({a, b, c})))
num = unifint(rng, diff_lb, diff_ub, (1, (h * w) // 30))
maxtrials = 10 * num
tr = 0
succ = 0
while succ < num and tr < maxtrials:
mfs = (identity, dmirror, cmirror, vmirror, hmirror, rot90, rot180, rot270)
fn = rng.choice(mfs)
gi = fn(gi)
go = fn(go)
aigo = asindices(go)
fullinds = ofcolor(go, bgc) - mapply(neighbors, aigo - ofcolor(go, bgc))
obj, markers = rng.choice(srcs)
shp = toindices(obj)
if len(fullinds) == 0:
break
loctr = rng.choice(totuple(fullinds))
xx = shift(shp, loctr)
if xx.issubset(fullinds):
succ += 1
gi = paint(gi, shift(markers, loctr))
go = paint(go, shift(obj, loctr))
tr += 1
go = replace(go, -1, bgc)
return {"input": gi, "output": go}
def generate_b230c067(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = difference(interval(0, 10, 1), (1, 2))
while True:
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
oh = unifint(rng, diff_lb, diff_ub, (2, h // 3 - 1))
ow = unifint(rng, diff_lb, diff_ub, (2, w // 3 - 1))
numcd = unifint(rng, diff_lb, diff_ub, (0, (oh * ow) // 2))
numc = rng.choice((numcd, oh * ow - numcd))
numca = min(max(2, numc), oh * ow - 2)
bounds = asindices(canvas(-1, (oh, ow)))
sp = rng.choice(totuple(bounds))
shp = {sp}
for k in range(numca):
ij = rng.choice(totuple((bounds - shp) & mapply(neighbors, shp)))
shp.add(ij)
shpa = normalize(shp)
shpb = set(normalize(shp))
mxnch = oh * ow - len(shpa)
nchinv = unifint(rng, diff_lb, diff_ub, (1, mxnch))
nch = mxnch - nchinv
nch = min(max(1, nch), mxnch)
for k in range(nch):
ij = rng.choice(totuple((bounds - shpb) & mapply(neighbors, shpb)))
shpb.add(ij)
if rng.choice((True, False)):
shpa, shpb = shpb, shpa
bgc, fgc = rng.sample(cols, 2)
c = canvas(bgc, (h, w))
inds = asindices(c)
acands = sfilter(inds, lambda ij: ij[0] <= h - height(shpa) and ij[1] <= w - width(shpa))
aloc = rng.choice(totuple(acands))
aplcd = shift(shpa, aloc)
gi = fill(c, fgc, aplcd)
go = fill(c, 2, aplcd)
maxtrials = 10
tr = 0
succ = 0
inds = (inds - aplcd) - mapply(neighbors, aplcd)
inds = sfilter(inds, lambda ij: ij[0] <= h - height(shpb) and ij[1] <= w - width(shpb))
while succ < 2 and tr <= maxtrials:
if len(inds) == 0:
break
loc = rng.choice(totuple(inds))
plcbd = shift(shpb, loc)
if plcbd.issubset(inds):
gi = fill(gi, fgc, plcbd)
go = fill(go, 1, plcbd)
succ += 1
inds = (inds - plcbd) - mapply(neighbors, plcbd)
tr += 1
if succ == 2:
break
return {"input": gi, "output": go}
def generate_db93a21d(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = difference(interval(0, 10, 1), (1, 3))
h = unifint(rng, diff_lb, diff_ub, (12, 31))
w = unifint(rng, diff_lb, diff_ub, (12, 32))
num = unifint(rng, diff_lb, diff_ub, (1, (h * w) // 25))
bgc, fgc = rng.sample(cols, 2)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
indss = asindices(gi)
maxtrials = 4 * num
tr = 0
succ = 0
while succ < num and tr <= maxtrials:
if len(indss) == 0:
break
oh = rng.randint(1, h // 4)
ow = oh
fullh = 4 * oh
fullw = 4 * ow
subs = totuple(sfilter(indss, lambda ij: ij[0] < h - fullh and ij[1] < w - fullw))
if len(subs) == 0:
tr += 1
continue
loci, locj = rng.choice(subs)
bigobj = backdrop(frozenset({(loci, locj), (loci + fullh - 1, locj + fullw - 1)}))
smallobj = backdrop(frozenset({(loci + oh, locj + ow), (loci + fullh - 1 - oh, locj + fullw - 1 - ow)}))
if bigobj.issubset(indss | ofcolor(go, 3)):
gi = fill(gi, fgc, smallobj)
go = fill(go, 3, bigobj)
go = fill(go, fgc, smallobj)
strp = mapply(rbind(shoot, (1, 0)), connect(lrcorner(smallobj), llcorner(smallobj)))
go = fill(go, 1, ofcolor(go, bgc) & strp)
succ += 1
indss = indss - bigobj
tr += 1
gi = gi[1:]
go = go[1:]
gi = tuple(r[1:-1] for r in gi)
go = tuple(r[1:-1] for r in go)
return {"input": gi, "output": go}
def generate_1e32b0e9(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (4, 6))
w = unifint(rng, diff_lb, diff_ub, (4, 6))
nh = unifint(rng, diff_lb, diff_ub, (1, 4))
nw = unifint(rng, diff_lb, diff_ub, (1 if nh > 1 else 2, 3))
bgc, linc, fgc = rng.sample(cols, 3)
fullh = h * nh + (nh - 1)
fullw = w * nw + (nw - 1)
c = canvas(linc, (fullh, fullw))
smallc = canvas(bgc, (h, w))
llocs = set()
for a in range(0, fullh, h + 1):
for b in range(0, fullw, w + 1):
llocs.add((a, b))
llocs = tuple(llocs)
srcloc = rng.choice(llocs)
remlocs = remove(srcloc, llocs)
ncells = unifint(rng, diff_lb, diff_ub, (0, (h - 2) * (w - 2) - 1))
smallc2 = canvas(bgc, (h - 2, w - 2))
inds = asindices(smallc2)
sp = rng.choice(totuple(inds))
inds = remove(sp, inds)
shp = {sp}
for j in range(ncells):
ij = rng.choice(totuple((inds - shp) & mapply(neighbors, shp)))
shp.add(ij)
shp = shift(shp, (1, 1))
gg = asobject(fill(smallc, fgc, shp))
gg2 = asobject(fill(smallc, linc, shp))
gi = paint(c, shift(gg, srcloc))
go = tuple(e for e in gi)
ncc = ncells + 1
for rl in remlocs:
nleft = rng.randint(0, ncc)
subobj = rng.sample(totuple(shp), nleft)
sg2 = asobject(fill(smallc, fgc, subobj))
gi = paint(gi, shift(sg2, rl))
go = paint(go, shift(gg2, rl))
go = fill(go, fgc, shift(subobj, rl))
return {"input": gi, "output": go}
def generate_6773b310(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(1, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (2, 5))
w = unifint(rng, diff_lb, diff_ub, (2, 5))
nh = unifint(rng, diff_lb, diff_ub, (2, 5))
nw = unifint(rng, diff_lb, diff_ub, (2, 5))
bgc, linc, fgc = rng.sample(cols, 3)
fullh = h * nh + (nh - 1)
fullw = w * nw + (nw - 1)
c = canvas(linc, (fullh, fullw))
smallc = canvas(bgc, (h, w))
llocs = set()
for a in range(0, fullh, h + 1):
for b in range(0, fullw, w + 1):
llocs.add((a, b))
llocs = tuple(llocs)
nbldev = unifint(rng, diff_lb, diff_ub, (0, (nh * nw) // 2))
nbl = rng.choice((nbldev, nh * nw - nbldev))
nbl = min(max(1, nbl), nh * nw - 1)
bluelocs = rng.sample(llocs, nbl)
bglocs = difference(llocs, bluelocs)
inds = totuple(asindices(smallc))
gi = tuple(e for e in c)
go = canvas(bgc, (nh, nw))
for ij in bluelocs:
subg = asobject(fill(smallc, fgc, rng.sample(inds, 2)))
gi = paint(gi, shift(subg, ij))
a, b = ij
loci = a // (h + 1)
locj = b // (w + 1)
go = fill(go, 1, {(loci, locj)})
for ij in bglocs:
subg = asobject(fill(smallc, fgc, rng.sample(inds, 1)))
gi = paint(gi, shift(subg, ij))
return {"input": gi, "output": go}
def generate_6ecd11f4(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (2, 7))
w = unifint(rng, diff_lb, diff_ub, (2, 7))
bgc, fgc = rng.sample(cols, 2)
remcols = remove(bgc, cols)
ncols = unifint(rng, diff_lb, diff_ub, (2, 9))
ccols = rng.sample(remcols, ncols)
inds = asindices(canvas(bgc, (h, w)))
nlocsd = unifint(rng, diff_lb, diff_ub, (0, (h * w) // 2))
nlocs = rng.choice((nlocsd, h * w - nlocsd))
nlocs = min(max(3, nlocs), h * w - 1)
sp = rng.choice(totuple(inds))
inds = remove(sp, inds)
shp = {sp}
for j in range(nlocs):
ij = rng.choice(totuple((inds - shp) & mapply(neighbors, shp)))
shp.add(ij)
shp = normalize(shp)
h, w = shape(shp)
canv = canvas(bgc, (h, w))
objbase = fill(canv, fgc, shp)
maxhscf = (2 * h + h + 1) // h
maxwscf = (2 * w + w + 1) // w
hscf = unifint(rng, diff_lb, diff_ub, (2, maxhscf))
wscf = unifint(rng, diff_lb, diff_ub, (2, maxwscf))
obj = asobject(hupscale(vupscale(objbase, hscf), wscf))
oh, ow = shape(obj)
inds = asindices(canv)
objx = {(rng.choice(ccols), ij) for ij in inds}
if len(palette(objx)) == 1:
objxodo = first(objx)
objx = insert((rng.choice(remove(objxodo[0], ccols)), objxodo[1]), remove(objxodo, objx))
fullh = unifint(rng, diff_lb, diff_ub, (hscf * h + h + 1, 30))
fullw = unifint(rng, diff_lb, diff_ub, (wscf * w + w + 1, 30))
gi = canvas(bgc, (fullh, fullw))
fullinds = asindices(gi)
while True:
loci = rng.randint(0, fullh - oh)
locj = rng.randint(0, fullw - ow)
loc = (loci, locj)
gix = paint(gi, shift(obj, loc))
ofc = ofcolor(gix, fgc)
delt = fullinds - ofc
delt2 = delt - mapply(neighbors, ofc)
scands = sfilter(delt2, lambda ij: ij[0] <= fullh - oh and ij[1] <= fullw - ow)
if len(scands) == 0:
continue
locc = rng.choice(totuple(scands))
shftd = shift(objx, locc)
if toindices(shftd).issubset(delt2):
gi = paint(gix, shftd)
break
go = paint(canv, objx)
go = fill(go, bgc, ofcolor(objbase, bgc))
return {"input": gi, "output": go}
def generate_8403a5d5(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(5, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (3, 30))
w = unifint(rng, diff_lb, diff_ub, (3, 30))
loccinv = unifint(rng, diff_lb, diff_ub, (1, w - 1))
locc = w - loccinv
bgc, fgc = rng.sample(cols, 2)
c = canvas(bgc, (h, w))
idx = (h - 1, locc)
gi = fill(c, fgc, {idx})
go = canvas(bgc, (h, w))
for j in range(locc, w, 2):
go = fill(go, fgc, connect((0, j), (h - 1, j)))
for j in range(locc + 1, w, 4):
go = fill(go, 5, {(0, j)})
for j in range(locc + 3, w, 4):
go = fill(go, 5, {(h - 1, j)})
return {"input": gi, "output": go}
def generate_941d9a10(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = difference(interval(0, 10, 1), (1, 2, 3))
h = unifint(rng, diff_lb, diff_ub, (5, 30))
w = unifint(rng, diff_lb, diff_ub, (5, 30))
opts = interval(2, (h - 1) // 2 + 1, 2)
nhidx = unifint(rng, diff_lb, diff_ub, (0, len(opts) - 1))
nh = opts[nhidx]
opts = interval(2, (w - 1) // 2 + 1, 2)
nwidx = unifint(rng, diff_lb, diff_ub, (0, len(opts) - 1))
nw = opts[nwidx]
bgc, fgc = rng.sample(cols, 2)
hgrid = canvas(bgc, (2 * nh + 1, w))
for j in range(1, h, 2):
hgrid = fill(hgrid, fgc, connect((j, 0), (j, w)))
for k in range(h - (2 * nh + 1)):
loc = rng.randint(0, height(hgrid) - 1)
hgrid = hgrid[:loc] + canvas(bgc, (1, w)) + hgrid[loc:]
wgrid = canvas(bgc, (2 * nw + 1, h))
for j in range(1, w, 2):
wgrid = fill(wgrid, fgc, connect((j, 0), (j, h)))
for k in range(w - (2 * nw + 1)):
loc = rng.randint(0, height(wgrid) - 1)
wgrid = wgrid[:loc] + canvas(bgc, (1, h)) + wgrid[loc:]
wgrid = dmirror(wgrid)
gi = canvas(bgc, (h, w))
fronts = ofcolor(hgrid, fgc) | ofcolor(wgrid, fgc)
gi = fill(gi, fgc, fronts)
objs = objects(gi, T, T, F)
objs = colorfilter(objs, bgc)
blue = argmin(objs, lambda o: leftmost(o) + uppermost(o))
green = argmax(objs, lambda o: leftmost(o) + uppermost(o))
f1 = lambda o: len(sfilter(objs, lambda o2: leftmost(o2) < leftmost(o))) == len(
sfilter(objs, lambda o2: leftmost(o2) > leftmost(o))
)
f2 = lambda o: len(sfilter(objs, lambda o2: uppermost(o2) < uppermost(o))) == len(
sfilter(objs, lambda o2: uppermost(o2) > uppermost(o))
)
red = extract(objs, lambda o: f1(o) and f2(o))
go = fill(gi, 1, blue)
go = fill(go, 3, green)
go = fill(go, 2, red)
return {"input": gi, "output": go}
def generate_b0c4d837(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (5, 30))
w = unifint(rng, diff_lb, diff_ub, (5, 30))
oh = unifint(rng, diff_lb, diff_ub, (3, h - 1))
ow = unifint(rng, diff_lb, diff_ub, (3, w - 1))
loci = rng.randint(0, h - oh)
locj = rng.randint(0, w - ow)
bgc, boxc, fillc = rng.sample(cols, 3)
subg = canvas(boxc, (oh, ow))
subg2 = canvas(fillc, (oh - 1, ow - 2))
ntofill = unifint(rng, diff_lb, diff_ub, (1, min(9, oh - 2)))
for j in range(ntofill):
subg2 = fill(subg2, bgc, connect((j, 0), (j, ow - 2)))
subg = paint(subg, shift(asobject(subg2), (0, 1)))
gi = canvas(bgc, (h, w))
gi = paint(gi, shift(asobject(subg), (loci, locj)))
go = repeat(fillc, ntofill) + repeat(bgc, 9 - ntofill)
go = (go[:3], go[3:6][::-1], go[6:])
rotf = rng.choice((identity, rot90, rot180, rot270))
gi = rotf(gi)
return {"input": gi, "output": go}
def generate_0a938d79(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (4, 29))
w = unifint(rng, diff_lb, diff_ub, (h + 1, 30))
bgc, cola, colb = rng.sample(cols, 3)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
locja = unifint(rng, diff_lb, diff_ub, (3, w - 2))
locjb = unifint(rng, diff_lb, diff_ub, (1, locja - 2))
locia = rng.choice((0, h - 1))
locib = rng.choice((0, h - 1))
gi = fill(gi, cola, {(locia, locja)})
gi = fill(gi, colb, {(locib, locjb)})
ofs = -2 * (locja - locjb)
for aa in range(locja, -1, ofs):
go = fill(go, cola, connect((0, aa), (h - 1, aa)))
for bb in range(locjb, -1, ofs):
go = fill(go, colb, connect((0, bb), (h - 1, bb)))
rotf = rng.choice((rot180, rot270))
gi = rotf(gi)
go = rotf(go)
return {"input": gi, "output": go}
def generate_b7249182(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (7, 30))
w = unifint(rng, diff_lb, diff_ub, (5, 30))
ih = unifint(rng, diff_lb, diff_ub, (3, (h - 1) // 2))
bgc, ca, cb = rng.sample(cols, 3)
subg = canvas(bgc, (ih, 5))
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
subg = fill(subg, ca, connect((0, 2), (ih - 2, 2)))
subg = fill(subg, ca, connect((ih - 2, 0), (ih - 2, 4)))
subg = fill(subg, ca, {(ih - 1, 0)})
subga = fill(subg, ca, {(ih - 1, 4)})
subgb = replace(subga, ca, cb)
subg = vconcat(subga, hmirror(subgb))
loci = rng.randint(0, h - 2 * ih)
locj = rng.randint(0, w - 5)
obj = asobject(subg)
obj = shift(obj, (loci, locj))
gi = fill(gi, ca, {(loci, locj + 2)})
gi = fill(gi, cb, {(loci + 2 * ih - 1, locj + 2)})
go = paint(go, obj)
if rng.choice((True, False)):
gi = dmirror(gi)
go = dmirror(go)
return {"input": gi, "output": go}
def generate_7b6016b9(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(3, remove(2, interval(0, 10, 1)))
while True:
h = unifint(rng, diff_lb, diff_ub, (5, 30))
w = unifint(rng, diff_lb, diff_ub, (5, 30))
bgc, fgc = rng.sample(cols, 2)
numl = unifint(rng, diff_lb, diff_ub, (4, min(h, w)))
gi = canvas(bgc, (h, w))
jint = interval(0, w, 1)
iint = interval(0, h, 1)
iopts = interval(1, h - 1, 1)
jopts = interval(1, w - 1, 1)
numlh = rng.randint(numl // 3, numl // 3 * 2)
numlw = numl - numlh
for k in range(numlh):
if len(iopts) == 0:
continue
loci = rng.choice(iopts)
iopts = remove(loci, iopts)
iopts = remove(loci + 1, iopts)
iopts = remove(loci - 1, iopts)
a, b = rng.sample(jint, 2)
a = rng.randint(0, a)
b = rng.randint(b, w - 1)
gi = fill(gi, fgc, connect((loci, a), (loci, b)))
for k in range(numlw):
if len(jopts) == 0:
continue
locj = rng.choice(jopts)
jopts = remove(locj, jopts)
jopts = remove(locj + 1, jopts)
jopts = remove(locj - 1, jopts)
a, b = rng.sample(iint, 2)
a = rng.randint(0, a)
b = rng.randint(b, h - 1)
gi = fill(gi, fgc, connect((a, locj), (b, locj)))
objs = objects(gi, T, F, F)
bgobjs = colorfilter(objs, bgc)
tofill = toindices(mfilter(bgobjs, compose(flip, rbind(bordering, gi))))
if len(tofill) > 0:
break
tofix = mapply(neighbors, tofill) - tofill
gi = fill(gi, fgc, tofix)
go = fill(gi, 2, tofill)
go = replace(go, bgc, 3)
return {"input": gi, "output": go}
def generate_72ca375d(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
nobjs = unifint(rng, diff_lb, diff_ub, (1, (h * w) // 25))
srcobjh = unifint(rng, diff_lb, diff_ub, (2, 8))
srcobjwh = unifint(rng, diff_lb, diff_ub, (1, 4))
bnds = asindices(canvas(-1, (srcobjh, srcobjwh)))
spi = rng.randint(0, srcobjh - 1)
sp = (spi, srcobjwh - 1)
srcobj = {sp}
bnds = remove(sp, bnds)
ncellsd = unifint(rng, diff_lb, diff_ub, (0, (srcobjh * srcobjwh) // 2))
ncells1 = rng.choice((ncellsd, srcobjh * srcobjwh - ncellsd))
ncells2 = unifint(rng, diff_lb, diff_ub, (1, srcobjh * srcobjwh))
ncells = (ncells1 + ncells2) // 2
ncells = min(max(1, ncells), srcobjh * srcobjwh, (h * w) // 2 - 1)
for k in range(ncells - 1):
srcobj.add(rng.choice(totuple((bnds - srcobj) & mapply(neighbors, srcobj))))
srcobj = normalize(srcobj)
srcobj = srcobj | shift(vmirror(srcobj), (0, width(srcobj)))
srcobjh, srcobjw = shape(srcobj)
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
trgc = rng.choice(remcols)
go = canvas(bgc, (srcobjh, srcobjw))
go = fill(go, trgc, srcobj)
loci = rng.randint(0, h - srcobjh)
locj = rng.randint(0, w - srcobjw)
locc = (loci, locj)
gi = canvas(bgc, (h, w))
shftd = shift(srcobj, locc)
gi = fill(gi, trgc, shftd)
indss = asindices(gi)
indss = (indss - shftd) - mapply(neighbors, shftd)
maxtrials = 4 * nobjs
tr = 0
succ = 0
remcands = asindices(canvas(-1, (8, 8))) - srcobj
while succ < nobjs and tr <= maxtrials:
if len(indss) == 0:
break
while True:
newobj = {e for e in srcobj}
numperti = unifint(rng, diff_lb, diff_ub, (1, 63))
numpert = 64 - numperti
for np in range(numpert):
isadd = rng.choice((True, False))
if isadd and len(newobj) < 64:
cndds = totuple((remcands - newobj) & mapply(neighbors, newobj))
if len(cndds) == 0:
break
newobj.add(rng.choice(cndds))
if not isadd and len(newobj) > 2:
newobj = remove(rng.choice(totuple(newobj)), newobj)
newobj = normalize(newobj)
a, b = shape(newobj)
cc = canvas(-1, (a + 2, b + 2))
cc2 = compress(fill(cc, -2, shift(newobj, (1, 1))))
newobj = toindices(argmax(colorfilter(objects(cc2, T, T, F), -2), size))
if newobj != vmirror(newobj):
break
col = rng.choice(remcols)
loccands = sfilter(indss, lambda ij: shift(newobj, ij).issubset(indss))
if len(loccands) == 0:
tr += 1
continue
locc = rng.choice(totuple(loccands))
newobj = shift(newobj, locc)
gi = fill(gi, col, newobj)
succ += 1
indss = (indss - newobj) - mapply(neighbors, newobj)
return {"input": gi, "output": go}
def generate_673ef223(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(4, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (5, 30))
w = unifint(rng, diff_lb, diff_ub, (5, 30))
barh = unifint(rng, diff_lb, diff_ub, (2, (h - 1) // 2))
ncells = unifint(rng, diff_lb, diff_ub, (1, barh))
bgc, barc, dotc = rng.sample(cols, 3)
sg = canvas(bgc, (barh, w))
topsgi = fill(sg, barc, connect((0, 0), (barh - 1, 0)))
botsgi = vmirror(topsgi)
topsgo = tuple(e for e in topsgi)
botsgo = tuple(e for e in botsgi)
iloccands = interval(0, barh, 1)
ilocs = rng.sample(iloccands, ncells)
for k in ilocs:
jloc = rng.randint(2, w - 2)
topsgi = fill(topsgi, dotc, {(k, jloc)})
topsgo = fill(topsgo, 4, {(k, jloc)})
topsgo = fill(topsgo, dotc, connect((k, 1), (k, jloc - 1)))
botsgo = fill(botsgo, dotc, connect((k, 0), (k, w - 2)))
outpi = (topsgi, botsgi)
outpo = (topsgo, botsgo)
rr = canvas(bgc, (1, w))
while len(merge(outpi)) < h:
idx = rng.randint(0, len(outpi) - 1)
outpi = outpi[:idx] + (rr,) + outpi[idx:]
outpo = outpo[:idx] + (rr,) + outpo[idx:]
gi = merge(outpi)
go = merge(outpo)
mfs = (identity, dmirror, cmirror, vmirror, hmirror, rot90, rot180, rot270)
nmfs = rng.choice((1, 2))
for fn in rng.sample(mfs, nmfs):
gi = fn(gi)
go = fn(go)
return {"input": gi, "output": go}
def generate_868de0fa(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = difference(interval(0, 10, 1), (2, 7))
h = unifint(rng, diff_lb, diff_ub, (9, 30))
w = unifint(rng, diff_lb, diff_ub, (9, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
num = unifint(rng, diff_lb, diff_ub, (1, 9))
indss = asindices(gi)
maxtrials = 4 * num
tr = 0
succ = 0
while succ < num and tr <= maxtrials:
if len(indss) == 0:
break
oh = rng.randint(3, 8)
ow = oh
subs = totuple(sfilter(indss, lambda ij: ij[0] < h - oh and ij[1] < w - ow))
if len(subs) == 0:
tr += 1
continue
loci, locj = rng.choice(subs)
obj = frozenset({(loci, locj), (loci + oh - 1, locj + ow - 1)})
bd = backdrop(obj)
col = rng.choice(remcols)
if bd.issubset(indss):
gi = fill(gi, col, box(bd))
if oh % 2 == 1:
go = fill(go, 7, bd)
else:
go = fill(go, 2, bd)
go = fill(go, col, box(bd))
succ += 1
indss = (indss - bd) - outbox(bd)
tr += 1
return {"input": gi, "output": go}
def generate_40853293(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (5, 30))
w = unifint(rng, diff_lb, diff_ub, (5, 30))
nlines = unifint(rng, diff_lb, diff_ub, (2, min(8, (h * w) // 2)))
nhorilines = rng.randint(1, nlines - 1)
nvertilines = nlines - nhorilines
ilocs = interval(0, h, 1)
ilocs = rng.sample(ilocs, min(nhorilines, len(ilocs)))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
for ii in ilocs:
llen = unifint(rng, diff_lb, diff_ub, (2, w - 1))
js = rng.randint(0, w - llen)
je = js + llen - 1
a = (ii, js)
b = (ii, je)
hln = connect(a, b)
col = rng.choice(remcols)
remcols = remove(col, remcols)
gi = fill(gi, col, {a, b})
go = fill(go, col, hln)
jlocs = interval(0, w, 1)
gim = dmirror(gi)
jlocs = sfilter(jlocs, lambda j: sum(1 for e in gim[j] if e == bgc) > 1)
nvertilines = min(nvertilines, len(jlocs))
jlocs = rng.sample(jlocs, nvertilines)
for jj in jlocs:
jcands = [idx for idx, e in enumerate(gim[jj]) if e == bgc]
kk = len(jcands)
locopts = interval(0, kk, 1)
llen = unifint(rng, diff_lb, diff_ub, (2, kk))
sp = rng.randint(0, kk - llen)
ep = sp + llen - 1
sp = jcands[sp]
ep = jcands[ep]
a = (sp, jj)
b = (ep, jj)
vln = connect(a, b)
col = rng.choice(remcols)
remcols = remove(col, remcols)
gi = fill(gi, col, {a, b})
go = fill(go, col, vln)
return {"input": gi, "output": go}
def generate_6e19193c(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
dirs = (((0, 0), (-1, -1)), ((0, 1), (-1, 1)), ((1, 0), (1, -1)), ((1, 1), (1, 1)))
base = ((0, 0), (1, 0), (0, 1), (1, 1))
candsi = [set(base) - {dr[0]} for dr in dirs]
candso = [(set(base) | shoot(dr[0], dr[1])) - {dr[0]} for dr in dirs]
cands = list(zip(candsi, candso))
h = unifint(rng, diff_lb, diff_ub, (4, 30))
w = unifint(rng, diff_lb, diff_ub, (4, 30))
num = unifint(rng, diff_lb, diff_ub, (1, (h * w) // 8))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
fullinds = asindices(gi)
inds = asindices(canvas(-1, (h, w)))
kk, tr = 0, 0
maxtrials = num * 4
while kk < num and tr < maxtrials:
if len(inds) == 0:
break
loc = rng.choice(totuple(inds))
obji, objo = rng.choice(cands)
obji = shift(obji, loc)
objo = shift(objo, loc)
objo = objo & fullinds
if objo.issubset(inds) and obji.issubset(objo):
col = rng.choice(remcols)
gi = fill(gi, col, obji)
go = fill(go, col, objo)
inds = (inds - objo) - mapply(dneighbors, obji)
kk += 1
tr += 1
return {"input": gi, "output": go}
def generate_8731374e(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
inh = rng.randint(5, h - 2)
inw = rng.randint(5, w - 2)
bgc, fgc = rng.sample(cols, 2)
num = unifint(rng, diff_lb, diff_ub, (1, min(inh, inw)))
mat = canvas(bgc, (inh - 2, inw - 2))
tol = lambda g: list(list(e) for e in g)
tot = lambda g: tuple(tuple(e) for e in g)
mat = fill(mat, fgc, connect((0, 0), (num - 1, num - 1)))
mat = tol(mat)
rng.shuffle(mat)
mat = tol(dmirror(tot(mat)))
rng.shuffle(mat)
mat = dmirror(tot(mat))
sgi = paint(canvas(bgc, (inh, inw)), shift(asobject(mat), (1, 1)))
inds = ofcolor(sgi, fgc)
lins = mapply(fork(combine, vfrontier, hfrontier), inds)
go = fill(sgi, fgc, lins)
numci = unifint(rng, diff_lb, diff_ub, (3, 10))
numc = 13 - numci
ccols = rng.sample(cols, numc)
c = canvas(-1, (h, w))
inds = asindices(c)
obj = {(rng.choice(ccols), ij) for ij in inds}
gi = paint(c, obj)
loci = rng.randint(1, h - inh - 1)
locj = rng.randint(1, w - inw - 1)
loc = (loci, locj)
plcd = shift(asobject(sgi), loc)
gi = paint(gi, plcd)
a, b = ulcorner(plcd)
c, d = lrcorner(plcd)
p1 = rng.choice(totuple(connect((a - 1, b), (a - 1, d))))
p2 = rng.choice(totuple(connect((a, b - 1), (c, b - 1))))
p3 = rng.choice(totuple(connect((c + 1, b), (c + 1, d))))
p4 = rng.choice(totuple(connect((a, d + 1), (c, d + 1))))
remcols = remove(bgc, ccols)
fixobj = {
(rng.choice(remcols), p1),
(rng.choice(remcols), p2),
(rng.choice(remcols), p3),
(rng.choice(remcols), p4),
}
gi = paint(gi, fixobj)
return {"input": gi, "output": go}
def generate_cce03e0d(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = difference(interval(0, 10, 1), (2, 8))
h = unifint(rng, diff_lb, diff_ub, (2, 5))
w = unifint(rng, diff_lb, diff_ub, (2, 5))
nred = unifint(rng, diff_lb, diff_ub, (1, h * w - 1))
ncols = unifint(rng, diff_lb, diff_ub, (1, min(8, nred)))
ncells = unifint(rng, diff_lb, diff_ub, (1, h * w - nred))
ccols = rng.sample(cols, ncols)
gi = canvas(0, (h, w))
inds = asindices(gi)
reds = rng.sample(totuple(inds), nred)
reminds = difference(inds, reds)
gi = fill(gi, 2, reds)
rest = rng.sample(totuple(reminds), ncells)
rest = {(rng.choice(ccols), ij) for ij in rest}
gi = paint(gi, rest)
go = canvas(0, (h**2, w**2))
locs = apply(rbind(multiply, (h, w)), reds)
res = mapply(lbind(shift, asobject(gi)), locs)
go = paint(go, res)
return {"input": gi, "output": go}
def generate_f9012d9b(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(1, 10, 1)
hp = unifint(rng, diff_lb, diff_ub, (2, 10))
wp = unifint(rng, diff_lb, diff_ub, (2, 10))
srco = canvas(0, (hp, wp))
inds = asindices(srco)
nc = unifint(rng, diff_lb, diff_ub, (1, 9))
ccols = rng.sample(cols, nc)
obj = {(rng.choice(ccols), ij) for ij in inds}
srco = paint(srco, obj)
gi = paint(srco, obj)
numhp = unifint(rng, diff_lb, diff_ub, (3, 30 // hp))
numwp = unifint(rng, diff_lb, diff_ub, (3, 30 // wp))
for k in range(numhp - 1):
gi = vconcat(gi, srco)
srco = tuple(e for e in gi)
for k in range(numwp - 1):
gi = hconcat(gi, srco)
hcropfac = rng.randint(0, hp)
for k in range(hcropfac):
gi = gi[:-1]
gi = dmirror(gi)
wcropfac = rng.randint(0, wp)
for k in range(wcropfac):
gi = gi[:-1]
gi = dmirror(gi)
h, w = shape(gi)
sgh = unifint(rng, diff_lb, diff_ub, (1, h - hp - 1))
sgw = unifint(rng, diff_lb, diff_ub, (1, w - wp - 1))
loci = rng.randint(0, h - sgh)
locj = rng.randint(0, w - sgw)
loc = (loci, locj)
shp = (sgh, sgw)
obj = {loc, decrement(add(loc, shp))}
obj = backdrop(obj)
go = subgrid(obj, gi)
gi = fill(gi, 0, obj)
mf = rng.choice((identity, rot90, rot180, rot270, dmirror, vmirror, hmirror, cmirror))
gi = mf(gi)
go = mf(go)
return {"input": gi, "output": go}
def generate_f8ff0b80(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
nobjs = unifint(rng, diff_lb, diff_ub, (1, min(30, (h * w) // 25)))
gi = canvas(bgc, (h, w))
numcells = unifint(rng, diff_lb, diff_ub, (nobjs + 1, 36))
base = asindices(canvas(-1, (6, 6)))
maxtr = 10
inds = asindices(gi)
go = []
for k in range(nobjs):
if len(inds) == 0 or numcells < 2:
break
numcells = unifint(rng, diff_lb, diff_ub, (nobjs - k, numcells - 1))
if numcells == 0:
break
sp = rng.choice(totuple(base))
shp = {sp}
reminds = remove(sp, base)
for kk in range(numcells - 1):
shp.add(rng.choice(totuple((reminds - shp) & mapply(neighbors, shp))))
shp = normalize(shp)
validloc = False
rems = sfilter(inds, lambda ij: ij[0] <= h - height(shp) and ij[1] <= w - width(shp))
if len(rems) == 0:
break
loc = rng.choice(totuple(rems))
tr = 0
while not validloc and tr < maxtr:
loc = rng.choice(totuple(inds))
validloc = shift(shp, loc).issubset(inds)
tr += 1
if validloc:
plcd = shift(shp, loc)
col = rng.choice(remcols)
go.append(col)
inds = (inds - plcd) - mapply(neighbors, plcd)
gi = fill(gi, col, plcd)
go = dmirror((tuple(go),))
return {"input": gi, "output": go}
def generate_e21d9049(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
ph = unifint(rng, diff_lb, diff_ub, (2, 9))
pw = unifint(rng, diff_lb, diff_ub, (2, 9))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
hbar = frozenset({(rng.choice(remcols), (k, 0)) for k in range(ph)})
wbar = frozenset({(rng.choice(remcols), (0, k)) for k in range(pw)})
locih = rng.randint(0, h - ph)
locjh = rng.randint(0, w - 1)
loch = (locih, locjh)
locjw = rng.randint(0, w - pw)
lociw = rng.randint(0, h - 1)
locw = (lociw, locjw)
canv = canvas(bgc, (h, w))
hbar = shift(hbar, loch)
wbar = shift(wbar, locw)
cp = (lociw, locjh)
col = rng.choice(remcols)
hbard = extract(hbar, lambda cij: abs(cij[1][0] - lociw) % ph == 0)[1]
hbar = sfilter(hbar, lambda cij: abs(cij[1][0] - lociw) % ph != 0) | {(col, hbard)}
wbard = extract(wbar, lambda cij: abs(cij[1][1] - locjh) % pw == 0)[1]
wbar = sfilter(wbar, lambda cij: abs(cij[1][1] - locjh) % pw != 0) | {(col, wbard)}
gi = paint(canv, hbar | wbar)
go = paint(canv, hbar | wbar)
for k in range(h // ph + 1):
go = paint(go, shift(hbar, (k * ph, 0)))
go = paint(go, shift(hbar, (-k * ph, 0)))
for k in range(w // pw + 1):
go = paint(go, shift(wbar, (0, k * pw)))
go = paint(go, shift(wbar, (0, -k * pw)))
return {"input": gi, "output": go}
def generate_d4f3cd78(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(8, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
ih = unifint(rng, diff_lb, diff_ub, (3, h // 3 * 2))
iw = unifint(rng, diff_lb, diff_ub, (3, w // 3 * 2))
loci = rng.randint(1, h - ih - 1)
locj = rng.randint(1, w - iw - 1)
crns = frozenset({(loci, locj), (loci + ih - 1, locj + iw - 1)})
fullcrns = corners(crns)
bx = box(crns)
opts = bx - fullcrns
bgc, fgc = rng.sample(cols, 2)
c = canvas(bgc, (h, w))
nholes = unifint(rng, diff_lb, diff_ub, (1, len(opts)))
holes = rng.sample(totuple(opts), nholes)
gi = fill(c, fgc, bx - set(holes))
bib = backdrop(inbox(bx))
go = fill(gi, 8, bib)
A, B = ulcorner(bib)
C, D = lrcorner(bib)
f1 = lambda idx: 1 if idx > C else (-1 if idx < A else 0)
f2 = lambda idx: 1 if idx > D else (-1 if idx < B else 0)
f = lambda d: shoot(d, (f1(d[0]), f2(d[1])))
res = mapply(f, set(holes))
go = fill(go, 8, res)
return {"input": gi, "output": go}
def generate_9d9215db(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (5, 14))
w = unifint(rng, diff_lb, diff_ub, (5, 14))
h = h * 2 + 1
w = w * 2 + 1
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
ub = min(h, w) // 4
nrings = unifint(rng, diff_lb, diff_ub, (1, ub))
onlinesbase = tuple([(2 * k + 1, 2 * k + 1) for k in range(ub)])
onlines = rng.sample(onlinesbase, nrings)
onlines = {(rng.choice(remcols), ij) for ij in onlines}
gi = canvas(bgc, (h, w))
gi = paint(gi, onlines)
linsbase = apply(rbind(add, (0, 2)), onlinesbase[:-1])
nlines = unifint(rng, diff_lb, diff_ub, (1, len(linsbase)))
linesps = rng.sample(linsbase, nlines)
colors = [rng.choice(remcols) for k in range(nlines)]
dots = {(col, ij) for col, ij in zip(colors, linesps)}
dots2 = {(col, ij[::-1]) for col, ij in zip(colors, linesps)}
gi = paint(gi, dots | dots2)
ff = lambda ij: ij[1] % 2 == 1
ff2 = lambda ij: ij[0] % 2 == 1
linesps2 = tuple(x[::-1] for x in linesps)
lines = tuple(sfilter(connect(ij, (ij[0], w - ij[1] - 1)), ff) for ij in linesps)
lines2 = tuple(sfilter(connect(ij, (h - ij[0] - 1, ij[1])), ff2) for ij in linesps2)
lines = merge({recolor(col, l1 | l2) for col, (l1, l2) in zip(colors, zip(lines, lines2))})
gobase = paint(gi, lines)
go = paint(gobase, merge(fgpartition(vmirror(gobase))))
go = paint(go, merge(fgpartition(hmirror(gobase))))
go = paint(go, merge(fgpartition(vmirror(hmirror(gobase)))))
rotf = rng.choice((identity, rot90, rot180, rot270))
gi = rotf(gi)
go = rotf(go)
return {"input": gi, "output": go}
def generate_0ca9ddb6(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = difference(interval(0, 10, 1), (1, 2, 4, 6, 7, 8))
xi = {(8, (0, 0))}
xo = {(8, (0, 0))}
ai = {(6, (0, 0))}
ao = {(6, (0, 0))}
bi = {(2, (1, 1))}
bo = {(2, (1, 1))} | recolor(4, ineighbors((1, 1)))
ci = {(1, (1, 1))}
co = {(1, (1, 1))} | recolor(7, dneighbors((1, 1)))
arr = ((ai, ao), (bi, bo), (ci, co), (xi, xo))
h = unifint(rng, diff_lb, diff_ub, (4, 30))
w = unifint(rng, diff_lb, diff_ub, (4, 30))
nobjs = unifint(rng, diff_lb, diff_ub, (1, (h * w) // 4))
maxtr = 5 * nobjs
tr = 0
succ = 0
bgc = rng.choice(cols)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
inds = asindices(gi)
while succ < nobjs and tr < maxtr:
ino, outo = rng.choice(arr)
loc = rng.choice(totuple(inds))
oplcd = shift(outo, loc)
oplcdi = toindices(oplcd)
if oplcdi.issubset(inds):
succ += 1
gi = paint(gi, shift(ino, loc))
go = paint(go, oplcd)
inds = inds - oplcdi
tr += 1
return {"input": gi, "output": go}
def generate_5521c0d9(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (4, 30))
w = unifint(rng, diff_lb, diff_ub, (6, 30))
inds = interval(0, w, 1)
nobjs = unifint(rng, diff_lb, diff_ub, (1, w // 3))
speps = rng.sample(inds, nobjs * 2)
while 0 in speps or w - 1 in speps:
nobjs = unifint(rng, diff_lb, diff_ub, (1, w // 3))
speps = rng.sample(inds, nobjs * 2)
speps = sorted(speps)
starts = speps[::2]
ends = speps[1::2]
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
ncols = unifint(rng, diff_lb, diff_ub, (2, 9))
ccols = rng.sample(remcols, ncols)
forb = -1
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
forb = -1
for sp, ep in zip(starts, ends):
col = rng.choice(remove(forb, ccols))
forb = col
hdev = unifint(rng, diff_lb, diff_ub, (0, h // 2))
hei = rng.choice((hdev, h - hdev))
hei = min(max(1, hei), h - 1)
ulc = (h - hei, sp)
lrc = (h - 1, ep)
obj = backdrop(frozenset({ulc, lrc}))
gi = fill(gi, col, obj)
go = fill(go, col, shift(obj, (-hei, 0)))
rotf = rng.choice((identity, rot90, rot180, rot270))
gi = rotf(gi)
go = rotf(go)
return {"input": gi, "output": go}
def generate_e3497940(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (4, 30))
w = unifint(rng, diff_lb, diff_ub, (3, 14))
bgc, barc = rng.sample(cols, 2)
remcols = remove(barc, remove(bgc, cols))
ncols = unifint(rng, diff_lb, diff_ub, (1, 8))
ccols = rng.sample(remcols, ncols)
nlinesocc = unifint(rng, diff_lb, diff_ub, (1, h))
lopts = interval(0, h, 1)
linesocc = rng.sample(lopts, nlinesocc)
rs = canvas(bgc, (h, w))
ls = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
for idx in linesocc:
j = unifint(rng, diff_lb, diff_ub, (1, w - 1))
obj = [(rng.choice(ccols), (idx, jj)) for jj in range(j)]
go = paint(go, obj)
slen = rng.randint(1, j)
obj2 = obj[:slen]
if rng.choice((True, False)):
obj, obj2 = obj2, obj
rs = paint(rs, obj)
ls = paint(ls, obj2)
gi = hconcat(hconcat(vmirror(ls), canvas(barc, (h, 1))), rs)
go = vmirror(go)
return {"input": gi, "output": go}
def generate_6cdd2623(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (8, 30))
w = unifint(rng, diff_lb, diff_ub, (8, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
linc = rng.choice(remcols)
remcols = remove(linc, remcols)
nnoisecols = unifint(rng, diff_lb, diff_ub, (1, 7))
noisecols = rng.sample(remcols, nnoisecols)
c = canvas(bgc, (h, w))
ininds = totuple(shift(asindices(canvas(-1, (h - 2, w - 1))), (1, 1)))
fixinds = rng.sample(ininds, nnoisecols)
fixobj = {(col, ij) for col, ij in zip(list(noisecols), fixinds)}
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
gi = paint(gi, fixobj)
nnoise = unifint(rng, diff_lb, diff_ub, (1, (h * w - nnoisecols) // 3))
noise = rng.sample(totuple(asindices(c) - set(fixinds)), nnoise)
noise = {(rng.choice(remcols), ij) for ij in noise}
gi = paint(gi, noise)
ilocs = interval(1, h - 1, 1)
jlocs = interval(1, w - 1, 1)
aa, bb = rng.sample((0, 1), 2)
nilocs = unifint(rng, diff_lb, diff_ub, (aa, (h - 2) // 2))
njlocs = unifint(rng, diff_lb, diff_ub, (bb, (w - 2) // 2))
ilocs = rng.sample(ilocs, nilocs)
jlocs = rng.sample(jlocs, njlocs)
for ii in ilocs:
gi = fill(gi, linc, {(ii, 0)})
gi = fill(gi, linc, {(ii, w - 1)})
go = fill(go, linc, connect((ii, 0), (ii, w - 1)))
for jj in jlocs:
gi = fill(gi, linc, {(0, jj)})
gi = fill(gi, linc, {(h - 1, jj)})
go = fill(go, linc, connect((0, jj), (h - 1, jj)))
return {"input": gi, "output": go}
def generate_dc433765(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(4, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (4, 30))
w = unifint(rng, diff_lb, diff_ub, (4, 30))
bgc, src = rng.sample(cols, 2)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
inds = asindices(gi)
if rng.choice((True, False)):
opts = {(ii, 0) for ii in range(h - 2)} | {(0, jj) for jj in range(1, w - 2, 1)}
opts = tuple([inds & shoot(src, (1, 1)) for src in opts])
opts = order(opts, size)
k = len(opts)
opt = unifint(rng, diff_lb, diff_ub, (0, k - 1))
ln = order(opts[opt], first)
epi = unifint(rng, diff_lb, diff_ub, (2, len(ln) - 1))
ep = ln[epi]
ln = ln[: epi - 1][::-1]
spi = unifint(rng, diff_lb, diff_ub, (0, len(ln) - 1))
sp = ln[spi]
gi = fill(gi, src, {sp})
gi = fill(gi, 4, {ep})
go = fill(go, src, {add(sp, (1, 1))})
go = fill(go, 4, {ep})
else:
loci = rng.randint(0, h - 1)
objw = unifint(rng, diff_lb, diff_ub, (3, w))
locj1 = rng.randint(0, w - objw)
locj2 = locj1 + objw - 1
sp = (loci, locj1)
ep = (loci, locj2)
gi = fill(gi, src, {sp})
gi = fill(gi, 4, {ep})
go = fill(go, src, {add(sp, (0, 1))})
go = fill(go, 4, {ep})
mfs = (identity, dmirror, cmirror, vmirror, hmirror, rot90, rot180, rot270)
nmfs = rng.choice((1, 2))
for fn in rng.sample(mfs, nmfs):
gi = fn(gi)
go = fn(go)
return {"input": gi, "output": go}
def generate_d2abd087(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (8, 30))
w = unifint(rng, diff_lb, diff_ub, (8, 30))
bgc = rng.choice(difference(cols, (1, 2)))
remcols = remove(bgc, cols)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
inds = asindices(gi)
nobjs = unifint(rng, diff_lb, diff_ub, (1, (h * w) // 10))
maxtrials = 4 * nobjs
tr = 0
succ = 0
while succ < nobjs and tr <= maxtrials:
if len(inds) == 0:
break
opts = asindices(canvas(-1, (5, 5)))
sp = rng.choice(totuple(opts))
opts = remove(sp, opts)
lb = unifint(rng, diff_lb, diff_ub, (1, 5))
lopts = interval(lb, 6, 1)
ubi = unifint(rng, diff_lb, diff_ub, (1, 5))
ub = 12 - ubi
uopts = interval(7, ub + 1, 1)
if rng.choice((True, False)):
numcells = 6
else:
numcells = rng.choice(lopts + uopts)
obj = {sp}
for k in range(numcells - 1):
obj.add(rng.choice(totuple((opts - obj) & mapply(dneighbors, obj))))
obj = normalize(obj)
loc = rng.choice(totuple(inds))
plcd = shift(obj, loc)
if plcd.issubset(inds):
gi = fill(gi, rng.choice(remcols), plcd)
go = fill(go, 1 + (len(obj) == 6), plcd)
succ += 1
inds = (inds - plcd) - mapply(dneighbors, plcd)
tr += 1
return {"input": gi, "output": go}
def generate_88a10436(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (8, 30))
w = unifint(rng, diff_lb, diff_ub, (8, 30))
objh = unifint(rng, diff_lb, diff_ub, (0, 2))
objw = unifint(rng, diff_lb, diff_ub, (0 if objh > 0 else 1, 2))
objh = objh * 2 + 1
objw = objw * 2 + 1
bb = asindices(canvas(-1, (objh, objw)))
sp = (objh // 2, objw // 2)
obj = {sp}
bb = remove(sp, bb)
ncells = unifint(rng, diff_lb, diff_ub, (max(objh, objw), objh * objw))
for k in range(ncells - 1):
obj.add(rng.choice(totuple((bb - obj) & mapply(dneighbors, obj))))
while height(obj) != objh or width(obj) != objw:
obj.add(rng.choice(totuple((bb - obj) & mapply(dneighbors, obj))))
bgc, fgc = rng.sample(cols, 2)
remcols = remove(bgc, remove(fgc, cols))
ncols = unifint(rng, diff_lb, diff_ub, (1, 8))
ccols = rng.sample(remcols, ncols)
obj = {(rng.choice(ccols), ij) for ij in obj}
obj = normalize(obj)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
loci = rng.randint(0, h - objh)
locj = rng.randint(0, w - objw)
loc = (loci, locj)
plcd = shift(obj, loc)
gi = paint(gi, plcd)
go = paint(go, plcd)
inds = (asindices(gi) - toindices(plcd)) - mapply(neighbors, toindices(plcd))
nobjs = unifint(rng, diff_lb, diff_ub, (1, (h * w) // (2 * ncells)))
maxtrials = 4 * nobjs
tr = 0
succ = 0
while succ < nobjs and tr <= maxtrials:
if len(inds) == 0:
break
loc = rng.choice(totuple(inds))
plcd = shift(obj, loc)
plcdi = toindices(plcd)
if plcdi.issubset(inds):
go = paint(go, plcd)
gi = fill(gi, fgc, {center(plcdi)})
succ += 1
inds = (inds - plcdi) - mapply(dneighbors, plcdi)
tr += 1
return {"input": gi, "output": go}
def generate_05f2a901(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (8, 30))
w = unifint(rng, diff_lb, diff_ub, (8, 30))
objh = unifint(rng, diff_lb, diff_ub, (2, min(w // 2, h // 2)))
objw = unifint(rng, diff_lb, diff_ub, (objh, w // 2))
bb = asindices(canvas(-1, (objh, objw)))
sp = rng.choice(totuple(bb))
obj = {sp}
bb = remove(sp, bb)
ncells = unifint(rng, diff_lb, diff_ub, (objh + objw, objh * objw))
for k in range(ncells - 1):
obj.add(rng.choice(totuple((bb - obj) & mapply(dneighbors, obj))))
if height(obj) * width(obj) == len(obj):
obj = remove(rng.choice(totuple(obj)), obj)
obj = normalize(obj)
objh, objw = shape(obj)
loci = unifint(rng, diff_lb, diff_ub, (3, h - objh))
locj = unifint(rng, diff_lb, diff_ub, (0, w - objw))
loc = (loci, locj)
bgc, fgc, destc = rng.sample(cols, 3)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
obj = shift(obj, loc)
gi = fill(gi, fgc, obj)
sqd = rng.randint(1, min(w, loci - 1))
locisq = rng.randint(0, loci - sqd - 1)
locjsq = rng.randint(locj - sqd + 1, locj + objw - 1)
locsq = (locisq, locjsq)
sq = backdrop({(locisq, locjsq), (locisq + sqd - 1, locjsq + sqd - 1)})
gi = fill(gi, destc, sq)
go = fill(go, destc, sq)
while len(obj & sq) == 0:
obj = shift(obj, (-1, 0))
obj = shift(obj, (1, 0))
go = fill(go, fgc, obj)
mfs = (identity, dmirror, cmirror, vmirror, hmirror, rot90, rot180, rot270)
nmfs = rng.choice((1, 2))
for fn in rng.sample(mfs, nmfs):
gi = fn(gi)
go = fn(go)
return {"input": gi, "output": go}
def generate_928ad970(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
ih = unifint(rng, diff_lb, diff_ub, (9, h))
iw = unifint(rng, diff_lb, diff_ub, (9, w))
bgc, linc, dotc = rng.sample(cols, 3)
loci = rng.randint(0, h - ih)
locj = rng.randint(0, w - iw)
ulc = (loci, locj)
lrc = (loci + ih - 1, locj + iw - 1)
dot1 = rng.choice(totuple(connect(ulc, (loci + ih - 1, locj)) - {ulc, (loci + ih - 1, locj)}))
dot2 = rng.choice(totuple(connect(ulc, (loci, locj + iw - 1)) - {ulc, (loci, locj + iw - 1)}))
dot3 = rng.choice(totuple(connect(lrc, (loci + ih - 1, locj)) - {lrc, (loci + ih - 1, locj)}))
dot4 = rng.choice(totuple(connect(lrc, (loci, locj + iw - 1)) - {lrc, (loci, locj + iw - 1)}))
a, b = sorted(rng.sample(interval(loci + 2, loci + ih - 2, 1), 2))
while a + 1 == b:
a, b = sorted(rng.sample(interval(loci + 2, loci + ih - 2, 1), 2))
c, d = sorted(rng.sample(interval(locj + 2, locj + iw - 2, 1), 2))
while c + 1 == d:
c, d = sorted(rng.sample(interval(locj + 2, locj + iw - 2, 1), 2))
sp = box(frozenset({(a, c), (b, d)}))
bx = {dot1, dot2, dot3, dot4}
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
gi = fill(gi, dotc, bx)
gi = fill(gi, linc, sp)
go = fill(gi, linc, inbox(bx))
return {"input": gi, "output": go}
def generate_f8b3ba0a(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (1, 5))
w = unifint(rng, diff_lb, diff_ub, (1, 5))
nh = unifint(rng, diff_lb, diff_ub, (3, 29 // (h + 1)))
nw = unifint(rng, diff_lb, diff_ub, (3, 29 // (w + 1)))
fullh = (h + 1) * nh + 1
fullw = (w + 1) * nw + 1
fullbgc, bgc = rng.sample(cols, 2)
remcols = remove(fullbgc, remove(bgc, cols))
shp = shift(asindices(canvas(-1, (h, w))), (1, 1))
gi = canvas(fullbgc, (fullh, fullw))
locs = set()
for a in range(nh):
for b in range(nw):
loc = (a * (h + 1), b * (w + 1))
locs.add(loc)
gi = fill(gi, bgc, shift(shp, loc))
numc = unifint(rng, diff_lb, diff_ub, (1, (nh * nw) // 2 - 1))
stack = []
nn = numc + 1
ncols = 0
while nn > 1 and numc > 0 and len(remcols) > 0:
nn3 = int(0.5 * (8 * numc + 1) ** 0.5 - 1)
nn = min(max(1, nn3), nn - 1)
col = rng.choice(remcols)
remcols = remove(col, remcols)
numc -= nn
stack.append((col, nn))
go = dmirror((tuple(c for c, nn in stack),))
for col, nn in stack:
slocs = rng.sample(totuple(locs), nn)
gi = fill(gi, col, mapply(lbind(shift, shp), slocs))
locs = locs - set(slocs)
return {"input": gi, "output": go}
def generate_fcb5c309(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
bgc, dotc, sqc = rng.sample(cols, 3)
numsq = unifint(rng, diff_lb, diff_ub, (1, (h * w) // 25))
gi = canvas(bgc, (h, w))
inds = asindices(gi)
maxtr = 4 * numsq
tr = 0
succ = 0
numcells = None
take = False
while tr < maxtr and succ < numsq:
oh = rng.randint(3, 7)
ow = rng.randint(3, 7)
cands = sfilter(inds, lambda ij: ij[0] <= h - oh and ij[1] <= w - ow)
if len(cands) == 0:
break
loc = rng.choice(totuple(cands))
loci, locj = loc
sq = box(frozenset({(loci, locj), (loci + oh - 1, locj + ow - 1)}))
bd = backdrop(sq)
if bd.issubset(inds):
gi = fill(gi, sqc, sq)
ib = backdrop(inbox(sq))
if numcells is None:
numcells = unifint(rng, diff_lb, diff_ub, (1, len(ib)))
cells = rng.sample(totuple(ib), numcells)
take = True
else:
nc = unifint(rng, diff_lb, diff_ub, (0, min(max(0, numcells - 1), len(ib))))
cells = rng.sample(totuple(ib), nc)
gi = fill(gi, dotc, cells)
if take:
go = replace(subgrid(sq, gi), sqc, dotc)
take = False
inds = (inds - bd) - outbox(bd)
succ += 1
tr += 1
nnoise = unifint(rng, diff_lb, diff_ub, (0, max(0, len(inds) // 2 - 1)))
noise = rng.sample(totuple(inds), nnoise)
gi = fill(gi, dotc, noise)
return {"input": gi, "output": go}
def generate_54d9e175(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = (0, 5)
h = unifint(rng, diff_lb, diff_ub, (2, 5))
w = unifint(rng, diff_lb, diff_ub, (2, 5))
nh = unifint(rng, diff_lb, diff_ub, (1, 31 // (h + 1)))
nw = unifint(rng, diff_lb, diff_ub, (1 if nh > 1 else 2, 31 // (w + 1)))
fullh = (h + 1) * nh - 1
fullw = (w + 1) * nw - 1
linc, bgc = rng.sample(cols, 2)
gi = canvas(linc, (fullh, fullw))
go = canvas(linc, (fullh, fullw))
obj = asindices(canvas(bgc, (h, w)))
for a in range(nh):
for b in range(nw):
plcd = shift(obj, (a * (h + 1), b * (w + 1)))
icol = rng.randint(1, 4)
ocol = icol + 5
gi = fill(gi, bgc, plcd)
go = fill(go, ocol, plcd)
dot = rng.choice(totuple(plcd))
gi = fill(gi, icol, {dot})
return {"input": gi, "output": go}
def generate_7f4411dc(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
bgc, fgc = rng.sample(cols, 2)
nsq = unifint(rng, diff_lb, diff_ub, (1, (h * w) // 15))
maxtr = 4 * nsq
tr = 0
succ = 0
go = canvas(bgc, (h, w))
inds = asindices(go)
while tr < maxtr and succ < nsq:
oh = rng.randint(2, 6)
ow = rng.randint(2, 6)
cands = sfilter(inds, lambda ij: ij[0] <= h - oh and ij[1] <= w - ow)
if len(cands) == 0:
break
loc = rng.choice(totuple(cands))
loci, locj = loc
obj = backdrop(frozenset({(loci, locj), (loci + oh - 1, locj + ow - 1)}))
obj = shift(obj, loc)
if obj.issubset(inds):
go = fill(go, fgc, obj)
succ += 1
inds = (inds - obj) - outbox(obj)
tr += 1
inds = ofcolor(go, bgc)
nnoise = unifint(rng, diff_lb, diff_ub, (0, len(inds) // 2 - 1))
gi = tuple(e for e in go)
for k in range(nnoise):
loc = rng.choice(totuple(inds))
inds = inds - dneighbors(loc)
gi = fill(gi, fgc, {loc})
return {"input": gi, "output": go}
def generate_67385a82(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(0, remove(8, interval(0, 10, 1)))
h = unifint(rng, diff_lb, diff_ub, (3, 30))
w = unifint(rng, diff_lb, diff_ub, (3, 30))
col = rng.choice(cols)
gi = canvas(0, (h, w))
inds = totuple(asindices(gi))
ncd = unifint(rng, diff_lb, diff_ub, (0, len(inds) // 2))
nc = rng.choice((ncd, len(inds) - ncd))
nc = min(max(1, nc), len(inds) - 1)
locs = rng.sample(inds, nc)
gi = fill(gi, col, locs)
objs = objects(gi, T, F, F)
rems = toindices(merge(sizefilter(colorfilter(objs, col), 1)))
blues = difference(ofcolor(gi, col), rems)
go = fill(gi, 8, blues)
return {"input": gi, "output": go}
def generate_d6ad076f(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(8, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (3, 30))
w = unifint(rng, diff_lb, diff_ub, (3, 30))
inh = unifint(rng, diff_lb, diff_ub, (3, h))
inw = unifint(rng, diff_lb, diff_ub, (3, w))
bgc, c1, c2 = rng.sample(cols, 3)
itv = interval(0, inh, 1)
loci2i = unifint(rng, diff_lb, diff_ub, (2, inh - 1))
loci2 = itv[loci2i]
itv = itv[: loci2i - 1][::-1]
loci1i = unifint(rng, diff_lb, diff_ub, (0, len(itv) - 1))
loci1 = itv[loci1i]
cp = rng.randint(1, inw - 2)
ajs = rng.randint(0, cp - 1)
aje = rng.randint(cp + 1, inw - 1)
bjs = rng.randint(0, cp - 1)
bje = rng.randint(cp + 1, inw - 1)
obja = backdrop(frozenset({(0, ajs), (loci1, aje)}))
objb = backdrop(frozenset({(loci2, bjs), (inh - 1, bje)}))
c = canvas(bgc, (inh, inw))
c = fill(c, c1, obja)
c = fill(c, c2, objb)
obj = asobject(c)
loci = rng.randint(0, h - inh)
locj = rng.randint(0, w - inw)
loc = (loci, locj)
obj = shift(obj, loc)
gi = canvas(bgc, (h, w))
gi = paint(gi, obj)
midobj = backdrop(frozenset({(loci1 + 1, max(ajs, bjs) + 1), (loci2 - 1, min(aje, bje) - 1)}))
go = fill(gi, 8, shift(midobj, loc))
if rng.choice((True, False)):
gi = dmirror(gi)
go = dmirror(go)
return {"input": gi, "output": go}
def generate_e48d4e1a(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (3, 30))
w = unifint(rng, diff_lb, diff_ub, (3, 30))
loci = rng.randint(1, h - 2)
locj = rng.randint(1, w - 2)
inds = asindices(canvas(-1, (loci, locj)))
maxn = min(min(h - loci - 1, w - locj - 1), len(inds))
nn = unifint(rng, diff_lb, diff_ub, (1, maxn))
ss = rng.sample(totuple(inds), nn)
bgc, fgc, dotc = rng.sample(cols, 3)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
gi = fill(gi, fgc, hfrontier((loci, 0)) | vfrontier((0, locj)))
gi = fill(gi, dotc, ss)
go = fill(go, fgc, hfrontier((loci + nn, 0)) | vfrontier((0, locj + nn)))
rotf = rng.choice((identity, rot90, rot180, rot270))
gi = rotf(gi)
go = rotf(go)
return {"input": gi, "output": go}
def generate_a48eeaf7(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (8, 30))
w = unifint(rng, diff_lb, diff_ub, (8, 30))
ih = unifint(rng, diff_lb, diff_ub, (2, h // 2))
iw = unifint(rng, diff_lb, diff_ub, (2, w // 2))
loci = rng.randint(2, h - ih - 2)
locj = rng.randint(2, w - iw - 2)
bgc, sqc, dotc = rng.sample(cols, 3)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
sq = backdrop(frozenset({(loci, locj), (loci + ih - 1, locj + iw - 1)}))
A = [(x, locj - 1) for x in interval(loci, loci + ih, 1)]
Ap = [(x, rng.randint(0, locj - 2)) for x in interval(loci, loci + ih, 1)]
B = [(x, locj + iw) for x in interval(loci, loci + ih, 1)]
Bp = [(x, rng.randint(locj + iw + 1, w - 1)) for x in interval(loci, loci + ih, 1)]
C = [(loci - 1, x) for x in interval(locj, locj + iw, 1)]
Cp = [(rng.randint(0, loci - 2), x) for x in interval(locj, locj + iw, 1)]
D = [(loci + ih, x) for x in interval(locj, locj + iw, 1)]
Dp = [(rng.randint(loci + ih + 1, h - 1), x) for x in interval(locj, locj + iw, 1)]
srarr = Ap + Bp + Cp + Dp
dearr = A + B + C + D
inds = interval(0, len(srarr), 1)
num = unifint(rng, diff_lb, diff_ub, (1, len(srarr)))
locs = rng.sample(inds, num)
srarr = [e for j, e in enumerate(srarr) if j in locs]
dearr = [e for j, e in enumerate(dearr) if j in locs]
gi = fill(gi, sqc, sq)
go = fill(go, sqc, sq)
for s, d in zip(srarr, dearr):
gi = fill(gi, dotc, {s})
go = fill(go, dotc, {d})
ncorn = unifint(rng, diff_lb, diff_ub, (0, 4))
fullinds = asindices(gi)
if ncorn > 0:
go = fill(go, dotc, {(loci - 1, locj - 1)})
cands = shoot((loci - 2, locj - 2), (-1, -1)) & fullinds
locc = rng.choice(totuple(cands))
gi = fill(gi, dotc, {locc})
if ncorn > 1:
go = fill(go, dotc, {(loci - 1, locj + iw)})
cands = shoot((loci - 2, locj + iw + 1), (-1, 1)) & fullinds
locc = rng.choice(totuple(cands))
gi = fill(gi, dotc, {locc})
if ncorn > 2:
go = fill(go, dotc, {(loci + ih, locj - 1)})
cands = shoot((loci + ih + 1, locj - 2), (1, -1)) & fullinds
locc = rng.choice(totuple(cands))
gi = fill(gi, dotc, {locc})
if ncorn > 3:
go = fill(go, dotc, {(loci + ih, locj + iw)})
cands = shoot((loci + ih + 1, locj + iw + 1), (1, 1)) & fullinds
locc = rng.choice(totuple(cands))
gi = fill(gi, dotc, {locc})
rotf = rng.choice((identity, rot90, rot180, rot270))
gi = rotf(gi)
go = rotf(go)
return {"input": gi, "output": go}
def generate_56dc2b01(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = difference(interval(0, 10, 1), (2, 8))
h = unifint(rng, diff_lb, diff_ub, (4, 30))
w = unifint(rng, diff_lb, diff_ub, (6, 30))
oh = unifint(rng, diff_lb, diff_ub, (1, h))
ow = unifint(rng, diff_lb, diff_ub, (1, (w - 1) // 2 - 1))
bb = asindices(canvas(-1, (oh, ow)))
sp = rng.choice(totuple(bb))
obj = {sp}
bb = remove(sp, bb)
ncellsd = unifint(rng, diff_lb, diff_ub, (0, (oh * ow) // 2))
ncells = rng.choice((ncellsd, oh * ow - ncellsd))
ncells = min(max(0, ncells), oh * ow - 1)
for k in range(ncells):
obj.add(rng.choice(totuple((bb - obj) & mapply(neighbors, obj))))
obj = normalize(obj)
oh, ow = shape(obj)
loci = rng.randint(0, h - oh)
locj = unifint(rng, diff_lb, diff_ub, (1, w - ow))
bgc, objc = rng.sample(cols, 2)
gi = canvas(bgc, (h, w))
barlocji = unifint(rng, diff_lb, diff_ub, (0, locj))
barlocj = locj - barlocji
barlocj = min(max(0, barlocj), locj - 1)
gi = fill(gi, 2, connect((0, barlocj), (h - 1, barlocj)))
go = fill(gi, objc, shift(obj, (loci, barlocj + 1)))
go = fill(go, 8, connect((0, barlocj + ow + 1), (h - 1, barlocj + ow + 1)))
gi = fill(gi, objc, shift(obj, (loci, locj)))
mfs = (identity, dmirror, cmirror, vmirror, hmirror, rot90, rot180, rot270)
nmfs = rng.choice((1, 2))
for fn in rng.sample(mfs, nmfs):
gi = fn(gi)
go = fn(go)
return {"input": gi, "output": go}
def generate_1caeab9d(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = difference(interval(0, 10, 1), (1,))
h = unifint(rng, diff_lb, diff_ub, (3, 30))
w = unifint(rng, diff_lb, diff_ub, (6, 30))
oh = unifint(rng, diff_lb, diff_ub, (1, h // 2))
ow = unifint(rng, diff_lb, diff_ub, (1, w // 3))
bb = asindices(canvas(-1, (oh, ow)))
sp = rng.choice(totuple(bb))
obj = {sp}
bb = remove(sp, bb)
ncellsd = unifint(rng, diff_lb, diff_ub, (0, (oh * ow) // 2))
ncells = rng.choice((ncellsd, oh * ow - ncellsd))
ncells = min(max(0, ncells), oh * ow - 1)
for k in range(ncells):
obj.add(rng.choice(totuple((bb - obj) & mapply(neighbors, obj))))
obj = normalize(obj)
oh, ow = shape(obj)
loci = rng.randint(0, h - oh)
numo = unifint(rng, diff_lb, diff_ub, (2, min(8, w // ow))) - 1
itv = interval(0, w, 1)
locj = rng.randint(0, w - ow)
objp = shift(obj, (loci, locj))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
c = canvas(bgc, (h, w))
gi = fill(c, 1, objp)
go = fill(c, 1, objp)
itv = difference(itv, interval(locj, locj + ow, 1))
for k in range(numo):
cands = sfilter(itv, lambda j: set(interval(j, j + ow, 1)).issubset(set(itv)))
if len(cands) == 0:
break
locj = rng.choice(cands)
col = rng.choice(remcols)
remcols = remove(col, remcols)
gi = fill(gi, col, shift(obj, (rng.randint(0, h - oh), locj)))
go = fill(go, col, shift(obj, (loci, locj)))
itv = difference(itv, interval(locj, locj + ow, 1))
return {"input": gi, "output": go}
def generate_b91ae062(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (2, 5))
w = unifint(rng, diff_lb, diff_ub, (2, 5))
numc = unifint(rng, diff_lb, diff_ub, (3, min(h * w, min(10, 30 // max(h, w)))))
ccols = rng.sample(cols, numc)
c = canvas(-1, (h, w))
inds = totuple(asindices(c))
fixinds = rng.sample(inds, numc)
obj = {(cc, ij) for cc, ij in zip(ccols, fixinds)}
for ij in difference(inds, fixinds):
obj.add((rng.choice(ccols), ij))
gi = paint(c, obj)
go = upscale(gi, numc - 1)
return {"input": gi, "output": go}
def generate_834ec97d(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(4, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (2, 30))
w = unifint(rng, diff_lb, diff_ub, (2, 30))
loci = unifint(rng, diff_lb, diff_ub, (0, h - 2))
locjd = unifint(rng, diff_lb, diff_ub, (0, w // 2))
locj = rng.choice((locjd, w - locjd))
locj = min(max(0, locj), w - 1)
loc = (loci, locj)
bgc, fgc = rng.sample(cols, 2)
c = canvas(bgc, (h, w))
gi = fill(c, fgc, {loc})
go = fill(c, fgc, {add(loc, (1, 0))})
for jj in range(w // 2 + 1):
go = fill(go, 4, connect((0, locj + 2 * jj), (loci, locj + 2 * jj)))
go = fill(go, 4, connect((0, locj - 2 * jj), (loci, locj - 2 * jj)))
return {"input": gi, "output": go}
def generate_a699fb00(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(2, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (4, 30))
w = unifint(rng, diff_lb, diff_ub, (4, 30))
numls = unifint(rng, diff_lb, diff_ub, (1, h - 1))
opts = interval(0, h, 1)
locs = rng.sample(opts, numls)
bgc, fgc = rng.sample(cols, 2)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
for ii in locs:
endidx = unifint(rng, diff_lb, diff_ub, (2, w - 2))
ofs = unifint(rng, diff_lb, diff_ub, (1, endidx // 2)) * 2
ofs = min(max(2, ofs), endidx)
startidx = endidx - ofs
ln = connect((ii, startidx), (ii, endidx))
go = fill(go, 2, ln)
sparseln = {(ii, jj) for jj in range(startidx, endidx + 1, 2)}
go = fill(go, fgc, sparseln)
gi = fill(gi, fgc, sparseln)
return {"input": gi, "output": go}
def generate_91413438(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(1, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (2, 5))
w = unifint(rng, diff_lb, diff_ub, (2, 5))
maxnb = min(h * w - 1, min(30 // h, 30 // w))
minnb = int(0.5 * ((4 * h * w + 1) ** 0.5 - 1)) + 1
nbi = unifint(rng, diff_lb, diff_ub, (0, maxnb - minnb))
nb = min(max(minnb, maxnb - nbi), maxnb)
fgc = rng.choice(cols)
c = canvas(0, (h, w))
obj = rng.sample(totuple(asindices(c)), h * w - nb)
gi = fill(c, fgc, obj)
go = canvas(0, (h * nb, w * nb))
for j in range(h * w - nb):
loc = (j // nb, j % nb)
go = fill(go, fgc, shift(obj, multiply((h, w), loc)))
return {"input": gi, "output": go}
def generate_99fa7670(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (3, 30))
w = unifint(rng, diff_lb, diff_ub, (3, 30))
num = unifint(rng, diff_lb, diff_ub, (1, h // 2))
inds = interval(0, h, 1)
starts = sorted(rng.sample(inds, num))
ends = [x - 1 for x in starts[1:]] + [h - 1]
nc = unifint(rng, diff_lb, diff_ub, (1, 9))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
ccols = rng.sample(remcols, nc)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
for s, e in zip(starts, ends):
col = rng.choice(ccols)
locj = rng.randint(0, w - 2)
l1 = connect((s, locj), (s, w - 1))
l2 = connect((s, w - 1), (e, w - 1))
gi = fill(gi, col, {(s, locj)})
go = fill(go, col, l1 | l2)
return {"input": gi, "output": go}
def generate_d13f3404(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (3, 15))
w = unifint(rng, diff_lb, diff_ub, (3, 15))
vopts = {(ii, 0) for ii in interval(0, h, 1)}
hopts = {(0, jj) for jj in interval(1, w, 1)}
opts = tuple(vopts | hopts)
num = unifint(rng, diff_lb, diff_ub, (1, len(opts)))
locs = rng.sample(opts, num)
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h * 2, w * 2))
inds = asindices(gi)
for loc in locs:
ln = tuple(shoot(loc, (1, 1)) & inds)
locc = rng.choice(ln)
col = rng.choice(remcols)
gi = fill(gi, col, {locc})
go = fill(go, col, shoot(locc, (1, 1)))
return {"input": gi, "output": go}
def generate_c3f564a4(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (7, 30))
w = unifint(rng, diff_lb, diff_ub, (7, 30))
p = unifint(rng, diff_lb, diff_ub, (2, min(9, min(h // 3, w // 3))))
fixc = rng.choice(cols)
remcols = remove(fixc, cols)
ccols = list(rng.sample(remcols, p))
rng.shuffle(ccols)
c = canvas(-1, (h, w))
baseobj = {(cc, (0, jj)) for cc, jj in zip(ccols, range(p))}
obj = {c for c in baseobj}
while rightmost(obj) < 2 * max(w, h):
obj = obj | shift(obj, (0, p))
if rng.choice((True, False)):
obj = mapply(lbind(shift, obj), {(jj, 0) for jj in interval(0, h, 1)})
else:
obj = mapply(lbind(shift, obj), {(jj, -jj) for jj in interval(0, h, 1)})
go = paint(c, obj)
gi = tuple(e for e in go)
nsq = unifint(rng, diff_lb, diff_ub, (1, max(1, (h * w) // 25)))
maxtr = 4 * nsq
tr = 0
succ = 0
while succ < nsq and tr < maxtr:
oh = unifint(rng, diff_lb, diff_ub, (2, 5))
ow = unifint(rng, diff_lb, diff_ub, (2, 5))
loci = rng.randint(0, h - oh)
locj = rng.randint(0, w - ow)
tmpg = fill(gi, fixc, backdrop(frozenset({(loci, locj), (loci + oh - 1, locj + ow - 1)})))
if (
len(occurrences(tmpg, baseobj)) > 1
and len([r for r in tmpg if fixc not in r]) > 0
and len([r for r in dmirror(tmpg) if fixc not in r]) > 0
):
gi = tmpg
succ += 1
tr += 1
if rng.choice((True, False)):
gi = rot90(gi)
go = rot90(go)
return {"input": gi, "output": go}
def generate_ecdecbb3(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (4, 30))
w = unifint(rng, diff_lb, diff_ub, (4, 30))
bgc, dotc, linc = rng.sample(cols, 3)
gi = canvas(bgc, (h, w))
nl = unifint(rng, diff_lb, diff_ub, (1, h // 4))
inds = interval(0, h, 1)
locs = []
for k in range(nl):
if len(inds) == 0:
break
idx = rng.choice(inds)
locs.append(idx)
inds = remove(idx, inds)
inds = remove(idx - 1, inds)
inds = remove(idx + 1, inds)
inds = remove(idx - 2, inds)
inds = remove(idx + 2, inds)
locs = sorted(locs)
for ii in locs:
gi = fill(gi, linc, hfrontier((ii, 0)))
iopts = difference(difference(difference(interval(0, h, 1), locs), apply(increment, locs)), apply(decrement, locs))
jopts = interval(0, w, 1)
ndots = unifint(rng, diff_lb, diff_ub, (1, min(len(iopts), w // 2)))
dlocs = []
for k in range(ndots):
if len(iopts) == 0 or len(jopts) == 0:
break
loci = rng.choice(iopts)
locj = rng.choice(jopts)
dlocs.append((loci, locj))
jopts = remove(locj, jopts)
jopts = remove(locj + 1, jopts)
jopts = remove(locj - 1, jopts)
go = gi
for d in dlocs:
loci, locj = d
if loci < min(locs):
go = fill(go, dotc, connect(d, (min(locs), locj)))
go = fill(go, linc, neighbors((min(locs), locj)))
elif loci > max(locs):
go = fill(go, dotc, connect(d, (max(locs), locj)))
go = fill(go, linc, neighbors((max(locs), locj)))
else:
sp = [e for e in locs if e < loci][-1]
ep = [e for e in locs if e > loci][0]
go = fill(go, dotc, connect((sp, locj), (ep, locj)))
go = fill(go, linc, neighbors((sp, locj)))
go = fill(go, linc, neighbors((ep, locj)))
gi = fill(gi, dotc, {d})
if rng.choice((True, False)):
gi = dmirror(gi)
go = dmirror(go)
return {"input": gi, "output": go}
def generate_ac0a08a4(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (2, 5))
w = unifint(rng, diff_lb, diff_ub, (2, 5))
num = unifint(rng, diff_lb, diff_ub, (1, min(min(9, h * w - 2), min(30 // h, 30 // w))))
bgc = rng.choice(cols)
c = canvas(bgc, (h, w))
inds = asindices(c)
locs = rng.sample(totuple(inds), num)
remcols = remove(bgc, cols)
obj = {(col, loc) for col, loc in zip(rng.sample(remcols, num), locs)}
gi = paint(c, obj)
go = upscale(gi, num)
return {"input": gi, "output": go}
def generate_22168020(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (6, 30))
w = unifint(rng, diff_lb, diff_ub, (6, 30))
num = unifint(rng, diff_lb, diff_ub, (1, min(9, (h * w) // 10)))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
succ = 0
tr = 0
maxtr = 6 * num
inds = asindices(gi)
while tr < maxtr and succ < num:
d = unifint(rng, diff_lb, diff_ub, (2, 5))
oh = d + 1
ow = 2 * d
if len(inds) == 0:
tr += 1
continue
loc = rng.choice(totuple(inds))
loci, locj = loc
io1 = connect(loc, (loci + d - 1, locj + d - 1))
io2 = connect((loci, locj + ow - 1), (loci + d - 1, locj + d))
io = io1 | io2 | {(loci + d, locj + d - 1), (loci + d, locj + d)}
oo = merge(sfilter(prapply(connect, io, io), hline))
mf = rng.choice((identity, dmirror, cmirror, hmirror, vmirror))
io = mf(io)
oo = mf(oo)
col = rng.choice(remcols)
if oo.issubset(inds):
gi = fill(gi, col, io)
go = fill(go, col, oo)
succ += 1
inds = inds - oo
remcols = remove(col, remcols)
tr += 1
return {"input": gi, "output": go}
def generate_ff805c23(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(1, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (3, 15))
w = h
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
numcols = unifint(rng, diff_lb, diff_ub, (1, 8))
remcols = rng.sample(remcols, numcols)
canv = canvas(bgc, (h, w))
nc = unifint(rng, diff_lb, diff_ub, (1, h * w))
bx = asindices(canv)
obj = {(rng.choice(remcols), rng.choice(totuple(bx)))}
for kk in range(nc - 1):
dns = mapply(neighbors, toindices(obj))
ch = rng.choice(totuple(bx & dns))
obj.add((rng.choice(remcols), ch))
bx = bx - {ch}
gi = paint(canv, obj)
tr = sfilter(asobject(dmirror(gi)), lambda cij: cij[1][1] >= cij[1][0])
gi = paint(gi, tr)
gi = hconcat(gi, vmirror(gi))
gi = vconcat(gi, hmirror(gi))
locidev = unifint(rng, diff_lb, diff_ub, (1, 2 * h))
locjdev = unifint(rng, diff_lb, diff_ub, (1, w))
loci = 2 * h - locidev
locj = w - locjdev
loci2 = unifint(rng, diff_lb, diff_ub, (loci, 2 * h - 1))
locj2 = unifint(rng, diff_lb, diff_ub, (locj, w - 1))
bd = backdrop(frozenset({(loci, locj), (loci2, locj2)}))
go = subgrid(bd, gi)
gi = fill(gi, 0, bd)
rotf = rng.choice((identity, rot90, rot180, rot270))
gi = rotf(gi)
go = rotf(go)
return {"input": gi, "output": go}
def generate_4093f84a(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (7, 30))
w = unifint(rng, diff_lb, diff_ub, (7, 30))
loci1, loci2 = sorted(rng.sample(interval(2, h - 2, 1), 2))
bgc, barc, dotc = rng.sample(cols, 3)
gi = canvas(bgc, (h, w))
for ii in range(loci1, loci2 + 1, 1):
gi = fill(gi, barc, connect((ii, 0), (ii, w - 1)))
go = tuple(e for e in gi)
opts = interval(0, w, 1)
num1 = unifint(rng, diff_lb, diff_ub, (1, w // 2))
num2 = unifint(rng, diff_lb, diff_ub, (1, w // 2))
locs1 = rng.sample(opts, num1)
locs2 = rng.sample(opts, num2)
for l1 in locs1:
k = unifint(rng, diff_lb, diff_ub, (1, loci1 - 1))
locsx = rng.sample(interval(0, loci1, 1), k)
gi = fill(gi, dotc, apply(rbind(astuple, l1), locsx))
go = fill(go, barc, connect((loci1 - 1, l1), (loci1 - k, l1)))
for l2 in locs2:
k = unifint(rng, diff_lb, diff_ub, (1, h - loci2 - 2))
locsx = rng.sample(interval(loci2 + 1, h, 1), k)
gi = fill(gi, dotc, apply(rbind(astuple, l2), locsx))
go = fill(go, barc, connect((loci2 + 1, l2), (loci2 + k, l2)))
if rng.choice((True, False)):
gi = dmirror(gi)
go = dmirror(go)
return {"input": gi, "output": go}
def generate_760b3cac(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
objL = frozenset({(0, 0), (1, 0), (1, 1), (1, 2), (2, 1)})
objR = vmirror(objL)
h = unifint(rng, diff_lb, diff_ub, (5, 30))
w = unifint(rng, diff_lb, diff_ub, (3, 14))
w = 2 * w + 1
bgc, objc, indc = rng.sample(cols, 3)
objh = unifint(rng, diff_lb, diff_ub, (1, h - 3))
objw = unifint(rng, diff_lb, diff_ub, (1, w // 6))
objw = 2 * objw + 1
c = canvas(-1, (objh, objw))
gi = canvas(bgc, (h, w))
if rng.choice((True, False)):
obj = objL
sgn = -1
else:
obj = objR
sgn = 1
gi = fill(gi, indc, shift(obj, (h - 3, w // 2 - 1)))
inds = asindices(c)
sp = rng.choice(totuple(inds))
objx = {sp}
numcd = unifint(rng, diff_lb, diff_ub, (0, (objh * objw) // 2))
numc = rng.choice((numcd, objh * objw - numcd))
numc = min(max(1, numc), objh * objw)
for k in range(numc - 1):
objx.add(rng.choice(totuple((inds - objx) & mapply(neighbors, objx))))
while width(objx) != objw:
objx.add(rng.choice(totuple((inds - objx) & mapply(neighbors, objx))))
objx = normalize(objx)
objh, objw = shape(objx)
loci = rng.randint(0, h - 3 - objh)
locj = w // 2 - objw // 2
loc = (loci, locj)
plcd = shift(objx, loc)
gi = fill(gi, objc, plcd)
objx2 = vmirror(plcd)
plcd2 = shift(objx2, (0, objw * sgn))
go = fill(gi, objc, plcd2)
rotf = rng.choice((identity, rot90, rot180, rot270))
gi = rotf(gi)
go = rotf(go)
return {"input": gi, "output": go}
def generate_8efcae92(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
bgc, sqc, dotc = rng.sample(cols, 3)
num = unifint(rng, diff_lb, diff_ub, (1, (h * w) // 25))
succ = 0
maxtr = 4 * num
tr = 0
gi = canvas(bgc, (h, w))
go = None
inds = asindices(gi)
oho, owo = None, None
while succ < num and tr < maxtr:
if oho is None and owo is None:
oh = rng.randint(2, h - 1)
ow = rng.randint(2, w - 1)
oho = oh
owo = ow
else:
ohd = unifint(rng, diff_lb, diff_ub, (0, min(oho, h - 1 - oho)))
owd = unifint(rng, diff_lb, diff_ub, (0, min(owo, w - 1 - owo)))
ohd = min(oho, h - 1 - oho) - ohd
owd = min(owo, w - 1 - owo) - owd
oh = rng.choice((oho - ohd, oho + ohd))
ow = rng.choice((owo - owd, owo + owd))
oh = min(max(2, oh), h - 1)
ow = min(max(2, ow), w - 1)
minig = canvas(sqc, (oh, ow))
mini = asindices(minig)
cands = sfilter(inds, lambda ij: ij[0] <= h - oh and ij[1] <= w - ow)
tr += 1
if len(cands) == 0:
continue
loc = rng.choice(totuple(cands))
if not shift(mini, loc).issubset(inds):
continue
succ += 1
if go is None:
numdots = unifint(rng, diff_lb, diff_ub, (1, (oh * ow) // 2 - 1))
nd = numdots
else:
nd = unifint(rng, diff_lb, diff_ub, (0, min((oh * ow) // 2 - 1, numdots - 1)))
locs = rng.sample(totuple(mini), nd)
minig = fill(minig, dotc, locs)
if go is None:
go = minig
obj = asobject(minig)
plcd = shift(obj, loc)
gi = paint(gi, plcd)
inds = (inds - toindices(plcd)) - mapply(dneighbors, toindices(plcd))
return {"input": gi, "output": go}
def generate_48d8fb45(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
nobjs = unifint(rng, diff_lb, diff_ub, (2, (h * w) // 15))
tr = 0
maxtr = 4 * nobjs
done = False
succ = 0
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
gi = canvas(bgc, (h, w))
inds = asindices(gi)
while tr < maxtr and succ < nobjs:
oh = rng.randint(2, 6)
ow = rng.randint(2, 6)
bx = asindices(canvas(-1, (oh, ow)))
nc = rng.randint(3, oh * ow)
sp = rng.choice(totuple(bx))
bx = remove(sp, bx)
obj = {sp}
for k in range(nc - 1):
obj.add(rng.choice(totuple((bx - obj) & mapply(neighbors, obj))))
if not done:
done = True
idx = rng.choice(totuple(obj))
coll = rng.choice(remcols)
obj2 = {(coll, idx)}
obj3 = recolor(rng.choice(remove(coll, remcols)), remove(idx, obj))
obj = obj2 | obj3
go = paint(canvas(bgc, shape(obj3)), normalize(obj3))
else:
obj = recolor(rng.choice(remcols), obj)
locopts = sfilter(inds, lambda ij: ij[0] <= h - oh and ij[1] <= w - ow)
tr += 1
if len(locopts) == 0:
continue
loc = rng.choice(totuple(locopts))
plcd = shift(obj, loc)
plcdi = toindices(plcd)
if plcdi.issubset(inds):
gi = paint(gi, plcd)
succ += 1
inds = (inds - plcdi) - mapply(neighbors, plcdi)
return {"input": gi, "output": go}
def generate_8e1813be(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
bgc, sqc = rng.sample(cols, 2)
remcols = remove(bgc, remove(sqc, cols))
nbars = unifint(rng, diff_lb, diff_ub, (3, 8))
ccols = rng.sample(remcols, nbars)
w = unifint(rng, diff_lb, diff_ub, (nbars + 3, 30))
hmarg = unifint(rng, diff_lb, diff_ub, (2 * nbars, 30 - nbars))
ccols = list(ccols)
go = tuple(repeat(col, nbars) for col in ccols)
gi = tuple(repeat(col, w) for col in ccols)
r = repeat(bgc, w)
for k in range(hmarg):
idx = rng.randint(0, len(go) - 1)
gi = gi[:idx] + (r,) + gi[idx:]
h2 = nbars + hmarg
oh, ow = nbars, nbars
loci = rng.randint(1, h2 - oh - 2)
locj = rng.randint(1, w - ow - 2)
sq = backdrop(frozenset({(loci, locj), (loci + oh - 1, locj + ow - 1)}))
gi = fill(gi, sqc, sq)
gi = fill(gi, bgc, outbox(sq))
if rng.choice((True, False)):
gi = dmirror(gi)
go = dmirror(go)
return {"input": gi, "output": go}
def generate_5117e062(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
nobjs = unifint(rng, diff_lb, diff_ub, (2, (h * w) // 15))
tr = 0
maxtr = 4 * nobjs
done = False
succ = 0
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
gi = canvas(bgc, (h, w))
inds = asindices(gi)
while tr < maxtr and succ < nobjs:
oh = rng.randint(2, 6)
ow = rng.randint(2, 6)
bx = asindices(canvas(-1, (oh, ow)))
nc = rng.randint(3, oh * ow)
sp = rng.choice(totuple(bx))
bx = remove(sp, bx)
obj = {sp}
for k in range(nc - 1):
obj.add(rng.choice(totuple((bx - obj) & mapply(neighbors, obj))))
if not done:
done = True
idx = rng.choice(totuple(obj))
coll = rng.choice(remcols)
obj2 = {(coll, idx)}
coll2 = rng.choice(remove(coll, remcols))
obj3 = recolor(coll2, remove(idx, obj))
obj = obj2 | obj3
go = fill(canvas(bgc, shape(obj)), coll2, normalize(obj))
else:
obj = recolor(rng.choice(remcols), obj)
locopts = sfilter(inds, lambda ij: ij[0] <= h - oh and ij[1] <= w - ow)
tr += 1
if len(locopts) == 0:
continue
loc = rng.choice(totuple(locopts))
plcd = shift(obj, loc)
plcdi = toindices(plcd)
if plcdi.issubset(inds):
gi = paint(gi, plcd)
succ += 1
inds = (inds - plcdi) - mapply(neighbors, plcdi)
return {"input": gi, "output": go}
def generate_f15e1fac(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(2, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (4, 30))
w = unifint(rng, diff_lb, diff_ub, (4, 30))
nsps = unifint(rng, diff_lb, diff_ub, (1, (w - 1) // 2))
ngps = unifint(rng, diff_lb, diff_ub, (1, (h - 1) // 2))
spsj = sorted(rng.sample(interval(1, w - 1, 1), nsps))
gpsi = sorted(rng.sample(interval(1, h - 1, 1), ngps))
ofs = 0
bgc, linc = rng.sample(cols, 2)
gi = canvas(bgc, (h, w))
gi = fill(gi, linc, {(0, jj) for jj in spsj})
gi = fill(gi, 2, {(ii, 0) for ii in gpsi})
go = tuple(e for e in gi)
for a, b in zip([0] + gpsi, [x - 1 for x in gpsi] + [h - 1]):
for jj in spsj:
go = fill(go, linc, connect((a, jj + ofs), (b, jj + ofs)))
ofs += 1
mfs = (identity, dmirror, cmirror, vmirror, hmirror, rot90, rot180, rot270)
nmfs = rng.choice((1, 2))
for fn in rng.sample(mfs, nmfs):
gi = fn(gi)
go = fn(go)
return {"input": gi, "output": go}
def generate_3906de3d(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (5, 30))
w = unifint(rng, diff_lb, diff_ub, (5, 30))
oh = unifint(rng, diff_lb, diff_ub, (2, h // 2))
ow = unifint(rng, diff_lb, diff_ub, (3, w - 2))
bgc, boxc, linc = rng.sample(cols, 3)
locj = rng.randint(1, w - ow - 1)
bx = backdrop(frozenset({(0, locj), (oh - 1, locj + ow - 1)}))
gi = canvas(bgc, (h, w))
gi = fill(gi, boxc, bx)
rng = range(locj, locj + ow)
cutoffs = [rng.randint(1, oh - 1) for j in rng]
for jj, co in zip(rng, cutoffs):
gi = fill(gi, bgc, connect((co, jj), (oh - 1, jj)))
numlns = unifint(rng, diff_lb, diff_ub, (1, ow - 1))
lnlocs = rng.sample(list(rng), numlns)
go = tuple(e for e in gi)
for jj, co in zip(rng, cutoffs):
if jj in lnlocs:
lineh = rng.randint(1, h - co - 1)
linei = connect((h - lineh, jj), (h - 1, jj))
lineo = connect((co, jj), (co + lineh - 1, jj))
gi = fill(gi, linc, linei)
go = fill(go, linc, lineo)
rotf = rng.choice((identity, rot90, rot180, rot270))
gi = rotf(gi)
go = rotf(go)
return {"input": gi, "output": go}
def generate_77fdfe62(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (1, 13))
w = unifint(rng, diff_lb, diff_ub, (1, 13))
c1, c2, c3, c4, barc, bgc, inc = rng.sample(cols, 7)
qd = canvas(bgc, (h, w))
inds = totuple(asindices(qd))
fullh = 2 * h + 4
fullw = 2 * w + 4
n1 = unifint(rng, diff_lb, diff_ub, (1, h * w))
n2 = unifint(rng, diff_lb, diff_ub, (1, h * w))
n3 = unifint(rng, diff_lb, diff_ub, (1, h * w))
n4 = unifint(rng, diff_lb, diff_ub, (1, h * w))
i1 = rng.sample(inds, n1)
i2 = rng.sample(inds, n2)
i3 = rng.sample(inds, n3)
i4 = rng.sample(inds, n4)
gi = canvas(bgc, (2 * h + 4, 2 * w + 4))
gi = fill(gi, barc, connect((1, 0), (1, fullw - 1)))
gi = fill(gi, barc, connect((fullh - 2, 0), (fullh - 2, fullw - 1)))
gi = fill(gi, barc, connect((0, 1), (fullh - 1, 1)))
gi = fill(gi, barc, connect((0, fullw - 2), (fullh - 1, fullw - 2)))
gi = fill(gi, c1, {(0, 0)})
gi = fill(gi, c2, {(0, fullw - 1)})
gi = fill(gi, c3, {(fullh - 1, 0)})
gi = fill(gi, c4, {(fullh - 1, fullw - 1)})
gi = fill(gi, inc, shift(i1, (2, 2)))
gi = fill(gi, inc, shift(i2, (2, 2 + w)))
gi = fill(gi, inc, shift(i3, (2 + h, 2)))
gi = fill(gi, inc, shift(i4, (2 + h, 2 + w)))
go = canvas(bgc, (2 * h, 2 * w))
go = fill(go, c1, shift(i1, (0, 0)))
go = fill(go, c2, shift(i2, (0, w)))
go = fill(go, c3, shift(i3, (h, 0)))
go = fill(go, c4, shift(i4, (h, w)))
return {"input": gi, "output": go}
def generate_d406998b(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(3, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (3, 30))
w = unifint(rng, diff_lb, diff_ub, (2, 30))
bgc, dotc = rng.sample(cols, 2)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
itv = interval(0, h, 1)
for j in range(w):
nilocs = unifint(rng, diff_lb, diff_ub, (1, h // 2 - 1 if h % 2 == 0 else h // 2))
ilocs = rng.sample(itv, nilocs)
locs = {(ii, j) for ii in ilocs}
gi = fill(gi, dotc, locs)
go = fill(go, dotc if (j - w) % 2 == 0 else 3, locs)
return {"input": gi, "output": go}
def generate_694f12f3(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = difference(interval(0, 10, 1), (1, 2))
h = unifint(rng, diff_lb, diff_ub, (9, 30))
w = unifint(rng, diff_lb, diff_ub, (9, 30))
seploc = rng.randint(4, h - 5)
bigh = unifint(rng, diff_lb, diff_ub, (4, seploc))
bigw = unifint(rng, diff_lb, diff_ub, (3, w - 1))
bigloci = rng.randint(0, seploc - bigh)
biglocj = rng.randint(0, w - bigw)
smallmaxh = h - seploc - 1
smallmaxw = w - 1
cands = []
bigsize = bigh * bigw
for a in range(3, smallmaxh + 1):
for b in range(3, smallmaxw + 1):
if a * b < bigsize:
cands.append((a, b))
cands = sorted(cands, key=lambda ab: ab[0] * ab[1])
num = len(cands)
idx = unifint(rng, diff_lb, diff_ub, (0, num - 1))
smallh, smallw = cands[idx]
smallloci = rng.randint(seploc + 1, h - smallh)
smalllocj = rng.randint(0, w - smallw)
bgc, sqc = rng.sample(cols, 2)
gi = canvas(bgc, (h, w))
bigsq = backdrop(frozenset({(bigloci, biglocj), (bigloci + bigh - 1, biglocj + bigw - 1)}))
smallsq = backdrop(frozenset({(smallloci, smalllocj), (smallloci + smallh - 1, smalllocj + smallw - 1)}))
gi = fill(gi, sqc, bigsq | smallsq)
go = fill(gi, 2, backdrop(inbox(bigsq)))
go = fill(go, 1, backdrop(inbox(smallsq)))
rotf = rng.choice((identity, rot90, rot180, rot270))
gi = rotf(gi)
go = rotf(go)
return {"input": gi, "output": go}
def generate_3befdf3e(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
numcols = unifint(rng, diff_lb, diff_ub, (2, 9))
ccols = rng.sample(remcols, numcols)
nobjs = unifint(rng, diff_lb, diff_ub, (1, ((h * w) // 40)))
succ = 0
maxtr = 5 * nobjs
tr = 0
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
inds = asindices(gi)
while succ < nobjs and tr < maxtr:
tr += 1
if len(inds) == 0:
break
rh = rng.choice((1, 2))
rw = rng.choice((1, 2))
fullh = 2 + 3 * rh
fullw = 2 + 3 * rw
cands = sfilter(inds, lambda ij: ij[0] <= h - fullh and ij[1] <= w - fullw)
if len(cands) == 0:
continue
loc = rng.choice(totuple(cands))
loci, locj = loc
fullobj = backdrop(frozenset({loc, (loci + fullh - 1, locj + fullw - 1)}))
if fullobj.issubset(inds):
succ += 1
inds = inds - fullobj
incol, outcol = rng.sample(ccols, 2)
ofincol = backdrop(frozenset({(loci + rh + 1, locj + rw + 1), (loci + 2 * rh, locj + 2 * rw)}))
ofoutcol = outbox(ofincol)
gi = fill(gi, incol, ofincol)
gi = fill(gi, outcol, ofoutcol)
go = fill(go, outcol, ofincol)
go = fill(go, incol, ofoutcol)
ilocs = apply(first, ofoutcol)
jlocs = apply(last, ofoutcol)
ff = lambda ij: ij[0] in ilocs or ij[1] in jlocs
addon = sfilter(fullobj - (ofincol | ofoutcol), ff)
go = fill(go, outcol, addon)
return {"input": gi, "output": go}
def generate_9f236235(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
numh = unifint(rng, diff_lb, diff_ub, (2, 14))
numw = unifint(rng, diff_lb, diff_ub, (2, 14))
h = unifint(rng, diff_lb, diff_ub, (1, 31 // numh - 1))
w = unifint(rng, diff_lb, diff_ub, (1, 31 // numw - 1))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
frontcol = rng.choice(remcols)
remcols = remove(frontcol, cols)
numcols = unifint(rng, diff_lb, diff_ub, (1, min(9, numh * numw)))
ccols = rng.sample(remcols, numcols)
numcells = unifint(rng, diff_lb, diff_ub, (1, numh * numw))
cands = asindices(canvas(-1, (numh, numw)))
inds = asindices(canvas(-1, (h, w)))
locs = rng.sample(totuple(cands), numcells)
gi = canvas(frontcol, (h * numh + numh - 1, w * numw + numw - 1))
go = canvas(bgc, (numh, numw))
for cand in cands:
a, b = cand
plcd = shift(inds, (a * (h + 1), b * (w + 1)))
col = rng.choice(remcols) if cand in locs else bgc
gi = fill(gi, col, plcd)
go = fill(go, col, {cand})
go = vmirror(go)
return {"input": gi, "output": go}
def generate_d8c310e9(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (3, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
p = unifint(rng, diff_lb, diff_ub, (2, (w - 1) // 3))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
numc = unifint(rng, diff_lb, diff_ub, (1, 9))
ccols = rng.sample(remcols, numc)
obj = set()
for j in range(p):
numcells = unifint(rng, diff_lb, diff_ub, (1, h - 1))
for ii in range(h - 1, h - numcells - 1, -1):
loc = (ii, j)
col = rng.choice(ccols)
cell = (col, loc)
obj.add(cell)
gi = canvas(bgc, (h, w))
minobj = obj | shift(obj, (0, p))
addonw = rng.randint(0, p)
addon = sfilter(obj, lambda cij: cij[1][1] < addonw)
fullobj = minobj | addon
leftshift = rng.randint(0, addonw)
fullobj = shift(fullobj, (0, -leftshift))
gi = paint(gi, fullobj)
go = tuple(e for e in gi)
for j in range(w // (2 * p) + 2):
go = paint(go, shift(fullobj, (0, j * 2 * p)))
mfs = (identity, rot90, rot180, rot270)
fn = rng.choice(mfs)
gi = fn(gi)
go = fn(go)
return {"input": gi, "output": go}
def generate_7e0986d6(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
nsqcols = unifint(rng, diff_lb, diff_ub, (1, 5))
sqcols = rng.sample(remcols, nsqcols)
remcols = difference(remcols, sqcols)
nnoisecols = unifint(rng, diff_lb, diff_ub, (1, len(remcols)))
noisecols = rng.sample(remcols, nnoisecols)
numsq = unifint(rng, diff_lb, diff_ub, (1, (h * w) // 25))
succ = 0
tr = 0
maxtr = 5 * numsq
go = canvas(bgc, (h, w))
inds = asindices(go)
while tr < maxtr and succ < numsq:
tr += 1
oh = rng.randint(2, 7)
ow = rng.randint(2, 7)
cands = sfilter(inds, lambda ij: ij[0] <= h - oh and ij[1] <= w - ow)
if len(cands) == 0:
continue
loc = rng.choice(totuple(cands))
loci, locj = loc
sq = backdrop(frozenset({(loci, locj), (loci + oh - 1, locj + ow - 1)}))
if sq.issubset(inds):
succ += 1
inds = (inds - sq) - outbox(sq)
col = rng.choice(sqcols)
go = fill(go, col, sq)
gi = tuple(e for e in go)
namt = unifint(rng, diff_lb, diff_ub, (1, (h * w) // 9))
cands = asindices(gi)
for k in range(namt):
if len(cands) == 0:
break
loc = rng.choice(totuple(cands))
col = gi[loc[0]][loc[1]]
torem = neighbors(loc) & ofcolor(gi, col)
cands = cands - torem
noisec = rng.choice(noisecols)
gi = fill(gi, noisec, {loc})
return {"input": gi, "output": go}
def generate_a64e4611(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(3, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (18, 30))
w = unifint(rng, diff_lb, diff_ub, (18, 30))
bgc, noisec = rng.sample(cols, 2)
lb = int(0.4 * h * w)
ub = int(0.5 * h * w)
nbgc = unifint(rng, diff_lb, diff_ub, (lb, ub))
gi = canvas(noisec, (h, w))
inds = totuple(asindices(gi))
bgcinds = rng.sample(inds, nbgc)
gi = fill(gi, bgc, bgcinds)
sinds = asindices(canvas(-1, (3, 3)))
bgcf = recolor(bgc, sinds)
noisecf = recolor(noisec, sinds)
addn = set()
addb = set()
for occ in occurrences(gi, bgcf):
occi, occj = occ
addn.add((rng.randint(0, 2) + occi, rng.randint(0, 2) + occj))
for occ in occurrences(gi, noisecf):
occi, occj = occ
addb.add((rng.randint(0, 2) + occi, rng.randint(0, 2) + occj))
gi = fill(gi, noisec, addn)
gi = fill(gi, bgc, addb)
go = tuple(e for e in gi)
dim = rng.randint(rng.randint(3, 8), 8)
locj = rng.randint(3, h - dim - 4)
spi = rng.choice((0, rng.randint(3, h // 2)))
for j in range(locj, locj + dim):
ln = connect((spi, j), (h - 1, j))
gi = fill(gi, bgc, ln)
go = fill(go, bgc, ln)
for j in range(locj + 1, locj + dim - 1):
ln = connect((spi + 1 if spi > 0 else spi, j), (h - 1, j))
go = fill(go, 3, ln)
sgns = rng.choice(((-1,), (1,), (-1, 1)))
startloc = rng.choice((spi, rng.randint(spi + 3, h - 6)))
hh = rng.randint(3, min(8, h - startloc - 3))
for sgn in sgns:
for ii in range(startloc, startloc + hh, 1):
ln = shoot((ii, locj), (0, sgn))
gi = fill(gi, bgc, ln)
go = fill(go, bgc, ln - ofcolor(go, 3))
for sgn in sgns:
for ii in range(startloc + 1 if startloc > 0 else startloc, startloc + hh - 1, 1):
ln = shoot((ii, locj + dim - 2 if sgn == -1 else locj + 1), (0, sgn))
go = fill(go, 3, ln)
if len(sgns) == 1 and unifint(rng, diff_lb, diff_ub, (0, 1)) == 1:
sgns = (-sgns[0],)
startloc = rng.choice((spi, rng.randint(spi + 3, h - 6)))
hh = rng.randint(3, min(8, h - startloc - 3))
for sgn in sgns:
for ii in range(startloc, startloc + hh, 1):
ln = shoot((ii, locj), (0, sgn))
gi = fill(gi, bgc, ln)
go = fill(go, bgc, ln - ofcolor(go, 3))
for sgn in sgns:
for ii in range(startloc + 1 if startloc > 0 else startloc, startloc + hh - 1, 1):
ln = shoot((ii, locj + dim - 2 if sgn == -1 else locj + 1), (0, sgn))
go = fill(go, 3, ln)
return {"input": gi, "output": go}
def generate_b782dc8a(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
wall_pairs = {"N": "S", "S": "N", "E": "W", "W": "E"}
dlt = [("W", (-1, 0)), ("E", (1, 0)), ("S", (0, 1)), ("N", (0, -1))]
walls = {"N": True, "S": True, "E": True, "W": True}
fullsucc = False
while True:
h = unifint(rng, diff_lb, diff_ub, (3, 15))
w = unifint(rng, diff_lb, diff_ub, (3, 15))
maze = [[{"x": x, "y": y, "walls": {**walls}} for y in range(h)] for x in range(w)]
kk = h * w
stck = []
cc = maze[0][0]
nv = 1
while nv < kk:
nbhs = []
for direc, (dx, dy) in dlt:
x2, y2 = cc["x"] + dx, cc["y"] + dy
if 0 <= x2 < w and 0 <= y2 < h:
neighbour = maze[x2][y2]
if all(neighbour["walls"].values()):
nbhs.append((direc, neighbour))
if not nbhs:
cc = stck.pop()
continue
direc, next_cell = rng.choice(nbhs)
cc["walls"][direc] = False
next_cell["walls"][wall_pairs[direc]] = False
stck.append(cc)
cc = next_cell
nv += 1
pathcol, wallcol, dotcol, ncol = rng.sample(cols, 4)
grid = [[pathcol for x in range(w * 2)]]
for y in range(h):
row = [pathcol]
for x in range(w):
row.append(wallcol)
row.append(pathcol if maze[x][y]["walls"]["E"] else wallcol)
grid.append(row)
row = [pathcol]
for x in range(w):
row.append(pathcol if maze[x][y]["walls"]["S"] else wallcol)
row.append(pathcol)
grid.append(row)
gi = tuple(tuple(r[1:-1]) for r in grid[1:-1])
objs = objects(gi, T, F, F)
objs = colorfilter(objs, pathcol)
objs = sfilter(objs, lambda obj: size(obj) > 4)
if len(objs) == 0:
continue
objs = order(objs, size)
nobjs = len(objs)
idx = unifint(rng, diff_lb, diff_ub, (0, nobjs - 1))
obj = toindices(objs[idx])
cell = rng.choice(totuple(obj))
gi = fill(gi, dotcol, {cell})
nbhs = dneighbors(cell) & ofcolor(gi, pathcol)
gi = fill(gi, ncol, nbhs)
obj1 = sfilter(obj, lambda ij: even(manhattan({ij}, {cell})))
obj2 = obj - obj1
go = fill(gi, dotcol, obj1)
go = fill(go, ncol, obj2)
break
rotf = rng.choice((identity, rot90, rot180, rot270))
gi = rotf(gi)
go = rotf(go)
return {"input": gi, "output": go}
def generate_af902bf9(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(2, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
numcols = unifint(rng, diff_lb, diff_ub, (1, 8))
ccols = rng.sample(remcols, numcols)
numsq = unifint(rng, diff_lb, diff_ub, (1, (h * w) // 20))
succ = 0
maxtr = 5 * numsq
tr = 0
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
inds = asindices(gi)
while tr < maxtr and succ < numsq:
tr += 1
oh = rng.randint(3, 5)
ow = rng.randint(3, 5)
cands = sfilter(inds, lambda ij: ij[0] <= h - oh and ij[1] <= w - ow)
if len(cands) == 0:
continue
loc = rng.choice(totuple(cands))
loci, locj = loc
sq = backdrop(frozenset({(loci, locj), (loci + oh - 1, locj + ow - 1)}))
if sq.issubset(inds):
inds = inds - sq
succ += 1
col = rng.choice(ccols)
crns = corners(sq)
gi = fill(gi, col, crns)
go = fill(go, col, crns)
ins = backdrop(inbox(crns))
go = fill(go, 2, ins)
return {"input": gi, "output": go}
def generate_a87f7484(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (2, 5))
w = unifint(rng, diff_lb, diff_ub, (2, 30))
num = unifint(rng, diff_lb, diff_ub, (3, min(30 // h, 9)))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
ccols = rng.sample(remcols, num)
ncd = unifint(rng, diff_lb, diff_ub, (0, (h * w) // 2))
nc = rng.choice((ncd, h * w - ncd))
nc = min(max(1, nc), h * w - 1)
c = canvas(bgc, (h, w))
inds = asindices(c)
origlocs = rng.sample(totuple(inds), nc)
canbrem = {l for l in origlocs}
canbeadd = inds - set(origlocs)
otherlocs = {l for l in origlocs}
nchangesinv = unifint(rng, diff_lb, diff_ub, (0, h * w - 1))
nchanges = h * w - nchangesinv
for k in range(nchanges):
if rng.choice((True, False)):
if len(canbrem) > 1:
ch = rng.choice(totuple(canbrem))
otherlocs = remove(ch, otherlocs)
canbrem = remove(ch, canbrem)
elif len(canbeadd) > 1:
ch = rng.choice(totuple(canbeadd))
otherlocs = insert(ch, otherlocs)
canbeadd = remove(ch, canbeadd)
else:
if len(canbeadd) > 1:
ch = rng.choice(totuple(canbeadd))
otherlocs = insert(ch, otherlocs)
canbeadd = remove(ch, canbeadd)
elif len(canbrem) > 1:
ch = rng.choice(totuple(canbrem))
otherlocs = remove(ch, otherlocs)
canbrem = remove(ch, canbrem)
go = fill(c, ccols[0], origlocs)
grids = [go]
for cc in ccols[1:]:
grids.append(fill(c, cc, otherlocs))
rng.shuffle(grids)
grids = tuple(grids)
gi = merge(grids)
if rng.choice((True, False)):
gi = dmirror(gi)
go = dmirror(go)
return {"input": gi, "output": go}
def generate_fcc82909(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(3, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (7, 30))
w = unifint(rng, diff_lb, diff_ub, (7, 30))
nobjs = unifint(rng, diff_lb, diff_ub, (1, w // 3))
opts = interval(0, w, 1)
tr = 0
maxtr = 4 * nobjs
succ = 0
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
while succ < nobjs and tr < maxtr:
tr += 1
sopts = sfilter(opts, lambda j: set(interval(j, j + 2, 1)).issubset(opts))
if len(sopts) == 0:
break
numc = unifint(rng, diff_lb, diff_ub, (1, 4))
jstart = rng.choice(sopts)
opts = remove(jstart, opts)
opts = remove(jstart + 1, opts)
options = interval(0, h - 2 - numc + 1, 1)
if len(options) == 0:
break
iloc = rng.choice(options)
ccols = rng.sample(remcols, numc)
bd = backdrop(frozenset({(iloc, jstart), (iloc + 1, jstart + 1)}))
bd = list(bd)
rng.shuffle(bd)
obj = {(c, ij) for c, ij in zip(ccols, bd[:numc])} | {(rng.choice(ccols), ij) for ij in bd[numc:]}
if not mapply(dneighbors, toindices(obj)).issubset(ofcolor(gi, bgc)):
continue
gi = paint(gi, obj)
go = paint(go, obj)
for k in range(numc):
go = fill(go, 3, {(iloc + k + 2, jstart), (iloc + k + 2, jstart + 1)})
return {"input": gi, "output": go}
def generate_d9fac9be(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (6, 30))
w = unifint(rng, diff_lb, diff_ub, (6, 30))
bgc, noisec, ringc = rng.sample(cols, 3)
gi = canvas(bgc, (h, w))
nnoise1 = unifint(rng, diff_lb, diff_ub, (1, (h * w) // 3 - 1))
nnoise2 = unifint(rng, diff_lb, diff_ub, (1, max(1, (h * w) // 3 - 9)))
inds = asindices(gi)
noise1 = rng.sample(totuple(inds), nnoise1)
noise2 = rng.sample(difference(totuple(inds), noise1), nnoise2)
gi = fill(gi, noisec, noise1)
gi = fill(gi, ringc, noise2)
rng = neighbors((1, 1))
fp1 = recolor(noisec, rng)
fp2 = recolor(ringc, rng)
fp1occ = occurrences(gi, fp1)
fp2occ = occurrences(gi, fp2)
for occ1 in fp1occ:
loc = rng.choice(totuple(shift(rng, occ1)))
gi = fill(gi, rng.choice((bgc, ringc)), {loc})
for occ2 in fp2occ:
loc = rng.choice(totuple(shift(rng, occ2)))
gi = fill(gi, rng.choice((bgc, noisec)), {loc})
loci = rng.randint(0, h - 3)
locj = rng.randint(0, w - 3)
ringp = shift(rng, (loci, locj))
gi = fill(gi, ringc, ringp)
gi = fill(gi, noisec, {(loci + 1, locj + 1)})
go = canvas(noisec, (1, 1))
return {"input": gi, "output": go}
def generate_eb281b96(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (3, 8))
w = unifint(rng, diff_lb, diff_ub, (3, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
numc = unifint(rng, diff_lb, diff_ub, (1, 9))
ccols = rng.sample(remcols, numc)
c = canvas(bgc, (h, w))
inds = asindices(c)
ncells = unifint(rng, diff_lb, diff_ub, (1, h * w))
locs = rng.sample(totuple(inds), ncells)
obj = {(rng.choice(ccols), ij) for ij in locs}
gi = paint(c, obj)
go = vconcat(gi, hmirror(gi[:-1]))
go = vconcat(go, hmirror(go[:-1]))
return {"input": gi, "output": go}
def generate_d43fd935(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
boxh = unifint(rng, diff_lb, diff_ub, (2, h // 2))
boxw = unifint(rng, diff_lb, diff_ub, (2, w // 2))
loci = rng.randint(0, h - boxh)
locj = rng.randint(0, w - boxw)
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
ccol = rng.choice(remcols)
remcols = remove(ccol, remcols)
ndcols = unifint(rng, diff_lb, diff_ub, (1, 8))
dcols = rng.sample(remcols, ndcols)
bd = backdrop(frozenset({(loci, locj), (loci + boxh - 1, locj + boxw - 1)}))
gi = canvas(bgc, (h, w))
gi = fill(gi, ccol, bd)
reminds = totuple(asindices(gi) - bd)
noiseb = max(1, len(reminds) // 4)
nnoise = unifint(rng, diff_lb, diff_ub, (0, noiseb))
noise = rng.sample(reminds, nnoise)
truenoise = sfilter(
noise, lambda ij: (ij[0] < loci or ij[0] > loci + boxh - 1) and (ij[1] < locj or ij[1] > locj + boxw - 1)
)
rem = difference(noise, truenoise)
top = sfilter(rem, lambda ij: ij[0] < loci)
bottom = sfilter(rem, lambda ij: ij[0] > loci + boxh - 1)
left = sfilter(rem, lambda ij: ij[1] < locj)
right = sfilter(rem, lambda ij: ij[1] > locj + boxw - 1)
truenoiseobj = {(rng.choice(dcols), ij) for ij in truenoise}
gi = paint(gi, truenoiseobj)
go = tuple(e for e in gi)
for jj in apply(last, top):
col = rng.choice(dcols)
mf = matcher(last, jj)
subs = sfilter(top, mf)
gi = fill(gi, col, subs)
go = fill(go, col, connect((valmin(subs, first), jj), (loci - 1, jj)))
for jj in apply(last, bottom):
col = rng.choice(dcols)
mf = matcher(last, jj)
subs = sfilter(bottom, mf)
gi = fill(gi, col, subs)
go = fill(go, col, connect((valmax(subs, first), jj), (loci + boxh, jj)))
for ii in apply(first, left):
col = rng.choice(dcols)
mf = matcher(first, ii)
subs = sfilter(left, mf)
gi = fill(gi, col, subs)
go = fill(go, col, connect((ii, valmin(subs, last)), (ii, locj - 1)))
for ii in apply(first, right):
col = rng.choice(dcols)
mf = matcher(first, ii)
subs = sfilter(right, mf)
gi = fill(gi, col, subs)
go = fill(go, col, connect((ii, valmax(subs, last)), (ii, locj + boxw)))
return {"input": gi, "output": go}
def generate_44f52bb0(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (3, 30))
w = unifint(rng, diff_lb, diff_ub, (3, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
ncols = unifint(rng, diff_lb, diff_ub, (2, 9))
ccols = rng.sample(remcols, ncols)
gi = canvas(bgc, (h, w))
numcells = unifint(rng, diff_lb, diff_ub, (1, h * w - 1))
inds = asindices(gi)
while gi == hmirror(gi):
cells = rng.sample(totuple(inds), numcells)
gi = canvas(bgc, (h, w))
for ij in cells:
a, b = ij
col = rng.choice(ccols)
gi = fill(gi, col, {ij})
gi = fill(gi, col, {(a, w - 1 - b)})
issymm = rng.choice((True, False))
if not issymm:
numpert = unifint(rng, diff_lb, diff_ub, (1, h * (w // 2)))
cands = asindices(canvas(-1, (h, w // 2)))
locs = rng.sample(totuple(cands), numpert)
for a, b in locs:
col = gi[a][b]
newcol = rng.choice(totuple(remove(col, insert(bgc, set(ccols)))))
gi = fill(gi, newcol, {(a, b)})
go = canvas(7, (1, 1))
else:
go = canvas(1, (1, 1))
mfs = (identity, dmirror, cmirror, vmirror, hmirror, rot90, rot180, rot270)
nmfs = rng.choice((1, 2))
for fn in rng.sample(mfs, nmfs):
gi = fn(gi)
go = fn(go)
return {"input": gi, "output": go}
def generate_d22278a0(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (4, 30))
w = unifint(rng, diff_lb, diff_ub, (4, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
inds = asindices(gi)
crns = corners(inds)
ncorns = unifint(rng, diff_lb, diff_ub, (1, 4))
crns = rng.sample(totuple(crns), ncorns)
ccols = rng.sample(remcols, ncorns)
for col, crn in zip(ccols, crns):
gi = fill(gi, col, {crn})
go = fill(go, col, {crn})
rings = {crn}
for k in range(1, max(h, w) // 2 + 2, 1):
rings = rings | outbox(outbox(rings))
if len(crns) > 1:
ff = lambda ij: manhattan({ij}, {crn}) < min(
apply(rbind(manhattan, {ij}), apply(initset, remove(crn, crns)))
)
else:
ff = lambda ij: True
locs = sfilter(inds, ff) & rings
go = fill(go, col, locs)
return {"input": gi, "output": go}
def generate_272f95fa(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = difference(interval(0, 10, 1), (1, 2, 3, 4, 6))
h = unifint(rng, diff_lb, diff_ub, (5, 30))
w = unifint(rng, diff_lb, diff_ub, (5, 30))
bgc, linc = rng.sample(cols, 2)
c = canvas(bgc, (5, 5))
l1 = connect((1, 0), (1, 4))
l2 = connect((3, 0), (3, 4))
lns = l1 | l2
gi = fill(dmirror(fill(c, linc, lns)), linc, lns)
hdist = [0, 0, 0]
wdist = [0, 0, 0]
idx = 0
for k in range(h - 2):
hdist[idx] += 1
idx = (idx + 1) % 3
for k in range(w - 2):
wdist[idx] += 1
idx = (idx + 1) % 3
rng.shuffle(hdist)
rng.shuffle(wdist)
hdelt1 = unifint(rng, diff_lb, diff_ub, (0, hdist[0] - 1))
hdist[0] -= hdelt1
hdist[1] += hdelt1
hdelt2 = unifint(rng, diff_lb, diff_ub, (0, min(hdist[1], hdist[2]) - 1))
hdelt2 = rng.choice((+hdelt2, -hdelt2))
hdist[1] += hdelt2
hdist[2] -= hdelt2
wdelt1 = unifint(rng, diff_lb, diff_ub, (0, wdist[0] - 1))
wdist[0] -= wdelt1
wdist[1] += wdelt1
wdelt2 = unifint(rng, diff_lb, diff_ub, (0, min(wdist[1], wdist[2]) - 1))
wdelt2 = rng.choice((+wdelt2, -wdelt2))
wdist[1] += wdelt2
wdist[2] -= wdelt2
gi = gi[:1] * hdist[0] + gi[1:2] + gi[2:3] * hdist[1] + gi[3:4] + gi[4:5] * hdist[2]
gi = dmirror(gi)
gi = gi[:1] * wdist[0] + gi[1:2] + gi[2:3] * wdist[1] + gi[3:4] + gi[4:5] * wdist[2]
gi = dmirror(gi)
mfs = (identity, dmirror, cmirror, vmirror, hmirror, rot90, rot180, rot270)
nmfs = rng.choice((1, 2))
for fn in rng.sample(mfs, nmfs):
gi = fn(gi)
objs = objects(gi, T, T, F)
bgobjs = colorfilter(objs, bgc)
cnrs = corners(asindices(gi))
bgobjs = sfilter(bgobjs, lambda o: len(toindices(o) & cnrs) == 0)
pinkobj = extract(bgobjs, lambda o: not bordering(o, gi))
yellobj = argmin(bgobjs, leftmost)
greenobj = argmax(bgobjs, rightmost)
redobj = argmin(bgobjs, uppermost)
blueobj = argmax(bgobjs, lowermost)
go = fill(gi, 6, pinkobj)
go = fill(go, 4, yellobj)
go = fill(go, 3, greenobj)
go = fill(go, 2, redobj)
go = fill(go, 1, blueobj)
return {"input": gi, "output": go}
def generate_5c0a986e(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = difference(interval(0, 10, 1), (1, 2))
h = unifint(rng, diff_lb, diff_ub, (5, 30))
w = unifint(rng, diff_lb, diff_ub, (5, 30))
bgc = rng.choice(cols)
nobjs = unifint(rng, diff_lb, diff_ub, (2, (h * w) // 10))
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
tr = 0
maxtr = 5 * nobjs
succ = 0
inds = asindices(gi)
fullinds = asindices(gi)
while succ < nobjs and tr < maxtr:
tr += 1
cands = sfilter(inds, lambda ij: 0 < ij[0] <= h - 3 and 0 < ij[1] <= w - 3)
if len(cands) == 0:
break
loc = rng.choice(totuple(cands))
col = rng.choice((1, 2))
sq = {(loc), add(loc, (0, 1)), add(loc, (1, 0)), add(loc, (1, 1))}
if col == 1:
obj = sq | (shoot(loc, (-1, -1)) & fullinds)
else:
obj = sq | (shoot(loc, (1, 1)) & fullinds)
if obj.issubset(inds):
succ += 1
inds = (inds - obj) - mapply(dneighbors, sq)
gi = fill(gi, col, sq)
go = fill(go, col, obj)
return {"input": gi, "output": go}
def generate_9af7a82c(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(1, 10, 1)
prods = dict()
for a in range(1, 31, 1):
for b in range(1, 31, 1):
prd = a * b
if prd in prods:
prods[prd].append((a, b))
else:
prods[prd] = [(a, b)]
ncols = unifint(rng, diff_lb, diff_ub, (2, 9))
leastnc = sum(range(1, ncols + 1, 1))
maxnc = sum(range(30, 30 - ncols, -1))
cands = {k: v for k, v in prods.items() if leastnc <= k <= maxnc}
options = set()
for v in cands.values():
for opt in v:
options.add(opt)
options = sorted(options, key=lambda ij: ij[0] * ij[1])
idx = unifint(rng, diff_lb, diff_ub, (0, len(options) - 1))
h, w = options[idx]
ccols = rng.sample(cols, ncols)
counts = list(range(1, ncols + 1, 1))
eliginds = {ncols - 1}
while sum(counts) < h * w:
eligindss = sorted(eliginds, reverse=True)
idx = unifint(rng, diff_lb, diff_ub, (0, len(eligindss) - 1))
idx = eligindss[idx]
counts[idx] += 1
if idx > 0:
eliginds.add(idx - 1)
if idx < ncols - 1:
if counts[idx] == counts[idx + 1] - 1:
eliginds = eliginds - {idx}
if counts[idx] == 30:
eliginds = eliginds - {idx}
gi = canvas(-1, (h, w))
go = canvas(0, (max(counts), ncols))
inds = asindices(gi)
counts = counts[::-1]
for j, (col, cnt) in enumerate(zip(ccols, counts)):
locs = rng.sample(totuple(inds), cnt)
gi = fill(gi, col, locs)
inds = inds - set(locs)
go = fill(go, col, connect((0, j), (cnt - 1, j)))
return {"input": gi, "output": go}
def generate_d4469b4b(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = difference(interval(0, 10, 1), (1, 2, 3))
canv = canvas(5, (3, 3))
A = fill(canv, 0, {(1, 0), (2, 0), (1, 2), (2, 2)})
B = fill(canv, 0, corners(asindices(canv)))
C = fill(canv, 0, {(0, 0), (0, 1), (1, 0), (1, 1)})
colabc = ((2, A), (1, B), (3, C))
h = unifint(rng, diff_lb, diff_ub, (2, 30))
w = unifint(rng, diff_lb, diff_ub, (2, 30))
col, go = rng.choice(colabc)
gi = canvas(col, (h, w))
inds = asindices(gi)
numc = unifint(rng, diff_lb, diff_ub, (1, 7))
ccols = rng.sample(cols, numc)
numcells = unifint(rng, diff_lb, diff_ub, (0, h * w - 1))
locs = rng.sample(totuple(inds), numcells)
otherobj = {(rng.choice(ccols), ij) for ij in locs}
gi = paint(gi, otherobj)
return {"input": gi, "output": go}
def generate_bdad9b1f(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(4, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (4, 30))
w = unifint(rng, diff_lb, diff_ub, (4, 30))
numh = unifint(rng, diff_lb, diff_ub, (1, h // 2 - 1))
numw = unifint(rng, diff_lb, diff_ub, (1, w // 2 - 1))
hlocs = rng.sample(interval(2, h - 1, 1), numh)
wlocs = rng.sample(interval(2, w - 1, 1), numw)
numcols = unifint(rng, diff_lb, diff_ub, (2, 8))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
ccols = rng.sample(remcols, numcols)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
fc = -1
for ii in sorted(hlocs):
col = rng.choice(remove(fc, ccols))
fc = col
objw = rng.randint(2, ii)
gi = fill(gi, col, connect((ii, 0), (ii, objw - 1)))
go = fill(go, col, connect((ii, 0), (ii, w - 1)))
fc = -1
for jj in sorted(wlocs):
col = rng.choice(remove(fc, ccols))
fc = col
objh = rng.randint(2, jj)
gi = fill(gi, col, connect((0, jj), (objh - 1, jj)))
go = fill(go, col, connect((0, jj), (h - 1, jj)))
yells = product(set(hlocs), set(wlocs))
go = fill(go, 4, yells)
rotf = rng.choice((identity, rot90, rot180, rot270))
gi = rotf(gi)
go = rotf(go)
return {"input": gi, "output": go}
def generate_3345333e(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
oh = unifint(rng, diff_lb, diff_ub, (4, h - 2))
ow = unifint(rng, diff_lb, diff_ub, (4, (w - 2) // 2))
nc = unifint(rng, diff_lb, diff_ub, (min(oh, ow), (oh * ow) // 3 * 2))
shp = {(0, 0)}
bounds = asindices(canvas(-1, (oh, ow)))
for j in range(nc):
ij = rng.choice(totuple((bounds - shp) & mapply(neighbors, shp)))
shp.add(ij)
while height(shp) < 3 or width(shp) < 3:
ij = rng.choice(totuple((bounds - shp) & mapply(neighbors, shp)))
shp.add(ij)
vmshp = vmirror(shp)
if rng.choice((True, False)):
vmshp = sfilter(vmshp, lambda ij: ij[1] != width(shp) - 1)
shp = normalize(combine(shp, shift(vmshp, (0, -width(vmshp)))))
oh, ow = shape(shp)
bgc, objc, occcol = rng.sample(cols, 3)
loci = rng.randint(1, h - oh - 1)
locj = rng.randint(1, w - ow - 1)
loc = (loci, locj)
shp = shift(shp, loc)
c = canvas(bgc, (h, w))
go = fill(c, objc, shp)
boxh = unifint(rng, diff_lb, diff_ub, (2, oh - 1))
boxw = unifint(rng, diff_lb, diff_ub, (2, ow // 2))
ulci = rng.randint(loci - 1, loci + oh - boxh + 1)
ulcj = rng.randint(locj + ow // 2 + 1, locj + ow - boxw + 1)
bx = backdrop(frozenset({(ulci, ulcj), (ulci + boxh - 1, ulcj + boxw - 1)}))
gi = fill(go, occcol, bx)
mfs = (identity, dmirror, cmirror, vmirror, hmirror, rot90, rot180, rot270)
nmfs = rng.choice((1, 2))
for fn in rng.sample(mfs, nmfs):
gi = fn(gi)
go = fn(go)
return {"input": gi, "output": go}
def generate_253bf280(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
dim_bounds = (3, 30)
colopts = remove(3, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, dim_bounds)
w = unifint(rng, diff_lb, diff_ub, dim_bounds)
bgc = rng.choice(colopts)
c = canvas(bgc, (h, w))
inds = totuple(asindices(c))
card_bounds = (0, max(1, (h * w) // 4))
num = unifint(rng, diff_lb, diff_ub, card_bounds)
s = rng.sample(inds, num)
fgcol = rng.choice(remove(bgc, colopts))
gi = fill(c, fgcol, s)
resh = frozenset()
for x, r in enumerate(gi):
if r.count(fgcol) > 1:
resh = combine(resh, connect((x, r.index(fgcol)), (x, -1 + w - r[::-1].index(fgcol))))
go = fill(c, 3, resh)
resv = frozenset()
for x, r in enumerate(dmirror(gi)):
if r.count(fgcol) > 1:
resv = combine(resv, connect((x, r.index(fgcol)), (x, -1 + h - r[::-1].index(fgcol))))
go = dmirror(fill(dmirror(go), 3, resv))
go = fill(go, fgcol, s)
return {"input": gi, "output": go}
def generate_5582e5ca(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
colopts = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (2, 30))
w = unifint(rng, diff_lb, diff_ub, (2, 30))
numc = unifint(rng, diff_lb, diff_ub, (2, min(10, h * w - 1)))
ccols = rng.sample(colopts, numc)
mostc = ccols[0]
remcols = ccols[1:]
leastnummostcol = (h * w) // numc + 1
maxnummostcol = h * w - numc + 1
nummostcold = unifint(rng, diff_lb, diff_ub, (0, maxnummostcol - leastnummostcol))
nummostcol = min(max(leastnummostcol, maxnummostcol - nummostcold), maxnummostcol)
kk = len(remcols)
remcount = h * w - nummostcol - kk
remcounts = [1 for k in range(kk)]
for j in range(remcount):
cands = [idx for idx, c in enumerate(remcounts) if c < nummostcol - 1]
if len(cands) == 0:
break
idx = rng.choice(cands)
remcounts[idx] += 1
nummostcol = h * w - sum(remcounts)
gi = canvas(-1, (h, w))
inds = asindices(gi)
mclocs = rng.sample(totuple(inds), nummostcol)
gi = fill(gi, mostc, mclocs)
go = canvas(mostc, (h, w))
inds = inds - set(mclocs)
for col, count in zip(remcols, remcounts):
locs = rng.sample(totuple(inds), count)
inds = inds - set(locs)
gi = fill(gi, col, locs)
return {"input": gi, "output": go}
def generate_a1570a43(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (4, 30))
w = unifint(rng, diff_lb, diff_ub, (4, 30))
oh = unifint(rng, diff_lb, diff_ub, (3, h))
ow = unifint(rng, diff_lb, diff_ub, (3, w))
loci = rng.randint(0, h - oh)
locj = rng.randint(0, w - ow)
crns = {(loci, locj), (loci + oh - 1, locj), (loci, locj + ow - 1), (loci + oh - 1, locj + ow - 1)}
cands = shift(asindices(canvas(-1, (oh - 2, ow - 2))), (loci + 1, locj + 1))
bgc, dotc = rng.sample(cols, 2)
remcols = remove(bgc, remove(dotc, cols))
numc = unifint(rng, diff_lb, diff_ub, (1, 8))
ccols = rng.sample(remcols, numc)
gipro = canvas(bgc, (h, w))
gipro = fill(gipro, dotc, crns)
sp = rng.choice(totuple(cands))
obj = {sp}
cands = remove(sp, cands)
ncells = unifint(rng, diff_lb, diff_ub, (oh + ow - 5, max(oh + ow - 5, ((oh - 2) * (ow - 2)) // 2)))
for k in range(ncells - 1):
obj.add(rng.choice(totuple((cands - obj) & mapply(neighbors, obj))))
while shape(obj) != (oh - 2, ow - 2):
obj.add(rng.choice(totuple((cands - obj) & mapply(neighbors, obj))))
obj = {(rng.choice(ccols), ij) for ij in obj}
go = paint(gipro, obj)
nperts = unifint(rng, diff_lb, diff_ub, (1, max(h, w)))
k = 0
fullinds = asindices(go)
while ulcorner(obj) == (loci + 1, locj + 1) or k < nperts:
k += 1
options = sfilter(
neighbors((0, 0)),
lambda ij: len(crns & shift(toindices(obj), ij)) == 0 and shift(toindices(obj), ij).issubset(fullinds),
)
direc = rng.choice(totuple(options))
obj = shift(obj, direc)
gi = paint(gipro, obj)
return {"input": gi, "output": go}
def generate_f5b8619d(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(8, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (2, 15))
w = unifint(rng, diff_lb, diff_ub, (2, 15))
ncells = unifint(rng, diff_lb, diff_ub, (1, (h * w) // 2 - 1))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
gi = canvas(bgc, (h, w))
inds = asindices(gi)
locs = rng.sample(totuple(inds), ncells)
blockcol = rng.randint(0, w - 1)
locs = sfilter(locs, lambda ij: ij[1] != blockcol)
numcols = unifint(rng, diff_lb, diff_ub, (1, 8))
ccols = rng.sample(remcols, numcols)
obj = frozenset({(rng.choice(ccols), ij) for ij in locs})
gi = paint(gi, obj)
go = fill(gi, 8, mapply(vfrontier, set(locs)) & (inds - set(locs)))
go = hconcat(go, go)
go = vconcat(go, go)
return {"input": gi, "output": go}
def generate_444801d8(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
nobjs = unifint(rng, diff_lb, diff_ub, (1, (h * w) // 25))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
numcols = unifint(rng, diff_lb, diff_ub, (2, 9))
ccols = rng.sample(remcols, numcols)
succ = 0
tr = 0
maxtr = 5 * nobjs
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
inds = asindices(gi)
while succ < nobjs and tr < maxtr:
tr += 1
oh = rng.randint(4, 6)
ow = 5
bx = box({(1, 0), (oh - 1, 4)}) - {(1, 2)}
fullobj = backdrop({(0, 0), (oh - 1, 4)})
cands = backdrop(bx) - bx
dot = rng.choice(totuple(cands))
dcol, bxcol = rng.sample(ccols, 2)
inobj = recolor(bxcol, bx) | recolor(dcol, {dot})
outobj = recolor(bxcol, bx) | recolor(dcol, fullobj - bx)
if rng.choice((True, False)):
inobj = shift(hmirror(inobj), UP)
outobj = hmirror(outobj)
cands = sfilter(inds, lambda ij: ij[0] <= h - oh and ij[1] <= w - ow)
if len(cands) == 0:
continue
loc = rng.choice(totuple(cands))
outplcd = shift(outobj, loc)
outplcdi = toindices(outplcd)
if outplcdi.issubset(inds):
succ += 1
inplcd = shift(inobj, loc)
inds = (inds - outplcdi) - outbox(inplcd)
gi = paint(gi, inplcd)
go = paint(go, outplcd)
return {"input": gi, "output": go}
def generate_00d62c1b(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(4, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (5, 30))
w = unifint(rng, diff_lb, diff_ub, (5, 30))
bgc, fgc = rng.sample(cols, 2)
gi = canvas(bgc, (h, w))
nblocks = unifint(rng, diff_lb, diff_ub, (1, (h * w) // 20))
succ = 0
tr = 0
maxtr = 5 * nblocks
inds = asindices(gi)
while succ < nblocks and tr < maxtr:
tr += 1
oh = rng.randint(3, 8)
ow = rng.randint(3, 8)
cands = sfilter(inds, lambda ij: ij[0] <= h - oh and ij[1] <= w - ow)
if len(cands) == 0:
continue
loc = rng.choice(totuple(cands))
loci, locj = loc
bx = box(frozenset({(loci, locj), (loci + oh - 1, locj + ow - 1)}))
bx = bx - set(rng.sample(totuple(corners(bx)), rng.randint(0, 4)))
if bx.issubset(inds) and len(inds - bx) > (h * w) // 2 + 1:
gi = fill(gi, fgc, bx)
succ += 1
inds = inds - bx
maxnnoise = max(0, (h * w) // 2 - 1 - colorcount(gi, fgc))
namt = unifint(rng, diff_lb, diff_ub, (0, maxnnoise))
noise = rng.sample(totuple(inds), namt)
gi = fill(gi, fgc, noise)
objs = objects(gi, T, F, F)
cands = colorfilter(objs, bgc)
res = mfilter(cands, compose(flip, rbind(bordering, gi)))
go = fill(gi, 4, res)
return {"input": gi, "output": go}
def generate_10fcaaa3(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(8, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (2, 15))
w = unifint(rng, diff_lb, diff_ub, (2, 15))
ncells = unifint(rng, diff_lb, diff_ub, (1, max(1, (h * w) // 6)))
ncols = unifint(rng, diff_lb, diff_ub, (1, 8))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
ccols = rng.sample(remcols, ncols)
c = canvas(bgc, (h, w))
inds = asindices(c)
locs = frozenset(rng.sample(totuple(inds), ncells))
obj = frozenset({(rng.choice(ccols), ij) for ij in locs})
gi = paint(c, obj)
go = hconcat(gi, gi)
go = vconcat(go, go)
fullocs = locs | shift(locs, (0, w)) | shift(locs, (h, 0)) | shift(locs, (h, w))
nbhs = mapply(ineighbors, fullocs)
topaint = nbhs & ofcolor(go, bgc)
go = fill(go, 8, topaint)
return {"input": gi, "output": go}
def generate_1a07d186(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (8, 30))
w = unifint(rng, diff_lb, diff_ub, (8, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
nlines = unifint(rng, diff_lb, diff_ub, (1, w // 5))
linecols = rng.sample(remcols, nlines)
remcols = difference(remcols, linecols)
nnoisecols = unifint(rng, diff_lb, diff_ub, (0, len(remcols)))
noisecols = rng.sample(remcols, nnoisecols)
locopts = interval(0, w, 1)
locs = []
for k in range(nlines):
if len(locopts) == 0:
break
loc = rng.choice(locopts)
locopts = difference(locopts, interval(loc - 2, loc + 3, 1))
locs.append(loc)
locs = sorted(locs)
nlines = len(locs)
linecols = linecols[:nlines]
gi = canvas(bgc, (h, w))
for loc, col in zip(locs, linecols):
gi = fill(gi, col, connect((0, loc), (h - 1, loc)))
go = tuple(e for e in gi)
nilocs = unifint(rng, diff_lb, diff_ub, (1, h))
ilocs = rng.sample(interval(0, h, 1), nilocs)
dotlocopts = difference(interval(0, w, 1), locs)
for ii in ilocs:
ndots = unifint(rng, diff_lb, diff_ub, (1, min(nlines + nnoisecols, (w - nlines) // 2 - 1)))
dotlocs = rng.sample(dotlocopts, ndots)
dotcols = rng.sample(totuple(set(linecols) | set(noisecols)), ndots)
for dotlocj, col in zip(dotlocs, dotcols):
gi = fill(gi, col, {(ii, dotlocj)})
if col in linecols:
idx = linecols.index(col)
linelocj = locs[idx]
if dotlocj > linelocj:
go = fill(go, col, {(ii, linelocj + 1)})
else:
go = fill(go, col, {(ii, linelocj - 1)})
if rng.choice((True, False)):
gi = dmirror(gi)
go = dmirror(go)
return {"input": gi, "output": go}
def generate_83302e8f(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = difference(interval(0, 10, 1), (3, 4))
h = unifint(rng, diff_lb, diff_ub, (2, 5))
w = unifint(rng, diff_lb, diff_ub, (2, 5))
nh = unifint(rng, diff_lb, diff_ub, (3, 30 // (h + 1)))
nw = unifint(rng, diff_lb, diff_ub, (3, 30 // (w + 1)))
bgc, linc = rng.sample(cols, 2)
fullh = h * nh + nh - 1
fullw = w * nw + nw - 1
gi = canvas(bgc, (fullh, fullw))
for iloc in range(h, fullh, h + 1):
gi = fill(gi, linc, hfrontier((iloc, 0)))
for jloc in range(w, fullw, w + 1):
gi = fill(gi, linc, vfrontier((0, jloc)))
ofc = ofcolor(gi, linc)
dots = sfilter(ofc, lambda ij: dneighbors(ij).issubset(ofc))
tmp = fill(gi, bgc, dots)
lns = apply(toindices, colorfilter(objects(tmp, T, F, F), linc))
dts = apply(initset, dots)
cands = lns | dts
nbreaks = unifint(rng, diff_lb, diff_ub, (0, len(cands) // 2))
breaklocs = set()
breakobjs = rng.sample(totuple(cands), nbreaks)
for breakobj in breakobjs:
loc = rng.choice(totuple(breakobj))
breaklocs.add(loc)
gi = fill(gi, bgc, breaklocs)
objs = objects(gi, T, F, F)
objs = colorfilter(objs, bgc)
objs = sfilter(objs, lambda o: len(o) == h * w)
res = toindices(merge(objs))
go = fill(gi, 3, res)
go = replace(go, bgc, 4)
return {"input": gi, "output": go}
def generate_98cf29f8(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
objh = unifint(rng, diff_lb, diff_ub, (2, h - 5))
objw = unifint(rng, diff_lb, diff_ub, (2, w - 5))
loci = rng.randint(0, h - objh)
locj = rng.randint(0, w - objw)
loc = (loci, locj)
obj = backdrop(frozenset({(loci, locj), (loci + objh - 1, locj + objw - 1)}))
bgc, objc, otherc = rng.sample(cols, 3)
gi = canvas(bgc, (h, w))
gi = fill(gi, objc, obj)
bmarg = h - (loci + objh)
rmarg = w - (locj + objw)
tmarg = loci
lmarg = locj
margs = (bmarg, rmarg, tmarg, lmarg)
options = [idx for idx, marg in enumerate(margs) if marg > 2]
pos = rng.choice(options)
for k in range(pos):
gi = rot90(gi)
h, w = shape(gi)
ofc = ofcolor(gi, objc)
locis = rng.randint(lowermost(ofc) + 2, h - 2)
locie = rng.randint(locis + 1, h - 1)
locjs = rng.randint(0, min(w - 2, rightmost(ofc)))
locje = rng.randint(max(locjs + 1, leftmost(ofc)), w - 1)
otherobj = backdrop(frozenset({(locis, locjs), (locie, locje)}))
ub = min(rightmost(ofc), rightmost(otherobj))
lb = max(leftmost(ofc), leftmost(otherobj))
jloc = rng.randint(lb, ub)
ln = connect((lowermost(ofc) + 1, jloc), (uppermost(otherobj) - 1, jloc))
gib = tuple(e for e in gi)
gi = fill(gi, otherc, otherobj)
gi = fill(gi, otherc, ln)
go = fill(gib, otherc, shift(otherobj, (-len(ln), 0)))
mfs = (identity, dmirror, cmirror, vmirror, hmirror, rot90, rot180, rot270)
nmfs = rng.choice((1, 2))
for fn in rng.sample(mfs, nmfs):
gi = fn(gi)
go = fn(go)
return {"input": gi, "output": go}
def generate_1f85a75f(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
oh = rng.randint(3, min(8, h // 2))
ow = rng.randint(3, min(8, w // 2))
bounds = asindices(canvas(-1, (oh, ow)))
ncells = rng.randint(max(oh, ow), oh * ow)
sp = rng.choice(totuple(bounds))
obj = {sp}
cands = remove(sp, bounds)
for k in range(ncells - 1):
obj.add(rng.choice(totuple((bounds - obj) & mapply(dneighbors, obj))))
obj = normalize(obj)
oh, ow = shape(obj)
loci = rng.randint(0, h - oh)
locj = rng.randint(0, w - ow)
bgc, objc = rng.sample(cols, 2)
remcols = remove(bgc, remove(objc, cols))
numc = unifint(rng, diff_lb, diff_ub, (1, 8))
ccols = rng.sample(remcols, numc)
nnoise = unifint(rng, diff_lb, diff_ub, (0, max(0, ((h * w) - len(backdrop(obj))) // 4)))
gi = canvas(bgc, (h, w))
obj = shift(obj, (loci, locj))
gi = fill(gi, objc, obj)
inds = asindices(gi)
noisecells = rng.sample(totuple(inds - backdrop(obj)), nnoise)
noiseobj = frozenset({(rng.choice(ccols), ij) for ij in noisecells})
gi = paint(gi, noiseobj)
go = fill(canvas(bgc, (oh, ow)), objc, normalize(obj))
return {"input": gi, "output": go}
def generate_8eb1be9a(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (8, 30))
w = unifint(rng, diff_lb, diff_ub, (4, 30))
oh = unifint(rng, diff_lb, diff_ub, (2, h // 3))
ow = unifint(rng, diff_lb, diff_ub, (2, w))
bounds = asindices(canvas(-1, (oh, ow)))
ncells = unifint(rng, diff_lb, diff_ub, (2, (oh * ow) // 3 * 2))
obj = normalize(frozenset(rng.sample(totuple(bounds), ncells)))
oh, ow = shape(obj)
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
ncols = unifint(rng, diff_lb, diff_ub, (1, 9))
ccols = rng.sample(remcols, ncols)
obj = frozenset({(rng.choice(ccols), ij) for ij in obj})
loci = rng.randint(0, h - oh)
locj = rng.randint(0, w - ow)
obj = shift(obj, (loci, locj))
c = canvas(bgc, (h, w))
gi = paint(c, obj)
go = paint(c, obj)
for k in range(h // oh + 1):
go = paint(go, shift(obj, (-oh * k, 0)))
go = paint(go, shift(obj, (oh * k, 0)))
return {"input": gi, "output": go}
def generate_ba26e723(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = difference(interval(0, 10, 1), (0, 6))
h = unifint(rng, diff_lb, diff_ub, (2, 30))
w = unifint(rng, diff_lb, diff_ub, (2, 30))
gi = canvas(0, (h, w))
go = canvas(0, (h, w))
opts = interval(0, h, 1)
ncols = unifint(rng, diff_lb, diff_ub, (1, 8))
ccols = rng.sample(cols, ncols)
for j in range(w):
nc = unifint(rng, diff_lb, diff_ub, (1, h - 1))
locs = rng.sample(opts, nc)
obj = frozenset({(rng.choice(ccols), (ii, j)) for ii in locs})
gi = paint(gi, obj)
if j % 3 == 0:
obj = recolor(6, obj)
go = paint(go, obj)
return {"input": gi, "output": go}
def generate_25d487eb(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
ncols = unifint(rng, diff_lb, diff_ub, (2, 8))
ccols = rng.sample(remcols, ncols)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
nobjs = unifint(rng, diff_lb, diff_ub, (1, (h * w) // 30))
succ = 0
tr = 0
maxtr = 10 * nobjs
inds = asindices(go)
while tr < maxtr and succ < nobjs:
if len(inds) == 0:
break
tr += 1
dim = rng.randint(1, 3)
obj = backdrop(frozenset({(0, 0), (dim, dim)}))
obj = sfilter(obj, lambda ij: ij[0] <= ij[1])
obj = obj | shift(vmirror(obj), (0, dim))
mp = {(0, dim)}
tric, linc = rng.sample(ccols, 2)
inobj = recolor(tric, obj - mp) | recolor(linc, mp)
loc = rng.choice(totuple(inds))
iplcd = shift(inobj, loc)
loci, locj = loc
oplcd = iplcd | recolor(linc, connect((loci, locj + dim), (h - 1, locj + dim)) - toindices(iplcd))
fullinds = asindices(gi)
oplcdi = toindices(oplcd)
if oplcdi.issubset(inds):
succ += 1
gi = paint(gi, iplcd)
go = paint(go, oplcd)
rotf = rng.choice((identity, rot90, rot180, rot270))
gi = rotf(gi)
go = rotf(go)
h, w = shape(gi)
ofc = ofcolor(go, bgc)
inds = ofc - mapply(dneighbors, asindices(go) - ofc)
return {"input": gi, "output": go}
def generate_4be741c5(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (4, 30))
w = unifint(rng, diff_lb, diff_ub, (6, 30))
numcolors = unifint(rng, diff_lb, diff_ub, (2, w // 3))
ccols = rng.sample(cols, numcolors)
go = (tuple(ccols),)
gi = merge(tuple(repeat(repeat(c, h), 3) for c in ccols))
while len(gi) < w:
idx = rng.randint(0, len(gi) - 1)
gi = gi[:idx] + gi[idx : idx + 1] + gi[idx:]
gi = dmirror(gi)
ndisturbances = unifint(rng, diff_lb, diff_ub, (0, 3 * h * numcolors))
for k in range(ndisturbances):
options = []
for a in range(h):
for b in range(w - 3):
if gi[a][b] == gi[a][b + 1] and gi[a][b + 2] == gi[a][b + 3]:
options.append((a, b, gi[a][b], gi[a][b + 2]))
if len(options) == 0:
break
a, b, c1, c2 = rng.choice(options)
if rng.choice((True, False)):
gi = fill(gi, c2, {(a, b + 1)})
else:
gi = fill(gi, c1, {(a, b + 2)})
if rng.choice((True, False)):
gi = dmirror(gi)
go = dmirror(go)
return {"input": gi, "output": go}
def generate_e509e548(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = difference(interval(0, 10, 1), (1, 2, 6))
getL = lambda h, w: connect((0, 0), (h - 1, 0)) | connect((0, 0), (0, w - 1))
getU = (
lambda h, w: connect((0, 0), (0, w - 1))
| connect((0, 0), (rng.randint(1, h - 1), 0))
| connect((0, w - 1), (rng.randint(1, h - 1), w - 1))
)
getH = lambda h, w: connect((0, 0), (0, w - 1)) | shift(
connect((0, 0), (h - 1, 0)) | connect((h - 1, 0), (h - 1, rng.randint(1, w - 1))), (0, rng.randint(1, w - 2))
)
minshp_getter_pairs = ((2, 2, getL), (2, 3, getU), (3, 3, getH))
colmapper = {getL: 1, getU: 6, getH: 2}
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
ncols = unifint(rng, diff_lb, diff_ub, (1, 6))
ccols = rng.sample(remcols, ncols)
nobjs = unifint(rng, diff_lb, diff_ub, (3, (h * w) // 10))
succ = 0
tr = 0
maxtr = 5 * nobjs
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
inds = asindices(gi)
while succ < nobjs and tr < maxtr:
tr += 1
minh, minw, getter = rng.choice(minshp_getter_pairs)
oh = rng.randint(minh, 6)
ow = rng.randint(minw, 6)
obj = getter(oh, ow)
mfs = (identity, dmirror, cmirror, vmirror, hmirror)
nmfs = rng.choice((1, 2))
for fn in rng.sample(mfs, nmfs):
obj = fn(obj)
obj = normalize(obj)
oh, ow = shape(obj)
cands = sfilter(inds, lambda ij: ij[0] <= h - oh and ij[1] <= w - ow)
if len(cands) == 0:
continue
loc = rng.choice(totuple(cands))
plcd = shift(obj, loc)
if plcd.issubset(inds):
succ += 1
inds = (inds - plcd) - mapply(dneighbors, plcd)
col = rng.choice(ccols)
gi = fill(gi, col, plcd)
go = fill(go, colmapper[getter], plcd)
return {"input": gi, "output": go}
def generate_810b9b61(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = difference(interval(0, 10, 1), (3,))
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
ncols = unifint(rng, diff_lb, diff_ub, (1, 6))
ccols = rng.sample(remcols, ncols)
nobjs = unifint(rng, diff_lb, diff_ub, (3, (h * w) // 10))
succ = 0
tr = 0
maxtr = 5 * nobjs
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
inds = asindices(gi)
while succ < nobjs and tr < maxtr:
tr += 1
oh = rng.randint(3, 5)
ow = rng.randint(3, 5)
cands = sfilter(inds, lambda ij: ij[0] <= h - oh and ij[1] <= w - ow)
if len(cands) == 0:
continue
loc = rng.choice(totuple(cands))
loci, locj = loc
obj = box(frozenset({(loci, locj), (loci + oh - 1, locj + ow - 1)}))
mfs = (identity, dmirror, cmirror, vmirror, hmirror)
nmfs = rng.choice((1, 2))
for fn in rng.sample(mfs, nmfs):
obj = fn(obj)
obj = normalize(obj)
oh, ow = shape(obj)
cands = sfilter(inds, lambda ij: ij[0] <= h - oh and ij[1] <= w - ow)
if len(cands) == 0:
continue
loc = rng.choice(totuple(cands))
plcd = shift(obj, loc)
if rng.choice((True, False)):
ninobjc = unifint(rng, diff_lb, diff_ub, (1, len(plcd) - 1))
inobj = frozenset(rng.sample(totuple(plcd), ninobjc))
else:
inobj = plcd
if inobj.issubset(inds):
succ += 1
inds = (inds - inobj) - mapply(dneighbors, inobj)
col = rng.choice(ccols)
gi = fill(gi, col, inobj)
go = fill(go, 3 if box(inobj) == inobj and min(shape(inobj)) > 2 else col, inobj)
return {"input": gi, "output": go}
def generate_6d0160f0(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = difference(interval(0, 10, 1), (4,))
h = unifint(rng, diff_lb, diff_ub, (2, 5))
w = unifint(rng, diff_lb, diff_ub, (2, 5))
nh, nw = h, w
bgc, linc = rng.sample(cols, 2)
fullh = h * nh + nh - 1
fullw = w * nw + nw - 1
gi = canvas(bgc, (fullh, fullw))
for iloc in range(h, fullh, h + 1):
gi = fill(gi, linc, hfrontier((iloc, 0)))
for jloc in range(w, fullw, w + 1):
gi = fill(gi, linc, vfrontier((0, jloc)))
noccs = unifint(rng, diff_lb, diff_ub, (1, h * w))
denseinds = asindices(canvas(-1, (h, w)))
sparseinds = {(a * (h + 1), b * (w + 1)) for a, b in denseinds}
locs = rng.sample(totuple(sparseinds), noccs)
trgtl = rng.choice(locs)
remlocs = remove(trgtl, locs)
ntrgt = unifint(rng, diff_lb, diff_ub, (1, (h * w - 1)))
place = rng.choice(totuple(denseinds))
ncols = unifint(rng, diff_lb, diff_ub, (1, 9))
ccols = rng.sample(cols, ncols)
candss = totuple(remove(place, denseinds))
trgrem = rng.sample(candss, ntrgt)
trgrem = {(rng.choice(ccols), ij) for ij in trgrem}
trgtobj = {(4, place)} | trgrem
go = paint(gi, shift(sfilter(trgtobj, lambda cij: cij[0] != linc), multiply(place, increment((h, w)))))
gi = paint(gi, shift(trgtobj, trgtl))
toleaveout = ccols
for rl in remlocs:
tlo = rng.choice(totuple(ccols))
ncells = unifint(rng, diff_lb, diff_ub, (1, h * w - 1))
inds = rng.sample(totuple(denseinds), ncells)
obj = {(rng.choice(remove(tlo, ccols) if len(ccols) > 1 else ccols), ij) for ij in inds}
toleaveout = remove(tlo, toleaveout)
gi = paint(gi, shift(obj, rl))
return {"input": gi, "output": go}
def generate_63613498(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
bgc, sepc = rng.sample(cols, 2)
remcols = remove(bgc, remove(sepc, cols))
ncols = unifint(rng, diff_lb, diff_ub, (1, 8))
ccols = rng.sample(remcols, ncols)
objh = unifint(rng, diff_lb, diff_ub, (1, h // 3))
objw = unifint(rng, diff_lb, diff_ub, (1, w // 3))
bounds = asindices(canvas(-1, (objh, objw)))
sp = rng.choice(totuple(bounds))
obj = {sp}
ncells = unifint(rng, diff_lb, diff_ub, (1, (objh * objw)))
for k in range(ncells - 1):
obj.add(rng.choice(totuple((bounds - obj) & mapply(dneighbors, obj))))
gi = canvas(bgc, (h, w))
objc = rng.choice(ccols)
gi = fill(gi, objc, obj)
sep = connect((objh + 1, 0), (objh + 1, objw + 1)) | connect((0, objw + 1), (objh + 1, objw + 1))
gi = fill(gi, sepc, sep)
inds = asindices(gi)
inds -= backdrop(sep)
nobjs = unifint(rng, diff_lb, diff_ub, (1, (h * w) // 20))
succ = 0
tr = 0
maxtr = 5 * nobjs
baseobj = normalize(obj)
obj = normalize(obj)
go = tuple(e for e in gi)
while (succ < nobjs and tr < maxtr) or succ == 0:
tr += 1
oh, ow = shape(obj)
cands = sfilter(inds, lambda ij: ij[0] <= h - oh and ij[1] <= w - ow)
if len(cands) == 0:
break
loc = rng.choice(totuple(cands))
plcd = shift(obj, loc)
if plcd.issubset(inds):
col = rng.choice(ccols)
gi = fill(gi, col, plcd)
go = fill(go, sepc if succ == 0 else col, plcd)
succ += 1
inds = (inds - plcd) - mapply(dneighbors, plcd)
objh = rng.randint(1, h // 3)
objw = rng.randint(2 if objh == 1 else 1, w // 3)
if rng.choice((True, False)):
objh, objw = objw, objh
bounds = asindices(canvas(-1, (objh, objw)))
sp = rng.choice(totuple(bounds))
obj = {sp}
ncells = unifint(rng, diff_lb, diff_ub, (1, (objh * objw)))
for k in range(ncells - 1):
obj.add(rng.choice(totuple((bounds - obj) & mapply(dneighbors, obj))))
obj = normalize(obj)
obj = set(obj)
if obj == baseobj:
if len(obj) < objh * objw:
obj.add(rng.choice(totuple((bounds - obj) & mapply(dneighbors, obj))))
else:
obj = remove(rng.choice(totuple(corners(obj))), obj)
obj = normalize(obj)
rotf = rng.choice((identity, rot90, rot180, rot270))
gi = rotf(gi)
go = rotf(go)
return {"input": gi, "output": go}
def generate_e5062a87(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(1, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
eligcol, objc = rng.sample(cols, 2)
gi = canvas(eligcol, (h, w))
inds = asindices(gi)
sp = rng.choice(totuple(inds))
obj = {sp}
ncells = unifint(rng, diff_lb, diff_ub, (3, 9))
for k in range(ncells - 1):
obj.add(rng.choice(totuple((inds - obj) & mapply(neighbors, obj))))
obj = normalize(obj)
nnoise = unifint(rng, diff_lb, diff_ub, (int(0.2 * h * w), int(0.5 * h * w)))
locs = rng.sample(totuple(inds), nnoise)
gi = fill(gi, 0, locs)
noccs = unifint(rng, diff_lb, diff_ub, (2, max(2, (h * w) // (len(obj) * 3))))
oh, ow = shape(obj)
for k in range(noccs):
loci = rng.randint(0, h - oh)
locj = rng.randint(0, w - ow)
loc = (loci, locj)
gi = fill(gi, objc if k == noccs - 1 else 0, shift(obj, loc))
occs = occurrences(gi, recolor(0, obj))
res = mapply(lbind(shift, obj), occs)
go = fill(gi, objc, res)
return {"input": gi, "output": go}
def generate_bc1d5164(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (3, 15))
w = unifint(rng, diff_lb, diff_ub, (2, 14))
fullh = 2 * h - 1
fullw = 2 * w + 1
bgc, objc = rng.sample(cols, 2)
inds = asindices(canvas(-1, (h, w)))
nA = rng.randint(1, (h - 1) * (w - 1) - 1)
nB = rng.randint(1, (h - 1) * (w - 1) - 1)
nC = rng.randint(1, (h - 1) * (w - 1) - 1)
nD = rng.randint(1, (h - 1) * (w - 1) - 1)
A = rng.sample(totuple(sfilter(inds, lambda ij: ij[0] < h - 1 and ij[1] < w - 1)), nA)
B = rng.sample(totuple(sfilter(inds, lambda ij: ij[0] < h - 1 and ij[1] > 0)), nB)
C = rng.sample(totuple(sfilter(inds, lambda ij: ij[0] > 0 and ij[1] < w - 1)), nC)
D = rng.sample(totuple(sfilter(inds, lambda ij: ij[0] > 0 and ij[1] > 0)), nD)
gi = canvas(bgc, (fullh, fullw))
gi = fill(gi, objc, A)
gi = fill(gi, objc, shift(B, (0, fullw - w)))
gi = fill(gi, objc, shift(C, (fullh - h, 0)))
gi = fill(gi, objc, shift(D, (fullh - h, fullw - w)))
go = canvas(bgc, (h, w))
go = fill(go, objc, set(A) | set(B) | set(C) | set(D))
return {"input": gi, "output": go}
def generate_11852cab(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
r1 = ((0, 0), (0, 4), (4, 0), (4, 4))
r2 = ((2, 0), (0, 2), (4, 2), (2, 4))
r3 = ((1, 1), (3, 1), (1, 3), (3, 3))
r4 = ((2, 2),)
rings = [r4, r3, r2, r1]
bx = backdrop(frozenset(r1))
h = unifint(rng, diff_lb, diff_ub, (7, 30))
w = unifint(rng, diff_lb, diff_ub, (7, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
numc = unifint(rng, diff_lb, diff_ub, (1, 9))
ccols = rng.sample(remcols, numc)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
inds = shift(asindices(trim(gi)), UNITY)
nobjs = unifint(rng, diff_lb, diff_ub, (1, max(1, (h * w) // 36)))
succ = 0
tr = 0
maxtr = 10 * nobjs
while succ < nobjs and tr < maxtr:
tr += 1
cands = sfilter(inds, lambda ij: ij[0] <= h - 5 and ij[0] <= w - 5)
if len(cands) == 0:
break
loc = rng.choice(totuple(cands))
plcd = shift(bx, loc)
if plcd.issubset(inds):
inds = (inds - plcd) - outbox(plcd)
ringcols = [rng.choice(ccols) for k in range(4)]
plcdrings = [shift(r, loc) for r in rings]
gi = fill(gi, ringcols[0], plcdrings[0])
go = fill(go, ringcols[0], plcdrings[0])
idx = rng.randint(1, 3)
gi = fill(gi, ringcols[idx], plcdrings[idx])
go = fill(go, ringcols[idx], plcdrings[idx])
remrings = plcdrings[1:idx] + plcdrings[idx + 1 :]
remringcols = ringcols[1:idx] + ringcols[idx + 1 :]
numrs = unifint(rng, diff_lb, diff_ub, (1, 2))
locs = rng.sample((0, 1), numrs)
remrings = [rr for j, rr in enumerate(remrings) if j in locs]
remringcols = [rr for j, rr in enumerate(remringcols) if j in locs]
tofillgi = merge(
frozenset(
recolor(col, frozenset(rng.sample(totuple(remring), 4 - unifint(rng, diff_lb, diff_ub, (0, 3)))))
for remring, col in zip(remrings, remringcols)
)
)
tofillgo = merge(frozenset(recolor(col, remring) for remring, col in zip(remrings, remringcols)))
if min(shape(tofillgi)) == 5:
succ += 1
gi = paint(gi, tofillgi)
go = paint(go, tofillgo)
return {"input": gi, "output": go}
def generate_025d127b(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (5, 30))
w = unifint(rng, diff_lb, diff_ub, (5, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
numcols = unifint(rng, diff_lb, diff_ub, (1, 9))
ccols = rng.sample(remcols, numcols)
nobjs = unifint(rng, diff_lb, diff_ub, (1, (h * w) // 20))
succ = 0
tr = 0
maxtr = 5 * nobjs
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
inds = asindices(gi)
while succ < nobjs and tr < maxtr:
tr += 1
oh = rng.randint(3, 6)
ow = rng.randint(3, 6)
cands = sfilter(inds, lambda ij: ij[0] <= h - oh and ij[1] <= w - ow)
if len(cands) == 0:
continue
loc = rng.choice(totuple(cands))
topl = connect((0, 0), (0, ow - 1))
leftl = connect((1, 0), (oh - 2, oh - 3))
rightl = connect((1, ow), (oh - 2, ow + oh - 3))
botl = connect((oh - 1, oh - 2), (oh - 1, oh - 3 + ow))
inobj = topl | leftl | rightl | botl
outobj = (
shift(topl, (0, 1))
| botl
| shift(leftl, (0, 1))
| connect((1, ow + 1), (oh - 3, ow + oh - 3))
| {(oh - 2, ow + oh - 3)}
)
outobj = sfilter(outobj, lambda ij: ij[1] <= rightmost(inobj))
fullobj = inobj | outobj
inobj = shift(inobj, loc)
outobj = shift(outobj, loc)
fullobj = shift(fullobj, loc)
if fullobj.issubset(inds):
inds = (inds - fullobj) - mapply(neighbors, fullobj)
succ += 1
col = rng.choice(ccols)
gi = fill(gi, col, inobj)
go = fill(go, col, outobj)
return {"input": gi, "output": go}
def generate_045e512c(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (11, 30))
w = unifint(rng, diff_lb, diff_ub, (11, 30))
while True:
oh = unifint(rng, diff_lb, diff_ub, (2, min(4, (h - 2) // 3)))
ow = unifint(rng, diff_lb, diff_ub, (2, min(4, (w - 2) // 3)))
bounds = asindices(canvas(-1, (oh, ow)))
c1 = rng.choice(totuple(connect((0, 0), (oh - 1, 0))))
c2 = rng.choice(totuple(connect((0, 0), (0, ow - 1))))
c3 = rng.choice(totuple(connect((oh - 1, ow - 1), (oh - 1, 0))))
c4 = rng.choice(totuple(connect((oh - 1, ow - 1), (0, ow - 1))))
obj = {c1, c2, c3, c4}
remcands = totuple(bounds - obj)
ncells = unifint(rng, diff_lb, diff_ub, (0, len(remcands)))
for k in range(ncells):
loc = rng.choice(remcands)
obj.add(loc)
remcands = remove(loc, remcands)
objt = normalize(obj)
cc = canvas(0, shape(obj))
cc = fill(cc, 1, objt)
if len(colorfilter(objects(cc, T, T, F), 1)) == 1:
break
loci = rng.randint(oh + 1, h - 2 * oh - 1)
locj = rng.randint(ow + 1, w - 2 * ow - 1)
loc = (loci, locj)
bgc, objc = rng.sample(cols, 2)
remcols = remove(bgc, remove(objc, cols))
ncols = unifint(rng, diff_lb, diff_ub, (1, 8))
ccols = rng.sample(remcols, ncols)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
obj = shift(recolor(objc, obj), loc)
gi = paint(gi, obj)
go = paint(go, obj)
options = totuple(neighbors((0, 0)))
ndirs = unifint(rng, diff_lb, diff_ub, (1, 8))
dirs = rng.sample(options, ndirs)
dcols = [rng.choice(ccols) for k in range(ndirs)]
hbars = hfrontier((loci - 2, 0)) | hfrontier((loci + oh + 1, 0))
vbars = vfrontier((0, locj - 2)) | vfrontier((0, locj + ow + 1))
bars = hbars | vbars
ofs = increment((oh, ow))
for direc, col in zip(dirs, dcols):
indicatorobj = shift(obj, multiply(direc, increment((oh, ow))))
indicatorobj = sfilter(indicatorobj, lambda cij: cij[1] in bars)
nindsd = unifint(rng, diff_lb, diff_ub, (0, len(indicatorobj) - 1))
ninds = len(indicatorobj) - nindsd
indicatorobj = set(rng.sample(totuple(indicatorobj), ninds))
if len(indicatorobj) > 0 and len(indicatorobj) < len(obj):
gi = fill(gi, col, indicatorobj)
for k in range(1, 10):
go = fill(go, col, shift(obj, multiply(multiply(k, direc), ofs)))
return {"input": gi, "output": go}
def generate_1b60fb0c(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(2, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
odh = unifint(rng, diff_lb, diff_ub, (2, min(h, w) // 2))
loci = rng.randint(0, h - 2 * odh)
locj = rng.randint(0, w - 2 * odh)
loc = (loci, locj)
bgc, objc = rng.sample(cols, 2)
quad = canvas(bgc, (odh, odh))
ncellsd = unifint(rng, diff_lb, diff_ub, (0, odh**2 // 2))
ncells = rng.choice((ncellsd, odh**2 - ncellsd))
ncells = min(max(1, ncells), odh**2 - 1)
cells = rng.sample(totuple(asindices(canvas(-1, (odh, odh)))), ncells)
g1 = fill(quad, objc, cells)
g2 = rot90(g1)
g3 = rot90(g2)
g4 = rot90(g3)
c1 = shift(ofcolor(g1, objc), (0, 0))
c2 = shift(ofcolor(g2, objc), (0, odh))
c3 = shift(ofcolor(g3, objc), (odh, odh))
c4 = shift(ofcolor(g4, objc), (odh, 0))
shftamt = rng.randint(0, odh)
c1 = shift(c1, (0, shftamt))
c2 = shift(c2, (shftamt, 0))
c3 = shift(c3, (0, -shftamt))
c4 = shift(c4, (-shftamt, 0))
cs = (c1, c2, c3, c4)
rempart = rng.choice(cs)
inobjparts = remove(rempart, cs)
inobj = merge(set(inobjparts))
rempart = rempart - inobj
inobj = shift(inobj, loc)
rempart = shift(rempart, loc)
gi = canvas(bgc, (h, w))
gi = fill(gi, objc, inobj)
go = fill(gi, 2, rempart)
return {"input": gi, "output": go}
def generate_1f0c79e5(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(2, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (5, 30))
w = unifint(rng, diff_lb, diff_ub, (5, 30))
bgc, objc = rng.sample(cols, 2)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
nobjs = unifint(rng, diff_lb, diff_ub, (1, (h * w) // 24))
inds = asindices(gi)
obj = ((0, 0), (0, 1), (1, 0), (1, 1))
for k in range(nobjs):
cands = sfilter(inds, lambda ij: shift(set(obj), ij).issubset(inds))
if len(cands) == 0:
break
loc = rng.choice(totuple(cands))
plcd = shift(obj, loc)
nred = unifint(rng, diff_lb, diff_ub, (1, 3))
reds = rng.sample(totuple(plcd), nred)
gi = fill(gi, objc, plcd)
gi = fill(gi, 2, reds)
for idx in reds:
direc = decrement(multiply(2, add(idx, invert(loc))))
go = fill(go, objc, mapply(rbind(shoot, direc), frozenset(plcd)))
inds = (inds - plcd) - mapply(dneighbors, set(plcd))
return {"input": gi, "output": go}
def generate_1f876c06(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (5, 30))
w = unifint(rng, diff_lb, diff_ub, (5, 30))
nlns = unifint(rng, diff_lb, diff_ub, (1, min(min(h, w), 9)))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
ccols = rng.sample(remcols, nlns)
succ = 0
tr = 0
maxtr = 10 * nlns
direcs = ineighbors((0, 0))
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
inds = asindices(gi)
while succ < nlns and tr < maxtr:
tr += 1
if len(inds) == 0:
break
loc = rng.choice(totuple(inds))
lns = []
for direc in direcs:
ln = [loc]
ofs = 1
while True:
nextpix = add(loc, multiply(ofs, direc))
ofs += 1
if nextpix not in inds:
break
ln.append(nextpix)
if len(ln) > 2:
lns.append(ln)
if len(lns) > 0:
succ += 1
lns = sorted(lns, key=len)
idx = unifint(rng, diff_lb, diff_ub, (0, len(lns) - 1))
ln = lns[idx]
col = ccols[0]
ccols = ccols[1:]
gi = fill(gi, col, {ln[0], ln[-1]})
go = fill(go, col, set(ln))
inds = inds - set(ln)
return {"input": gi, "output": go}
def generate_22233c11(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(8, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (5, 30))
w = unifint(rng, diff_lb, diff_ub, (5, 30))
nobjs = unifint(rng, diff_lb, diff_ub, (1, (h * w) // 10))
succ = 0
tr = 0
maxtr = 10 * nobjs
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
inds = asindices(gi)
fullinds = asindices(gi)
ncols = unifint(rng, diff_lb, diff_ub, (1, 8))
ccols = rng.sample(remcols, ncols)
while succ < nobjs and tr < maxtr:
if len(inds) == 0:
break
tr += 1
od = rng.randint(1, 3)
fulld = 4 * od
g = canvas(bgc, (4, 4))
g = fill(g, 8, {(0, 3), (3, 0)})
col = rng.choice(ccols)
g = fill(g, col, {(1, 1), (2, 2)})
if rng.choice((True, False)):
g = hmirror(g)
g = upscale(g, od)
inobj = recolor(col, ofcolor(g, col))
outobj = inobj | recolor(8, ofcolor(g, 8))
loc = rng.choice(totuple(inds))
outobj = shift(outobj, loc)
inobj = shift(inobj, loc)
outobji = toindices(outobj)
if toindices(inobj).issubset(inds) and (outobji & fullinds).issubset(inds):
succ += 1
inds = (inds - outobji) - mapply(neighbors, outobji)
gi = paint(gi, inobj)
go = paint(go, outobj)
return {"input": gi, "output": go}
def generate_264363fd(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
cp = (2, 2)
neighs = neighbors(cp)
o1 = shift(frozenset({(0, 1), (-1, 1)}), (1, 1))
o2 = shift(frozenset({(1, 0), (1, -1)}), (1, 1))
o3 = shift(frozenset({(2, 1), (3, 1)}), (1, 1))
o4 = shift(frozenset({(1, 2), (1, 3)}), (1, 1))
mpr = {o1: (-1, 0), o2: (0, -1), o3: (1, 0), o4: (0, 1)}
h = unifint(rng, diff_lb, diff_ub, (15, 30))
w = unifint(rng, diff_lb, diff_ub, (15, 30))
bgc, sqc, linc = rng.sample(cols, 3)
remcols = difference(cols, (bgc, sqc, linc))
cpcol = rng.choice(remcols)
nbhcol = rng.choice(remcols)
nspikes = rng.randint(1, 4)
spikes = rng.sample((o1, o2, o3, o4), nspikes)
lns = merge(set(spikes))
obj = {(cpcol, cp)} | recolor(linc, lns) | recolor(nbhcol, neighs - lns)
loci = rng.randint(0, h - 5)
locj = rng.randint(0, w - 5)
loc = (loci, locj)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
gi = paint(gi, shift(obj, loc))
numsq = unifint(rng, diff_lb, diff_ub, (1, (h * w) // 100))
succ = 0
tr = 0
maxtr = 10 * numsq
inds = ofcolor(gi, bgc) - mapply(neighbors, toindices(shift(obj, loc)))
while succ < numsq and tr < maxtr:
tr += 1
gh = rng.randint(5, h // 2 + 1)
gw = rng.randint(5, w // 2 + 1)
cands = sfilter(inds, lambda ij: ij[0] <= h - gh and ij[1] <= w - gw)
if len(cands) == 0:
continue
loc = rng.choice(totuple(cands))
g1 = canvas(sqc, (gh, gw))
g2 = canvas(sqc, (gh, gw))
ginds = asindices(g1)
gindsfull = asindices(g1)
bck = shift(ginds, loc)
if bck.issubset(inds):
noccs = unifint(rng, diff_lb, diff_ub, (1, (gh * gw) // 25))
succ2 = 0
tr2 = 0
maxtr2 = 5 * noccs
while succ2 < noccs and tr2 < maxtr2:
tr2 += 1
cands2 = sfilter(ginds, lambda ij: ij[0] <= gh - 5 and ij[1] <= gw - 5)
if len(cands2) == 0:
break
loc2 = rng.choice(totuple(cands2))
lns2 = merge(frozenset({shoot(add(cp, add(loc2, mpr[spike])), mpr[spike]) for spike in spikes}))
lns2 = lns2 & gindsfull
plcd2 = shift(obj, loc2)
plcd2i = toindices(plcd2)
if plcd2i.issubset(ginds) and lns2.issubset(ginds | ofcolor(g2, linc)) and len(lns2 - plcd2i) > 0:
succ2 += 1
ginds = ((ginds - plcd2i) - mapply(neighbors, plcd2i)) - lns2
g1 = fill(g1, cpcol, {add(cp, loc2)})
g2 = paint(g2, plcd2)
g2 = fill(g2, linc, lns2)
if succ2 > 0:
succ += 1
inds = (inds - bck) - outbox(bck)
objfull1 = shift(asobject(g1), loc)
objfull2 = shift(asobject(g2), loc)
gi = paint(gi, objfull1)
go = paint(go, objfull2)
return {"input": gi, "output": go}
def generate_29ec7d0e(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
hp = unifint(rng, diff_lb, diff_ub, (2, h // 2 - 1))
wp = unifint(rng, diff_lb, diff_ub, (2, w // 2 - 1))
pinds = asindices(canvas(-1, (hp, wp)))
bgc, noisec = rng.sample(cols, 2)
remcols = remove(noisec, cols)
numc = unifint(rng, diff_lb, diff_ub, (2, 9))
ccols = rng.sample(remcols, numc)
pobj = frozenset({(rng.choice(ccols), ij) for ij in pinds})
go = canvas(bgc, (h, w))
locs = set()
for a in range(h // hp + 1):
for b in range(w // wp + 1):
loci = (a + 1) + hp * a
locj = (b + 1) + wp * b
locs.add((loci, locj))
go = paint(go, shift(pobj, (loci, locj)))
numpatches = unifint(rng, diff_lb, diff_ub, (1, (h * w) // 20))
gi = tuple(e for e in go)
places = apply(lbind(shift, pinds), locs)
succ = 0
tr = 0
maxtr = 5 * numpatches
while succ < numpatches and tr < maxtr:
tr += 1
ph = rng.randint(2, 6)
pw = rng.randint(2, 6)
loci = rng.randint(0, h - ph)
locj = rng.randint(0, w - pw)
ptch = backdrop(frozenset({(loci, locj), (loci + ph - 1, locj + pw - 1)}))
gi2 = fill(gi, noisec, ptch)
if pobj in apply(normalize, apply(rbind(toobject, gi2), places)):
if (
len(sfilter(gi2, lambda r: noisec not in r)) >= 2
and len(sfilter(dmirror(gi2), lambda r: noisec not in r)) >= 2
):
succ += 1
gi = gi2
rotf = rng.choice((identity, rot90, rot180, rot270))
gi = rotf(gi)
go = rotf(go)
return {"input": gi, "output": go}
def generate_3bd67248(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = difference(interval(0, 10, 1), (2, 4))
h = unifint(rng, diff_lb, diff_ub, (3, 15))
w = unifint(rng, diff_lb, diff_ub, (3, 15))
bgc, linc = rng.sample(cols, 2)
fac = unifint(rng, diff_lb, diff_ub, (1, 30 // max(h, w)))
gi = canvas(bgc, (h, w))
gi = fill(gi, linc, connect((0, 0), (h - 1, 0)))
go = fill(gi, 4, connect((h - 1, 1), (h - 1, w - 1)))
go = fill(go, 2, shoot((h - 2, 1), (-1, 1)))
rotf = rng.choice((identity, rot90, rot180, rot270))
gi = rotf(gi)
go = rotf(go)
gi = upscale(gi, fac)
go = upscale(go, fac)
return {"input": gi, "output": go}
def generate_484b58aa(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
hp = unifint(rng, diff_lb, diff_ub, (2, h // 2 - 1))
wp = unifint(rng, diff_lb, diff_ub, (2, w // 2 - 1))
pinds = asindices(canvas(-1, (hp, wp)))
noisec = rng.choice(cols)
remcols = remove(noisec, cols)
numc = unifint(rng, diff_lb, diff_ub, (2, 9))
ccols = rng.sample(remcols, numc)
pobj = frozenset({(rng.choice(ccols), ij) for ij in pinds})
go = canvas(-1, (h, w))
locs = set()
ofs = rng.randint(1, hp - 1)
for a in range(2 * (h // hp + 1)):
for b in range(w // wp + 1):
loci = hp * a - ofs * b
locj = wp * b
locs.add((loci, locj))
go = paint(go, shift(pobj, (loci, locj)))
numpatches = unifint(rng, diff_lb, diff_ub, (1, (h * w) // 20))
gi = tuple(e for e in go)
places = apply(lbind(shift, pinds), locs)
succ = 0
tr = 0
maxtr = 5 * numpatches
while succ < numpatches and tr < maxtr:
tr += 1
ph = rng.randint(2, 6)
pw = rng.randint(2, 6)
loci = rng.randint(0, h - ph)
locj = rng.randint(0, w - pw)
ptch = backdrop(frozenset({(loci, locj), (loci + ph - 1, locj + pw - 1)}))
gi2 = fill(gi, noisec, ptch)
if pobj in apply(normalize, apply(rbind(toobject, gi2), places)):
if (
len(sfilter(gi2, lambda r: noisec not in r)) >= 2
and len(sfilter(dmirror(gi2), lambda r: noisec not in r)) >= 2
):
succ += 1
gi = gi2
rotf = rng.choice((identity, rot90, rot180, rot270))
gi = rotf(gi)
go = rotf(go)
return {"input": gi, "output": go}
def generate_6aa20dc0(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
od = unifint(rng, diff_lb, diff_ub, (2, 4))
ncellsextra = rng.randint(1, max(1, (od**2 - 2) // 2))
sinds = asindices(canvas(-1, (od, od)))
extracells = set(rng.sample(totuple(sinds - {(0, 0), (od - 1, od - 1)}), ncellsextra))
extracells.add(rng.choice(totuple(dneighbors((0, 0)) & sinds)))
extracells.add(rng.choice(totuple(dneighbors((od - 1, od - 1)) & sinds)))
extracells = frozenset(extracells)
bgc, fgc, c1, c2 = rng.sample(cols, 4)
obj = frozenset({(c1, (0, 0)), (c2, (od - 1, od - 1))}) | recolor(fgc, extracells)
obj = obj | dmirror(obj)
if rng.choice((True, False)):
obj = hmirror(obj)
gi = canvas(bgc, (h, w))
loci = rng.randint(0, h - od)
locj = rng.randint(0, w - od)
plcd = shift(obj, (loci, locj))
gi = paint(gi, plcd)
go = tuple(e for e in gi)
inds = asindices(gi)
inds = inds - backdrop(outbox(plcd))
nocc = unifint(rng, diff_lb, diff_ub, (1, max(1, (h * w) // (od**2 * 2))))
succ = 0
tr = 0
maxtr = 4 * nocc
while succ < nocc and tr < maxtr:
tr += 1
fac = rng.randint(1, 4)
mf1 = rng.choice((identity, dmirror, vmirror, cmirror, hmirror))
mf2 = rng.choice((identity, dmirror, vmirror, cmirror, hmirror))
mf = compose(mf2, mf1)
cobj = normalize(upscale(mf(obj), fac))
ohx, owx = shape(cobj)
cands = sfilter(inds, lambda ij: ij[0] <= h - ohx and ij[1] <= w - owx)
if len(cands) == 0:
continue
locc = rng.choice(totuple(cands))
cobjo = shift(cobj, locc)
cobji = sfilter(cobjo, lambda cij: cij[0] != fgc)
cobjoi = toindices(cobjo)
if cobjoi.issubset(inds):
succ += 1
inds = inds - backdrop(outbox(cobjoi))
gi = paint(gi, cobji)
go = paint(go, cobjo)
return {"input": gi, "output": go}
def generate_6855a6e4(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (4, 30))
fullh = unifint(rng, diff_lb, diff_ub, (10, h))
fullw = unifint(rng, diff_lb, diff_ub, (3, w))
bgc, objc, boxc = rng.sample(cols, 3)
bcanv = canvas(bgc, (h, w))
loci = rng.randint(0, h - fullh)
locj = rng.randint(0, w - fullw)
loc = (loci, locj)
canvi = canvas(bgc, (fullh, fullw))
canvo = canvas(bgc, (fullh, fullw))
objh = (fullh // 2 - 3) // 2
br = connect((objh + 1, 0), (objh + 1, fullw - 1))
br = br | {(objh + 2, 0), (objh + 2, fullw - 1)}
cands = backdrop(frozenset({(0, 1), (objh - 1, fullw - 2)}))
for k in range(2):
canvi = fill(canvi, boxc, br)
canvo = fill(canvo, boxc, br)
ncellsd = unifint(rng, diff_lb, diff_ub, (0, (objh * (fullw - 2)) // 2))
ncells = rng.choice((ncellsd, objh * (fullw - 2) - ncellsd))
ncells = min(max(1, ncells), objh * (fullw - 2))
cells = frozenset(rng.sample(totuple(cands), ncells))
canvi = fill(canvi, objc, cells)
canvo = fill(canvo, objc, shift(hmirror(cells), (objh + 3, 0)))
canvi = hmirror(canvi)
canvo = hmirror(canvo)
gi = paint(bcanv, shift(asobject(canvi), loc))
go = paint(bcanv, shift(asobject(canvo), loc))
if rng.choice((True, False)):
gi = dmirror(gi)
go = dmirror(go)
return {"input": gi, "output": go}
def generate_39a8645d(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (15, 30))
w = unifint(rng, diff_lb, diff_ub, (15, 30))
oh = rng.randint(2, 4)
ow = rng.randint(2, 4)
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
nobjs = unifint(rng, diff_lb, diff_ub, (1, oh + ow))
ccols = rng.sample(remcols, nobjs + 1)
mxcol = ccols[0]
rcols = ccols[1:]
maxnocc = unifint(rng, diff_lb, diff_ub, (nobjs + 2, max(nobjs + 2, (h * w) // 16)))
tr = 0
maxtr = 10 * maxnocc
succ = 0
allobjs = []
bounds = asindices(canvas(-1, (oh, ow)))
for k in range(nobjs + 1):
while True:
ncells = rng.randint(oh + ow - 1, oh * ow)
cobj = {rng.choice(totuple(bounds))}
while shape(cobj) != (oh, ow) and len(cobj) < ncells:
cobj.add(rng.choice(totuple((bounds - cobj) & mapply(neighbors, cobj))))
if cobj not in allobjs:
break
allobjs.append(frozenset(cobj))
mcobj = normalize(allobjs[0])
remobjs = apply(normalize, allobjs[1:])
mxobjcounter = 0
remobjcounter = {robj: 0 for robj in remobjs}
gi = canvas(bgc, (h, w))
inds = asindices(gi)
while tr < maxtr and succ < maxnocc:
tr += 1
candobjs = [robj for robj, cnt in remobjcounter.items() if cnt + 1 < mxobjcounter]
if len(candobjs) == 0 or rng.randint(0, 100) / 100 > diff_lb:
obj = mcobj
col = mxcol
else:
obj = rng.choice(candobjs)
col = rcols[remobjs.index(obj)]
cands = sfilter(inds, lambda ij: ij[0] <= h - oh and ij[1] <= w - ow)
if len(cands) == 0:
break
loc = rng.choice(totuple(cands))
plcd = shift(obj, loc)
if plcd.issubset(inds - mapply(neighbors, ofcolor(gi, col))):
succ += 1
inds = (inds - plcd) - mapply(dneighbors, plcd)
gi = fill(gi, col, plcd)
if obj in remobjcounter:
remobjcounter[obj] += 1
else:
mxobjcounter += 1
go = fill(canvas(bgc, shape(mcobj)), mxcol, mcobj)
return {"input": gi, "output": go}
def generate_150deff5(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = difference(interval(0, 10, 1), (2, 8))
bo = {(0, 0), (0, 1), (1, 0), (1, 1)}
ro1 = {(0, 0), (0, 1), (0, 2)}
ro2 = {(0, 0), (1, 0), (2, 0)}
boforb = set()
reforb = set()
h = unifint(rng, diff_lb, diff_ub, (8, 30))
w = unifint(rng, diff_lb, diff_ub, (8, 30))
bgc, fgc = rng.sample(cols, 2)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
noccs = unifint(rng, diff_lb, diff_ub, (2, (h * w) // 10))
inds = asindices(gi)
needsbgc = []
for k in range(noccs):
obj, col = rng.choice(((bo, 8), (rng.choice((ro1, ro2)), 2)))
oh, ow = shape(obj)
cands = sfilter(inds, lambda ij: ij[0] <= h - oh and ij[1] <= w - ow and shift(obj, ij).issubset(inds))
if col == 8:
cands = sfilter(cands, lambda ij: ij not in boforb)
else:
cands = sfilter(cands, lambda ij: ij not in reforb)
if len(cands) == 0:
break
loc = rng.choice(totuple(cands))
if col == 8:
boforb.add(add(loc, (-2, 0)))
boforb.add(add(loc, (2, 0)))
boforb.add(add(loc, (0, 2)))
boforb.add(add(loc, (0, -2)))
if col == 2:
if obj == ro1:
reforb.add(add(loc, (0, 3)))
reforb.add(add(loc, (0, -3)))
else:
reforb.add(add(loc, (1, 0)))
reforb.add(add(loc, (-1, 0)))
plcd = shift(obj, loc)
gi = fill(gi, fgc, plcd)
go = fill(go, col, plcd)
inds = inds - plcd
return {"input": gi, "output": go}
def generate_239be575(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
sq = {(0, 0), (1, 1), (0, 1), (1, 0)}
cols = interval(1, 10, 1)
while True:
h = unifint(rng, diff_lb, diff_ub, (6, 30))
w = unifint(rng, diff_lb, diff_ub, (6, 30))
c = canvas(0, (h, w))
fullcands = totuple(asindices(canvas(0, (h - 1, w - 1))))
a = rng.choice(fullcands)
b = rng.choice(remove(a, fullcands))
mindist = unifint(rng, diff_lb, diff_ub, (3, min(h, w) - 3))
while not manhattan({a}, {b}) > mindist:
a = rng.choice(fullcands)
b = rng.choice(remove(a, fullcands))
markcol, sqcol = rng.sample(cols, 2)
aset = shift(sq, a)
bset = shift(sq, b)
gi = fill(c, sqcol, aset | bset)
cands = totuple(ofcolor(gi, 0))
num = unifint(rng, diff_lb, diff_ub, (int(0.25 * len(cands)), int(0.75 * len(cands))))
mc = rng.sample(cands, num)
gi = fill(gi, markcol, mc)
bobjs = colorfilter(objects(gi, T, F, F), markcol)
ss = sfilter(bobjs, fork(both, rbind(adjacent, aset), rbind(adjacent, bset)))
shoudlhaveconn = rng.choice((True, False))
if shoudlhaveconn and len(ss) == 0:
while len(ss) == 0:
opts2 = totuple(ofcolor(gi, 0))
if len(opts2) == 0:
break
gi = fill(gi, markcol, {rng.choice(opts2)})
bobjs = colorfilter(objects(gi, T, F, F), markcol)
ss = sfilter(bobjs, fork(both, rbind(adjacent, aset), rbind(adjacent, bset)))
elif not shoudlhaveconn and len(ss) > 0:
while len(ss) > 0:
opts2 = totuple(ofcolor(gi, markcol))
if len(opts2) == 0:
break
gi = fill(gi, 0, {rng.choice(opts2)})
bobjs = colorfilter(objects(gi, T, F, F), markcol)
ss = sfilter(bobjs, fork(both, rbind(adjacent, aset), rbind(adjacent, bset)))
if len(palette(gi)) == 3:
break
oc = markcol if shoudlhaveconn else 0
go = canvas(oc, (1, 1))
return {"input": gi, "output": go}
def generate_0dfd9992(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
hp = unifint(rng, diff_lb, diff_ub, (2, h // 2 - 1))
wp = unifint(rng, diff_lb, diff_ub, (2, w // 2 - 1))
pinds = asindices(canvas(-1, (hp, wp)))
bgc, noisec = rng.sample(cols, 2)
remcols = remove(noisec, cols)
numc = unifint(rng, diff_lb, diff_ub, (2, 9))
ccols = rng.sample(remcols, numc)
pobj = frozenset({(rng.choice(ccols), ij) for ij in pinds})
go = canvas(bgc, (h, w))
locs = set()
for a in range(h // hp + 1):
for b in range(w // wp + 1):
loci = hp * a
locj = wp * b
locs.add((loci, locj))
mf1 = identity if a % 2 == 0 else hmirror
mf2 = identity if b % 2 == 0 else vmirror
mf = compose(mf1, mf2)
go = paint(go, shift(mf(pobj), (loci, locj)))
numpatches = unifint(rng, diff_lb, diff_ub, (1, int((h * w) ** 0.5 // 2)))
gi = tuple(e for e in go)
places = apply(lbind(shift, pinds), locs)
succ = 0
tr = 0
maxtr = 5 * numpatches
while succ < numpatches and tr < maxtr:
tr += 1
ph = rng.randint(2, 6)
pw = rng.randint(2, 6)
loci = rng.randint(0, h - ph)
locj = rng.randint(0, w - pw)
ptch = backdrop(frozenset({(loci, locj), (loci + ph - 1, locj + pw - 1)}))
gi2 = fill(gi, noisec, ptch)
candset = apply(normalize, apply(rbind(toobject, gi2), places))
if (
len(sfilter(gi2, lambda r: noisec not in r)) >= 2
and len(sfilter(dmirror(gi2), lambda r: noisec not in r)) >= 2
and (
pobj in candset
or hmirror(pobj) in candset
or vmirror(pobj) in candset
or hmirror(vmirror(pobj)) in candset
)
):
succ += 1
gi = gi2
rotf = rng.choice((identity, rot90, rot180, rot270))
gi = rotf(gi)
go = rotf(go)
return {"input": gi, "output": go}
def generate_d06dbe63(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(5, interval(0, 10, 1))
obj1 = mapply(lbind(shift, frozenset({(-1, 0), (-2, 0), (-2, 1), (-2, 2)})), {(-k * 2, 2 * k) for k in range(15)})
obj2 = mapply(lbind(shift, frozenset({(1, 0), (2, 0), (2, -1), (2, -2)})), {(2 * k, -k * 2) for k in range(15)})
obj = obj1 | obj2
objf = lambda ij: shift(obj, ij)
h = unifint(rng, diff_lb, diff_ub, (5, 30))
w = unifint(rng, diff_lb, diff_ub, (5, 30))
ndots = unifint(rng, diff_lb, diff_ub, (1, min(h, w)))
succ = 0
tr = 0
maxtr = 4 * ndots
bgc, dotc = rng.sample(cols, 2)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
inds = asindices(gi)
fullinds = asindices(gi)
while tr < maxtr and succ < ndots:
tr += 1
if len(inds) == 0:
break
loc = rng.choice(totuple(inds))
objx = objf(loc)
if (objx & fullinds).issubset(inds):
succ += 1
inds = (inds - objx) - {loc}
gi = fill(gi, dotc, {loc})
go = fill(go, dotc, {loc})
go = fill(go, 5, objx)
return {"input": gi, "output": go}
def generate_a3325580(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
nobjs = unifint(rng, diff_lb, diff_ub, (1, 9))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
ccols = rng.sample(remcols, nobjs)
gi = canvas(bgc, (h, w))
lmocc = set()
inds = asindices(gi)
succ = 0
tr = 0
maxtr = 4 * nobjs
seenobjs = set()
mxncells = rng.randint(nobjs + 1, 30)
while succ < nobjs and tr < maxtr:
tr += 1
oh = rng.randint(1, 6)
ow = rng.randint(1, 6)
while oh * ow < mxncells:
oh = rng.randint(1, 6)
ow = rng.randint(1, 6)
bounds = asindices(canvas(-1, (oh, ow)))
ncells = rng.randint(1, oh * ow)
ncells = unifint(rng, diff_lb, diff_ub, (1, min(oh * ow, mxncells)))
ncells = unifint(rng, diff_lb, diff_ub, (ncells, min(oh * ow, mxncells)))
sp = rng.choice(totuple(bounds))
obj = {sp}
for k in range(ncells - 1):
obj.add(rng.choice(totuple((bounds - obj) & mapply(dneighbors, obj))))
if obj in seenobjs:
continue
obj = normalize(obj)
oh, ow = shape(obj)
cands = sfilter(inds, lambda ij: ij[0] <= h - oh and ij[1] <= w - ow and ij[1] not in lmocc)
if len(cands) == 0:
continue
loc = rng.choice(totuple(cands))
plcd = shift(obj, loc)
if plcd.issubset(inds):
inds = (inds - plcd) - mapply(dneighbors, plcd)
gi = fill(gi, ccols[succ], plcd)
succ += 1
lmocc.add(loc[1])
objs = objects(gi, T, F, T)
mxncells = valmax(objs, size)
objs = sfilter(objs, matcher(size, mxncells))
objs = order(objs, leftmost)
go = canvas(-1, (mxncells, len(objs)))
for idx, o in enumerate(objs):
go = fill(go, color(o), connect((0, idx), (mxncells - 1, idx)))
return {"input": gi, "output": go}
def generate_1fad071e(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(1, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
nbl = rng.randint(0, 5)
nobjs = unifint(rng, diff_lb, diff_ub, (nbl, max(nbl, (h * w) // 10)))
bgc, otherc = rng.sample(cols, 2)
succ = 0
tr = 0
maxtr = 5 * nobjs
bcount = 0
gi = canvas(bgc, (h, w))
inds = asindices(gi)
ofcfrbinds = {1: set(), otherc: set()}
while succ < nobjs and tr < maxtr:
tr += 1
col = rng.choice((1, otherc))
oh = rng.randint(1, 3)
ow = rng.randint(1, 3)
if bcount < nbl:
col = 1
oh, ow = 2, 2
else:
while col == 1 and oh == ow == 2:
col = rng.choice((1, otherc))
oh = rng.randint(1, 3)
ow = rng.randint(1, 3)
bd = backdrop(frozenset({(0, 0), (oh - 1, ow - 1)}))
cands = sfilter(inds, lambda ij: ij[0] <= h - oh and ij[1] <= w - ow)
if len(cands) == 0:
continue
loc = rng.choice(totuple(cands))
loci, locj = loc
bd = shift(bd, loc)
if bd.issubset(inds) and len(mapply(dneighbors, bd) & ofcfrbinds[col]) == 0:
succ += 1
inds = inds - bd
ofcfrbinds[col] = ofcfrbinds[col] | mapply(dneighbors, bd) | bd
gi = fill(gi, col, bd)
if col == 1 and oh == ow == 2:
bcount += 1
go = (repeat(1, bcount) + repeat(bgc, 5 - bcount),)
return {"input": gi, "output": go}
def generate_27a28665(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
mapping = [
(1, {(0, 0), (0, 1), (1, 0), (1, 2), (2, 1)}),
(2, {(0, 0), (1, 1), (2, 0), (0, 2), (2, 2)}),
(3, {(2, 0), (0, 1), (0, 2), (1, 1), (1, 2)}),
(6, {(1, 1), (0, 1), (1, 0), (1, 2), (2, 1)}),
]
h = unifint(rng, diff_lb, diff_ub, (3, 30))
w = unifint(rng, diff_lb, diff_ub, (3, 30))
col, obj = rng.choice(mapping)
bgc, objc = rng.sample(cols, 2)
fac = unifint(rng, diff_lb, diff_ub, (1, min(h, w) // 3))
go = canvas(col, (1, 1))
gi = canvas(bgc, (h, w))
canv = canvas(bgc, (3, 3))
canv = fill(canv, objc, obj)
canv = upscale(canv, fac)
obj = asobject(canv)
loci = rng.randint(0, h - 3 * fac)
locj = rng.randint(0, w - 3 * fac)
loc = (loci, locj)
gi = paint(gi, shift(obj, loc))
return {"input": gi, "output": go}
def generate_b775ac94(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
gi = canvas(0, (1, 1))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
nobjs = unifint(rng, diff_lb, diff_ub, (1, (h * w) // 25))
succ = 0
tr = 0
maxtr = 5 * nobjs
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
inds = asindices(gi)
while succ < nobjs and tr < maxtr:
tr += 1
oh = rng.randint(2, 5)
ow = rng.randint(2, 5)
canv = canvas(bgc, (oh, ow))
c1, c2, c3, c4 = rng.sample(remcols, 4)
obj = {(0, 0)}
ncellsd = unifint(rng, diff_lb, diff_ub, (0, (oh * ow) // 2))
ncells = rng.choice((ncellsd, oh * ow - ncellsd))
ncells = min(max(1, ncells), oh * ow - 1)
bounds = asindices(canv)
for k in range(ncells):
obj.add(rng.choice(totuple((bounds - obj) & mapply(neighbors, obj))))
gLR = fill(canv, c1, obj)
gLL = replace(vmirror(gLR), c1, c2)
gUR = replace(hmirror(gLR), c1, c3)
gUL = replace(vmirror(hmirror(gLR)), c1, c4)
gU = hconcat(gUL, gUR)
gL = hconcat(gLL, gLR)
g = vconcat(gU, gL)
g2 = canvas(bgc, (oh * 2, ow * 2))
g2 = fill(g2, c1, shift(obj, (oh, ow)))
nkeepcols = unifint(rng, diff_lb, diff_ub, (1, 3))
keepcols = rng.sample((c2, c3, c4), nkeepcols)
for cc in (c2, c3, c4):
if cc not in keepcols:
g = replace(g, cc, bgc)
else:
ofsi = -1 if cc in (c3, c4) else 0
ofsj = -1 if cc in (c2, c4) else 0
g2 = fill(g2, cc, {(oh + ofsi, ow + ofsj)})
rotf = rng.choice((identity, rot90, rot180, rot270))
g = rotf(g)
g2 = rotf(g2)
obji = asobject(g2)
objo = asobject(g)
objo = sfilter(objo, lambda cij: cij[0] != bgc)
obji = sfilter(obji, lambda cij: cij[0] != bgc)
tonorm = invert(ulcorner(objo))
obji = shift(obji, tonorm)
objo = shift(objo, tonorm)
oh, ow = shape(objo)
cands = sfilter(inds, lambda ij: ij[0] <= h - oh and ij[1] <= w - ow)
if len(cands) == 0:
continue
loc = rng.choice(totuple(cands))
plcdi = shift(obji, loc)
plcdo = shift(objo, loc)
plcdoi = toindices(plcdo)
if plcdoi.issubset(inds):
succ += 1
inds = (inds - plcdoi) - mapply(neighbors, plcdoi)
gi = paint(gi, plcdi)
go = paint(go, plcdo)
return {"input": gi, "output": go}
def generate_6f8cd79b(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(8, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (3, 30))
w = unifint(rng, diff_lb, diff_ub, (3, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
gi = canvas(bgc, (h, w))
ncols = unifint(rng, diff_lb, diff_ub, (1, 8))
ccols = rng.sample(remcols, ncols)
ncells = unifint(rng, diff_lb, diff_ub, (0, h * w))
inds = asindices(gi)
cells = rng.sample(totuple(inds), ncells)
obj = {(rng.choice(ccols), ij) for ij in cells}
gi = paint(gi, obj)
brd = box(inds)
go = fill(gi, 8, brd)
return {"input": gi, "output": go}
def generate_de1cd16c(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (6, 30))
w = unifint(rng, diff_lb, diff_ub, (6, 30))
noisec = rng.choice(cols)
remcols = remove(noisec, cols)
ncols = unifint(rng, diff_lb, diff_ub, (2, 9))
ccols = rng.sample(remcols, ncols)
starterc = ccols[0]
ccols = ccols[1:]
gi = canvas(starterc, (h, w))
for k in range(ncols - 1):
objs = objects(gi, T, F, F)
objs = sfilter(objs, lambda o: height(o) > 5 or width(o) > 5)
if len(objs) == 0:
break
objs = totuple(objs)
obj = rng.choice(objs)
if height(obj) > 5 and width(obj) > 5:
ax = rng.choice((0, 1))
elif height(obj) > 5:
ax = 0
elif width(obj) > 5:
ax = 1
if ax == 0:
loci = rng.randint(uppermost(obj) + 3, lowermost(obj) - 2)
newobj = sfilter(toindices(obj), lambda ij: ij[0] >= loci)
elif ax == 1:
locj = rng.randint(leftmost(obj) + 3, rightmost(obj) - 2)
newobj = sfilter(toindices(obj), lambda ij: ij[1] >= locj)
gi = fill(gi, ccols[k], newobj)
objs = order(objects(gi, T, F, F), size)
allowances = [max(1, ((height(o) - 2) * (width(o) - 2)) // 2) for o in objs]
meann = max(1, int(sum(allowances) / len(allowances)))
chosens = [rng.randint(0, min(meann, allowed)) for allowed in allowances]
while max(chosens) == 0:
chosens = [rng.randint(0, min(meann, allowed)) for allowed in allowances]
mx = max(chosens)
fixinds = [idx for idx, cnt in enumerate(chosens) if cnt == mx]
gogoind = fixinds[0]
gogocol = color(objs[gogoind])
fixinds = fixinds[1:]
for idx in fixinds:
chosens[idx] -= 1
for obj, cnt in zip(objs, chosens):
locs = rng.sample(totuple(backdrop(inbox(toindices(obj)))), cnt)
gi = fill(gi, noisec, locs)
go = canvas(gogocol, (1, 1))
return {"input": gi, "output": go}
def generate_6cf79266(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = difference(interval(0, 10, 1), (0, 1))
h = unifint(rng, diff_lb, diff_ub, (6, 30))
w = unifint(rng, diff_lb, diff_ub, (6, 30))
nfgcs = unifint(rng, diff_lb, diff_ub, (1, 8))
ccols = rng.sample(cols, nfgcs)
gi = canvas(-1, (h, w))
fgcobj = {(rng.choice(ccols), ij) for ij in asindices(gi)}
gi = paint(gi, fgcobj)
num = unifint(rng, diff_lb, diff_ub, (int(0.25 * h * w), int(0.6 * h * w)))
inds = asindices(gi)
locs = rng.sample(totuple(inds), num)
gi = fill(gi, 0, locs)
noccs = unifint(rng, diff_lb, diff_ub, (1, (h * w) // 16))
cands = asindices(canvas(-1, (h - 2, w - 2)))
locs = rng.sample(totuple(cands), noccs)
mini = asindices(canvas(-1, (3, 3)))
for ij in locs:
gi = fill(gi, 0, shift(mini, ij))
trg = recolor(0, mini)
occs = occurrences(gi, trg)
go = tuple(e for e in gi)
for occ in occs:
go = fill(go, 1, shift(mini, occ))
return {"input": gi, "output": go}
def generate_a85d4709(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = difference(interval(0, 10, 1), (2, 3, 4))
h = unifint(rng, diff_lb, diff_ub, (2, 30))
w3 = unifint(rng, diff_lb, diff_ub, (1, 10))
w = w3 * 3
bgc, dotc = rng.sample(cols, 2)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
for ii in range(h):
loc = rng.randint(0, w3 - 1)
dev = unifint(rng, diff_lb, diff_ub, (0, w3 // 2 + 1))
loc = w3 // 3 + rng.choice((+dev, -dev))
loc = min(max(0, loc), w3 - 1)
ofs, col = rng.choice(((0, 2), (1, 4), (2, 3)))
loc += ofs * w3
gi = fill(gi, dotc, {(ii, loc)})
ln = connect((ii, 0), (ii, w - 1))
go = fill(go, col, ln)
return {"input": gi, "output": go}
def generate_f8a8fe49(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (4, 30))
fullh = unifint(rng, diff_lb, diff_ub, (10, h))
fullw = unifint(rng, diff_lb, diff_ub, (3, w))
bgc, objc, boxc = rng.sample(cols, 3)
bcanv = canvas(bgc, (h, w))
loci = rng.randint(0, h - fullh)
locj = rng.randint(0, w - fullw)
loc = (loci, locj)
canvi = canvas(bgc, (fullh, fullw))
canvo = canvas(bgc, (fullh, fullw))
objh = (fullh // 2 - 3) // 2
br = connect((objh + 1, 0), (objh + 1, fullw - 1))
br = br | {(objh + 2, 0), (objh + 2, fullw - 1)}
cands = backdrop(frozenset({(0, 1), (objh - 1, fullw - 2)}))
for k in range(2):
canvi = fill(canvi, boxc, br)
canvo = fill(canvo, boxc, br)
ncellsd = unifint(rng, diff_lb, diff_ub, (0, (objh * (fullw - 2)) // 2))
ncells = rng.choice((ncellsd, objh * (fullw - 2) - ncellsd))
ncells = min(max(1, ncells), objh * (fullw - 2))
cells = frozenset(rng.sample(totuple(cands), ncells))
cells = insert(rng.choice(totuple(sfilter(cands, lambda ij: ij[0] == lowermost(cands)))), cells)
canvi = fill(canvi, objc, cells)
canvo = fill(canvo, objc, shift(hmirror(cells), (objh + 3, 0)))
canvi = hmirror(canvi)
canvo = hmirror(canvo)
gi = paint(bcanv, shift(asobject(canvi), loc))
go = paint(bcanv, shift(asobject(canvo), loc))
if rng.choice((True, False)):
gi = dmirror(gi)
go = dmirror(go)
go, gi = gi, go
return {"input": gi, "output": go}
def generate_f8c80d96(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(5, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (8, 30))
w = unifint(rng, diff_lb, diff_ub, (8, 30))
ow = rng.randint(1, 3 if h > 10 else 2)
oh = rng.randint(1, 3 if w > 10 else 2)
loci = rng.randint(-oh + 1, h - 1)
locj = rng.randint(-ow + 1, w - 1)
obj = backdrop(frozenset({(loci, locj), (loci + oh - 1, locj + ow - 1)}))
bgc, linc = rng.sample(cols, 2)
gi = canvas(bgc, (h, w))
go = canvas(5, (h, w))
ln1 = outbox(obj)
ulci, ulcj = decrement(ulcorner(obj))
lrci, lrcj = increment(lrcorner(obj))
hoffs = rng.randint(2, 4 if h > 12 else 3)
woffs = rng.randint(2, 4 if w > 12 else 3)
lns = []
for k in range(max(h, w) // min(hoffs, woffs) + 1):
lnx = box(frozenset({(ulci - hoffs * k, ulcj - woffs * k), (lrci + hoffs * k, lrcj + woffs * k)}))
lns.append(lnx)
inds = asindices(gi)
lns = sfilter(lns, lambda ln: len(ln & inds) > 0)
nlns = len(lns)
nmissing = unifint(rng, diff_lb, diff_ub, (0, nlns - 2))
npresent = nlns - nmissing
for k in range(npresent):
gi = fill(gi, linc, lns[k])
for ln in lns:
go = fill(go, linc, ln)
return {"input": gi, "output": go}
def generate_f35d900a(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(5, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (4, 30))
w = unifint(rng, diff_lb, diff_ub, (4, 30))
bgc, c1, c2 = rng.sample(cols, 3)
oh = unifint(rng, diff_lb, diff_ub, (4, h))
ow = unifint(rng, diff_lb, diff_ub, (4, w))
loci = rng.randint(0, h - oh)
locj = rng.randint(0, w - ow)
bx = box(frozenset({(loci, locj), (loci + oh - 1, locj + ow - 1)}))
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
gi = fill(gi, c1, {ulcorner(bx), lrcorner(bx)})
gi = fill(gi, c2, {urcorner(bx), llcorner(bx)})
go = fill(go, c1, {ulcorner(bx), lrcorner(bx)})
go = fill(go, c2, {urcorner(bx), llcorner(bx)})
go = fill(go, c1, neighbors(urcorner(bx)) | neighbors(llcorner(bx)))
go = fill(go, c2, neighbors(ulcorner(bx)) | neighbors(lrcorner(bx)))
crns = corners(bx)
for c in crns:
cobj = {c}
remcorns = remove(c, crns)
belongto = sfilter(bx, lambda ij: manhattan(cobj, {ij}) <= valmin(remcorns, lambda cc: manhattan({ij}, {cc})))
valids = sfilter(belongto, lambda ij: manhattan(cobj, {ij}) > 1 and manhattan(cobj, {ij}) % 2 == 0)
go = fill(go, 5, valids)
return {"input": gi, "output": go}
def generate_ec883f72(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (6, 30))
w = unifint(rng, diff_lb, diff_ub, (6, 30))
ohi = unifint(rng, diff_lb, diff_ub, (0, h - 6))
owi = unifint(rng, diff_lb, diff_ub, (0, w - 6))
oh = h - 5 - ohi
ow = w - 5 - owi
loci = rng.randint(0, h - oh)
locj = rng.randint(0, w - ow)
bgc, sqc, linc = rng.sample(cols, 3)
gi = canvas(bgc, (h, w))
obj = backdrop(frozenset({(loci, locj), (loci + oh - 1, locj + ow - 1)}))
gi = fill(gi, sqc, obj)
obob = outbox(outbox(obj))
gi = fill(gi, linc, obob)
ln1 = shoot(lrcorner(obob), (1, 1))
ln2 = shoot(ulcorner(obob), (-1, -1))
ln3 = shoot(llcorner(obob), (1, -1))
ln4 = shoot(urcorner(obob), (-1, 1))
lns = (ln1 | ln2 | ln3 | ln4) & ofcolor(gi, bgc)
go = fill(gi, sqc, lns)
return {"input": gi, "output": go}
def generate_ea786f4a(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (1, 14))
w = unifint(rng, diff_lb, diff_ub, (1, 14))
mp = (h, w)
h = 2 * h + 1
w = 2 * w + 1
linc = rng.choice(cols)
remcols = remove(linc, cols)
gi = canvas(linc, (h, w))
inds = remove(mp, asindices(gi))
ncols = unifint(rng, diff_lb, diff_ub, (1, 9))
ccols = rng.sample(remcols, ncols)
obj = {(rng.choice(ccols), ij) for ij in inds}
gi = paint(gi, obj)
ln1 = shoot(mp, (-1, -1))
ln2 = shoot(mp, (1, 1))
ln3 = shoot(mp, (-1, 1))
ln4 = shoot(mp, (1, -1))
go = fill(gi, linc, ln1 | ln2 | ln3 | ln4)
return {"input": gi, "output": go}
def generate_ded97339(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (5, 30))
w = unifint(rng, diff_lb, diff_ub, (5, 30))
bgc, linc = rng.sample(cols, 2)
gi = canvas(bgc, (h, w))
ndots = unifint(rng, diff_lb, diff_ub, (2, (h * w) // 9))
inds = asindices(gi)
dots = set()
if rng.choice((True, False)):
idxi = rng.randint(0, h - 1)
locj1 = rng.randint(0, w - 3)
locj2 = rng.randint(locj1 + 2, w - 1)
dots.add((idxi, locj1))
dots.add((idxi, locj2))
else:
idxj = rng.randint(0, w - 1)
loci1 = rng.randint(0, h - 3)
loci2 = rng.randint(loci1 + 2, h - 1)
dots.add((loci1, idxj))
dots.add((loci2, idxj))
for k in range(ndots - 2):
if len(inds) == 0:
break
loc = rng.choice(totuple(inds))
dots.add(loc)
inds = (inds - {loc}) - neighbors(loc)
gi = fill(gi, linc, dots)
go = tuple(e for e in gi)
for ii, r in enumerate(gi):
if r.count(linc) > 1:
a = r.index(linc)
b = w - r[::-1].index(linc) - 1
go = fill(go, linc, connect((ii, a), (ii, b)))
go = dmirror(go)
gi = dmirror(gi)
for ii, r in enumerate(gi):
if r.count(linc) > 1:
a = r.index(linc)
b = h - r[::-1].index(linc) - 1
go = fill(go, linc, connect((ii, a), (ii, b)))
return {"input": gi, "output": go}
def generate_d687bc17(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (5, 30))
w = unifint(rng, diff_lb, diff_ub, (5, 30))
bgc, c1, c2, c3, c4 = rng.sample(cols, 5)
gi = canvas(bgc, (h, w))
gi = fill(gi, c1, connect((0, 0), (0, w - 1)))
gi = fill(gi, c2, connect((0, 0), (h - 1, 0)))
gi = fill(gi, c3, connect((h - 1, w - 1), (0, w - 1)))
gi = fill(gi, c4, connect((h - 1, w - 1), (h - 1, 0)))
inds = asindices(gi)
gi = fill(gi, bgc, corners(inds))
go = tuple(e for e in gi)
cands = backdrop(inbox(inbox(inds)))
ndots = unifint(rng, diff_lb, diff_ub, (1, min(len(cands), h + h + w + w)))
dots = rng.sample(totuple(cands), ndots)
dots = {(rng.choice((c1, c2, c3, c4)), ij) for ij in dots}
n1 = toindices(sfilter(dots, lambda cij: cij[0] == c1))
n1coverage = apply(last, n1)
if len(n1coverage) == w - 4 and w > 5:
n1coverage = remove(rng.choice(totuple(n1coverage)), n1coverage)
for jj in n1coverage:
loci = rng.choice([ij[0] for ij in sfilter(n1, lambda ij: ij[1] == jj)])
gi = fill(gi, c1, {(loci, jj)})
go = fill(go, c1, {(1, jj)})
n2 = toindices(sfilter(dots, lambda cij: cij[0] == c2))
n2coverage = apply(first, n2)
if len(n2coverage) == h - 4 and h > 5:
n2coverage = remove(rng.choice(totuple(n2coverage)), n2coverage)
for ii in n2coverage:
locj = rng.choice([ij[1] for ij in sfilter(n2, lambda ij: ij[0] == ii)])
gi = fill(gi, c2, {(ii, locj)})
go = fill(go, c2, {(ii, 1)})
n3 = toindices(sfilter(dots, lambda cij: cij[0] == c4))
n3coverage = apply(last, n3)
if len(n3coverage) == w - 4 and w > 5:
n3coverage = remove(rng.choice(totuple(n3coverage)), n3coverage)
for jj in n3coverage:
loci = rng.choice([ij[0] for ij in sfilter(n3, lambda ij: ij[1] == jj)])
gi = fill(gi, c4, {(loci, jj)})
go = fill(go, c4, {(h - 2, jj)})
n4 = toindices(sfilter(dots, lambda cij: cij[0] == c3))
n4coverage = apply(first, n4)
if len(n4coverage) == h - 4 and h > 5:
n4coverage = remove(rng.choice(totuple(n4coverage)), n4coverage)
for ii in n4coverage:
locj = rng.choice([ij[1] for ij in sfilter(n4, lambda ij: ij[0] == ii)])
gi = fill(gi, c3, {(ii, locj)})
go = fill(go, c3, {(ii, w - 2)})
noisecands = ofcolor(gi, bgc)
noisecols = difference(cols, (bgc, c1, c2, c3, c4))
nnoise = unifint(rng, diff_lb, diff_ub, (0, len(noisecands)))
ub = ((h * w) - 2 * h - 2 * (w - 2)) // 2 - ndots - 1
nnoise = unifint(rng, diff_lb, diff_ub, (0, max(0, ub)))
noise = rng.sample(totuple(noisecands), nnoise)
noiseobj = {(rng.choice(noisecols), ij) for ij in noise}
gi = paint(gi, noiseobj)
return {"input": gi, "output": go}
def generate_d90796e8(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = difference(interval(0, 10, 1), (8, 2, 3))
h = unifint(rng, diff_lb, diff_ub, (3, 30))
w = unifint(rng, diff_lb, diff_ub, (3, 30))
bgc, noisec = rng.sample(cols, 2)
gi = canvas(bgc, (h, w))
nocc = unifint(rng, diff_lb, diff_ub, (1, (h * w) // 3))
inds = asindices(gi)
locs = rng.sample(totuple(inds), nocc)
obj = frozenset({(rng.choice((noisec, 2, 3)), ij) for ij in locs})
gi = paint(gi, obj)
fixloc = rng.choice(totuple(inds))
fixloc2 = rng.choice(totuple(dneighbors(fixloc) & inds))
gi = fill(gi, 2, {fixloc})
gi = fill(gi, 3, {fixloc2})
go = tuple(e for e in gi)
reds = ofcolor(gi, 2)
greens = ofcolor(gi, 3)
tocover = set()
tolblue = set()
for r in reds:
inters = dneighbors(r) & greens
if len(inters) > 0:
tocover.add(r)
tolblue = tolblue | inters
go = fill(go, bgc, tocover)
go = fill(go, 8, tolblue)
return {"input": gi, "output": go}
def generate_a68b268e(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (2, 14))
w = unifint(rng, diff_lb, diff_ub, (2, 4))
bgc, linc, c1, c2, c3, c4 = rng.sample(cols, 6)
canv = canvas(bgc, (h, w))
inds = asindices(canv)
nc1d = unifint(rng, diff_lb, diff_ub, (0, (h * w) // 2))
nc1 = rng.choice((nc1d, h * w - nc1d))
nc1 = min(max(1, nc1), h * w - 1)
nc2d = unifint(rng, diff_lb, diff_ub, (0, (h * w) // 2))
nc2 = rng.choice((nc2d, h * w - nc2d))
nc2 = min(max(1, nc2), h * w - 1)
nc3d = unifint(rng, diff_lb, diff_ub, (0, (h * w) // 2))
nc3 = rng.choice((nc3d, h * w - nc3d))
nc3 = min(max(1, nc3), h * w - 1)
nc4d = unifint(rng, diff_lb, diff_ub, (0, (h * w) // 2))
nc4 = rng.choice((nc4d, h * w - nc4d))
nc4 = min(max(1, nc4), h * w - 1)
ofc1 = rng.sample(totuple(inds), nc1)
ofc2 = rng.sample(totuple(inds), nc2)
ofc3 = rng.sample(totuple(inds), nc3)
ofc4 = rng.sample(totuple(inds), nc4)
go = fill(canv, c1, ofc1)
go = fill(go, c2, ofc2)
go = fill(go, c3, ofc3)
go = fill(go, c4, ofc4)
LR = asobject(fill(canv, c1, ofc1))
LL = asobject(fill(canv, c2, ofc2))
UR = asobject(fill(canv, c3, ofc3))
UL = asobject(fill(canv, c4, ofc4))
gi = canvas(linc, (2 * h + 1, 2 * w + 1))
gi = paint(gi, shift(LR, (h + 1, w + 1)))
gi = paint(gi, shift(LL, (h + 1, 0)))
gi = paint(gi, shift(UR, (0, w + 1)))
gi = paint(gi, shift(UL, (0, 0)))
return {"input": gi, "output": go}
def generate_ea32f347(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = difference(interval(0, 10, 1), (1, 2, 4))
h = unifint(rng, diff_lb, diff_ub, (5, 30))
w = unifint(rng, diff_lb, diff_ub, (5, 30))
a = unifint(rng, diff_lb, diff_ub, (3, 30))
b = unifint(rng, diff_lb, diff_ub, (2, a))
c = unifint(rng, diff_lb, diff_ub, (1, b))
if c - a == 2:
if a > 1:
a -= 1
elif c < min(h, w):
c += 1
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
inds = asindices(gi)
for col, l in zip((1, 4, 2), (a, b, c)):
ln1 = connect((0, 0), (0, l - 1))
ln2 = connect((0, 0), (l - 1, 0))
tmpg = fill(gi, -1, asindices(gi) - inds)
occs1 = occurrences(tmpg, recolor(bgc, ln1))
occs2 = occurrences(tmpg, recolor(bgc, ln2))
pool = []
if len(occs1) > 0:
pool.append((ln1, occs1))
if len(occs2) > 0:
pool.append((ln2, occs2))
ln, occs = rng.choice(pool)
loc = rng.choice(totuple(occs))
plcd = shift(ln, loc)
gi = fill(gi, rng.choice(remcols), plcd)
go = fill(go, col, plcd)
inds = (inds - plcd) - mapply(dneighbors, plcd)
return {"input": gi, "output": go}
def generate_e179c5f4(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(8, interval(0, 10, 1))
w = unifint(rng, diff_lb, diff_ub, (2, 10))
h = unifint(rng, diff_lb, diff_ub, (w + 1, 30))
bgc, linc = rng.sample(cols, 2)
c = canvas(bgc, (h, w))
sp = (h - 1, 0)
gi = fill(c, linc, {sp})
go = tuple(e for e in gi)
changing = True
direc = 1
while True:
sp = add(sp, (-1, direc))
if sp[1] == w - 1 or sp[1] == 0:
direc *= -1
go2 = fill(go, linc, {sp})
if go2 == go:
break
go = go2
mfs = (identity, dmirror, cmirror, vmirror, hmirror, rot90, rot180, rot270)
nmfs = rng.choice((1, 2))
for fn in rng.sample(mfs, nmfs):
gi = fn(gi)
go = fn(go)
gix = tuple(e for e in gi)
gox = tuple(e for e in go)
numlins = unifint(rng, diff_lb, diff_ub, (1, 4))
if numlins > 1:
gi = fill(gi, linc, ofcolor(hmirror(gix), linc))
go = fill(go, linc, ofcolor(hmirror(gox), linc))
if numlins > 2:
gi = fill(gi, linc, ofcolor(vmirror(gix), linc))
go = fill(go, linc, ofcolor(vmirror(gox), linc))
if numlins > 3:
gi = fill(gi, linc, ofcolor(hmirror(vmirror(gix)), linc))
go = fill(go, linc, ofcolor(hmirror(vmirror(gox)), linc))
go = replace(go, bgc, 8)
return {"input": gi, "output": go}
def generate_aba27056(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(4, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (6, 30))
w = unifint(rng, diff_lb, diff_ub, (6, 30))
bgc, sqc = rng.sample(cols, 2)
canv = canvas(bgc, (h, w))
oh = rng.randint(3, h)
ow = unifint(rng, diff_lb, diff_ub, (5, w - 1))
loci = unifint(rng, diff_lb, diff_ub, (0, h - oh))
locj = rng.randint(0, w - ow)
bx = box(frozenset({(loci, locj), (loci + oh - 1, locj + ow - 1)}))
maxk = (ow - 4) // 2
k = rng.randint(0, maxk)
hole = connect((loci, locj + 2 + k), (loci, locj + ow - 3 - k))
gi = fill(canv, sqc, bx)
gi = fill(gi, bgc, hole)
go = fill(canv, 4, backdrop(bx))
go = fill(go, sqc, bx)
bar = mapply(rbind(shoot, (-1, 0)), hole)
go = fill(go, 4, bar)
go = fill(go, 4, shoot(add((-1, 1), urcorner(hole)), (-1, 1)))
go = fill(go, 4, shoot(add((-1, -1), ulcorner(hole)), (-1, -1)))
rotf = rng.choice((identity, rot90, rot180, rot270))
gi = rotf(gi)
go = rotf(go)
return {"input": gi, "output": go}
def generate_e40b9e2f(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (6, 30))
w = unifint(rng, diff_lb, diff_ub, (6, 30))
d = unifint(rng, diff_lb, diff_ub, (4, min(h, w) - 2))
loci = rng.randint(0, h - d)
locj = rng.randint(0, w - d)
loc = (loci, locj)
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
numcols = unifint(rng, diff_lb, diff_ub, (1, 9))
ccols = rng.sample(remcols, numcols)
subg = canvas(bgc, (d, d))
inds = asindices(subg)
if d % 2 == 0:
q = sfilter(inds, lambda ij: ij[0] < d // 2 and ij[1] < d // 2)
cp = {(d // 2 - 1, d // 2 - 1), (d // 2, d // 2 - 1), (d // 2 - 1, d // 2), (d // 2, d // 2)}
else:
q = sfilter(inds, lambda ij: ij[0] < d // 2 and ij[1] <= d // 2)
cp = {(d // 2, d // 2)} | ineighbors((d // 2, d // 2))
nrings = unifint(rng, diff_lb, diff_ub, (1, max(1, (d - 2) // 2)))
rings = set()
for k in range(nrings):
ring = box({(k, k), (d - k - 1, d - k - 1)})
rings = rings | ring
qin = q - rings
qout = rings & q
ntailobjcells = unifint(rng, diff_lb, diff_ub, (1, len(q)))
tailobjcells = rng.sample(totuple(q), ntailobjcells)
tailobjcells = set(tailobjcells) | {rng.choice(totuple(qin))} | {rng.choice(totuple(qout))}
tailobj = {(rng.choice(ccols), ij) for ij in tailobjcells}
while hmirror(tailobj) == tailobj and vmirror(tailobj) == tailobj:
ntailobjcells = unifint(rng, diff_lb, diff_ub, (1, len(q)))
tailobjcells = rng.sample(totuple(q), ntailobjcells)
tailobjcells = set(tailobjcells) | {rng.choice(totuple(qin))} | {rng.choice(totuple(qout))}
tailobj = {(rng.choice(ccols), ij) for ij in tailobjcells}
for k in range(4):
subg = paint(subg, tailobj)
subg = rot90(subg)
fxobj = recolor(rng.choice(ccols), cp)
subg = paint(subg, fxobj)
subgi = subg
subgo = tuple(e for e in subgi)
subgi = fill(subgi, bgc, rings)
nsplits = unifint(rng, diff_lb, diff_ub, (1, 4))
splits = [set() for k in range(nsplits)]
for idx, cel in enumerate(tailobj):
splits[idx % nsplits].add(cel)
for jj in range(4):
if jj < len(splits):
subgi = paint(subgi, splits[jj])
subgi = rot90(subgi)
subgi = paint(subgi, fxobj)
rotf = rng.choice((identity, rot90, rot180, rot270))
subgi = rotf(subgi)
subgo = rotf(subgo)
gi = paint(canvas(bgc, (h, w)), shift(asobject(subgi), loc))
go = paint(canvas(bgc, (h, w)), shift(asobject(subgo), loc))
return {"input": gi, "output": go}
def generate_e8dc4411(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (9, 30))
w = unifint(rng, diff_lb, diff_ub, (9, 30))
d = unifint(rng, diff_lb, diff_ub, (3, min(h, w) // 2 - 1))
bgc, objc, remc = rng.sample(cols, 3)
c = canvas(bgc, (d, d))
inds = sfilter(asindices(c), lambda ij: ij[0] >= d // 2 and ij[1] >= d // 2)
ncd = unifint(rng, diff_lb, diff_ub, (1, len(inds) // 2))
nc = rng.choice((ncd, len(inds) - ncd))
nc = min(max(2, nc), len(inds) - 1)
cells = rng.sample(totuple(inds), nc)
cells = set(cells) | {rng.choice(((d // 2, d // 2), (d // 2, d // 2 - 1)))}
cells = cells | {(jj, ii) for ii, jj in cells}
for k in range(4):
c = fill(c, objc, cells)
c = rot90(c)
while palette(toobject(box(asindices(c)), c)) == frozenset({bgc}) and height(c) > 3:
c = trim(c)
obj = ofcolor(c, objc)
od = height(obj)
loci = rng.randint(1, h - 2 * od)
locj = rng.randint(1, w - 2 * od)
obj = shift(obj, (loci, locj))
bd = backdrop(obj)
p = 0
while len(shift(obj, (p, p)) & bd) > 0:
p += 1
obj2 = shift(obj, (p, p))
nbhs = mapply(neighbors, obj)
while len(obj2 & nbhs) == 0:
nbhs = mapply(neighbors, nbhs)
indic = obj2 & nbhs
gi = canvas(bgc, (h, w))
gi = fill(gi, objc, obj)
gi = fill(gi, remc, indic)
go = tuple(e for e in gi)
for k in range(30):
newg = fill(go, remc, shift(obj, (p * (k + 1), p * (k + 1))))
if newg == go:
break
go = newg
rotf = rng.choice((identity, rot90, rot180, rot270))
gi = rotf(gi)
go = rotf(go)
return {"input": gi, "output": go}
def generate_ddf7fa4f(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
nocc = unifint(rng, diff_lb, diff_ub, (1, min(w // 3, (h * w) // 36)))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
succ = 0
tr = 0
maxtr = 10 * nocc
inds = asindices(gi)
inds = sfilter(inds, lambda ij: ij[0] > 1)
while succ < nocc and tr < maxtr:
tr += 1
oh = rng.randint(2, 7)
ow = rng.randint(2, 7)
cands = sfilter(inds, lambda ij: ij[0] <= h - oh and ij[1] <= w - ow)
hastobein = {cidx for cidx, col in enumerate(gi[0]) if col == bgc}
cantbein = {cidx for cidx, col in enumerate(gi[0]) if col != bgc}
jopts = [
j
for j in range(w)
if len(set(interval(j, j + ow, 1)) & hastobein) > 0 and len(set(interval(j, j + ow, 1)) & cantbein) == 0
]
cands = sfilter(cands, lambda ij: ij[1] in jopts)
if len(cands) == 0:
continue
loci, locj = rng.choice(totuple(cands))
locat = rng.choice(sfilter(interval(locj, locj + ow, 1), lambda jj: jj in hastobein))
sq = backdrop(frozenset({(loci, locj), (loci + oh - 1, locj + ow - 1)}))
if sq.issubset(inds):
succ += 1
inds = (inds - sq) - mapply(dneighbors, sq)
col = rng.choice(remcols)
gr = rng.choice(remove(col, remcols))
gi = fill(gi, col, {(0, locat)})
go = fill(go, col, {(0, locat)})
gi = fill(gi, gr, sq)
go = fill(go, col, sq)
rotf = rng.choice((identity, rot90, rot180, rot270))
gi = rotf(gi)
go = rotf(go)
return {"input": gi, "output": go}
def generate_d07ae81c(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
lnf = lambda ij: shoot(ij, (1, 1)) | shoot(ij, (-1, -1)) | shoot(ij, (-1, 1)) | shoot(ij, (1, -1))
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
c1, c2, c3, c4 = rng.sample(cols, 4)
magiccol = 0
gi = canvas(0, (h, w))
ndivi = unifint(rng, diff_lb, diff_ub, (1, (h * w) // 10))
for k in range(ndivi):
objs = objects(gi, T, F, F)
objs = sfilter(objs, lambda o: min(shape(o)) > 3 and max(shape(o)) > 4)
objs = sfilter(objs, lambda o: height(o) * width(o) == len(o))
if len(objs) == 0:
break
obj = rng.choice(totuple(objs))
if rng.choice((True, False)):
loci = rng.randint(uppermost(obj) + 2, lowermost(obj) - 1)
newobj = backdrop(frozenset({(loci, leftmost(obj)), lrcorner(obj)}))
else:
locj = rng.randint(leftmost(obj) + 2, rightmost(obj) - 1)
newobj = backdrop(frozenset({(uppermost(obj), locj), lrcorner(obj)}))
magiccol += 1
gi = fill(gi, magiccol, newobj)
objs = objects(gi, T, F, F)
for ii, obj in enumerate(objs):
col = c1 if ii == 0 else (c2 if ii == 1 else rng.choice((c1, c2)))
gi = fill(gi, col, toindices(obj))
ofc1 = ofcolor(gi, c1)
ofc2 = ofcolor(gi, c2)
mn = min(len(ofc1), len(ofc2))
n1 = unifint(rng, diff_lb, diff_ub, (1, max(1, int(mn**0.5))))
n2 = unifint(rng, diff_lb, diff_ub, (1, max(1, int(mn**0.5))))
srcs1 = set()
for k in range(n1):
cands = totuple((ofc1 - srcs1) - mapply(neighbors, srcs1))
if len(cands) == 0:
break
srcs1.add(rng.choice(cands))
srcs2 = set()
for k in range(n2):
cands = totuple((ofc2 - srcs2) - mapply(neighbors, srcs2))
if len(cands) == 0:
break
srcs2.add(rng.choice(cands))
gi = fill(gi, c3, srcs1)
gi = fill(gi, c4, srcs2)
lns = mapply(lnf, srcs1) | mapply(lnf, srcs2)
ofc3 = ofc1 & lns
ofc4 = ofc2 & lns
go = fill(gi, c3, ofc3)
go = fill(go, c4, ofc4)
return {"input": gi, "output": go}
def generate_b2862040(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = difference(interval(0, 10, 1), (8,))
while True:
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
nobjs = unifint(rng, diff_lb, diff_ub, (1, (h * w) // 16))
succ = 0
tr = 0
maxtr = 10 * nobjs
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
gi = canvas(bgc, (h, w))
inds = asindices(gi)
while succ < nobjs and tr < maxtr:
tr += 1
oh = rng.randint(3, 6)
ow = rng.randint(3, 6)
obj = box(frozenset({(0, 0), (oh - 1, ow - 1)}))
if rng.choice((True, False)):
nkeep = unifint(rng, diff_lb, diff_ub, (2, len(obj) - 1))
nrem = len(obj) - nkeep
obj = remove(rng.choice(totuple(obj - corners(obj))), obj)
for k in range(nrem - 1):
xx = sfilter(obj, lambda ij: len(dneighbors(ij) & obj) == 1)
if len(xx) == 0:
break
obj = remove(rng.choice(totuple(xx)), obj)
npert = unifint(rng, diff_lb, diff_ub, (0, oh + ow))
objcands = outbox(obj) | outbox(outbox(obj)) | outbox(outbox(outbox(obj)))
obj = set(obj)
for k in range(npert):
obj.add(rng.choice(totuple((objcands - obj) & (mapply(dneighbors, obj) & objcands))))
obj = normalize(obj)
oh, ow = shape(obj)
cands = sfilter(inds, lambda ij: ij[0] <= h - oh and ij[1] <= w - ow)
if len(cands) == 0:
continue
loc = rng.choice(totuple(cands))
plcd = shift(obj, loc)
if plcd.issubset(inds):
gi = fill(gi, rng.choice(remcols), plcd)
succ += 1
inds = (inds - plcd) - mapply(neighbors, plcd)
objs = objects(gi, T, F, F)
bobjs = colorfilter(objs, bgc)
objsm = mfilter(bobjs, compose(flip, rbind(bordering, gi)))
if len(objsm) > 0:
res = mfilter(objs - bobjs, rbind(adjacent, objsm))
go = fill(gi, 8, res)
break
return {"input": gi, "output": go}
def generate_a61ba2ce(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (4, 15))
w = unifint(rng, diff_lb, diff_ub, (4, 15))
lociL = rng.randint(2, h - 2)
lociR = rng.randint(2, h - 2)
locjT = rng.randint(2, w - 2)
locjB = rng.randint(2, w - 2)
bgc, c1, c2, c3, c4 = rng.sample(cols, 5)
ulco = connect((0, 0), (lociL - 1, 0)) | connect((0, 0), (0, locjT - 1))
urco = connect((0, w - 1), (0, locjT)) | connect((0, w - 1), (lociR - 1, w - 1))
llco = connect((h - 1, 0), (lociL, 0)) | connect((h - 1, 0), (h - 1, locjB - 1))
lrco = connect((h - 1, w - 1), (h - 1, locjB)) | connect((h - 1, w - 1), (lociR, w - 1))
go = canvas(bgc, (h, w))
go = fill(go, c1, ulco)
go = fill(go, c2, urco)
go = fill(go, c3, llco)
go = fill(go, c4, lrco)
fullh = unifint(rng, diff_lb, diff_ub, (2 * h, 30))
fullw = unifint(rng, diff_lb, diff_ub, (2 * w, 30))
gi = canvas(bgc, (fullh, fullw))
objs = (ulco, urco, llco, lrco)
ocols = (c1, c2, c3, c4)
while True:
inds = asindices(gi)
locs = []
for o, c in zip(objs, ocols):
cands = sfilter(inds, lambda ij: shift(o, ij).issubset(inds))
if len(cands) == 0:
break
loc = rng.choice(totuple(cands))
locs.append(loc)
inds = inds - shift(o, loc)
if len(locs) == 4:
break
for o, c, l in zip(objs, ocols, locs):
gi = fill(gi, c, shift(o, l))
return {"input": gi, "output": go}
def generate_bbc9ae5d(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
w = unifint(rng, diff_lb, diff_ub, (2, 15))
w = w * 2
locinv = unifint(rng, diff_lb, diff_ub, (2, w))
locj = w - locinv
loc = (0, locj)
c1 = rng.choice(cols)
remcols = remove(c1, cols)
ln1 = connect((0, 0), (0, locj))
remobj = connect((0, locj + 1), (0, w - 1))
numc = unifint(rng, diff_lb, diff_ub, (1, 9))
ccols = rng.sample(remcols, numc)
remobj = {(rng.choice(ccols), ij) for ij in remobj}
gi = canvas(-1, (1, w))
go = canvas(-1, (w // 2, w))
ln2 = shoot(loc, (1, 1))
gi = fill(gi, c1, ln1)
gi = paint(gi, remobj)
go = fill(go, c1, mapply(rbind(shoot, (0, -1)), ln2))
for c, ij in remobj:
go = fill(go, c, shoot(ij, (1, 1)))
return {"input": gi, "output": go}
def generate_9edfc990(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(2, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (5, 30))
w = unifint(rng, diff_lb, diff_ub, (5, 30))
namt = unifint(rng, diff_lb, diff_ub, (int(0.4 * h * w), int(0.7 * h * w)))
gi = canvas(0, (h, w))
inds = asindices(gi)
locs = rng.sample(totuple(inds), namt)
noise = {(rng.choice(cols), ij) for ij in locs}
gi = paint(gi, noise)
remlocs = inds - set(locs)
numc = unifint(rng, diff_lb, diff_ub, (1, max(1, len(remlocs) // 10)))
blocs = rng.sample(totuple(remlocs), numc)
gi = fill(gi, 1, blocs)
objs = objects(gi, T, F, F)
objs = colorfilter(objs, 0)
res = mfilter(objs, rbind(adjacent, blocs))
go = fill(gi, 1, res)
return {"input": gi, "output": go}
def generate_a78176bb(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (6, 30))
w = unifint(rng, diff_lb, diff_ub, (6, 30))
nlns = unifint(rng, diff_lb, diff_ub, (1, (h + w) // 8))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
succ = 0
tr = 0
maxtr = 10 * nlns
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
inds = asindices(gi)
fullinds = asindices(gi)
spopts = []
for idx in range(h - 5, -1, -1):
spopts.append((idx, 0))
for idx in range(1, w - 4, 1):
spopts.append((0, idx))
while succ < nlns and tr < maxtr:
tr += 1
if len(spopts) == 0:
break
sp = rng.choice(spopts)
ln = shoot(sp, (1, 1)) & fullinds
if not ln.issubset(inds):
continue
lno = sorted(ln, key=lambda x: x[0])
trid1 = rng.randint(2, min(5, len(lno) - 3))
trid2 = rng.randint(2, min(5, len(lno) - 3))
tri1 = sfilter(asindices(canvas(-1, (trid1, trid1))), lambda ij: ij[1] >= ij[0])
triloc1 = add(rng.choice(lno[1 : -trid1 - 1]), (0, 1))
tri2 = dmirror(sfilter(asindices(canvas(-1, (trid2, trid2))), lambda ij: ij[1] >= ij[0]))
triloc2 = add(rng.choice(lno[1 : -trid2 - 1]), (1, 0))
spo2 = add(sp, (0, -trid2 - 2))
nexlin2 = {add(spo2, (k, k)) for k in range(max(h, w))} & fullinds
spo1 = add(sp, (-trid1 - 2, 0))
nexlin1 = {add(spo1, (k, k)) for k in range(max(h, w))} & fullinds
for idx, (tri, triloc, nexlin) in enumerate(
rng.sample([(tri1, triloc1, nexlin1), (tri2, triloc2, nexlin2)], 2)
):
tri = shift(tri, triloc)
fullobj = ln | tri | nexlin
if idx == 0:
lncol, tricol = rng.sample(remcols, 2)
else:
tricol = rng.choice(remove(lncol, remcols))
if fullobj.issubset(inds) if idx == 0 else (tri | nexlin).issubset(fullobj):
succ += 1
inds = (inds - fullobj) - mapply(neighbors, fullobj)
gi = fill(gi, tricol, tri)
gi = fill(gi, lncol, ln)
go = fill(go, lncol, ln)
go = fill(go, lncol, nexlin)
if rng.choice((True, False)):
gi = hmirror(gi)
go = hmirror(go)
return {"input": gi, "output": go}
def generate_995c5fa3(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
o1 = asindices(canvas(-1, (4, 4)))
o2 = box(asindices(canvas(-1, (4, 4))))
o3 = asindices(canvas(-1, (4, 4))) - {(1, 0), (2, 0), (1, 3), (2, 3)}
o4 = o1 - shift(asindices(canvas(-1, (2, 2))), (2, 1))
mpr = [(o1, 2), (o2, 8), (o3, 3), (o4, 4)]
num = unifint(rng, diff_lb, diff_ub, (1, 6))
h = 4
w = 4 * num + num - 1
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
gi = canvas(bgc, (h, w))
ccols = []
for k in range(num):
col = rng.choice(remcols)
obj, outcol = rng.choice(mpr)
locj = 5 * k
gi = fill(gi, col, shift(obj, (0, locj)))
ccols.append(outcol)
go = tuple(repeat(c, num) for c in ccols)
return {"input": gi, "output": go}
def generate_9aec4887(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (12, 30))
w = unifint(rng, diff_lb, diff_ub, (12, 30))
oh = unifint(rng, diff_lb, diff_ub, (4, h // 2 - 2))
ow = unifint(rng, diff_lb, diff_ub, (4, w // 2 - 2))
bgc, pc, c1, c2, c3, c4 = rng.sample(cols, 6)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (oh, ow))
ln1 = connect((1, 0), (oh - 2, 0))
ln2 = connect((1, ow - 1), (oh - 2, ow - 1))
ln3 = connect((0, 1), (0, ow - 2))
ln4 = connect((oh - 1, 1), (oh - 1, ow - 2))
go = fill(go, c1, ln1)
go = fill(go, c2, ln2)
go = fill(go, c3, ln3)
go = fill(go, c4, ln4)
objB = asobject(go)
bounds = asindices(canvas(-1, (oh - 2, ow - 2)))
objA = {rng.choice(totuple(bounds))}
ncells = unifint(rng, diff_lb, diff_ub, (1, ((oh - 2) * (ow - 2)) // 2))
for k in range(ncells - 1):
objA.add(rng.choice(totuple((bounds - objA) & mapply(neighbors, objA))))
while shape(objA) != (oh - 2, ow - 2):
objA.add(rng.choice(totuple((bounds - objA) & mapply(neighbors, objA))))
fullinds = asindices(gi)
loci = rng.randint(0, h - 2 * oh + 2)
locj = rng.randint(0, w - ow)
plcdB = shift(objB, (loci, locj))
plcdi = toindices(plcdB)
rems = sfilter(fullinds - plcdi, lambda ij: loci + oh <= ij[0] <= h - oh + 2 and ij[1] <= w - ow + 2)
loc = rng.choice(totuple(rems))
plcdA = shift(objA, loc)
gi = paint(gi, plcdB)
gi = fill(gi, pc, plcdA)
objA = shift(objA, (1, 1))
objs = objects(go, T, F, T)
for ij in objA:
manhs = {obj: manhattan(obj, {ij}) for obj in objs}
manhsl = list(manhs.values())
mmh = min(manhsl)
if manhsl.count(mmh) == 1:
col = color([o for o, mnh in manhs.items() if mmh == mnh][0])
else:
col = pc
go = fill(go, col, {ij})
rotf = rng.choice((identity, rot90, rot180, rot270))
gi = rotf(gi)
go = rotf(go)
return {"input": gi, "output": go}
def generate_846bdb03(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (12, 30))
w = unifint(rng, diff_lb, diff_ub, (12, 30))
oh = unifint(rng, diff_lb, diff_ub, (4, h // 2 - 2))
ow = unifint(rng, diff_lb, diff_ub, (4, w // 2 - 2))
bgc, dotc, c1, c2 = rng.sample(cols, 4)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (oh, ow))
ln1 = connect((1, 0), (oh - 2, 0))
ln2 = connect((1, ow - 1), (oh - 2, ow - 1))
go = fill(go, c1, ln1)
go = fill(go, c2, ln2)
go = fill(go, dotc, corners(asindices(go)))
objB = asobject(go)
bounds = asindices(canvas(-1, (oh - 2, ow - 2)))
objA = {rng.choice(totuple(bounds))}
ncells = unifint(rng, diff_lb, diff_ub, (1, ((oh - 2) * (ow - 2)) // 2))
for k in range(ncells - 1):
objA.add(rng.choice(totuple((bounds - objA) & mapply(neighbors, objA))))
while shape(objA) != (oh - 2, ow - 2):
objA.add(rng.choice(totuple((bounds - objA) & mapply(neighbors, objA))))
fullinds = asindices(gi)
loci = rng.randint(0, h - 2 * oh + 2)
locj = rng.randint(0, w - ow)
plcdB = shift(objB, (loci, locj))
plcdi = toindices(plcdB)
rems = sfilter(fullinds - plcdi, lambda ij: loci + oh <= ij[0] <= h - oh + 2 and ij[1] <= w - ow + 2)
loc = rng.choice(totuple(rems))
plcdA = shift(objA, loc)
mp = center(plcdA)[1]
plcdAL = sfilter(plcdA, lambda ij: ij[1] < mp)
plcdAR = plcdA - plcdAL
plcdA = recolor(c1, plcdAL) | recolor(c2, plcdAR)
gi = paint(gi, plcdB)
ism = rng.choice((True, False))
gi = paint(gi, vmirror(plcdA) if ism else plcdA)
objA = shift(normalize(plcdA), (1, 1))
objs = objects(go, T, F, T)
go = paint(go, objA)
rotf = rng.choice((identity, rot90, rot180, rot270))
gi = rotf(gi)
go = rotf(go)
return {"input": gi, "output": go}
def generate_2dd70a9a(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = difference(interval(0, 10, 1), (2, 3))
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
bgc, fgc = rng.sample(cols, 2)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
if rng.choice((True, False)):
oh = unifint(rng, diff_lb, diff_ub, (5, h - 2))
ow = unifint(rng, diff_lb, diff_ub, (3, w - 2))
loci = rng.randint(1, h - oh - 1)
locj = rng.randint(1, w - ow - 1)
hli = rng.randint(loci + 2, loci + oh - 3)
sp = {(loci + oh - 1, locj), (loci + oh - 2, locj)}
ep = {(loci, locj + ow - 1), (loci + 1, locj + ow - 1)}
bp1 = (hli - 1, locj)
bp2 = (hli, locj + ow)
ln1 = connect((loci + oh - 1, locj), (hli, locj))
ln2 = connect((hli, locj), (hli, locj + ow - 1))
ln3 = connect((hli, locj + ow - 1), (loci + 2, locj + ow - 1))
else:
oh = unifint(rng, diff_lb, diff_ub, (3, h - 2))
ow = unifint(rng, diff_lb, diff_ub, (3, w - 2))
loci = rng.randint(1, h - oh - 1)
locj = rng.randint(1, w - ow - 1)
if rng.choice((True, False)):
sp1j = rng.randint(locj, locj + ow - 3)
ep1j = locj
else:
ep1j = rng.randint(locj, locj + ow - 3)
sp1j = locj
sp = {(loci, sp1j), (loci, sp1j + 1)}
ep = {(loci + oh - 1, ep1j), (loci + oh - 1, ep1j + 1)}
bp1 = (loci, locj + ow)
bp2 = (loci + oh, locj + ow - 1)
ln1 = connect((loci, sp1j + 2), (loci, locj + ow - 1))
ln2 = connect((loci, locj + ow - 1), (loci + oh - 1, locj + ow - 1))
ln3 = connect((loci + oh - 1, ep1j + 2), (loci + oh - 1, locj + ow - 1))
gi = fill(gi, 3, sp)
gi = fill(gi, 2, ep)
go = fill(go, 3, sp)
go = fill(go, 2, ep)
lns = ln1 | ln2 | ln3
bps = {bp1, bp2}
gi = fill(gi, fgc, bps)
go = fill(go, fgc, bps)
go = fill(go, 3, lns)
inds = ofcolor(go, bgc)
namt = unifint(rng, diff_lb, diff_ub, (0, len(inds) // 2))
noise = rng.sample(totuple(inds), namt)
gi = fill(gi, fgc, noise)
go = fill(go, fgc, noise)
mfs = (identity, dmirror, cmirror, vmirror, hmirror, rot90, rot180, rot270)
nmfs = rng.choice((1, 2))
for fn in rng.sample(mfs, nmfs):
gi = fn(gi)
go = fn(go)
return {"input": gi, "output": go}
def generate_36fdfd69(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = difference(interval(0, 10, 1), (4,))
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
nobjs = unifint(rng, diff_lb, diff_ub, (1, (h * w) // 30))
bgc, fgc, objc = rng.sample(cols, 3)
gi = canvas(bgc, (h, w))
inds = asindices(gi)
succ = 0
tr = 0
maxtr = 5 * nobjs
namt = rng.randint(int(0.35 * h * w), int(0.65 * h * w))
noise = rng.sample(totuple(inds), namt)
gi = fill(gi, fgc, noise)
go = tuple(e for e in gi)
while succ < nobjs and tr < maxtr:
tr += 1
oh = rng.randint(2, 7)
ow = rng.randint(2, 7)
cands = sfilter(inds, lambda ij: ij[0] <= h - oh and ij[1] <= w - ow)
if len(cands) == 0:
continue
loc = rng.choice(totuple(cands))
loci, locj = loc
bd = backdrop(frozenset({(loci, locj), (loci + oh - 1, locj + ow - 1)}))
if bd.issubset(inds):
ncells = rng.randint(2, oh * ow - 1)
obj = {rng.choice(totuple(bd))}
for k in range(ncells - 1):
obj.add(rng.choice(totuple((bd - obj) & mapply(neighbors, mapply(dneighbors, obj)))))
while len(obj) == height(obj) * width(obj):
obj = {rng.choice(totuple(bd))}
for k in range(ncells - 1):
obj.add(rng.choice(totuple((bd - obj) & mapply(neighbors, mapply(dneighbors, obj)))))
obj = normalize(obj)
oh, ow = shape(obj)
obj = shift(obj, loc)
bd = backdrop(obj)
gi2 = fill(gi, fgc, bd)
gi2 = fill(gi2, objc, obj)
if colorcount(gi2, objc) < min(colorcount(gi2, fgc), colorcount(gi2, bgc)):
succ += 1
inds = (inds - bd) - (outbox(bd) | outbox(outbox(bd)))
gi = gi2
go = fill(go, 4, bd)
go = fill(go, objc, obj)
return {"input": gi, "output": go}
def generate_28e73c20(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = difference(interval(0, 10, 1), (3,))
direcmapper = {(0, 1): (1, 0), (1, 0): (0, -1), (0, -1): (-1, 0), (-1, 0): (0, 1)}
h = unifint(rng, diff_lb, diff_ub, (3, 30))
w = unifint(rng, diff_lb, diff_ub, (4, 30))
sp = (0, w - 1)
direc = (1, 0)
ncols = unifint(rng, diff_lb, diff_ub, (1, 9))
ccols = rng.sample(cols, ncols)
gi = canvas(-1, (h, w))
inds = asindices(gi)
obj = {(rng.choice(ccols), ij) for ij in inds}
gi = paint(gi, obj)
go = fill(gi, 3, connect((0, 0), sp))
lw = w
lh = h
ld = h
isverti = False
while ld > 0:
lw -= 1
lh -= 1
ep = add(sp, multiply(direc, ld - 1))
ln = connect(sp, ep)
go = fill(go, 3, ln)
direc = direcmapper[direc]
if isverti:
ld = lh
else:
ld = lw
isverti = not isverti
sp = ep
gi = dmirror(dmirror(gi)[1:])
go = dmirror(dmirror(go)[1:])
return {"input": gi, "output": go}
def generate_3eda0437(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = difference(interval(1, 10, 1), (6,))
h = unifint(rng, diff_lb, diff_ub, (3, 8))
w = unifint(rng, diff_lb, diff_ub, (3, 30))
if rng.choice((True, False)):
h, w = w, h
ncols = unifint(rng, diff_lb, diff_ub, (1, 8))
fgcs = rng.sample(cols, ncols)
gi = canvas(-1, (h, w))
gi = paint(gi, {(rng.choice(fgcs), ij) for ij in asindices(gi)})
spac = unifint(rng, diff_lb, diff_ub, (1, (h * w) // 3 * 2))
inds = asindices(gi)
obj = rng.sample(totuple(inds), spac)
gi = fill(gi, 0, obj)
locx = (rng.randint(0, h - 1), rng.randint(0, w - 1))
gi = fill(gi, 0, {locx, add(locx, RIGHT), add(locx, DOWN), add(locx, UNITY)})
maxsiz = -1
mapper = dict()
maxpossw = max([r.count(0) for r in gi])
maxpossh = max([c.count(0) for c in dmirror(gi)])
for a in range(2, maxpossh + 1):
for b in range(2, maxpossw + 1):
siz = a * b
if siz < maxsiz:
continue
objx = recolor(0, asindices(canvas(-1, (a, b))))
occs = occurrences(gi, objx)
if len(occs) > 0:
if siz == maxsiz:
mapper[objx] = occs
elif siz > maxsiz:
mapper = {objx: occs}
maxsiz = siz
go = tuple(e for e in gi)
for obj, locs in mapper.items():
go = fill(go, 6, mapply(lbind(shift, obj), locs))
return {"input": gi, "output": go}
def generate_7447852a(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(4, interval(0, 10, 1))
w = unifint(rng, diff_lb, diff_ub, (2, 8))
h = unifint(rng, diff_lb, diff_ub, (w + 1, 30))
bgc, linc = rng.sample(cols, 2)
remcols = remove(bgc, remove(linc, cols))
c = canvas(bgc, (h, w))
sp = (h - 1, 0)
gi = fill(c, linc, {sp})
direc = 1
while True:
sp = add(sp, (-1, direc))
if sp[1] == w - 1 or sp[1] == 0:
direc *= -1
gi2 = fill(gi, linc, {sp})
if gi2 == gi:
break
gi = gi2
gi = rot90(gi)
objs = objects(gi, T, F, F)
inds = ofcolor(gi, bgc)
numcols = unifint(rng, diff_lb, diff_ub, (1, 7))
ccols = rng.sample(remcols, numcols)
ncells = unifint(rng, diff_lb, diff_ub, (0, len(inds)))
locs = rng.sample(totuple(inds), ncells)
obj = {(rng.choice(ccols), ij) for ij in locs}
gi = paint(gi, obj)
go = tuple(e for e in gi)
objs = order(colorfilter(objs, bgc), leftmost)
objs = merge(set(objs[0::3]))
go = fill(go, 4, objs)
return {"input": gi, "output": go}
def generate_6b9890af(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
oh = unifint(rng, diff_lb, diff_ub, (2, 5))
ow = unifint(rng, diff_lb, diff_ub, (2, 5))
h = unifint(rng, diff_lb, diff_ub, (2 * oh + 2, 30))
w = unifint(rng, diff_lb, diff_ub, (2 * ow + 2, 30))
bounds = asindices(canvas(-1, (oh, ow)))
obj = {rng.choice(totuple(bounds))}
while shape(obj) != (oh, ow):
obj.add(rng.choice(totuple((bounds - obj) & mapply(neighbors, obj))))
maxfac = 1
while oh * maxfac + 2 <= h - oh and ow * maxfac + 2 <= w - ow:
maxfac += 1
maxfac -= 1
fac = unifint(rng, diff_lb, diff_ub, (1, maxfac))
bgc, sqc = rng.sample(cols, 2)
remcols = remove(bgc, remove(sqc, cols))
numc = unifint(rng, diff_lb, diff_ub, (1, 8))
ccols = rng.sample(remcols, numc)
obj = {(rng.choice(ccols), ij) for ij in obj}
gi = canvas(bgc, (h, w))
sq = box(frozenset({(0, 0), (oh * fac + 1, ow * fac + 1)}))
loci = rng.randint(0, h - (oh * fac + 2) - oh)
locj = rng.randint(0, w - (ow * fac + 2))
gi = fill(gi, sqc, shift(sq, (loci, locj)))
loci = rng.randint(loci + oh * fac + 2, h - oh)
locj = rng.randint(0, w - ow)
objp = shift(obj, (loci, locj))
gi = paint(gi, objp)
go = canvas(bgc, (oh * fac + 2, ow * fac + 2))
go = fill(go, sqc, sq)
go2 = paint(canvas(bgc, (oh, ow)), obj)
upscobj = asobject(upscale(go2, fac))
go = paint(go, shift(upscobj, (1, 1)))
rotf = rng.choice((identity, rot90, rot180, rot270))
gi = rotf(gi)
go = rotf(go)
return {"input": gi, "output": go}
def generate_963e52fc(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (3, 30))
w = unifint(rng, diff_lb, diff_ub, (6, 15))
p = unifint(rng, diff_lb, diff_ub, (2, w // 2))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
numc = unifint(rng, diff_lb, diff_ub, (1, 9))
ccols = rng.sample(remcols, numc)
obj = set()
for j in range(p):
ub = unifint(rng, diff_lb, diff_ub, (0, h // 2))
ub = h // 2 - ub
lb = unifint(rng, diff_lb, diff_ub, (ub, h - 1))
numcells = unifint(rng, diff_lb, diff_ub, (1, lb - ub + 1))
for ii in rng.sample(interval(ub, lb + 1, 1), numcells):
loc = (ii, j)
col = rng.choice(ccols)
cell = (col, loc)
obj.add(cell)
go = canvas(bgc, (h, w * 2))
minobj = obj | shift(obj, (0, p))
addonw = rng.randint(0, p)
addon = sfilter(obj, lambda cij: cij[1][1] < addonw)
fullobj = minobj | addon
leftshift = rng.randint(0, addonw)
fullobj = shift(fullobj, (0, -leftshift))
go = paint(go, fullobj)
for j in range((2 * w) // (2 * p) + 1):
go = paint(go, shift(fullobj, (0, j * 2 * p)))
gi = lefthalf(go)
return {"input": gi, "output": go}
def generate_3e980e27(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = difference(interval(0, 10, 1), (2, 3))
h = unifint(rng, diff_lb, diff_ub, (11, 30))
w = unifint(rng, diff_lb, diff_ub, (11, 30))
bgc, rcol, gcol = rng.sample(cols, 3)
objs = []
for fixc, remc in ((2, rcol), (3, gcol)):
oh = unifint(rng, diff_lb, diff_ub, (2, 5))
ow = unifint(rng, diff_lb, diff_ub, (2, 5))
bounds = asindices(canvas(-1, (oh, ow)))
obj = {rng.choice(totuple(bounds))}
ncellsd = unifint(rng, diff_lb, diff_ub, (0, (oh * ow) // 2))
ncells = rng.choice((ncellsd, oh * ow - ncellsd))
ncells = min(max(2, ncells), oh * ow)
for k in range(ncells - 1):
obj.add(rng.choice(totuple((bounds - obj) & mapply(neighbors, obj))))
obj = normalize(obj)
fixp = rng.choice(totuple(obj))
rem = remove(fixp, obj)
obj = {(fixc, fixp)} | recolor(remc, rem)
objs.append(obj)
robj, gobj = objs
obj1, obj2 = rng.sample(objs, 2)
loci1 = rng.randint(0, h - height(obj1) - height(obj2) - 1)
locj1 = rng.randint(0, w - width(obj1))
loci2 = rng.randint(loci1 + height(obj1) + 1, h - height(obj2))
locj2 = rng.randint(0, w - width(obj2))
gi = canvas(bgc, (h, w))
obj1p = shift(obj1, (loci1, locj1))
obj2p = shift(obj2, (loci2, locj2))
gi = paint(gi, obj1p)
gi = paint(gi, obj2p)
noccs = unifint(rng, diff_lb, diff_ub, (1, (h * w) // int(1.5 * (len(robj) + len(gobj)))))
succ = 0
tr = 0
maxtr = 5 * noccs
robj = vmirror(robj)
inds = ofcolor(gi, bgc) - (mapply(neighbors, toindices(obj1p)) | mapply(neighbors, toindices(obj2p)))
go = tuple(e for e in gi)
objopts = [robj, gobj]
while tr < maxtr and succ < noccs:
tr += 1
obj = rng.choice(objopts)
oh, ow = shape(obj)
cands = sfilter(inds, lambda ij: ij[0] <= h - oh and ij[1] <= w - ow)
if len(cands) == 0:
continue
loc = rng.choice(totuple(cands))
plcd = shift(obj, loc)
plcdi = toindices(plcd)
if plcdi.issubset(inds):
succ += 1
inds = (inds - plcdi) - mapply(neighbors, plcdi)
gi = paint(gi, sfilter(plcd, lambda cij: cij[0] in (2, 3)))
go = paint(go, plcd)
if unifint(rng, diff_lb, diff_ub, (1, 100)) < 30:
c = rng.choice((2, 3))
giobjs = objects(gi, F, T, T)
goobjs = objects(go, F, T, T)
gi = fill(gi, bgc, mfilter(giobjs, lambda o: c in palette(o)))
go = fill(go, bgc, mfilter(goobjs, lambda o: c in palette(o)))
return {"input": gi, "output": go}
def generate_a8c38be5(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
goh = unifint(rng, diff_lb, diff_ub, (9, 20))
gow = unifint(rng, diff_lb, diff_ub, (9, 20))
h = unifint(rng, diff_lb, diff_ub, (goh + 4, 30))
w = unifint(rng, diff_lb, diff_ub, (gow + 4, 30))
bgc, sqc = rng.sample(cols, 2)
remcols = remove(bgc, remove(sqc, cols))
numc = unifint(rng, diff_lb, diff_ub, (1, 8))
ccols = rng.sample(remcols, numc)
go = canvas(sqc, (goh, gow))
go = fill(go, bgc, box(asindices(go)))
loci1 = rng.randint(2, goh - 7)
loci2 = rng.randint(loci1 + 4, goh - 3)
locj1 = rng.randint(2, gow - 7)
locj2 = rng.randint(locj1 + 4, gow - 3)
f1 = hfrontier((loci1, 0))
f2 = hfrontier((loci2, 0))
f3 = vfrontier((0, locj1))
f4 = vfrontier((0, locj2))
fs = f1 | f2 | f3 | f4
go = fill(go, sqc, fs)
go = fill(go, bgc, {((loci1 + loci2) // 2, 1)})
go = fill(go, bgc, {((loci1 + loci2) // 2, gow - 2)})
go = fill(go, bgc, {(1, (locj1 + locj2) // 2)})
go = fill(go, bgc, {(goh - 2, (locj1 + locj2) // 2)})
objs = objects(go, T, F, T)
objs = merge(set(recolor(rng.choice(ccols), obj) for obj in objs))
go = paint(go, objs)
gi = go
hdelt = h - goh
hdelt1 = rng.randint(1, hdelt - 3)
hdelt2 = rng.randint(1, hdelt - hdelt1 - 2)
hdelt3 = rng.randint(1, hdelt - hdelt1 - hdelt2 - 1)
hdelt4 = hdelt - hdelt1 - hdelt2 - hdelt3
wdelt = w - gow
wdelt1 = rng.randint(1, wdelt - 3)
wdelt2 = rng.randint(1, wdelt - wdelt1 - 2)
wdelt3 = rng.randint(1, wdelt - wdelt1 - wdelt2 - 1)
wdelt4 = wdelt - wdelt1 - wdelt2 - wdelt3
gi = gi[:loci2] + repeat(repeat(bgc, gow), hdelt2) + gi[loci2:]
gi = gi[: loci1 + 1] + repeat(repeat(bgc, gow), hdelt3) + gi[loci1 + 1 :]
gi = repeat(repeat(bgc, gow), hdelt1) + gi + repeat(repeat(bgc, gow), hdelt4)
gi = dmirror(gi)
gi = gi[:locj2] + repeat(repeat(bgc, h), wdelt2) + gi[locj2:]
gi = gi[: locj1 + 1] + repeat(repeat(bgc, h), wdelt3) + gi[locj1 + 1 :]
gi = repeat(repeat(bgc, h), wdelt1) + gi + repeat(repeat(bgc, h), wdelt4)
gi = dmirror(gi)
nswitcheroos = unifint(rng, diff_lb, diff_ub, (0, 10))
if rng.choice((True, False)):
gi = gi[loci1 + hdelt1 + 1 :] + gi[: loci1 + hdelt1 + 1]
if rng.choice((True, False)):
gi = dmirror(gi)
gi = gi[locj1 + wdelt1 + 1 :] + gi[: locj1 + wdelt1 + 1]
gi = dmirror(gi)
for k in range(nswitcheroos):
o = asobject(gi)
tmpc = canvas(bgc, (h + 12, w + 12))
tmpc = paint(tmpc, shift(o, (6, 6)))
objs = objects(tmpc, F, T, T)
objs = apply(rbind(shift, (-6, -6)), objs)
mpr = dict()
for obj in objs:
shp = shape(obj)
if shp in mpr:
mpr[shp].append(obj)
else:
mpr[shp] = [obj]
if max([len(x) for x in mpr.values()]) == 1:
break
ress = [(kk, v) for kk, v in mpr.items() if len(v) > 1]
res, abc = rng.choice(ress)
a, b = rng.sample(abc, 2)
ulca = ulcorner(a)
ulcb = ulcorner(b)
ap = shift(normalize(a), ulcb)
bp = shift(normalize(b), ulca)
gi = paint(gi, ap | bp)
nshifts = unifint(rng, diff_lb, diff_ub, (0, 30))
for k in range(nshifts):
o = asobject(gi)
tmpc = canvas(bgc, (h + 12, w + 12))
tmpc = paint(tmpc, shift(o, (6, 6)))
objs = objects(tmpc, F, F, T)
objs = apply(rbind(shift, (-6, -6)), objs)
objs = sfilter(objs, compose(flip, rbind(bordering, gi)))
if len(objs) == 0:
break
obj = rng.choice(totuple(objs))
direc1 = (rng.randint(-1, 1), rng.randint(-1, 1))
direc2 = position({(h // 2, w // 2)}, {center(obj)})
direc = rng.choice((direc1, direc2))
gi = fill(gi, bgc, obj)
gi = paint(gi, shift(obj, direc))
mfs = (identity, dmirror, cmirror, vmirror, hmirror, rot90, rot180, rot270)
nmfs = rng.choice((1, 2))
for fn in rng.sample(mfs, nmfs):
gi = fn(gi)
go = fn(go)
return {"input": gi, "output": go}
def generate_6c434453(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(2, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
ncols = unifint(rng, diff_lb, diff_ub, (1, 8))
ccols = rng.sample(remcols, ncols)
nobjs = unifint(rng, diff_lb, diff_ub, (2, (h * w) // 16))
succ = 0
tr = 0
maxtr = 5 * nobjs
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
inds = asindices(gi)
while succ < nobjs and tr < maxtr:
tr += 1
if rng.choice((True, False)):
oh = rng.choice((3, 5))
ow = rng.choice((3, 5))
obji = box(frozenset({(0, 0), (oh - 1, ow - 1)}))
else:
oh = rng.randint(1, 5)
ow = rng.randint(1, 5)
bounds = asindices(canvas(-1, (oh, ow)))
ncells = rng.randint(1, oh * ow)
obji = {rng.choice(totuple(bounds))}
for k in range(ncells - 1):
obji.add(rng.choice(totuple((bounds - obji) & mapply(dneighbors, obji))))
obji = normalize(obji)
oh, ow = shape(obji)
flag = obji == box(obji) and set(shape(obji)).issubset({3, 5})
if flag:
objo = connect((0, ow // 2), (oh - 1, ow // 2)) | connect((oh // 2, 0), (oh // 2, ow - 1))
tocover = backdrop(obji)
else:
objo = obji
tocover = obji
cands = sfilter(inds, lambda ij: ij[0] <= h - oh and ij[1] <= w - ow)
loc = rng.choice(totuple(cands))
plcdi = shift(obji, loc)
if plcdi.issubset(inds):
plcdo = shift(objo, loc)
succ += 1
tocoveri = shift(tocover, loc)
inds = (inds - tocoveri) - mapply(dneighbors, tocoveri)
col = rng.choice(ccols)
gi = fill(gi, col, plcdi)
go = fill(go, 2 if flag else col, plcdo)
return {"input": gi, "output": go}
def generate_7837ac64(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
oh = unifint(rng, diff_lb, diff_ub, (2, 6))
ow = unifint(rng, diff_lb, diff_ub, (2, 6))
bgc, linc = rng.sample(cols, 2)
remcols = remove(bgc, remove(linc, cols))
numcols = unifint(rng, diff_lb, diff_ub, (1, 8))
ccols = rng.sample(remcols, numcols)
go = canvas(bgc, (oh, ow))
inds = asindices(go)
fullinds = asindices(go)
nocc = unifint(rng, diff_lb, diff_ub, (1, oh * ow))
for k in range(nocc):
mpr = {
cc: sfilter(
inds | mapply(neighbors, ofcolor(go, cc)),
lambda ij: (neighbors(ij) & fullinds).issubset(inds | ofcolor(go, cc)),
)
for cc in ccols
}
mpr = [(kk, vv) for kk, vv in mpr.items() if len(vv) > 0]
if len(mpr) == 0:
break
col, locs = rng.choice(mpr)
loc = rng.choice(totuple(locs))
go = fill(go, col, {loc})
inds = remove(loc, inds)
obj = fullinds - ofcolor(go, bgc)
go = subgrid(obj, go)
oh, ow = shape(go)
sqsizh = unifint(rng, diff_lb, diff_ub, (2, (30 - oh - 1) // oh))
sqsizw = unifint(rng, diff_lb, diff_ub, (2, (30 - ow - 1) // ow))
fullh = oh + 1 + oh * sqsizh
fullw = ow + 1 + ow * sqsizw
gi = canvas(linc, (fullh, fullw))
sq = backdrop(frozenset({(0, 0), (sqsizh - 1, sqsizw - 1)}))
obj = asobject(go)
for col, ij in obj:
plcd = shift(sq, add((1, 1), multiply(ij, (sqsizh + 1, sqsizw + 1))))
gi = fill(gi, bgc, plcd)
if col != bgc:
gi = fill(gi, col, corners(outbox(plcd)))
gih = unifint(rng, diff_lb, diff_ub, (fullh, 30))
giw = unifint(rng, diff_lb, diff_ub, (fullw, 30))
loci = rng.randint(0, gih - fullh)
locj = rng.randint(0, giw - fullw)
gigi = canvas(bgc, (gih, giw))
plcd = shift(asobject(gi), (loci, locj))
gigi = paint(gigi, plcd)
ulci, ulcj = ulcorner(plcd)
lrci, lrcj = lrcorner(plcd)
for a in range(ulci, gih + 1, sqsizh + 1):
gigi = fill(gigi, linc, hfrontier((a, 0)))
for a in range(ulci, -1, -sqsizh - 1):
gigi = fill(gigi, linc, hfrontier((a, 0)))
for b in range(ulcj, giw + 1, sqsizw + 1):
gigi = fill(gigi, linc, vfrontier((0, b)))
for b in range(ulcj, -1, -sqsizw - 1):
gigi = fill(gigi, linc, vfrontier((0, b)))
gi = paint(gigi, plcd)
gop = palette(go)
while True:
go2 = identity(go)
for c in set(ccols) & gop:
o1 = frozenset({(c, ORIGIN), (bgc, RIGHT), (c, (0, 2))})
o2 = dmirror(o1)
go2 = fill(go2, c, combine(shift(occurrences(go, o1), RIGHT), shift(occurrences(go, o2), DOWN)))
if go2 == go:
break
go = go2
return {"input": gi, "output": go}
def generate_5ad4f10b(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
nbh = {(0, 0), (1, 0), (0, 1), (1, 1)}
nbhs = apply(lbind(shift, nbh), {(0, 0), (-1, 0), (0, -1), (-1, -1)})
oh = unifint(rng, diff_lb, diff_ub, (2, 6))
ow = unifint(rng, diff_lb, diff_ub, (2, 6))
bounds = asindices(canvas(-1, (oh, ow)))
ncellsd = unifint(rng, diff_lb, diff_ub, (1, (oh * ow) // 2))
ncells = rng.choice((ncellsd, oh * ow - ncellsd))
ncells = min(max(1, ncells), oh * ow - 1)
obj = set(rng.sample(totuple(bounds), ncells))
while len(sfilter(obj, lambda ij: sum([len(obj & shift(nbh, ij)) < 4 for nbh in nbhs]) > 0)) == 0:
ncellsd = unifint(rng, diff_lb, diff_ub, (1, (oh * ow) // 2))
ncells = rng.choice((ncellsd, oh * ow - ncellsd))
ncells = min(max(1, ncells), oh * ow)
obj = set(rng.sample(totuple(bounds), ncells))
obj = normalize(obj)
oh, ow = shape(obj)
bgc, noisec, objc = rng.sample(cols, 3)
go = canvas(bgc, (oh, ow))
go = fill(go, noisec, obj)
fac = unifint(rng, diff_lb, diff_ub, (2, min(28 // oh, 28 // ow)))
gobj = asobject(upscale(replace(go, noisec, objc), fac))
oh, ow = shape(gobj)
h = unifint(rng, diff_lb, diff_ub, (oh + 2, 30))
w = unifint(rng, diff_lb, diff_ub, (ow + 2, 30))
loci = rng.randint(1, h - oh - 1)
locj = rng.randint(1, w - ow - 1)
gi = canvas(bgc, (h, w))
gi = paint(gi, shift(gobj, (loci, locj)))
cands = ofcolor(gi, bgc)
namt = unifint(rng, diff_lb, diff_ub, (2, max(1, len(cands) // 4)))
noise = rng.sample(totuple(cands), namt)
gi = fill(gi, noisec, noise)
return {"input": gi, "output": go}
def generate_7df24a62(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (12, 32))
w = unifint(rng, diff_lb, diff_ub, (12, 32))
oh = unifint(rng, diff_lb, diff_ub, (3, min(7, h // 3)))
ow = unifint(rng, diff_lb, diff_ub, (3, min(7, w // 3)))
bgc, noisec, sqc = rng.sample(cols, 3)
tmpg = canvas(sqc, (oh, ow))
inbounds = backdrop(inbox(asindices(tmpg)))
obj = {rng.choice(totuple(inbounds))}
while shape(obj) != (oh - 2, ow - 2):
obj.add(rng.choice(totuple(inbounds - obj)))
pat = fill(tmpg, noisec, obj)
targ = asobject(fill(canvas(bgc, (oh, ow)), noisec, obj))
sour = asobject(pat)
gi = canvas(bgc, (h, w))
loci = rng.randint(1, h - oh - 1)
locj = rng.randint(1, w - ow - 1)
plcddd = shift(sour, (loci, locj))
gi = paint(gi, plcddd)
inds = ofcolor(gi, bgc) & shift(asindices(canvas(-1, (h - 2, w - 2))), (1, 1))
inds = inds - (toindices(plcddd) | mapply(dneighbors, toindices(plcddd)))
namt = unifint(rng, diff_lb, diff_ub, (1, max(1, len(inds) // 4)))
noise = rng.sample(totuple(inds), namt)
gi = fill(gi, noisec, noise)
targs = []
sours = []
for fn1 in (identity, dmirror, cmirror, hmirror, vmirror):
for fn2 in (identity, dmirror, cmirror, hmirror, vmirror):
targs.append(normalize(fn1(fn2(targ))))
sours.append(normalize(fn1(fn2(sour))))
noccs = unifint(rng, diff_lb, diff_ub, (1, max(1, (h * w) // ((oh * ow * 4)))))
succ = 0
tr = 0
maxtr = 5 * noccs
while succ < noccs and tr < maxtr:
tr += 1
t = rng.choice(targs)
hh, ww = shape(t)
cands = sfilter(inds, lambda ij: 1 <= ij[0] <= h - hh - 1 and 1 <= ij[1] <= w - ww - 1)
if len(cands) == 0:
continue
loc = rng.choice(totuple(cands))
tp = shift(t, loc)
tpi = toindices(tp)
if tpi.issubset(inds):
succ += 1
inds = inds - tpi
gi = paint(gi, tp)
go = replace(gi, sqc, bgc)
go = paint(go, plcddd)
res = set()
for t, s in zip(targs, sours):
res |= mapply(lbind(shift, s), occurrences(go, t))
go = paint(go, res)
gi = trim(gi)
go = trim(go)
return {"input": gi, "output": go}
def generate_539a4f51(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(1, 10, 1)
d = unifint(rng, diff_lb, diff_ub, (2, 15))
h, w = d, d
gi = canvas(0, (h, w))
numc = unifint(rng, diff_lb, diff_ub, (2, 9))
ccols = rng.sample(cols, numc)
numocc = unifint(rng, diff_lb, diff_ub, (1, d))
arr = [rng.choice(ccols) for k in range(numocc)]
while len(set(arr)) == 1:
arr = [rng.choice(ccols) for k in range(d)]
for j, col in enumerate(arr):
gi = fill(gi, col, connect((j, 0), (j, j)) | connect((0, j), (j, j)))
go = canvas(0, (2 * d, 2 * d))
for j in range(2 * d):
col = arr[j % len(arr)]
go = fill(go, col, connect((j, 0), (j, j)) | connect((0, j), (j, j)))
rotf = rng.choice((identity, rot90, rot180, rot270))
gi = rotf(gi)
go = rotf(go)
return {"input": gi, "output": go}
def generate_ce602527(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (12, 30))
w = unifint(rng, diff_lb, diff_ub, (12, 30))
bgc, c1, c2, c3 = rng.sample(cols, 4)
while True:
objs = []
for k in range(2):
oh1 = unifint(rng, diff_lb, diff_ub, (3, h // 3 - 1))
ow1 = unifint(rng, diff_lb, diff_ub, (3, w // 3 - 1))
cc1 = canvas(bgc, (oh1, ow1))
bounds1 = asindices(cc1)
numcd1 = unifint(rng, diff_lb, diff_ub, (0, (oh1 * ow1) // 2 - 4))
numc1 = rng.choice((numcd1, oh1 * ow1 - numcd1))
numc1 = min(max(3, numc1), oh1 * ow1 - 3)
obj1 = {rng.choice(totuple(bounds1))}
while len(obj1) < numc1 or shape(obj1) != (oh1, ow1):
obj1.add(rng.choice(totuple((bounds1 - obj1) & mapply(dneighbors, obj1))))
objs.append(normalize(obj1))
a, b = objs
ag = fill(canvas(0, shape(a)), 1, a)
bg = fill(canvas(0, shape(b)), 1, b)
maxinh = min(height(a), height(b)) // 2 + 1
maxinw = min(width(a), width(b)) // 2 + 1
maxshp = (maxinh, maxinw)
ag = crop(ag, (0, 0), maxshp)
bg = crop(bg, (0, 0), maxshp)
if ag != bg:
break
a, b = objs
trgo = rng.choice(objs)
trgo2 = ofcolor(upscale(fill(canvas(0, shape(trgo)), 1, trgo), 2), 1)
staysinh = unifint(rng, diff_lb, diff_ub, (maxinh * 2, height(trgo) * 2))
nout = height(trgo2) - staysinh
loci = h - height(trgo2) + nout
locj = rng.randint(0, w - maxinw * 2)
gi = canvas(bgc, (h, w))
gi = fill(gi, c3, shift(trgo2, (loci, locj)))
(lcol, lobj), (rcol, robj) = rng.sample([(c1, a), (c2, b)], 2)
cands = ofcolor(gi, bgc) - box(asindices(gi))
lca = sfilter(cands, lambda ij: ij[1] < w // 3 * 2)
rca = sfilter(cands, lambda ij: ij[1] > w // 3)
lcands = sfilter(lca, lambda ij: shift(lobj, ij).issubset(lca))
rcands = sfilter(rca, lambda ij: shift(robj, ij).issubset(rca))
while True:
lloc = rng.choice(totuple(lcands))
rloc = rng.choice(totuple(lcands))
lplcd = shift(lobj, lloc)
rplcd = shift(robj, rloc)
if lplcd.issubset(cands) and rplcd.issubset(cands) and len(lplcd & rplcd) == 0:
break
gi = fill(gi, lcol, shift(lobj, lloc))
gi = fill(gi, rcol, shift(robj, rloc))
go = fill(canvas(bgc, shape(trgo)), c1 if trgo == a else c2, trgo)
mfs = (identity, rot90, rot180, rot270, cmirror, dmirror, hmirror, vmirror)
mf = rng.choice(mfs)
gi, go = mf(gi), mf(go)
return {"input": gi, "output": go}
def generate_c8cbb738(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
gh = unifint(rng, diff_lb, diff_ub, (3, 10))
gw = unifint(rng, diff_lb, diff_ub, (3, 10))
h = unifint(rng, diff_lb, diff_ub, (gh * 2, 30))
w = unifint(rng, diff_lb, diff_ub, (gw * 2, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
ncols = unifint(rng, diff_lb, diff_ub, (1, 9))
ccols = rng.sample(remcols, ncols)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (gh, gw))
goinds = asindices(go)
ring = box(goinds)
crns = corners(ring)
remring = ring - crns
nrr = len(remring)
sc = ccols[0]
go = fill(go, sc, crns)
loci = rng.randint(0, h - gh)
locj = rng.randint(0, w - gw)
gi = fill(gi, sc, shift(crns, (loci, locj)))
ccols = ccols[1:]
issucc = True
bL = connect((0, 0), (gh - 1, 0))
bR = connect((0, gw - 1), (gh - 1, gw - 1))
bT = connect((0, 0), (0, gw - 1))
bB = connect((gh - 1, 0), (gh - 1, gw - 1))
validpairs = [(bL, bT), (bL, bB), (bR, bT), (bR, bB)]
for c in ccols:
if len(remring) < 3:
break
obj = set(
rng.sample(
totuple(remring), unifint(rng, diff_lb, diff_ub, (3, max(3, min(len(remring), nrr // len(ccols)))))
)
)
flag = False
for b1, b2 in validpairs:
if len(obj & b1) > 0 and len(obj & b2) > 0:
flag = True
break
if flag:
oh, ow = shape(obj)
locs = ofcolor(gi, bgc)
cands = sfilter(locs, lambda ij: ij[0] <= h - oh and ij[1] <= w - ow)
if len(cands) > 0:
objn = normalize(obj)
cands2 = sfilter(cands, lambda ij: shift(objn, ij).issubset(locs))
if len(cands2) > 0:
loc = rng.choice(totuple(cands2))
gi = fill(gi, c, shift(objn, loc))
go = fill(go, c, obj)
remring -= obj
return {"input": gi, "output": go}
def generate_b527c5c6(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (8, 30))
w = unifint(rng, diff_lb, diff_ub, (8, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
ncols = unifint(rng, diff_lb, diff_ub, (2, 9))
ccols = rng.sample(remcols, ncols)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
inds = asindices(gi)
fullinds = asindices(gi)
noccs = unifint(rng, diff_lb, diff_ub, (1, 10))
tr = 0
succ = 0
maxtr = 10 * noccs
while succ < noccs and tr < maxtr:
tr += 1
d1 = rng.randint(3, rng.randint(3, (min(h, w)) // 2 - 1))
d2 = rng.randint(d1 * 2 + 1, rng.randint(d1 * 2 + 1, min(h, w) - 1))
oh, ow = rng.sample([d1, d2], 2)
cands = sfilter(inds, lambda ij: 1 <= ij[0] <= h - oh - 1 and 1 <= ij[1] <= w - ow - 1)
if len(cands) == 0:
continue
loc = rng.choice(totuple(cands))
loci, locj = loc
bx = box(frozenset({(loci, locj), (loci + oh - 1, locj + ow - 1)}))
bd = backdrop(bx)
if ow < oh:
lrflag = True
dcands1 = connect((loci + ow - 1, locj), (loci + oh - 1 - ow + 1, locj))
dcands2 = shift(dcands1, (0, ow - 1))
else:
lrflag = False
dcands1 = connect((loci, locj + oh - 1), (loci, locj + ow - 1 - oh + 1))
dcands2 = shift(dcands1, (oh - 1, 0))
dcands = dcands1 | dcands2
loc = rng.choice(totuple(dcands))
sgnflag = -1 if loc in dcands1 else 1
direc = (sgnflag * (0 if lrflag else 1), sgnflag * (0 if not lrflag else 1))
ln = shoot(loc, direc)
shell = set()
for k in range(min(oh, ow) - 1):
shell |= power(outbox, k + 1)(ln)
sqc, dotc = rng.sample(ccols, 2)
giobj = recolor(sqc, remove(loc, bd)) | {(dotc, loc)}
goobj = recolor(sqc, (bd | shell) - ln) | recolor(dotc, ln)
goobj = sfilter(goobj, lambda cij: cij[1] in fullinds)
goobji = toindices(goobj)
if goobji.issubset(inds):
succ += 1
inds = (inds - goobji) - mapply(dneighbors, bd)
gi = paint(gi, giobj)
go = paint(go, goobj)
return {"input": gi, "output": go}
def generate_228f6490(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
nsq = unifint(rng, diff_lb, diff_ub, (1, (h * w) // 50))
succ = 0
tr = 0
maxtr = 5 * nsq
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
sqc = rng.choice(remcols)
remcols = remove(sqc, remcols)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
inds = asindices(gi)
forbidden = []
while tr < maxtr and succ < nsq:
tr += 1
oh = rng.randint(3, 6)
ow = rng.randint(3, 6)
bd = asindices(canvas(-1, (oh, ow)))
bounds = shift(asindices(canvas(-1, (oh - 2, ow - 2))), (1, 1))
obj = {rng.choice(totuple(bounds))}
ncells = rng.randint(1, (oh - 2) * (ow - 2))
for k in range(ncells - 1):
obj.add(rng.choice(totuple((bounds - obj) & mapply(dneighbors, obj))))
sqcands = sfilter(inds, lambda ij: ij[0] <= h - oh and ij[1] <= w - ow)
if len(sqcands) == 0:
continue
loc = rng.choice(totuple(sqcands))
bdplcd = shift(bd, loc)
if bdplcd.issubset(inds):
tmpinds = inds - bdplcd
inobjn = normalize(obj)
oh, ow = shape(obj)
inobjcands = sfilter(inds, lambda ij: ij[0] <= h - oh and ij[1] <= w - ow)
if len(inobjcands) == 0:
continue
loc2 = rng.choice(totuple(inobjcands))
inobjplcd = shift(inobjn, loc2)
bdnorm = bd - obj
if inobjplcd.issubset(tmpinds) and bdnorm not in forbidden and inobjn not in forbidden:
forbidden.append(bdnorm)
forbidden.append(inobjn)
succ += 1
inds = (inds - (bdplcd | inobjplcd)) - mapply(dneighbors, inobjplcd)
col = rng.choice(remcols)
oplcd = shift(obj, loc)
gi = fill(gi, sqc, bdplcd - oplcd)
go = fill(go, sqc, bdplcd)
go = fill(go, col, oplcd)
gi = fill(gi, col, inobjplcd)
nremobjs = unifint(rng, diff_lb, diff_ub, (0, len(inds) // 25))
succ = 0
tr = 0
maxtr = 10 * nremobjs
while tr < maxtr and succ < nremobjs:
tr += 1
oh = rng.randint(1, 4)
ow = rng.randint(1, 4)
bounds = asindices(canvas(-1, (oh, ow)))
obj = {rng.choice(totuple(bounds))}
ncells = rng.randint(1, oh * ow)
for k in range(ncells - 1):
obj.add(rng.choice(totuple((bounds - obj) & mapply(dneighbors, obj))))
obj = normalize(obj)
if obj in forbidden:
continue
cands = sfilter(inds, lambda ij: ij[0] <= h - oh and ij[1] <= w - ow)
if len(cands) == 0:
continue
loc = rng.choice(totuple(cands))
plcd = shift(obj, loc)
if plcd.issubset(inds):
succ += 1
inds = (inds - plcd) - mapply(dneighbors, plcd)
col = rng.choice(remcols)
gi = fill(gi, col, plcd)
go = fill(go, col, plcd)
return {"input": gi, "output": go}
def generate_93b581b8(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
numcols = unifint(rng, diff_lb, diff_ub, (1, 9))
ccols = rng.sample(remcols, numcols)
numocc = unifint(rng, diff_lb, diff_ub, (1, (h * w) // 50))
succ = 0
tr = 0
maxtr = 10 * numocc
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
inds = asindices(gi)
fullinds = asindices(gi)
while tr < maxtr and succ < numocc:
tr += 1
cands = sfilter(inds, lambda ij: ij[0] <= h - 2 and ij[1] <= w - 2)
if len(cands) == 0:
break
loc = rng.choice(totuple(cands))
c1, c2, c3, c4 = [rng.choice(ccols) for k in range(4)]
q = {(0, 0), (0, 1), (1, 0), (1, 1)}
inobj = {(c1, (0, 0)), (c2, (0, 1)), (c3, (1, 0)), (c4, (1, 1))}
outobj = (
inobj
| recolor(c4, shift(q, (-2, -2)))
| recolor(c3, shift(q, (-2, 2)))
| recolor(c2, shift(q, (2, -2)))
| recolor(c1, shift(q, (2, 2)))
)
inobjplcd = shift(inobj, loc)
outobjplcd = shift(outobj, loc)
outobjplcd = sfilter(outobjplcd, lambda cij: cij[1] in fullinds)
outobjplcdi = toindices(outobjplcd)
if outobjplcdi.issubset(inds):
succ += 1
inds = (inds - outobjplcdi) - mapply(dneighbors, toindices(inobjplcd))
gi = paint(gi, inobjplcd)
go = paint(go, outobjplcd)
return {"input": gi, "output": go}
def generate_447fd412(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (12, 30))
w = unifint(rng, diff_lb, diff_ub, (12, 30))
bgc, indic, mainc = rng.sample(cols, 3)
oh = unifint(rng, diff_lb, diff_ub, (1, 4))
ow = unifint(rng, diff_lb, diff_ub, (1, 4))
if oh * ow < 3:
if rng.choice((True, False)):
oh = unifint(rng, diff_lb, diff_ub, (3, 4))
else:
ow = unifint(rng, diff_lb, diff_ub, (3, 4))
bounds = asindices(canvas(-1, (oh, ow)))
ncells = unifint(rng, diff_lb, diff_ub, (3, oh * ow))
obj = {rng.choice(totuple(bounds))}
for k in range(ncells - 1):
obj.add(rng.choice(totuple((bounds - obj) & mapply(neighbors, obj))))
obj = normalize(obj)
oh, ow = shape(obj)
objt = totuple(obj)
kk = len(obj)
nindic = rng.randint(1, kk // 2 if kk % 2 == 1 else kk // 2 - 1)
indicobj = set(rng.sample(objt, nindic))
mainobj = obj - indicobj
obj = recolor(indic, indicobj) | recolor(mainc, mainobj)
loci = rng.randint(0, h - oh)
locj = rng.randint(0, w - ow)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (h, w))
plcd = shift(obj, (loci, locj))
gi = paint(gi, plcd)
go = paint(go, plcd)
inds = ofcolor(gi, bgc) - mapply(neighbors, toindices(plcd))
fullinds = asindices(gi)
noccs = unifint(rng, diff_lb, diff_ub, (1, max(1, (h * w) // (4 * len(plcd)))))
tr = 0
maxtr = 5 * noccs
succ = 0
while succ < noccs and tr < maxtr:
tr += 1
fac = rng.randint(1, min(5, min(h, w) // max(oh, ow) - 1))
outobj = upscale(obj, fac)
inobj = sfilter(outobj, lambda cij: cij[0] == indic)
hh, ww = shape(outobj)
cands = sfilter(inds, lambda ij: ij[0] <= h - hh and ij[1] <= w - ww)
if len(cands) == 0:
continue
loc = rng.choice(totuple(cands))
inobjp = shift(inobj, loc)
outobjp = shift(outobj, loc)
outobjp = sfilter(outobjp, lambda cij: cij[1] in fullinds)
outobjpi = toindices(outobjp)
if outobjpi.issubset(inds):
succ += 1
inds = (inds - outobjpi) - mapply(neighbors, toindices(inobjp))
gi = paint(gi, inobjp)
go = paint(go, outobjp)
return {"input": gi, "output": go}
def generate_50846271(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(8, interval(0, 10, 1))
cf1 = lambda d: {(d // 2, 0), (d // 2, d - 1)} | set(
rng.sample(totuple(connect((d // 2, 0), (d // 2, d - 1))), rng.randint(1, d))
)
cf2 = lambda d: {(0, d // 2), (d - 1, d // 2)} | set(
rng.sample(totuple(connect((0, d // 2), (d - 1, d // 2))), rng.randint(1, d))
)
cf3 = lambda d: set(
rng.sample(totuple(remove((d // 2, d // 2), connect((d // 2, 0), (d // 2, d - 1)))), rng.randint(1, d - 1))
) | set(rng.sample(totuple(remove((d // 2, d // 2), connect((0, d // 2), (d - 1, d // 2)))), rng.randint(1, d - 1)))
cf = lambda d: rng.choice((cf1, cf2, cf3))(d)
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
dim = unifint(rng, diff_lb, diff_ub, (1, 3))
dim = 2 * dim + 1
cross = connect((dim // 2, 0), (dim // 2, dim - 1)) | connect((0, dim // 2), (dim - 1, dim // 2))
bgc, crossc, noisec = rng.sample(cols, 3)
gi = canvas(bgc, (h, w))
namt = unifint(rng, diff_lb, diff_ub, (int(0.35 * h * w), int(0.65 * h * w)))
inds = asindices(gi)
noise = rng.sample(totuple(inds), namt)
gi = fill(gi, noisec, noise)
initcross = rng.choice((cf1, cf2))(dim)
loci = rng.randint(0, h - dim)
locj = rng.randint(0, w - dim)
delt = shift(cross - initcross, (loci, locj))
gi = fill(gi, crossc, shift(initcross, (loci, locj)))
gi = fill(gi, noisec, delt)
go = fill(gi, 8, delt)
plcd = shift(cross, (loci, locj))
bd = backdrop(plcd)
nbhs = mapply(neighbors, plcd)
inds = (inds - plcd) - nbhs
nbhs2 = mapply(neighbors, nbhs)
inds = inds - nbhs2
inds = inds - mapply(neighbors, nbhs2)
noccs = unifint(rng, diff_lb, diff_ub, (1, (h * w) / (10 * dim)))
succ = 0
tr = 0
maxtr = 5 * noccs
while succ < noccs and tr < maxtr:
tr += 1
cands = sfilter(inds, lambda ij: ij[0] <= h - dim and ij[1] <= w - dim)
if len(cands) == 0:
break
loc = rng.choice(totuple(cands))
marked = shift(cf(dim), loc)
full = shift(cross, loc)
unmarked = full - marked
inobj = recolor(noisec, unmarked) | recolor(crossc, marked)
outobj = recolor(8, unmarked) | recolor(crossc, marked)
outobji = toindices(outobj)
if outobji.issubset(inds):
dnbhs = mapply(neighbors, outobji)
dnbhs2 = mapply(neighbors, dnbhs)
inds = (inds - outobji) - (dnbhs | dnbhs2 | mapply(neighbors, dnbhs2))
succ += 1
gi = paint(gi, inobj)
go = paint(go, outobj)
return {"input": gi, "output": go}
def generate_ae3edfdc(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = difference(interval(0, 10, 1), (1, 2, 3, 7))
h = unifint(rng, diff_lb, diff_ub, (8, 30))
w = unifint(rng, diff_lb, diff_ub, (8, 30))
bgc = rng.choice(cols)
go = canvas(bgc, (h, w))
inds = asindices(go)
rdi = rng.randint(1, h - 2)
rdj = rng.randint(1, w - 2)
rd = (rdi, rdj)
reminds = inds - ({rd} | neighbors(rd))
reminds = sfilter(reminds, lambda ij: 1 <= ij[0] <= h - 2 and 1 <= ij[1] <= w - 2)
bd = rng.choice(totuple(reminds))
bdi, bdj = bd
go = fill(go, 2, {rd})
go = fill(go, 1, {bd})
ngd = unifint(rng, diff_lb, diff_ub, (1, 8))
gd = rng.sample(totuple(neighbors(rd)), ngd)
nod = unifint(rng, diff_lb, diff_ub, (1, 8))
od = rng.sample(totuple(neighbors(bd)), nod)
go = fill(go, 3, gd)
go = fill(go, 7, od)
gdmapper = {d: (3, position({rd}, {d})) for d in gd}
odmapper = {d: (7, position({bd}, {d})) for d in od}
mpr = {**gdmapper, **odmapper}
ub = (len(gd) + len(od)) * ((h + w) // 5)
ndist = unifint(rng, diff_lb, diff_ub, (1, ub))
gi = tuple(e for e in go)
fullinds = asindices(gi)
for k in range(ndist):
options = []
for loc, (col, direc) in mpr.items():
ii, jj = add(loc, direc)
if (ii, jj) in fullinds and gi[ii][jj] == bgc:
options.append((loc, col, direc))
if len(options) == 0:
break
loc, col, direc = rng.choice(options)
del mpr[loc]
newloc = add(loc, direc)
mpr[newloc] = (col, direc)
gi = fill(gi, bgc, {loc})
gi = fill(gi, col, {newloc})
return {"input": gi, "output": go}
def generate_469497ad(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(2, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (3, 6))
w = unifint(rng, diff_lb, diff_ub, (3, 6))
bgc, sqc = rng.sample(cols, 2)
gi = canvas(bgc, (h, w))
sqh = rng.randint(1, h - 2)
sqw = rng.randint(1, w - 2)
sqloci = rng.randint(0, h - sqh - 2)
sqlocj = rng.randint(0, w - sqw - 2)
sq = backdrop(frozenset({(sqloci, sqlocj), (sqloci + sqh - 1, sqlocj + sqw - 1)}))
gi = fill(gi, sqc, sq)
numcub = min(min(min(h, w) + 1, 30 // (max(h, w))), 7)
numc = unifint(rng, diff_lb, diff_ub, (2, numcub))
numaccc = numc - 1
remcols = remove(bgc, remove(sqc, cols))
ccols = rng.sample(remcols, numaccc)
gi = rot180(gi)
locs = rng.sample(interval(1, min(h, w), 1), numaccc - 1)
locs = [0] + sorted(locs)
for c, l in zip(ccols, locs):
gi = fill(gi, c, shoot((0, l), (0, 1)))
gi = fill(gi, c, shoot((l, 0), (1, 0)))
gi = rot180(gi)
go = upscale(gi, numc)
rect = ofcolor(go, sqc)
l1 = shoot(lrcorner(rect), (1, 1))
l2 = shoot(ulcorner(rect), (-1, -1))
l3 = shoot(urcorner(rect), (-1, 1))
l4 = shoot(llcorner(rect), (1, -1))
ll = l1 | l2 | l3 | l4
go = fill(go, 2, ll & ofcolor(go, bgc))
rotf = rng.choice((identity, rot90, rot180, rot270))
gi = rotf(gi)
go = rotf(go)
return {"input": gi, "output": go}
def generate_97a05b5b(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (15, 30))
w = unifint(rng, diff_lb, diff_ub, (15, 30))
sgh = rng.randint(h // 3, h // 3 * 2)
sgw = rng.randint(w // 3, w // 3 * 2)
bgc, sqc = rng.sample(cols, 2)
remcols = remove(bgc, remove(sqc, cols))
gi = canvas(bgc, (h, w))
oh = rng.randint(2, sgh // 2)
ow = rng.randint(2, sgw // 2)
nobjs = unifint(rng, diff_lb, diff_ub, (1, 8))
objs = set()
cands = asindices(canvas(-1, (oh, ow)))
forbidden = set()
tr = 0
maxtr = 4 * nobjs
while len(objs) != nobjs and tr < maxtr:
tr += 1
obj = {rng.choice(totuple(cands))}
ncells = rng.randint(1, oh * ow - 1)
for k in range(ncells - 1):
obj.add(rng.choice(totuple((cands - obj) & mapply(neighbors, obj))))
obj |= rng.choice((dmirror, cmirror, vmirror, hmirror))(obj)
if len(obj) == height(obj) * width(obj):
continue
obj = frozenset(obj)
objn = normalize(obj)
if objn not in forbidden:
objs.add(objn)
for augmf1 in (identity, dmirror, cmirror, hmirror, vmirror):
for augmf2 in (identity, dmirror, cmirror, hmirror, vmirror):
forbidden.add(augmf1(augmf2(objn)))
tr = 0
maxtr = 5 * nobjs
succ = 0
loci = rng.randint(0, h - sgh)
locj = rng.randint(0, w - sgw)
bd = backdrop(frozenset({(loci, locj), (loci + sgh - 1, locj + sgw - 1)}))
gi = fill(gi, sqc, bd)
go = canvas(sqc, (sgh, sgw))
goinds = asindices(go)
giinds = asindices(gi) - shift(goinds, (loci, locj))
giinds = giinds - mapply(neighbors, shift(goinds, (loci, locj)))
while succ < nobjs and tr < maxtr and len(objs) > 0:
tr += 1
obj = rng.choice(totuple(objs))
col = rng.choice(remcols)
subgi = fill(canvas(col, shape(obj)), sqc, obj)
if len(palette(subgi)) == 1:
continue
f1 = rng.choice((identity, dmirror, vmirror, cmirror, hmirror))
f2 = rng.choice((identity, dmirror, vmirror, cmirror, hmirror))
f = compose(f1, f2)
subgo = f(subgi)
giobj = asobject(subgi)
goobj = asobject(subgo)
ohi, owi = shape(giobj)
oho, owo = shape(goobj)
gocands = sfilter(goinds, lambda ij: ij[0] <= sgh - oho and ij[1] <= sgw - owo)
if len(gocands) == 0:
continue
goloc = rng.choice(totuple(gocands))
goplcd = shift(goobj, goloc)
goplcdi = toindices(goplcd)
if goplcdi.issubset(goinds):
gicands = sfilter(giinds, lambda ij: ij[0] <= h - ohi and ij[1] <= owi)
if len(gicands) == 0:
continue
giloc = rng.choice(totuple(gicands))
giplcd = shift(giobj, giloc)
giplcdi = toindices(giplcd)
if giplcdi.issubset(giinds):
succ += 1
remcols = remove(col, remcols)
objs = remove(obj, objs)
goinds = goinds - goplcdi
giinds = (giinds - giplcdi) - mapply(neighbors, giplcdi)
gi = paint(gi, giplcd)
gi = fill(gi, bgc, sfilter(shift(goplcd, (loci, locj)), lambda cij: cij[0] == sqc))
go = paint(go, goplcd)
return {"input": gi, "output": go}
def generate_a5313dff(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(1, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
bgc, fgc = rng.sample(cols, 2)
gi = canvas(bgc, (h, w))
noccs = unifint(rng, diff_lb, diff_ub, (1, (h * w) // 20))
succ = 0
tr = 0
maxtr = 10 * noccs
inds = shift(asindices(canvas(-1, (h + 2, w + 2))), (-1, -1))
while (tr < maxtr and succ < noccs) or len(
sfilter(colorfilter(objects(gi, T, F, F), bgc), compose(flip, rbind(bordering, gi)))
) == 0:
tr += 1
oh = rng.randint(3, 8)
ow = rng.randint(3, 8)
bx = box(frozenset({(0, 0), (oh - 1, ow - 1)}))
ins = backdrop(inbox(bx))
loc = rng.choice(totuple(inds))
plcdins = shift(ins, loc)
if len(plcdins & ofcolor(gi, fgc)) == 0:
succ += 1
gi = fill(gi, fgc, shift(bx, loc))
if rng.choice((True, True, False)):
ss = rng.sample(totuple(plcdins), rng.randint(1, max(1, len(ins) // 2)))
gi = fill(gi, fgc, ss)
res = mfilter(colorfilter(objects(gi, T, F, F), bgc), compose(flip, rbind(bordering, gi)))
go = fill(gi, 1, res)
return {"input": gi, "output": go}
def generate_780d0b14(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
nh = unifint(rng, diff_lb, diff_ub, (2, 6))
nw = unifint(rng, diff_lb, diff_ub, (2, 6))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
ncols = unifint(rng, diff_lb, diff_ub, (3, 9))
ccols = rng.sample(remcols, ncols)
go = canvas(-1, (nh, nw))
obj = {(rng.choice(ccols), ij) for ij in asindices(go)}
go = paint(go, obj)
while len(dedupe(go)) < nh or len(dedupe(dmirror(go))) < nw:
obj = {(rng.choice(ccols), ij) for ij in asindices(go)}
go = paint(go, obj)
h = unifint(rng, diff_lb, diff_ub, (2 * nh + nh - 1, 30))
w = unifint(rng, diff_lb, diff_ub, (2 * nw + nw - 1, 30))
hdist = [2 for k in range(nh)]
for k in range(h - 2 * nh - nh + 1):
idx = rng.randint(0, nh - 1)
hdist[idx] += 1
wdist = [2 for k in range(nw)]
for k in range(w - 2 * nw - nw + 1):
idx = rng.randint(0, nw - 1)
wdist[idx] += 1
gi = merge(tuple(repeat(r, c) + (repeat(bgc, nw),) for r, c in zip(go, hdist)))[:-1]
gi = dmirror(merge(tuple(repeat(r, c) + (repeat(bgc, h),) for r, c in zip(dmirror(gi), wdist)))[:-1])
objs = objects(gi, T, F, F)
bgobjs = colorfilter(objs, bgc)
objs = objs - bgobjs
for obj in objs:
gi = fill(gi, bgc, rng.sample(totuple(toindices(obj)), unifint(rng, diff_lb, diff_ub, (1, len(obj) // 2))))
return {"input": gi, "output": go}
def generate_57aa92db(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
oh = rng.randint(2, 5)
ow = rng.randint(2, 5)
bounds = asindices(canvas(-1, (oh, ow)))
obj = {rng.choice(totuple(bounds))}
ncellsd = unifint(rng, diff_lb, diff_ub, (0, (oh * ow) // 2))
ncells = rng.choice((ncellsd, oh * ow - ncellsd))
ncells = min(max(3, ncells), oh * ow)
for k in range(ncells - 1):
obj.add(rng.choice(totuple((bounds - obj) & mapply(neighbors, obj))))
obj = normalize(obj)
oh, ow = shape(obj)
fixp = rng.choice(totuple(obj))
bgc, fixc, mainc = rng.sample(cols, 3)
remcols = difference(cols, (bgc, fixc, mainc))
gi = canvas(bgc, (h, w))
obj = {(fixc, fixp)} | recolor(mainc, remove(fixp, obj))
loci = rng.randint(0, h - oh)
locj = rng.randint(0, w - ow)
plcd = shift(obj, (loci, locj))
gi = paint(gi, plcd)
go = tuple(e for e in gi)
inds = ofcolor(gi, bgc) - mapply(neighbors, toindices(plcd))
nocc = unifint(rng, diff_lb, diff_ub, (1, (h * w) // (4 * len(obj))))
tr = 0
succ = 0
maxtr = 5 * nocc
while succ < nocc and tr < maxtr:
tr += 1
fac = rng.randint(1, 4)
objups = upscale(obj, fac)
hh, ww = shape(objups)
cands = sfilter(inds, lambda ij: ij[0] <= h - hh and ij[1] <= w - ww)
if len(cands) == 0:
continue
loc = rng.choice(totuple(cands))
objupsplcd = shift(objups, loc)
objupsplcdi = toindices(objupsplcd)
if objupsplcdi.issubset(inds):
succ += 1
newc = rng.choice(remcols)
fixp2 = sfilter(objupsplcd, lambda cij: cij[0] == fixc)
inds = inds - mapply(neighbors, objupsplcdi)
gi = paint(gi, fixp2)
go = paint(go, fixp2)
remobjfull = toindices(objupsplcd - fixp2)
ntorem = unifint(rng, diff_lb, diff_ub, (0, max(0, len(remobjfull) - 1)))
ntokeep = len(remobjfull) - ntorem
tokeep = {rng.choice(totuple(remobjfull & outbox(fixp2)))}
fixp2i = toindices(fixp2)
for k in range(ntokeep - 1):
fullopts = remobjfull & mapply(neighbors, tokeep | fixp2i)
remopts = fullopts - tokeep
tokeep.add(rng.choice(totuple(remopts)))
gi = fill(gi, newc, tokeep)
go = fill(go, newc, remobjfull)
return {"input": gi, "output": go}
def generate_53b68214(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
while True:
h = unifint(rng, diff_lb, diff_ub, (2, 6))
w = unifint(rng, diff_lb, diff_ub, (8, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
ncols = unifint(rng, diff_lb, diff_ub, (1, 9))
ccols = rng.sample(remcols, ncols)
oh = unifint(rng, diff_lb, diff_ub, (1, h // 2))
ow = unifint(rng, diff_lb, diff_ub, (1, w // 2 - 1))
bounds = asindices(canvas(-1, (oh, ow)))
ncells = unifint(rng, diff_lb, diff_ub, (1, oh * ow))
obj = rng.sample(totuple(bounds), ncells)
obj = {(rng.choice(ccols), ij) for ij in obj}
obj = normalize(obj)
oh, ow = shape(obj)
locj = rng.randint(0, w // 2)
plcd = shift(obj, (0, locj))
go = canvas(bgc, (10, w))
hoffs = rng.randint(0, ow // 2 + 1)
for k in range(10 // oh + 1):
go = paint(go, shift(plcd, (k * oh, k * hoffs)))
if len(palette(go[h:])) > 1:
break
gi = go[:h]
if rng.choice((True, False)):
gi = vmirror(gi)
go = vmirror(go)
return {"input": gi, "output": go}
def generate_39e1d7f9(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (5, 10))
w = unifint(rng, diff_lb, diff_ub, (5, 10))
bgc, linc, dotc = rng.sample(cols, 3)
remcols = difference(cols, (bgc, linc, dotc))
gi = canvas(bgc, (h, w))
loci = rng.randint(1, h - 2)
locj = rng.randint(1, w - 2)
if h == 5:
loci = rng.choice((1, h - 2))
if w == 5:
locj = rng.choice((1, w - 2))
npix = unifint(rng, diff_lb, diff_ub, (1, 8))
ncols = unifint(rng, diff_lb, diff_ub, (1, 7))
ccols = rng.sample(remcols, ncols)
candsss = neighbors((loci, locj))
pixs = {(loci, locj)}
for k in range(npix):
pixs.add(rng.choice(totuple((mapply(dneighbors, pixs) & candsss) - pixs)))
pixs = totuple(remove((loci, locj), pixs))
obj = {(rng.choice(ccols), ij) for ij in pixs}
gi = fill(gi, dotc, {(loci, locj)})
gi = paint(gi, obj)
go = tuple(e for e in gi)
noccs = unifint(rng, diff_lb, diff_ub, (1, (h * w) // (2 * len(pixs) + 1)))
succ = 0
tr = 0
maxtr = 6 * noccs
inds = ofcolor(gi, bgc) - mapply(dneighbors, neighbors((loci, locj)))
objn = shift(obj, (-loci, -locj))
triedandfailed = set()
while (tr < maxtr and succ < noccs) or succ == 0:
lopcands = totuple(inds - triedandfailed)
if len(lopcands) == 0:
break
tr += 1
loci, locj = rng.choice(lopcands)
plcd = shift(objn, (loci, locj))
plcdi = toindices(plcd)
if plcdi.issubset(inds):
inds = inds - (plcdi | {(loci, locj)})
succ += 1
gi = fill(gi, dotc, {(loci, locj)})
go = fill(go, dotc, {(loci, locj)})
go = paint(go, plcd)
else:
triedandfailed.add((loci, locj))
hfac = unifint(rng, diff_lb, diff_ub, (1, (30 - h + 1) // h))
wfac = unifint(rng, diff_lb, diff_ub, (1, (30 - w + 1) // w))
fullh = hfac * h + h - 1
fullw = wfac * w + w - 1
gi2 = canvas(linc, (fullh, fullw))
go2 = canvas(linc, (fullh, fullw))
bd = asindices(canvas(-1, (hfac, wfac)))
for a in range(h):
for b in range(w):
c = gi[a][b]
gi2 = fill(gi2, c, shift(bd, (a * (hfac + 1), b * (wfac + 1))))
for a in range(h):
for b in range(w):
c = go[a][b]
go2 = fill(go2, c, shift(bd, (a * (hfac + 1), b * (wfac + 1))))
gi, go = gi2, go2
return {"input": gi, "output": go}
def generate_017c7c7b(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = difference(interval(0, 10, 1), (0, 2))
h = unifint(rng, diff_lb, diff_ub, (3, 10))
w = unifint(rng, diff_lb, diff_ub, (2, 30))
h += h
fgc = rng.choice(cols)
go = canvas(0, (h + h // 2, w))
oh = unifint(rng, diff_lb, diff_ub, (1, h // 3 * 2))
ow = unifint(rng, diff_lb, diff_ub, (1, w))
locj = rng.randint(0, w - ow)
bounds = asindices(canvas(-1, (oh, ow)))
ncellsd = unifint(rng, diff_lb, diff_ub, (0, (h * w) // 2))
ncells = rng.choice((ncellsd, oh * ow - ncellsd))
ncells = min(max(1, ncells), oh * ow)
obj = rng.sample(totuple(bounds), ncells)
for k in range((2 * h) // oh):
go = fill(go, 2, shift(obj, (k * oh, 0)))
gi = replace(go[:h], 2, fgc)
return {"input": gi, "output": go}
def generate_8a004b2b(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
oh = unifint(rng, diff_lb, diff_ub, (2, h // 5))
ow = unifint(rng, diff_lb, diff_ub, (2, w // 5))
bounds = asindices(canvas(-1, (oh, ow)))
bgc, cornc, ac1, ac2, objc = rng.sample(cols, 5)
gi = canvas(bgc, (h, w))
obj = {rng.choice(totuple(bounds))}
ncellsd = unifint(rng, diff_lb, diff_ub, (0, (oh * ow) // 2))
ncells = rng.choice((ncellsd, oh * ow - ncellsd))
ncells = min(max(3, ncells), oh * ow)
for k in range(ncells - 1):
obj.add(rng.choice(totuple((bounds - obj) & mapply(neighbors, obj))))
obj = normalize(obj)
oh, ow = shape(obj)
fp1 = rng.choice(totuple(obj))
fp2 = rng.choice(remove(fp1, totuple(obj)))
remobj = obj - {fp1, fp2}
obj = recolor(objc, remobj) | {(ac1, fp1), (ac2, fp2)}
maxhscf = (h - oh - 4) // oh
maxwscf = (w - ow - 4) // ow
hscf = unifint(rng, diff_lb, diff_ub, (1, maxhscf))
wscf = unifint(rng, diff_lb, diff_ub, (1, maxwscf))
loci = rng.randint(0, 2)
locj = rng.randint(0, 2)
oplcd = shift(obj, (loci, locj))
gi = paint(gi, oplcd)
inh = hscf * oh
inw = wscf * ow
sqh = unifint(rng, diff_lb, diff_ub, (inh + 2, h - oh - 2))
sqw = unifint(rng, diff_lb, diff_ub, (inw + 2, w))
sqloci = rng.randint(loci + oh, h - sqh)
sqlocj = rng.randint(0, w - sqw)
crns = corners(frozenset({(sqloci, sqlocj), (sqloci + sqh - 1, sqlocj + sqw - 1)}))
gi = fill(gi, cornc, crns)
gomini = subgrid(oplcd, gi)
goo = vupscale(hupscale(gomini, wscf), hscf)
goo = asobject(goo)
gloci = rng.randint(sqloci + 1, sqloci + sqh - 1 - height(goo))
glocj = rng.randint(sqlocj + 1, sqlocj + sqw - 1 - width(goo))
gooplcd = shift(goo, (gloci, glocj))
go = paint(gi, gooplcd)
go = subgrid(crns, go)
indic = sfilter(gooplcd, lambda cij: cij[0] in (ac1, ac2))
gi = paint(gi, indic)
if rng.choice((True, False)) and len(obj) > 3:
idx = rng.choice(totuple(toindices(sfilter(obj, lambda cij: cij[0] == objc))))
idxi, idxj = idx
xx = shift(asindices(canvas(-1, (hscf, wscf))), (gloci + idxi * hscf, glocj + idxj * wscf))
gi = fill(gi, objc, xx)
mfs = (identity, dmirror, cmirror, vmirror, hmirror, rot90, rot180, rot270)
nmfs = rng.choice((1, 2))
for fn in rng.sample(mfs, nmfs):
gi = fn(gi)
go = fn(go)
return {"input": gi, "output": go}
def generate_49d1d64f(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (2, 28))
w = unifint(rng, diff_lb, diff_ub, (2, 28))
ncols = unifint(rng, diff_lb, diff_ub, (1, 10))
ccols = rng.sample(cols, ncols)
gi = canvas(-1, (h, w))
obj = {(rng.choice(ccols), ij) for ij in asindices(gi)}
gi = paint(gi, obj)
go = canvas(0, (h + 2, w + 2))
go = paint(go, shift(asobject(gi), (1, 1)))
ts = sfilter(obj, lambda cij: cij[1][0] == 0)
bs = sfilter(obj, lambda cij: cij[1][0] == h - 1)
ls = sfilter(obj, lambda cij: cij[1][1] == 0)
rs = sfilter(obj, lambda cij: cij[1][1] == w - 1)
ts = shift(ts, (1, 1))
bs = shift(bs, (1, 1))
ls = shift(ls, (1, 1))
rs = shift(rs, (1, 1))
go = paint(go, shift(ts, (-1, 0)))
go = paint(go, shift(bs, (1, 0)))
go = paint(go, shift(ls, (0, -1)))
go = paint(go, shift(rs, (0, 1)))
return {"input": gi, "output": go}
def generate_890034e9(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(1, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
oh = rng.randint(2, h // 4)
ow = rng.randint(2, w // 4)
markercol = rng.choice(cols)
remcols = remove(markercol, cols)
numbgc = unifint(rng, diff_lb, diff_ub, (1, 8))
bgcols = rng.sample(remcols, numbgc)
gi = canvas(0, (h, w))
inds = asindices(gi)
obj = {(rng.choice(bgcols), ij) for ij in inds}
gi = paint(gi, obj)
numbl = unifint(rng, diff_lb, diff_ub, (0, (h * w) // 2))
blacks = rng.sample(totuple(inds), numbl)
gi = fill(gi, 0, blacks)
patt = asindices(canvas(-1, (oh, ow)))
tocover = set()
for occ in occurrences(gi, recolor(0, patt)):
tocover.add(rng.choice(totuple(shift(patt, occ))))
tocover = {(rng.choice(bgcols), ij) for ij in tocover}
gi = paint(gi, tocover)
noccs = unifint(rng, diff_lb, diff_ub, (2, (h * w) // ((oh + 2) * (ow + 2))))
tr = 0
succ = 0
maxtr = 5 * noccs
go = tuple(e for e in gi)
while tr < maxtr and succ < noccs:
tr += 1
cands = sfilter(inds, lambda ij: ij[0] <= h - oh and ij[1] <= w - ow)
if len(cands) == 0:
break
loc = rng.choice(totuple(cands))
bd = shift(patt, loc)
plcd = outbox(bd)
if plcd.issubset(inds):
succ += 1
inds = inds - plcd
gi = fill(gi, 0, bd)
go = fill(go, 0, bd)
if succ == 1:
gi = fill(gi, markercol, plcd)
go = fill(go, markercol, plcd)
loci, locj = loc
ln1 = connect((loci - 1, locj), (loci - 1, locj + ow - 1))
ln2 = connect((loci + oh, locj), (loci + oh, locj + ow - 1))
ln3 = connect((loci, locj - 1), (loci + oh - 1, locj - 1))
ln4 = connect((loci, locj + ow), (loci + oh - 1, locj + ow))
if succ > 1:
fixxer = {(rng.choice(bgcols), rng.choice(totuple(xx))) for xx in [ln1, ln2, ln3, ln4]}
gi = paint(gi, fixxer)
return {"input": gi, "output": go}
def generate_776ffc46(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
bgc, sqc, inc, outc = rng.sample(cols, 4)
gi = canvas(bgc, (h, w))
sqh = rng.randint(3, h // 3 + 1)
sqw = rng.randint(3, w // 3 + 1)
loci = rng.randint(0, 3)
locj = rng.randint(0, w - sqw)
bx = box(frozenset({(loci, locj), (loci + sqh - 1, locj + sqw - 1)}))
bounds = asindices(canvas(-1, (sqh - 2, sqw - 2)))
obj = {rng.choice(totuple(bounds))}
ncells = rng.randint(1, (sqh - 2) * (sqw - 2))
for k in range(ncells - 1):
obj.add(rng.choice(totuple((bounds - obj) & mapply(dneighbors, obj))))
obj = normalize(obj)
oh, ow = shape(obj)
objp = shift(obj, (loci + 1 + rng.randint(0, sqh - oh - 2), locj + 1 + rng.randint(0, sqw - ow - 2)))
gi = fill(gi, sqc, bx)
gi = fill(gi, inc, objp)
inds = (ofcolor(gi, bgc) - backdrop(bx)) - mapply(neighbors, backdrop(bx))
cands = sfilter(inds, lambda ij: shift(obj, ij).issubset(inds))
loc = rng.choice(totuple(cands))
plcd = shift(obj, loc)
gi = fill(gi, outc, plcd)
inds = (inds - plcd) - mapply(neighbors, plcd)
noccs = unifint(rng, diff_lb, diff_ub, (0, (h * w) // 20))
succ = 0
tr = 0
maxtr = 5 * noccs
fullinds = asindices(gi)
while tr < maxtr and succ < noccs:
tr += 1
if rng.choice((True, False)):
sqh = rng.randint(3, h // 3 + 1)
sqw = rng.randint(3, w // 3 + 1)
bx = box(frozenset({(0, 0), (sqh - 1, sqw - 1)}))
bounds = asindices(canvas(-1, (sqh - 2, sqw - 2)))
obj2 = {rng.choice(totuple(bounds))}
ncells = rng.randint(1, (sqh - 2) * (sqw - 2))
for k in range(ncells - 1):
obj2.add(rng.choice(totuple((bounds - obj2) & mapply(dneighbors, obj2))))
if normalize(obj2) == obj:
if len(obj2) < (sqh - 2) * (sqw - 2):
obj2.add(rng.choice(totuple((bounds - obj2) & mapply(dneighbors, obj2))))
else:
continue
obj2 = normalize(obj2)
ooh, oow = shape(obj2)
cands1 = connect((-1, -1), (-1, w - sqw + 1))
cands2 = connect((h - sqh + 1, -1), (h - sqh + 1, w - sqw + 1))
cands3 = connect((-1, -1), (h - sqh + 1, -1))
cands4 = connect((-1, w - sqw + 1), (h - sqh + 1, w - sqw + 1))
cands = cands1 | cands2 | cands3 | cands4
if len(cands) == 0:
continue
loc = rng.choice(totuple(cands))
sloci, slocj = loc
plcdbx = shift(bx, loc)
if (backdrop(plcdbx) & fullinds).issubset(inds):
succ += 1
oloci = rng.randint(sloci + 1, sloci + 1 + rng.randint(0, sqh - ooh - 2))
olocj = rng.randint(slocj + 1, slocj + 1 + rng.randint(0, sqw - oow - 2))
gi = fill(gi, sqc, plcdbx)
gi = fill(gi, inc, shift(obj2, (oloci, olocj)))
inds = inds - backdrop(outbox(plcdbx))
else:
ooh = rng.randint(1, h // 3 - 1)
oow = rng.randint(1, w // 3 - 1)
bounds = asindices(canvas(-1, (ooh, oow)))
obj2 = {rng.choice(totuple(bounds))}
ncells = rng.randint(1, oow * ooh)
for k in range(ncells - 1):
obj2.add(rng.choice(totuple((bounds - obj2) & mapply(dneighbors, obj2))))
if normalize(obj2) == obj:
if len(obj2) < ooh * oow:
obj2.add(rng.choice(totuple((bounds - obj2) & mapply(dneighbors, obj2))))
else:
continue
if rng.choice((True, False, False)):
obj2 = obj
obj2 = normalize(obj2)
ooh, oow = shape(obj2)
for kk in range(rng.randint(1, 3)):
cands = sfilter(inds, lambda ij: ij[0] <= h - ooh and ij[1] <= w - oow)
if len(cands) == 0:
continue
loc = rng.choice(totuple(cands))
plcd = shift(obj2, loc)
if plcd.issubset(inds):
succ += 1
inds = (inds - plcd) - mapply(neighbors, plcd)
gi = fill(gi, outc, plcd)
objs = objects(gi, T, F, F)
objs = colorfilter(objs, outc)
objs = mfilter(objs, lambda o: equality(normalize(toindices(o)), obj))
go = fill(gi, inc, objs)
return {"input": gi, "output": go}
def generate_e6721834(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (6, 15))
w = unifint(rng, diff_lb, diff_ub, (8, 30))
bgc1, bgc2, sqc = rng.sample(cols, 3)
remcols = difference(cols, (bgc1, bgc2, sqc))
gi1 = canvas(bgc1, (h, w))
gi2 = canvas(bgc2, (h, w))
noccs = unifint(rng, diff_lb, diff_ub, (1, (h * w) // 16))
tr = 0
succ = 0
maxtr = 5 * noccs
gi1inds = asindices(gi1)
gi2inds = asindices(gi2)
go = canvas(bgc2, (h, w))
seen = []
while tr < maxtr and succ < noccs:
tr += 1
oh = rng.randint(2, min(6, h // 2))
ow = rng.randint(2, min(6, w // 2))
cands = sfilter(gi1inds, lambda ij: ij[0] <= h - oh and ij[1] <= w - ow)
if len(cands) == 0:
continue
loc = rng.choice(totuple(cands))
bounds = shift(asindices(canvas(-1, (oh, ow))), loc)
ncells = unifint(rng, diff_lb, diff_ub, (1, (oh * ow) // 2))
obj = set(rng.sample(totuple(bounds), ncells))
objc = rng.choice(remcols)
objn = normalize(obj)
if (objn, objc) in seen:
continue
seen.append(((objn, objc)))
if bounds.issubset(gi1inds):
succ += 1
gi1inds = (gi1inds - bounds) - mapply(neighbors, bounds)
gi1 = fill(gi1, sqc, bounds)
gi1 = fill(gi1, objc, obj)
cands2 = sfilter(gi2inds, lambda ij: ij[0] <= h - oh and ij[1] <= w - ow)
if len(cands2) == 0:
continue
loc2 = rng.choice(totuple(cands2))
bounds2 = shift(shift(bounds, invert(loc)), loc2)
obj2 = shift(shift(obj, invert(loc)), loc2)
if bounds2.issubset(gi2inds):
gi2inds = (gi2inds - bounds2) - mapply(neighbors, bounds2)
gi2 = fill(gi2, objc, obj2)
go = fill(go, sqc, bounds2)
go = fill(go, objc, obj2)
gi = vconcat(gi1, gi2)
mfs = (identity, dmirror, cmirror, vmirror, hmirror, rot90, rot180, rot270)
nmfs = rng.choice((1, 2))
for fn in rng.sample(mfs, nmfs):
gi = fn(gi)
go = fn(go)
return {"input": gi, "output": go}
def generate_ef135b50(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(9, interval(0, 10, 1))
while True:
h = unifint(rng, diff_lb, diff_ub, (8, 30))
w = unifint(rng, diff_lb, diff_ub, (8, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
numc = unifint(rng, diff_lb, diff_ub, (1, 8))
ccols = rng.sample(remcols, numc)
gi = canvas(bgc, (h, w))
nsq = unifint(rng, diff_lb, diff_ub, (2, (h * w) // 30))
succ = 0
tr = 0
maxtr = 5 * nsq
inds = asindices(gi)
pats = set()
while tr < maxtr and succ < nsq:
tr += 1
oh = rng.randint(1, (h // 3 * 2))
ow = rng.randint(1, (w // 3 * 2))
cands = sfilter(inds, lambda ij: ij[0] <= h - oh and ij[1] <= w - ow)
if len(cands) == 0:
continue
loc = rng.choice(totuple(cands))
loci, locj = loc
bd = backdrop(frozenset({(loci, locj), (loci + oh - 1, locj + ow - 1)}))
if bd.issubset(inds):
succ += 1
inds = (inds - bd) - mapply(neighbors, bd)
gi = fill(gi, rng.choice(ccols), bd)
pats.add(bd)
res = set()
ofc = ofcolor(gi, bgc)
for pat1 in pats:
for pat2 in remove(pat1, pats):
if hmatching(pat1, pat2):
um = max(uppermost(pat1), uppermost(pat2))
bm = min(lowermost(pat1), lowermost(pat2))
lm = min(rightmost(pat1), rightmost(pat2)) + 1
rm = max(leftmost(pat1), leftmost(pat2)) - 1
res = res | backdrop(frozenset({(um, lm), (bm, rm)}))
res = (res & ofc) - box(asindices(gi))
go = fill(gi, 9, res)
if go != gi:
break
return {"input": gi, "output": go}
def generate_794b24be(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = difference(interval(0, 10, 1), (1, 2))
mpr = {1: (0, 0), 2: (0, 1), 3: (0, 2), 4: (1, 1)}
h = unifint(rng, diff_lb, diff_ub, (3, 30))
w = unifint(rng, diff_lb, diff_ub, (3, 30))
bgc = rng.choice(cols)
nblue = rng.randint(1, 4)
go = canvas(bgc, (3, 3))
for k in range(nblue):
go = fill(go, 2, {mpr[k + 1]})
gi = canvas(bgc, (h, w))
locs = rng.sample(totuple(asindices(gi)), nblue)
gi = fill(gi, 1, locs)
remlocs = ofcolor(gi, bgc)
namt = unifint(rng, diff_lb, diff_ub, (0, len(remlocs) // 2 - 1))
remcols = remove(bgc, cols)
numc = unifint(rng, diff_lb, diff_ub, (1, 7))
ccols = rng.sample(remcols, numc)
noise = rng.sample(totuple(remlocs), namt)
noise = {(rng.choice(ccols), ij) for ij in noise}
gi = paint(gi, noise)
return {"input": gi, "output": go}
def generate_ff28f65a(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = difference(interval(0, 10, 1), (1, 2))
mpr = {1: (0, 0), 2: (0, 2), 3: (1, 1), 4: (2, 0), 5: (2, 2)}
h = unifint(rng, diff_lb, diff_ub, (3, 30))
w = unifint(rng, diff_lb, diff_ub, (3, 30))
bgc = rng.choice(cols)
nred = rng.randint(1, 5)
gi = canvas(bgc, (h, w))
succ = 0
tr = 0
maxtr = 5 * nred
inds = asindices(gi)
while tr < maxtr and succ < nred:
tr += 1
oh = rng.randint(1, h // 2 + 1)
ow = rng.randint(1, w // 2 + 1)
cands = sfilter(inds, lambda ij: ij[0] <= h - oh and ij[1] <= w - ow)
if len(cands) == 0:
continue
loc = rng.choice(totuple(cands))
loci, locj = loc
bd = backdrop(frozenset({(loci, locj), (loci + oh - 1, locj + ow - 1)}))
if bd.issubset(inds):
succ += 1
inds = (inds - bd) - mapply(dneighbors, bd)
gi = fill(gi, 2, bd)
nblue = succ
namt = unifint(rng, diff_lb, diff_ub, (0, nred * 2))
succ = 0
tr = 0
maxtr = 5 * namt
remcols = remove(bgc, cols)
tr += 1
while tr < maxtr and succ < namt:
tr += 1
oh = rng.randint(1, h // 2 + 1)
ow = rng.randint(1, w // 2 + 1)
cands = sfilter(inds, lambda ij: ij[0] <= h - oh and ij[1] <= w - ow)
if len(cands) == 0:
continue
loc = rng.choice(totuple(cands))
loci, locj = loc
bd = backdrop(frozenset({(loci, locj), (loci + oh - 1, locj + ow - 1)}))
if bd.issubset(inds):
succ += 1
inds = (inds - bd) - mapply(dneighbors, bd)
gi = fill(gi, rng.choice(remcols), bd)
go = canvas(bgc, (3, 3))
for k in range(nblue):
go = fill(go, 1, {mpr[k + 1]})
return {"input": gi, "output": go}
def generate_73251a56(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
while True:
d = unifint(rng, diff_lb, diff_ub, (10, 30))
h, w = d, d
noisec = rng.choice(cols)
remcols = remove(noisec, cols)
nsl = unifint(rng, diff_lb, diff_ub, (2, min(9, h // 2)))
slopes = [0] + sorted(rng.sample(interval(1, h - 1, 1), nsl - 1))
ccols = rng.sample(cols, nsl)
gi = canvas(-1, (h, w))
inds = asindices(gi)
for col, hdelt in zip(ccols, slopes):
slope = hdelt / w
locs = sfilter(inds, lambda ij: slope * ij[1] <= ij[0])
gi = fill(gi, col, locs)
ln = connect((0, 0), (d - 1, d - 1))
gi = fill(gi, ccols[-2], ln)
obj = asobject(gi)
obj = sfilter(obj, lambda cij: cij[1][1] >= cij[1][0])
gi = paint(gi, dmirror(obj))
cf1 = lambda g: ccols[-2] in palette(toobject(ln, g))
cf2 = lambda g: len((ofcolor(g, noisec) & frozenset({ij[::-1] for ij in ofcolor(g, noisec)})) - ln) == 0
ndist = unifint(rng, diff_lb, diff_ub, (1, (h * w) // 15))
tr = 0
succ = 0
maxtr = 10 * ndist
go = tuple(e for e in gi)
while tr < maxtr and succ < ndist:
tr += 1
oh = rng.randint(1, 5)
ow = rng.randint(1, 5)
loci = rng.randint(1, h - oh - 1)
locj = rng.randint(1, w - ow - 1)
bd = backdrop(frozenset({(loci, locj), (loci + oh - 1, locj + ow - 1)}))
gi2 = fill(gi, noisec, bd)
if cf1(gi2) and cf2(gi2):
succ += 1
gi = gi2
if gi != go:
break
rotf = rng.choice((identity, rot90, rot180, rot270))
gi = rotf(gi)
go = rotf(go)
return {"input": gi, "output": go}
def generate_3631a71a(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (6, 15))
w = h
bgc, patchcol = rng.sample(cols, 2)
patchcol = rng.choice(cols)
bgc = rng.choice(remove(patchcol, cols))
remcols = difference(cols, (bgc, patchcol))
c = canvas(bgc, (h, w))
inds = sfilter(asindices(c), lambda ij: ij[0] >= ij[1])
ncols = unifint(rng, diff_lb, diff_ub, (1, 8))
ccols = rng.sample(remcols, ncols)
ncells = unifint(rng, diff_lb, diff_ub, (1, len(inds)))
cells = set(rng.sample(totuple(inds), ncells))
obj = {(rng.choice(ccols), ij) for ij in cells}
c = paint(dmirror(paint(c, obj)), obj)
c = hconcat(c, vmirror(c))
c = vconcat(c, hmirror(c))
cutoff = 2
go = dmirror(dmirror(c[:-cutoff])[:-cutoff])
gi = tuple(e for e in go)
forbidden = asindices(canvas(-1, (cutoff, cutoff)))
dmirrareaL = shift(asindices(canvas(-1, (h * 2 - 2 * cutoff, cutoff))), (cutoff, 0))
dmirrareaT = shift(asindices(canvas(-1, (cutoff, 2 * w - 2 * cutoff))), (0, cutoff))
inds1 = sfilter(asindices(gi), lambda ij: cutoff <= ij[0] < h and cutoff <= ij[1] < w and ij[0] >= ij[1])
inds2 = dmirror(inds1)
inds3 = shift(hmirror(inds1), (h - cutoff, 0))
inds4 = shift(hmirror(inds2), (h - cutoff, 0))
inds5 = shift(vmirror(inds1), (0, w - cutoff))
inds6 = shift(vmirror(inds2), (0, w - cutoff))
inds7 = shift(hmirror(vmirror(inds1)), (h - cutoff, w - cutoff))
inds8 = shift(hmirror(vmirror(inds2)), (h - cutoff, w - cutoff))
f1 = identity
f2 = dmirror
f3 = lambda x: hmirror(shift(x, invert((h - cutoff, 0))))
f4 = lambda x: dmirror(hmirror(shift(x, invert((h - cutoff, 0)))))
f5 = lambda x: vmirror(shift(x, invert((0, w - cutoff))))
f6 = lambda x: dmirror(vmirror(shift(x, invert((0, w - cutoff)))))
f7 = lambda x: vmirror(hmirror(shift(x, invert((h - cutoff, w - cutoff)))))
f8 = lambda x: dmirror(vmirror(hmirror(shift(x, invert((h - cutoff, w - cutoff))))))
indsarr = [inds1, inds2, inds3, inds4, inds5, inds6, inds7, inds8]
farr = [f1, f2, f3, f4, f5, f6, f7, f8]
ndist = unifint(rng, diff_lb, diff_ub, (1, int((2 * h * 2 * w) ** 0.5)))
succ = 0
tr = 0
maxtr = 10 * ndist
fullh, fullw = shape(gi)
while succ < ndist and tr < maxtr:
tr += 1
oh = rng.randint(2, h // 2 + 1)
ow = rng.randint(2, w // 2 + 1)
loci = rng.randint(0, fullh - oh)
locj = rng.randint(0, fullw - ow)
bd = backdrop(frozenset({(loci, locj), (loci + oh - 1, locj + ow - 1)}))
isleft = set()
gi2 = fill(gi, patchcol, bd)
if patchcol in palette(toobject(forbidden, gi2)):
continue
oo1 = toindices(sfilter(toobject(dmirrareaL, gi2), lambda cij: cij[0] != patchcol))
oo2 = toindices(sfilter(toobject(dmirrareaT, gi2), lambda cij: cij[0] != patchcol))
oo2 = frozenset({(ij[1], ij[0]) for ij in oo2})
if oo1 | oo2 != dmirrareaL:
continue
for ii, ff in zip(indsarr, farr):
oo = toobject(ii, gi2)
rem = toindices(sfilter(oo, lambda cij: cij[0] != patchcol))
if len(rem) > 0:
isleft = isleft | ff(rem)
if isleft != inds1:
continue
succ += 1
gi = gi2
return {"input": gi, "output": go}
def generate_234bbc79(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
while True:
h = unifint(rng, diff_lb, diff_ub, (5, 30))
w = unifint(rng, diff_lb, diff_ub, (6, 20))
bgc, dotc = rng.sample(cols, 2)
remcols = difference(cols, (bgc, dotc))
go = canvas(bgc, (h, 30))
ncols = unifint(rng, diff_lb, diff_ub, (1, 8))
ccols = rng.sample(remcols, ncols)
spi = rng.randint(0, h - 1)
snek = [(spi, 0)]
gi = fill(go, dotc, {(spi, 0)})
while True:
previ, prevj = snek[-1]
if prevj == w - 1:
if rng.choice((True, False, False)):
break
options = []
if previ < h - 1:
if go[previ + 1][prevj] == bgc:
options.append((previ + 1, prevj))
if previ > 0:
if go[previ - 1][prevj] == bgc:
options.append((previ - 1, prevj))
if prevj < w - 1:
options.append((previ, prevj + 1))
if len(options) == 0:
break
loc = rng.choice(options)
snek.append(loc)
go = fill(go, dotc, {loc})
objs = []
cobj = []
for idx, cel in enumerate(snek):
if len(cobj) > 2 and width(frozenset(cobj)) > 1 and snek[idx - 1] == add(cel, (0, -1)):
objs.append(cobj)
cobj = [cel]
else:
cobj.append(cel)
objs[-1] += cobj
nobjs = len(objs)
if nobjs < 2:
continue
ntokeep = unifint(rng, diff_lb, diff_ub, (2, nobjs))
ntorem = nobjs - ntokeep
for k in range(ntorem):
idx = rng.randint(0, len(objs) - 2)
objs = objs[:idx] + [objs[idx] + objs[idx + 1]] + objs[idx + 2 :]
inobjs = []
for idx, obj in enumerate(objs):
col = rng.choice(ccols)
go = fill(go, col, set(obj))
centerpart = recolor(col, set(obj[1:-1]))
leftpart = {(dotc if idx > 0 else col, obj[0])}
rightpart = {(dotc if idx < len(objs) - 1 else col, obj[-1])}
inobj = centerpart | leftpart | rightpart
inobjs.append(inobj)
spacings = [1 for idx in range(len(inobjs) - 1)]
fullw = unifint(rng, diff_lb, diff_ub, (w, 30))
for k in range(fullw - w - len(inobjs) - 1):
idx = rng.randint(0, len(spacings) - 1)
spacings[idx] += 1
lspacings = [0] + spacings
gi = canvas(bgc, (h, fullw))
ofs = 0
for i, (lsp, obj) in enumerate(zip(lspacings, inobjs)):
obj = set(obj)
if i == 0:
ulc = ulcorner(obj)
else:
ulci = rng.randint(0, h - height(obj))
ulcj = ofs + lsp
ulc = (ulci, ulcj)
ofs += width(obj) + lsp
plcd = shift(normalize(obj), ulc)
gi = paint(gi, plcd)
break
ins = size(merge(fgpartition(gi)))
while True:
go2 = dmirror(dmirror(go)[:-1])
if size(sfilter(asobject(go2), lambda cij: cij[0] != bgc)) < ins:
break
else:
go = go2
return {"input": gi, "output": go}
def generate_cbded52d(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
oh = unifint(rng, diff_lb, diff_ub, (1, 4))
ow = unifint(rng, diff_lb, diff_ub, (1, 4))
numh = unifint(rng, diff_lb, diff_ub, (3, 31 // (oh + 1)))
numw = unifint(rng, diff_lb, diff_ub, (3, 31 // (ow + 1)))
bgc, linc = rng.sample(cols, 2)
remcols = difference(cols, (bgc, linc))
ncols = unifint(rng, diff_lb, diff_ub, (1, min(8, (numh * numh) // 3)))
ccols = rng.sample(remcols, ncols)
fullh = numh * oh + numh - 1
fullw = numw * ow + numw - 1
gi = canvas(linc, (fullh, fullw))
sgi = asindices(canvas(bgc, (oh, ow)))
for a in range(numh):
for b in range(numw):
gi = fill(gi, bgc, shift(sgi, (a * (oh + 1), b * (ow + 1))))
go = tuple(e for e in gi)
for col in ccols:
inds = ofcolor(go, bgc)
if len(inds) == 0:
break
loc = rng.choice(totuple(inds))
narms = rng.randint(1, 4)
armdirs = rng.sample(totuple(dneighbors((0, 0))), narms)
succ = 0
for armdir in armdirs:
x, y = armdir
arm = []
for k in range(1, max(numh, numw)):
nextloc = add(loc, (k * x * (oh + 1), k * y * (ow + 1)))
if nextloc not in inds:
break
arm.append(nextloc)
if len(arm) < 2:
continue
aidx = unifint(rng, diff_lb, diff_ub, (1, len(arm) - 1))
endp = arm[aidx]
gi = fill(gi, col, {endp})
go = fill(go, col, set(arm[: aidx + 1]))
succ += 1
if succ > 0:
gi = fill(gi, col, {loc})
go = fill(go, col, {loc})
return {"input": gi, "output": go}
def generate_06df4c85(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
oh = unifint(rng, diff_lb, diff_ub, (1, 4))
ow = unifint(rng, diff_lb, diff_ub, (1, 4))
numh = unifint(rng, diff_lb, diff_ub, (3, 31 // (oh + 1)))
numw = unifint(rng, diff_lb, diff_ub, (3, 31 // (ow + 1)))
bgc, linc = rng.sample(cols, 2)
remcols = difference(cols, (bgc, linc))
ncols = unifint(rng, diff_lb, diff_ub, (1, min(8, (numh * numh) // 3)))
ccols = rng.sample(remcols, ncols)
fullh = numh * oh + numh - 1
fullw = numw * ow + numw - 1
gi = canvas(linc, (fullh, fullw))
sgi = asindices(canvas(bgc, (oh, ow)))
for a in range(numh):
for b in range(numw):
gi = fill(gi, bgc, shift(sgi, (a * (oh + 1), b * (ow + 1))))
go = tuple(e for e in gi)
sinds = asindices(canvas(-1, (oh, ow)))
for col in ccols:
inds = occurrences(go, recolor(bgc, sinds))
if len(inds) == 0:
break
loc = rng.choice(totuple(inds))
narms = rng.randint(1, 4)
armdirs = rng.sample(totuple(dneighbors((0, 0))), narms)
succ = 0
for armdir in armdirs:
x, y = armdir
arm = []
for k in range(1, max(numh, numw)):
nextloc = add(loc, (k * x * (oh + 1), k * y * (ow + 1)))
if nextloc not in inds:
break
arm.append(nextloc)
if len(arm) < 2:
continue
aidx = unifint(rng, diff_lb, diff_ub, (1, len(arm) - 1))
endp = arm[aidx]
gi = fill(gi, col, shift(sinds, endp))
go = fill(go, col, mapply(lbind(shift, sinds), set(arm[: aidx + 1])))
succ += 1
gi = fill(gi, col, shift(sinds, loc))
go = fill(go, col, shift(sinds, loc))
return {"input": gi, "output": go}
def generate_90f3ed37(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(1, interval(0, 10, 1))
while True:
h = unifint(rng, diff_lb, diff_ub, (8, 30))
w = unifint(rng, diff_lb, diff_ub, (8, 30))
pathh = unifint(rng, diff_lb, diff_ub, (1, max(1, h // 4)))
pathh = unifint(rng, diff_lb, diff_ub, (pathh, max(1, h // 4)))
Lpatper = unifint(rng, diff_lb, diff_ub, (1, w // 7))
Rpatper = unifint(rng, diff_lb, diff_ub, (1, w // 7))
hh = rng.randint(1, pathh)
Linds = asindices(canvas(-1, (hh, Lpatper)))
Rinds = asindices(canvas(-1, (hh, Rpatper)))
lpatsd = unifint(rng, diff_lb, diff_ub, (0, (hh * Lpatper) // 2))
rpatsd = unifint(rng, diff_lb, diff_ub, (0, (hh * Rpatper) // 2))
lpats = rng.choice((lpatsd, hh * Lpatper - lpatsd))
rpats = rng.choice((rpatsd, hh * Rpatper - rpatsd))
lpats = min(max(Lpatper, lpats), hh * Lpatper)
rpats = min(max(Rpatper, rpats), hh * Rpatper)
lpat = set(rng.sample(totuple(Linds), lpats))
rpat = set(rng.sample(totuple(Rinds), rpats))
midpatw = rng.randint(0, w - 2 * Lpatper - 2 * Rpatper)
if midpatw == 0 or Lpatper == hh == 1:
midpat = set()
midpatw = 0
else:
midpat = set(
rng.sample(totuple(asindices(canvas(-1, (hh, midpatw)))), rng.randint(midpatw, (hh * midpatw)))
)
if shift(midpat, (0, 2 * Lpatper - midpatw)).issubset(lpat):
midpat = set()
midpatw = 0
loci = rng.randint(0, h - pathh)
lplac = shift(lpat, (loci, 0)) | shift(lpat, (loci, Lpatper))
mplac = shift(midpat, (loci, 2 * Lpatper))
rplac = shift(rpat, (loci, 2 * Lpatper + midpatw)) | shift(rpat, (loci, 2 * Lpatper + midpatw + Rpatper))
sp = 2 * Lpatper + midpatw + Rpatper
for k in range(w // Lpatper + 1):
lplac |= shift(lpat, (loci, -k * Lpatper))
for k in range(w // Rpatper + 1):
rplac |= shift(rpat, (loci, sp + k * Rpatper))
pat = lplac | mplac | rplac
patn = shift(pat, (-loci, 0))
bgc, fgc = rng.sample(cols, 2)
gi = canvas(bgc, (h, w))
gi = fill(gi, fgc, pat)
options = interval(0, h - pathh + 1, 1)
options = difference(options, interval(loci - pathh - 1, loci + 2 * pathh, 1))
nplacements = unifint(rng, diff_lb, diff_ub, (1, max(1, len(options) // pathh)))
go = tuple(e for e in gi)
for k in range(nplacements):
if len(options) == 0:
break
locii = rng.choice(options)
options = difference(options, interval(locii - pathh - 1, locii + 2 * pathh, 1))
hoffs = rng.randint(0, max(Rpatper, w - sp - 2))
cutoffopts = interval(2 * Lpatper + midpatw, 2 * Lpatper + midpatw + hoffs + 1, 1)
cutoffopts = cutoffopts[::-1]
idx = unifint(rng, diff_lb, diff_ub, (0, len(cutoffopts) - 1))
cutoff = cutoffopts[idx]
patnc = sfilter(patn, lambda ij: ij[1] <= cutoff)
go = fill(go, 1, shift(patn, (locii, hoffs)))
gi = fill(gi, fgc, shift(patnc, (locii, hoffs)))
go = fill(go, fgc, shift(patnc, (locii, hoffs)))
if 1 in palette(go):
break
return {"input": gi, "output": go}
def generate_36d67576(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
while True:
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
bgc, mainc, markerc = rng.sample(cols, 3)
remcols = difference(cols, (bgc, mainc, markerc))
ncols = unifint(rng, diff_lb, diff_ub, (1, len(remcols)))
ccols = rng.sample(remcols, ncols)
gi = canvas(bgc, (h, w))
oh = unifint(rng, diff_lb, diff_ub, (2, 5))
ow = unifint(rng, diff_lb, diff_ub, (3 if oh == 2 else 2, 5))
if rng.choice((True, False)):
oh, ow = ow, oh
bounds = asindices(canvas(-1, (oh, ow)))
ncells = unifint(rng, diff_lb, diff_ub, (4, len(bounds)))
obj = {rng.choice(totuple(bounds))}
for k in range(ncells - 1):
obj.add(rng.choice(totuple((bounds - obj) & mapply(neighbors, obj))))
obj = normalize(obj)
oh, ow = shape(obj)
ntocompc = unifint(rng, diff_lb, diff_ub, (1, ncells - 3))
markercell = rng.choice(totuple(obj))
remobj = remove(markercell, obj)
markercellobj = {(markerc, markercell)}
tocompc = set(rng.sample(totuple(remobj), ntocompc))
mainpart = (obj - {markercell}) - tocompc
mainpartobj = recolor(mainc, mainpart)
tocompcobj = {(rng.choice(remcols), ij) for ij in tocompc}
obj = tocompcobj | mainpartobj | markercellobj
smobj = mainpartobj | markercellobj
smobjn = normalize(smobj)
isfakesymm = False
for symmf in [dmirror, cmirror, hmirror, vmirror]:
if symmf(smobjn) == smobjn and symmf(obj) != obj:
isfakesymm = True
break
if isfakesymm:
continue
loci = rng.randint(0, h - oh)
locj = rng.randint(0, w - ow)
plcd = shift(obj, (loci, locj))
gi = paint(gi, plcd)
plcdi = toindices(plcd)
inds = (asindices(gi) - plcdi) - mapply(neighbors, plcdi)
noccs = unifint(rng, diff_lb, diff_ub, (1, max(1, (h * w) // (2 * len(obj)))))
succ = 0
tr = 0
maxtr = noccs * 5
go = tuple(e for e in gi)
while tr < maxtr and succ < noccs:
tr += 1
mf1 = rng.choice((identity, dmirror, cmirror, hmirror, vmirror))
mf2 = rng.choice((identity, dmirror, cmirror, hmirror, vmirror))
mf = compose(mf1, mf2)
outobj = normalize(mf(obj))
inobj = sfilter(outobj, lambda cij: cij[0] in [mainc, markerc])
oh, ow = shape(outobj)
cands = sfilter(inds, lambda ij: ij[0] <= h - oh and ij[1] <= w - ow)
if len(cands) == 0:
continue
loc = rng.choice(totuple(cands))
outobjp = shift(outobj, loc)
inobjp = shift(inobj, loc)
outobjpi = toindices(outobjp)
if outobjpi.issubset(inds):
succ += 1
inds = (inds - outobjpi) - mapply(neighbors, outobjpi)
gi = paint(gi, inobjp)
go = paint(go, outobjp)
break
return {"input": gi, "output": go}
def generate_4522001f(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (3, 10))
w = unifint(rng, diff_lb, diff_ub, (3, 10))
bgc, sqc, dotc = rng.sample(cols, 3)
gi = canvas(bgc, (h, w))
go = canvas(bgc, (3 * h, 3 * w))
sqi = {(dotc, (1, 1))} | recolor(sqc, {(0, 0), (0, 1), (1, 0)})
sqo = backdrop(frozenset({(0, 0), (3, 3)}))
sqo |= shift(sqo, (4, 4))
loci = rng.randint(0, min(h - 2, 3 * h - 8))
locj = rng.randint(0, min(w - 2, 3 * w - 8))
loc = (loci, locj)
plcdi = shift(sqi, loc)
plcdo = shift(sqo, loc)
gi = paint(gi, plcdi)
go = fill(go, sqc, plcdo)
noccs = unifint(rng, diff_lb, diff_ub, (0, (h * w) // 9))
succ = 0
tr = 0
maxtr = 10 * noccs
iinds = ofcolor(gi, bgc) - mapply(dneighbors, toindices(plcdi))
while tr < maxtr and succ < noccs:
tr += 1
cands = sfilter(iinds, lambda ij: ij[0] <= h - 2 and ij[1] <= w - 2)
if len(cands) == 0:
break
loc = rng.choice(totuple(cands))
plcdi = shift(sqi, loc)
plcdo = shift(sqo, loc)
plcdii = toindices(plcdi)
if plcdii.issubset(iinds):
succ += 1
iinds = (iinds - plcdii) - mapply(dneighbors, plcdii)
gi = paint(gi, plcdi)
go = fill(go, sqc, plcdo)
rotf = rng.choice((identity, rot90, rot180, rot270))
gi = rotf(gi)
go = rotf(go)
return {"input": gi, "output": go}
def generate_72322fa7(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
h = unifint(rng, diff_lb, diff_ub, (10, 30))
w = unifint(rng, diff_lb, diff_ub, (10, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
nobjs = unifint(rng, diff_lb, diff_ub, (1, 4))
ccols = rng.sample(remcols, 2 * nobjs)
cpairs = list(zip(ccols[:nobjs], ccols[nobjs:]))
objs = []
gi = canvas(bgc, (h, w))
inds = asindices(gi)
for ca, cb in cpairs:
oh = unifint(rng, diff_lb, diff_ub, (1, 4))
ow = unifint(rng, diff_lb, diff_ub, (2 if oh == 1 else 1, 4))
if rng.choice((True, False)):
oh, ow = ow, oh
bounds = asindices(canvas(-1, (oh, ow)))
obj = {rng.choice(totuple(bounds))}
ncells = rng.randint(2, oh * ow)
for k in range(ncells - 1):
obj.add(rng.choice(totuple((bounds - obj) & mapply(neighbors, obj))))
objn = normalize(obj)
objt = totuple(objn)
apart = rng.sample(objt, rng.randint(1, len(objt) - 1))
bpart = difference(objt, apart)
obj = recolor(ca, set(apart)) | recolor(cb, set(bpart))
oh, ow = shape(obj)
cands = sfilter(inds, lambda ij: shift(objn, ij).issubset(inds))
if len(cands) == 0:
continue
loc = rng.choice(totuple(cands))
plcd = shift(obj, loc)
gi = paint(gi, plcd)
plcdi = toindices(plcd)
inds = (inds - plcdi) - mapply(neighbors, plcdi)
objs.append(obj)
avgs = sum([len(o) for o in objs]) / len(objs)
ub = max(1, (h * w) // (avgs * 2))
noccs = unifint(rng, diff_lb, diff_ub, (1, ub))
succ = 0
tr = 0
maxtr = 5 * noccs
go = tuple(e for e in gi)
while tr < maxtr and succ < noccs:
tr += 1
obj = rng.choice(objs)
ca, cb = list(palette(obj))
oh, ow = shape(obj)
cands = sfilter(inds, lambda ij: ij[0] <= h - oh and ij[1] <= w - ow)
if len(cands) == 0:
continue
loc = rng.choice(totuple(cands))
plcd = shift(obj, loc)
plcdi = toindices(plcd)
if plcdi.issubset(inds):
succ += 1
inds = (inds - plcdi) - mapply(neighbors, plcdi)
go = paint(go, plcd)
col = rng.choice((ca, cb))
gi = paint(gi, sfilter(plcd, lambda cij: cij[0] == col))
return {"input": gi, "output": go}
def generate_4290ef0e(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = interval(0, 10, 1)
while True:
d = unifint(rng, diff_lb, diff_ub, (2, 7))
h, w = d, d
fullh = unifint(rng, diff_lb, diff_ub, (4 * d, 30))
fullw = unifint(rng, diff_lb, diff_ub, (4 * d, 30))
bgc = rng.choice(cols)
remcols = remove(bgc, cols)
ccols = rng.sample(remcols, d)
quad = canvas(bgc, (d + 1, d + 1))
for idx, c in enumerate(ccols):
linlen = rng.randint(2, w - idx + 1)
quad = fill(quad, c, (connect((idx, idx), (idx + linlen - 1, idx))))
quad = fill(quad, c, (connect((idx, idx), (idx, idx + linlen - 1))))
go = canvas(bgc, (d + 1, 2 * d + 1))
qobj1 = asobject(quad)
qobj2 = shift(asobject(vmirror(quad)), (0, d))
go = paint(go, qobj1)
go = paint(go, qobj2)
go = vconcat(go, hmirror(go)[1:])
if rng.choice((True, False)):
go = fill(go, rng.choice(difference(remcols, ccols)), {center(asindices(go))})
objs = partition(go)
objs = sfilter(objs, lambda o: color(o) != bgc)
gi = canvas(bgc, (fullh, fullw))
objs = order(objs, width)
fullinds = asindices(gi)
inds = asindices(gi)
fullsuc = True
for obj in objs:
objn = normalize(obj)
obji = toindices(objn)
d = width(obj)
dh = max(0, d // 2 - 1)
cands = sfilter(fullinds, lambda ij: ij[0] <= fullh - d and ij[1] <= fullw - d)
cands = (
cands | shift(cands, (-dh, 0)) | shift(cands, (0, -dh)) | shift(cands, (dh, 0)) | shift(cands, (0, dh))
)
maxtr = 10
tr = 0
succ = False
if len(cands) == 0:
break
while tr < maxtr and not succ:
tr += 1
loc = rng.choice(totuple(cands))
if (shift(obji, loc) & fullinds).issubset(inds):
succ = True
break
if not succ:
fullsuc = False
break
gi = paint(gi, shift(objn, loc))
inds = inds - shift(obji, loc)
if not fullsuc:
continue
break
return {"input": gi, "output": go}
def generate_6a1e5592(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(1, interval(0, 10, 1))
h = unifint(rng, diff_lb, diff_ub, (9, 30))
w = unifint(rng, diff_lb, diff_ub, (5, 30))
barh = rng.randint(3, h // 3)
maxobjh = h - barh - 1
nobjs = unifint(rng, diff_lb, diff_ub, (1, w // 3))
barc, bgc, objc = rng.sample(cols, 3)
c1 = canvas(barc, (barh, w))
c2 = canvas(bgc, (h - barh, w))
gi = vconcat(c1, c2)
go = tuple(e for e in gi)
tr = 0
succ = 0
maxtr = 10 * nobjs
placopts = interval(1, w - 1, 1)
iinds = ofcolor(gi, bgc)
oinds = asindices(go)
barinds = ofcolor(gi, barc)
forbmarkers = set()
while tr < maxtr and succ < nobjs:
tr += 1
oh = rng.randint(1, maxobjh)
ow = rng.randint(1, min(4, w // 2))
bounds = asindices(canvas(-1, (oh, ow)))
ncells = rng.randint(1, oh * ow)
sp = rng.choice(totuple(connect((0, 0), (0, ow - 1))))
obj = {sp}
for k in range(ncells - 1):
obj.add(rng.choice(totuple((bounds - obj) & mapply(dneighbors, obj))))
obj = normalize(obj)
oh, ow = shape(obj)
markerh = rng.randint(1, min(oh, barh - 1))
markpart = sfilter(obj, lambda ij: ij[0] < markerh)
markpartn = normalize(markpart)
isinvalid = False
for k in range(1, markerh + 1):
if normalize(sfilter(markpartn, lambda ij: ij[0] < k)) in forbmarkers:
isinvalid = True
if isinvalid:
continue
for k in range(1, markerh + 1):
forbmarkers.add(normalize(sfilter(markpartn, lambda ij: ij[0] < k)))
placoptcands = sfilter(placopts, lambda jj: set(interval(jj, jj + ow + 1, 1)).issubset(set(placopts)))
if len(placoptcands) == 0:
continue
jloc = rng.choice(placoptcands)
iloc = barh - markerh
oplcd = shift(obj, (iloc, jloc))
if oplcd.issubset(oinds):
icands = sfilter(iinds, lambda ij: ij[0] <= h - oh and ij[1] <= w - ow)
if len(icands) == 0:
continue
loc = rng.choice(totuple(icands))
iplcd = shift(obj, loc)
if iplcd.issubset(iinds):
succ += 1
iinds = (iinds - iplcd) - mapply(neighbors, iplcd)
oinds = oinds - oplcd
gi = fill(gi, objc, iplcd)
gi = fill(gi, bgc, oplcd & barinds)
go = fill(go, 1, oplcd)
jm = apply(last, ofcolor(go, 1))
placopts = sorted(difference(placopts, jm | apply(decrement, jm) | apply(increment, jm)))
if len(placopts) == 0:
break
rotf = rng.choice((identity, rot90, rot180, rot270))
gi = rotf(gi)
go = rotf(go)
return {"input": gi, "output": go}
def generate_e73095fd(rng: random.Random, diff_lb: float, diff_ub: float) -> dict:
cols = remove(4, interval(0, 10, 1))
while True:
h = unifint(rng, diff_lb, diff_ub, (10, 32))
w = unifint(rng, diff_lb, diff_ub, (10, 32))
bgc, fgc = rng.sample(cols, 2)
gi = canvas(bgc, (h, w))
nsplits = unifint(rng, diff_lb, diff_ub, (2, min(h, w) // 3))
for k in range(nsplits):
objs = objects(gi, T, F, F)
objs = colorfilter(objs, bgc)
objs = apply(toindices, objs)
hobjs = sfilter(objs, lambda o: height(o) > 6)
wobjs = sfilter(objs, lambda o: width(o) > 6)
if len(hobjs) == 0 and len(wobjs) == 0:
break
cgroups = [(g, ax) for g, ax in zip([hobjs, wobjs], [0, 1]) if len(g) > 0]
g, ax = rng.choice(cgroups)
obj = rng.choice(totuple(g))
ulci, ulcj = ulcorner(obj)
oh, ow = shape(obj)
if ax == 0:
iloc = rng.randint(ulci + 3, ulci + oh - 3)
bar = sfilter(obj, lambda ij: ij[0] == iloc)
else:
jloc = rng.randint(ulcj + 3, ulcj + ow - 3)
bar = sfilter(obj, lambda ij: ij[1] == jloc)
gi = fill(gi, fgc, bar)
copts = sfilter(
ofcolor(gi, fgc), lambda ij: len(sfilter(toobject(dneighbors(ij), gi), lambda cij: cij[0] == fgc)) > 2
)
copts = sfilter(
copts, lambda ij: len(sfilter(toobject(outbox(outbox({ij})), gi), lambda cij: cij[0] == fgc)) in {3, 4}
)
if len(copts) == 0:
continue
noccs = unifint(rng, diff_lb, diff_ub, (1, len(copts)))
noccs = unifint(rng, diff_lb, diff_ub, (noccs, len(copts)))
occs = rng.sample(totuple(copts), noccs)
go = tuple(e for e in gi)
forb = set()
for occ in occs:
ulci, ulcj = decrement(occ)
lrci, lrcj = increment(occ)
if len(sfilter(toobject(box({(ulci, ulcj), (lrci, lrcj)}), gi), lambda cij: cij[0] == fgc)) in {3, 4}:
boptions = []
for ulcioffs in [-2, -1, 0]:
for ulcjoffs in [-2, -1, 0]:
for lrcioffs in [0, 1, 2]:
for lrcjoffs in [0, 1, 2]:
bx = box({(ulci + ulcioffs, ulcj + ulcjoffs), (lrci + lrcioffs, lrcj + lrcjoffs)})
bxobj = toobject(bx, gi)
if len(sfilter(toobject(bxobj, gi), lambda cij: cij[0] == fgc)) in {3, 4} and len(
sfilter(toobject(outbox(bxobj), gi), lambda cij: cij[0] == fgc)
) in {3, 4}:
boptions.append(bx)
boptions = sfilter(boptions, lambda bx: len(backdrop(bx) & forb) == 0)
if len(boptions) > 0:
bx = rng.choice(boptions)
bd = backdrop(bx)
gi = fill(gi, bgc, bd)
gi = fill(gi, fgc, bx)
go = fill(go, 4, bd)
go = fill(go, fgc, bx)
forb |= bd
gi = trim(gi)
go = trim(go)
if 4 in palette(go):
break
return {"input": gi, "output": go}