Skip to content

Instantly share code, notes, and snippets.

@hollance
Created September 8, 2020 13:25
Show Gist options
  • Save hollance/8205713613f2566d91e7eb33734a150a to your computer and use it in GitHub Desktop.
Save hollance/8205713613f2566d91e7eb33734a150a to your computer and use it in GitHub Desktop.
ARC test
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Coding several solutions by hand"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"\n",
"import os\n",
"import json\n",
"from pathlib import Path\n",
"\n",
"import matplotlib.pyplot as plt\n",
"from matplotlib import colors\n",
"import numpy as np"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Load the data"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"data_path = Path(\"input/abstraction-and-reasoning-challenge/\")\n",
"training_path = data_path / \"training\"\n",
"evaluation_path = data_path / \"evaluation\"\n",
"test_path = data_path / \"test\""
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"class Task:\n",
" def __init__(self, path):\n",
" with open(path, \"r\") as f:\n",
" self.task = json.load(f)\n",
"\n",
" # filename without .json\n",
" self.task_id = os.path.splitext(os.path.basename(path))[0]\n",
" \n",
" # \"training\", \"evaluation\", \"test\"\n",
" self.split = os.path.basename(os.path.dirname(path))\n",
"\n",
" def num_train(self):\n",
" return len(self.task[\"train\"])\n",
"\n",
" def num_test(self):\n",
" return len(self.task[\"test\"])\n",
"\n",
" def train_input(self, i):\n",
" return np.array(self.task[\"train\"][i][\"input\"])\n",
"\n",
" def train_output(self, i):\n",
" return np.array(self.task[\"train\"][i][\"output\"])\n",
"\n",
" def test_input(self, i):\n",
" return np.array(self.task[\"test\"][i][\"input\"])\n",
"\n",
" def test_output(self, i):\n",
" return np.array(self.task[\"test\"][i][\"output\"])\n",
" \n",
" def has_test_output(self):\n",
" return \"output\" in self.task[\"test\"][0]\n",
" \n",
" def plot(self):\n",
" num = max(self.num_train(), self.num_test())\n",
" \n",
" fig, axs = plt.subplots(num, 4, figsize=(20, num*4))\n",
" for i in range(num):\n",
" axs[i, 0].axis(\"off\")\n",
" axs[i, 1].axis(\"off\")\n",
" axs[i, 2].axis(\"off\")\n",
" axs[i, 3].axis(\"off\")\n",
" \n",
" if i < self.num_train():\n",
" self._plot_one(axs[i, 0], i, self.train_input(i), \"train\", \"input\")\n",
" self._plot_one(axs[i, 1], i, self.train_output(i), \"train\", \"output\")\n",
"\n",
" if i < self.num_test():\n",
" self._plot_one(axs[i, 2], i, self.test_input(i), \"test\", \"input\")\n",
" if self.has_test_output():\n",
" self._plot_one(axs[i, 3], i, self.test_output(i), \"test\", \"output\")\n",
"\n",
" plt.tight_layout()\n",
" plt.show()\n",
" \n",
" def _plot_one(self, ax, i, input_matrix, train_or_test, input_or_output):\n",
" cmap = colors.ListedColormap(\n",
" [\"#000000\", \"#0074D9\", \"#FF4136\", \"#2ECC40\", \"#FFDC00\",\n",
" \"#AAAAAA\", \"#F012BE\", \"#FF851B\", \"#7FDBFF\", \"#870C25\"])\n",
" norm = colors.Normalize(vmin=0, vmax=9)\n",
" \n",
" h, w = input_matrix.shape\n",
" \n",
" ax.imshow(input_matrix, cmap=cmap, norm=norm)\n",
" ax.axis(\"on\")\n",
" ax.grid(True, which=\"both\", color=\"lightgrey\", linewidth=0.5)\n",
" ax.set_yticks([x - 0.5 for x in range(1 + h)])\n",
" ax.set_xticks([x - 0.5 for x in range(1 + w)]) \n",
" ax.set_xticklabels([])\n",
" ax.set_yticklabels([])\n",
" ax.set_title(\"%s %s %d (%dx%d)\" % (train_or_test, input_or_output, i, h, w))\n",
" \n",
" def is_correct(self, x, i):\n",
" if x.shape != self.test_output(i).shape:\n",
" return False\n",
" return np.all(x == self.test_output(i))"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(400, 400, 100)"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"training_tasks = sorted(os.listdir(training_path))\n",
"eval_tasks = sorted(os.listdir(evaluation_path))\n",
"test_tasks = sorted(os.listdir(test_path))\n",
"len(eval_tasks), len(training_tasks), len(test_tasks)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"all_train_tasks = [Task(os.path.join(training_path, x)) for x in training_tasks]\n",
"all_eval_tasks = [Task(os.path.join(evaluation_path, x)) for x in eval_tasks]\n",
"all_test_tasks = [Task(os.path.join(test_path, x)) for x in test_tasks]\n",
"\n",
"# The test tasks are taken from the eval folder, so we don't include those here.\n",
"all_tasks = all_train_tasks + all_eval_tasks"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"task_by_id = {task.task_id:task for task in all_tasks}"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"def plot(input_matrix):\n",
" cmap = colors.ListedColormap(\n",
" [\"#000000\", \"#0074D9\", \"#FF4136\", \"#2ECC40\", \"#FFDC00\",\n",
" \"#AAAAAA\", \"#F012BE\", \"#FF851B\", \"#7FDBFF\", \"#870C25\"])\n",
" norm = colors.Normalize(vmin=0, vmax=9)\n",
" h, w = input_matrix.shape\n",
" fig, ax = plt.subplots(1, 1, figsize=(w / 2, h / 2))\n",
" ax.imshow(input_matrix, cmap=cmap, norm=norm)\n",
" ax.grid(True, which=\"both\", color=\"lightgrey\", linewidth=0.5)\n",
" ax.set_yticks([x - 0.5 for x in range(1 + h)])\n",
" ax.set_xticks([x - 0.5 for x in range(1 + w)])\n",
" ax.set_xticklabels([])\n",
" ax.set_yticklabels([])\n",
" plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Pick a task"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [],
"source": [
"task = np.random.choice(all_train_tasks)"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [],
"source": [
"task = all_train_tasks[3]"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'794b24be'"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"task.task_id"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1440x2880 with 40 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"task.plot()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 007bbfb7\n",
"\n",
"The input is small, so the output is likely to be larger (how else would you know how large the output should be, since you don't get any other hints). \n",
"\n",
"In this case, the output is 3x larger than the input in both dimensions.\n",
"\n",
"This is a self-replicating pattern, fractal-ish."
]
},
{
"cell_type": "code",
"execution_count": 133,
"metadata": {},
"outputs": [],
"source": [
"def task_007bbfb7(src):\n",
" h, w = src.shape\n",
" dst = np.zeros((h*h, w*w), dtype=np.int)\n",
" for y in range(h):\n",
" for x in range(w):\n",
" if src[y, x] != 0:\n",
" dst[y*h:(y+1)*h, x*w:(x+1)*w] = src\n",
" return dst\n",
"\n",
"y = task_007bbfb7(task.test_input(0))\n",
"plot(y)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 00d62c1b\n",
"\n",
"Filling areas.\n",
"\n",
"If a pixel is black and is enclosed in a region of green pixels, fill it with yellow."
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 360x360 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# TODO: still wrong, need to find enclosed regions\n",
"# floodfill the outside and take the inverse?\n",
"\n",
"def task_00d62c1b(src):\n",
" h, w = src.shape\n",
" dst = np.zeros((h, w), dtype=np.int)\n",
" \n",
" def left(y, x):\n",
" for i in range(0, x):\n",
" if src[y, i] != 0:\n",
" return True\n",
" return False\n",
"\n",
" def right(y, x):\n",
" for i in range(x+1, w):\n",
" if src[y, i] != 0:\n",
" return True\n",
" return False\n",
"\n",
" def above(y, x):\n",
" for i in range(0, y):\n",
" if src[i, x] != 0:\n",
" return True\n",
" return False\n",
"\n",
" def below(y, x):\n",
" for i in range(y+1, h):\n",
" if src[i, x] != 0:\n",
" return True\n",
" return False\n",
"\n",
" def is_surrounded(y, x):\n",
" if src[y, x] != 0: \n",
" return False\n",
"\n",
" return left(y, x) and right(y, x) and above(y, x) and below(x, y)\n",
"\n",
" for y in range(1, h - 1):\n",
" for x in range(1, w - 1):\n",
" \n",
" if is_surrounded(y, x):\n",
" dst[y, x] = 4\n",
" else:\n",
" dst[y, x] = src[y, x]\n",
"\n",
" return dst\n",
"\n",
"#y = task_00d62c1b(task.test_input(0))\n",
"y = task_00d62c1b(task.train_input(1))\n",
"plot(y)"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n",
" [0, 0, 3, 0, 3, 0, 0, 0, 0, 0],\n",
" [0, 0, 0, 3, 0, 3, 0, 0, 0, 0],\n",
" [0, 0, 3, 0, 0, 0, 3, 0, 0, 0],\n",
" [0, 0, 0, 0, 0, 3, 4, 3, 0, 0],\n",
" [0, 0, 0, 3, 0, 3, 3, 0, 0, 0],\n",
" [0, 0, 3, 3, 3, 0, 0, 0, 0, 0],\n",
" [0, 0, 0, 3, 0, 0, 0, 0, 0, 0],\n",
" [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n",
" [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]])"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"task.train_output(1)"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[0, 0, 0, 0, 0, 0],\n",
" [0, 0, 3, 0, 0, 0],\n",
" [0, 3, 4, 3, 0, 0],\n",
" [0, 0, 3, 4, 3, 0],\n",
" [0, 0, 0, 3, 0, 0],\n",
" [0, 0, 0, 0, 0, 0]])"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"False"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"task.is_correct(y, 0)"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x7fb468c24e50>"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"x = task.train_input(0)\n",
"plt.imshow(x)"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.4"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment