Skip to content
Snippets Groups Projects
Commit 79a905f1 authored by tbuckworth's avatar tbuckworth
Browse files

came up with a solution to example 1

parent 7205a4e9
No related branches found
No related tags found
No related merge requests found
...@@ -6,10 +6,10 @@ import numpy as np ...@@ -6,10 +6,10 @@ import numpy as np
from main import load_task, grid2FOL, FOL2grid, FOL2prolog, prolog2FOL_array from main import load_task, grid2FOL, FOL2grid, FOL2prolog, prolog2FOL_array
class MyTestCase(unittest.TestCase): class TaskTester(unittest.TestCase):
@classmethod @classmethod
def setUpClass(cls): def setUpClass(cls):
cls.task = load_task() cls.task = load_task()#"data/training/0b148d64.json")
# Example of accessing input/output grids for the first example # Example of accessing input/output grids for the first example
cls.input_grid = cls.task['train'][0]['input'] cls.input_grid = cls.task['train'][0]['input']
cls.output_grid = cls.task['train'][0]['output'] cls.output_grid = cls.task['train'][0]['output']
...@@ -25,10 +25,14 @@ class MyTestCase(unittest.TestCase): ...@@ -25,10 +25,14 @@ class MyTestCase(unittest.TestCase):
def test_print(self): def test_print(self):
out_prolog = FOL2prolog(self.out_preds) out_prolog = FOL2prolog(self.out_preds)
out_FOL_array = prolog2FOL_array(out_prolog) out_FOL_array = prolog2FOL_array(out_prolog)
out_grid = FOL2grid(out_FOL_array) out_grid = FOL2grid(out_FOL_array)
self.assertTrue((out_grid == self.output_grid).all())
def test_prolog_program(self):
in_prolog = FOL2prolog(self.in_preds)
with open('prolog/input_example_1.pl', 'w') as file:
file.write(in_prolog)
......
...@@ -128,27 +128,6 @@ def load_jsons(): ...@@ -128,27 +128,6 @@ def load_jsons():
# Load a single ARC task # Load a single ARC task
task = load_task() task = load_task()
# Example of accessing input/output grids for the first example
input_grid = task['train'][0]['input']
output_grid = task['train'][0]['output']
# rgb_grid = array_and_plot_grid(input_grid)
array_and_plot_grid(output_grid)
in_preds = grid2FOL(input_grid, "input")
out_preds = grid2FOL(output_grid, "output")
array_and_plot_grid(FOL2grid(out_preds))
old_out_preds = copy.deepcopy(out_preds)
np.random.shuffle(out_preds)
[np.random.shuffle(x) for x in out_preds]
assert (FOL2grid(out_preds) == FOL2grid(old_out_preds)).all()
out_grid = FOL2grid(out_preds)
array_and_plot_grid(out_grid)
return
def load_task(json_file='data/training/0a938d79.json'): def load_task(json_file='data/training/0a938d79.json'):
......
nrow(NR):-
input_colour(NR,_,_),
input_colour(R2,_,_),
\+ R2 > NR.
ncol(NC):-
input_colour(_,NC,_),
input_colour(_,C2,_),
\+ C2 > NC.
vertical_colour(C,Colour):-
input_colour(R,C,Colour),
R is 0,
\+ Colour is 'black'.
vertical_colour(C,Colour):-
nrow(NR),
input_colour(NR,C,Colour),
\+ Colour is 'black'.
horizontal_colour(R,Colour):-
input_colour(R,C,Colour),
C is 0,
\+ Colour is 'black'.
horizontal_colour(R,Colour):-
ncol(NC),
input_colour(R,NC,Colour),
\+ Colour is 'black'.
horizontal_diff(N):-
horizontal_colour(R,_),
horizontal_colour(R2,_),
R2 > R,
N is R2 - R.
vertical_diff(N):-
vertical_colour(C,_),
vertical_colour(C2,_),
C2 > C,
N is C2 - C.
remainder(N,D,R):-
integer(X),
R is N - X * D.
output_colour(_,C,Colour):-
vertical_colour(Cstart,Colour),
vertical_diff(VD),
C >= Cstart,
VDtwo is 2 * VD,
remainder(C-Cstart, VDtwo, R),
R == 0.
output_colour(R,_,Colour):-
horizontal_colour(Rstart,Colour),
horizontal_diff(VD),
R >= Rstart,
VDtwo is 2 * VD,
remainder(R-Rstart, VDtwo, Rem),
Rem == 0.
output_colour(R,C,black):-
\+ output_colour(R,C,_).
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment